From b287d67e32910acf11205899b1ce853d864b3cd2 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 27 Feb 2023 16:11:04 -0500 Subject: [PATCH 001/268] update snapshots (#300) Co-authored-by: joeyzhao2018 --- .../snapshots/logs/async-metrics_python37.log | 18 +++++++++++ .../snapshots/logs/async-metrics_python38.log | 18 +++++++++++ .../snapshots/logs/async-metrics_python39.log | 18 +++++++++++ .../snapshots/logs/sync-metrics_python37.log | 31 +++++++++++++++++-- .../snapshots/logs/sync-metrics_python38.log | 29 ++++++++++++++++- .../snapshots/logs/sync-metrics_python39.log | 27 ++++++++++++++++ 6 files changed, 138 insertions(+), 3 deletions(-) diff --git a/tests/integration/snapshots/logs/async-metrics_python37.log b/tests/integration/snapshots/logs/async-metrics_python37.log index 9950c2d8..5639ac2f 100644 --- a/tests/integration/snapshots/logs/async-metrics_python37.log +++ b/tests/integration/snapshots/logs/async-metrics_python37.log @@ -121,6 +121,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -143,6 +144,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -274,6 +276,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -296,6 +299,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -420,6 +424,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -442,6 +447,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -581,6 +587,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -603,6 +610,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -734,6 +742,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -756,6 +765,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -884,6 +894,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -906,6 +917,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1035,6 +1047,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -1057,6 +1070,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1185,6 +1199,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -1207,6 +1222,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1343,6 +1359,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -1365,6 +1382,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", diff --git a/tests/integration/snapshots/logs/async-metrics_python38.log b/tests/integration/snapshots/logs/async-metrics_python38.log index d98aeb4b..7b86e0eb 100644 --- a/tests/integration/snapshots/logs/async-metrics_python38.log +++ b/tests/integration/snapshots/logs/async-metrics_python38.log @@ -121,6 +121,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -143,6 +144,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -274,6 +276,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -296,6 +299,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -420,6 +424,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -442,6 +447,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -581,6 +587,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -603,6 +610,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -734,6 +742,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -756,6 +765,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -884,6 +894,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -906,6 +917,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1035,6 +1047,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -1057,6 +1070,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1185,6 +1199,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -1207,6 +1222,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1343,6 +1359,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -1365,6 +1382,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", diff --git a/tests/integration/snapshots/logs/async-metrics_python39.log b/tests/integration/snapshots/logs/async-metrics_python39.log index ffd9017f..01db495b 100644 --- a/tests/integration/snapshots/logs/async-metrics_python39.log +++ b/tests/integration/snapshots/logs/async-metrics_python39.log @@ -121,6 +121,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -143,6 +144,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -274,6 +276,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -296,6 +299,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -420,6 +424,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -442,6 +447,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -581,6 +587,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -603,6 +610,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -734,6 +742,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -756,6 +765,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -884,6 +894,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -906,6 +917,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1035,6 +1047,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -1057,6 +1070,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1185,6 +1199,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -1207,6 +1222,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1343,6 +1359,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -1365,6 +1382,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", diff --git a/tests/integration/snapshots/logs/sync-metrics_python37.log b/tests/integration/snapshots/logs/sync-metrics_python37.log index aa4867cc..0096018c 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python37.log +++ b/tests/integration/snapshots/logs/sync-metrics_python37.log @@ -101,6 +101,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -123,6 +124,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -137,7 +139,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] } HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} -END Duration: XXXX ms (init: XXXX ms) Memory Used: XXXX MB { "traces": [ [ @@ -154,6 +155,7 @@ END Duration: XXXX ms (init: XXXX ms) Memory Used: XXXX MB "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", + "component": "requests", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", "http.status_code": "202", @@ -172,6 +174,7 @@ END Duration: XXXX ms (init: XXXX ms) Memory Used: XXXX MB ] ] } +END Duration: XXXX ms (init: XXXX ms) Memory Used: XXXX MB START { "m": "aws.lambda.enhanced.invocations", @@ -269,6 +272,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -291,6 +295,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -321,6 +326,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", + "component": "requests", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", "http.status_code": "202", @@ -430,6 +436,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -452,6 +459,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -482,6 +490,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", + "component": "requests", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", "http.status_code": "202", @@ -606,6 +615,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -628,6 +638,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -658,6 +669,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", + "component": "requests", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", "http.status_code": "202", @@ -774,6 +786,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -796,6 +809,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -810,7 +824,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] } HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} -END Duration: XXXX ms Memory Used: XXXX MB { "traces": [ [ @@ -827,6 +840,7 @@ END Duration: XXXX ms Memory Used: XXXX MB "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", + "component": "requests", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", "http.status_code": "202", @@ -845,6 +859,7 @@ END Duration: XXXX ms Memory Used: XXXX MB ] ] } +END Duration: XXXX ms Memory Used: XXXX MB START { "m": "aws.lambda.enhanced.invocations", @@ -939,6 +954,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -961,6 +977,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -991,6 +1008,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", + "component": "requests", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", "http.status_code": "202", @@ -1105,6 +1123,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -1127,6 +1146,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1157,6 +1177,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", + "component": "requests", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", "http.status_code": "202", @@ -1270,6 +1291,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -1292,6 +1314,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1322,6 +1345,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", + "component": "requests", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", "http.status_code": "202", @@ -1443,6 +1467,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -1465,6 +1490,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1495,6 +1521,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", + "component": "requests", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", "http.status_code": "202", diff --git a/tests/integration/snapshots/logs/sync-metrics_python38.log b/tests/integration/snapshots/logs/sync-metrics_python38.log index 182c708b..141c006c 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python38.log +++ b/tests/integration/snapshots/logs/sync-metrics_python38.log @@ -101,6 +101,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -123,6 +124,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -153,6 +155,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", + "component": "requests", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", "http.status_code": "202", @@ -269,6 +272,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -291,6 +295,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -321,6 +326,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", + "component": "requests", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", "http.status_code": "202", @@ -430,6 +436,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -452,6 +459,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -482,6 +490,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", + "component": "requests", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", "http.status_code": "202", @@ -606,6 +615,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -628,6 +638,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -658,6 +669,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", + "component": "requests", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", "http.status_code": "202", @@ -774,6 +786,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -796,6 +809,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -826,6 +840,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", + "component": "requests", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", "http.status_code": "202", @@ -939,6 +954,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -961,6 +977,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -991,6 +1008,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", + "component": "requests", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", "http.status_code": "202", @@ -1105,6 +1123,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -1127,6 +1146,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1157,6 +1177,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", + "component": "requests", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", "http.status_code": "202", @@ -1270,6 +1291,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -1292,6 +1314,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1322,6 +1345,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", + "component": "requests", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", "http.status_code": "202", @@ -1443,6 +1467,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -1465,6 +1490,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1479,7 +1505,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] } HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} -END Duration: XXXX ms Memory Used: XXXX MB { "traces": [ [ @@ -1496,6 +1521,7 @@ END Duration: XXXX ms Memory Used: XXXX MB "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", + "component": "requests", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", "http.status_code": "202", @@ -1514,3 +1540,4 @@ END Duration: XXXX ms Memory Used: XXXX MB ] ] } +END Duration: XXXX ms Memory Used: XXXX MB diff --git a/tests/integration/snapshots/logs/sync-metrics_python39.log b/tests/integration/snapshots/logs/sync-metrics_python39.log index 50a63643..092ad480 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python39.log +++ b/tests/integration/snapshots/logs/sync-metrics_python39.log @@ -101,6 +101,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -123,6 +124,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -153,6 +155,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", + "component": "requests", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", "http.status_code": "202", @@ -269,6 +272,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -291,6 +295,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -321,6 +326,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", + "component": "requests", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", "http.status_code": "202", @@ -430,6 +436,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -452,6 +459,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -482,6 +490,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", + "component": "requests", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", "http.status_code": "202", @@ -606,6 +615,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -628,6 +638,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -658,6 +669,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", + "component": "requests", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", "http.status_code": "202", @@ -774,6 +786,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -796,6 +809,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -826,6 +840,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", + "component": "requests", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", "http.status_code": "202", @@ -939,6 +954,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -961,6 +977,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -991,6 +1008,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", + "component": "requests", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", "http.status_code": "202", @@ -1105,6 +1123,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -1127,6 +1146,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1157,6 +1177,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", + "component": "requests", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", "http.status_code": "202", @@ -1270,6 +1291,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -1292,6 +1314,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1322,6 +1345,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", + "component": "requests", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", "http.status_code": "202", @@ -1443,6 +1467,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -1465,6 +1490,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1495,6 +1521,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", + "component": "requests", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", "http.status_code": "202", From 1a783e138d135893607042e33734cad1784942a1 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 28 Feb 2023 10:33:07 -0500 Subject: [PATCH 002/268] update snapshots (#302) Co-authored-by: joeyzhao2018 --- .../snapshots/logs/async-metrics_python37.log | 27 ++++++---- .../snapshots/logs/async-metrics_python38.log | 27 ++++++---- .../snapshots/logs/async-metrics_python39.log | 27 ++++++---- .../snapshots/logs/sync-metrics_python37.log | 54 ++++++++++++------- .../snapshots/logs/sync-metrics_python38.log | 54 ++++++++++++------- .../snapshots/logs/sync-metrics_python39.log | 54 ++++++++++++------- 6 files changed, 162 insertions(+), 81 deletions(-) diff --git a/tests/integration/snapshots/logs/async-metrics_python37.log b/tests/integration/snapshots/logs/async-metrics_python37.log index 5639ac2f..86720362 100644 --- a/tests/integration/snapshots/logs/async-metrics_python37.log +++ b/tests/integration/snapshots/logs/async-metrics_python37.log @@ -66,7 +66,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -225,7 +226,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "size_bytes": "26", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -374,7 +376,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "detail_type": "testdetail", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -532,7 +535,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -691,7 +695,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "partition_key": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -843,7 +848,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "object_etag": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -996,7 +1002,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "subject": "TestInvoke", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -1148,7 +1155,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "sender_id": "AIDAIENQZJOLO23YVJ4VO", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -1306,7 +1314,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, diff --git a/tests/integration/snapshots/logs/async-metrics_python38.log b/tests/integration/snapshots/logs/async-metrics_python38.log index 7b86e0eb..763622aa 100644 --- a/tests/integration/snapshots/logs/async-metrics_python38.log +++ b/tests/integration/snapshots/logs/async-metrics_python38.log @@ -66,7 +66,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -225,7 +226,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "size_bytes": "26", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -374,7 +376,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "detail_type": "testdetail", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -532,7 +535,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -691,7 +695,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "partition_key": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -843,7 +848,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "object_etag": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -996,7 +1002,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "subject": "TestInvoke", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -1148,7 +1155,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "sender_id": "AIDAIENQZJOLO23YVJ4VO", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -1306,7 +1314,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, diff --git a/tests/integration/snapshots/logs/async-metrics_python39.log b/tests/integration/snapshots/logs/async-metrics_python39.log index 01db495b..bcf08b79 100644 --- a/tests/integration/snapshots/logs/async-metrics_python39.log +++ b/tests/integration/snapshots/logs/async-metrics_python39.log @@ -66,7 +66,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -225,7 +226,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "size_bytes": "26", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -374,7 +376,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "detail_type": "testdetail", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -532,7 +535,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -691,7 +695,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "partition_key": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -843,7 +848,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "object_etag": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -996,7 +1002,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "subject": "TestInvoke", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -1148,7 +1155,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "sender_id": "AIDAIENQZJOLO23YVJ4VO", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -1306,7 +1314,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, diff --git a/tests/integration/snapshots/logs/sync-metrics_python37.log b/tests/integration/snapshots/logs/sync-metrics_python37.log index 0096018c..466a0f36 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python37.log +++ b/tests/integration/snapshots/logs/sync-metrics_python37.log @@ -46,7 +46,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -160,7 +161,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -221,7 +223,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "size_bytes": "26", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -331,7 +334,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -386,7 +390,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "detail_type": "testdetail", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -495,7 +500,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -560,7 +566,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -674,7 +681,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -735,7 +743,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "partition_key": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -845,7 +854,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -903,7 +913,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "object_etag": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -1013,7 +1024,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -1072,7 +1084,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "subject": "TestInvoke", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -1182,7 +1195,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -1240,7 +1254,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "sender_id": "AIDAIENQZJOLO23YVJ4VO", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -1350,7 +1365,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -1414,7 +1430,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -1526,7 +1543,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, diff --git a/tests/integration/snapshots/logs/sync-metrics_python38.log b/tests/integration/snapshots/logs/sync-metrics_python38.log index 141c006c..f8f4f4e5 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python38.log +++ b/tests/integration/snapshots/logs/sync-metrics_python38.log @@ -46,7 +46,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -160,7 +161,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -221,7 +223,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "size_bytes": "26", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -331,7 +334,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -386,7 +390,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "detail_type": "testdetail", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -495,7 +500,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -560,7 +566,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -674,7 +681,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -735,7 +743,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "partition_key": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -845,7 +854,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -903,7 +913,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "object_etag": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -1013,7 +1024,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -1072,7 +1084,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "subject": "TestInvoke", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -1182,7 +1195,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -1240,7 +1254,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "sender_id": "AIDAIENQZJOLO23YVJ4VO", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -1350,7 +1365,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -1414,7 +1430,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -1526,7 +1543,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, diff --git a/tests/integration/snapshots/logs/sync-metrics_python39.log b/tests/integration/snapshots/logs/sync-metrics_python39.log index 092ad480..d8b07cb1 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python39.log +++ b/tests/integration/snapshots/logs/sync-metrics_python39.log @@ -46,7 +46,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -160,7 +161,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -221,7 +223,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "size_bytes": "26", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -331,7 +334,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -386,7 +390,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "detail_type": "testdetail", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -495,7 +500,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -560,7 +566,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -674,7 +681,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -735,7 +743,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "partition_key": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -845,7 +854,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -903,7 +913,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "object_etag": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -1013,7 +1024,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -1072,7 +1084,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "subject": "TestInvoke", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -1182,7 +1195,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -1240,7 +1254,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "sender_id": "AIDAIENQZJOLO23YVJ4VO", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -1350,7 +1365,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -1414,7 +1430,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -1526,7 +1543,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, From 0630e096ea69caf428531483626876be2eb48e07 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Wed, 15 Mar 2023 13:26:40 -0400 Subject: [PATCH 003/268] use ddsaml2aws (#301) * use ddsaml2aws * update the size check limit --- scripts/check_layer_size.sh | 6 +++--- scripts/publish_prod.sh | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/scripts/check_layer_size.sh b/scripts/check_layer_size.sh index 8c4f05e6..448686c9 100755 --- a/scripts/check_layer_size.sh +++ b/scripts/check_layer_size.sh @@ -7,8 +7,8 @@ # Compares layer size to threshold, and fails if below that threshold -# 6 mb size limit -MAX_LAYER_COMPRESSED_SIZE_KB=$(expr 6 \* 1024) +# 7 mb size limit +MAX_LAYER_COMPRESSED_SIZE_KB=$(expr 7 \* 1024) MAX_LAYER_UNCOMPRESSED_SIZE_KB=$(expr 24 \* 1024) @@ -36,4 +36,4 @@ do echo "Unzipped size exceeded limit $MAX_LAYER_UNCOMPRESSED_SIZE_KB kb" exit 1 fi -done \ No newline at end of file +done diff --git a/scripts/publish_prod.sh b/scripts/publish_prod.sh index fdc4c9d6..a1bd5596 100755 --- a/scripts/publish_prod.sh +++ b/scripts/publish_prod.sh @@ -32,7 +32,7 @@ else fi # Ensure AWS access before proceeding -saml2aws login -a govcloud-us1-fed-human-engineering +ddsaml2aws login -a govcloud-us1-fed-human-engineering AWS_PROFILE=govcloud-us1-fed-human-engineering aws sts get-caller-identity aws-vault exec prod-engineering -- aws sts get-caller-identity @@ -71,7 +71,7 @@ echo "Publishing layers to commercial AWS regions" VERSION=$LAYER_VERSION aws-vault exec prod-engineering -- ./scripts/publish_layers.sh echo "Publishing layers to GovCloud AWS regions" -saml2aws login -a govcloud-us1-fed-human-engineering +ddsaml2aws login -a govcloud-us1-fed-human-engineering VERSION=$LAYER_VERSION AWS_PROFILE=govcloud-us1-fed-human-engineering ./scripts/publish_layers.sh read -p "Ready to publish $NEW_VERSION to PyPI (y/n)?" CONT From 5ce443bf63e9eebb9bee4a8fd930f7888fe75195 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Wed, 15 Mar 2023 15:04:48 -0400 Subject: [PATCH 004/268] redact dd-api-key (#307) * redact dd-api-key * fix flaky test_cold_start --- scripts/run_integration_tests.sh | 3 +- .../snapshots/logs/async-metrics_python37.log | 2 +- .../snapshots/logs/async-metrics_python38.log | 2 +- .../snapshots/logs/async-metrics_python39.log | 2 +- .../snapshots/logs/sync-metrics_python37.log | 38 +++++++++--------- .../snapshots/logs/sync-metrics_python38.log | 40 +++++++++---------- .../snapshots/logs/sync-metrics_python39.log | 38 +++++++++--------- tests/test_cold_start.py | 6 ++- 8 files changed, 67 insertions(+), 64 deletions(-) diff --git a/scripts/run_integration_tests.sh b/scripts/run_integration_tests.sh index 74c7239a..6187c6eb 100755 --- a/scripts/run_integration_tests.sh +++ b/scripts/run_integration_tests.sh @@ -187,6 +187,7 @@ for handler_name in "${LAMBDA_HANDLERS[@]}"; do sed '/^$/d' | # Normalize Lambda runtime REPORT logs sed -E 's/(RequestId|TraceId|SegmentId|Duration|init|Memory Used|"e"): [a-z0-9\.\-]+/\1: XXXX/g' | + sed -E 's/(python:3.[0-9]+\.v)[0-9]+/\1X/g' | # Normalize HTTP headers sed -E "s/(x-datadog-parent-id:|x-datadog-trace-id:|Content-Length:)[0-9]+/\1XXXX/g" | # Remove Account ID @@ -194,7 +195,7 @@ for handler_name in "${LAMBDA_HANDLERS[@]}"; do # Normalize timestamps in datapoints POSTed to DD sed -E 's/"points": \[\[[0-9\.]+,/"points": \[\[XXXX,/g' | # Strip API key from logged requests - sed -E "s/(api_key=|'api_key': ')[a-z0-9\.\-]+/\1XXXX/g" | + sed -E "s/(api_key=|'api_key': '|DD-API-KEY:)[a-z0-9\.\-]+/\1XXXX/g" | # Normalize package version so that these snapshots aren't broken on version bumps sed -E "s/(dd_lambda_layer:datadog-python[0-9]+_)[0-9]+\.[0-9]+\.[0-9]+/\1X\.X\.X/g" | sed -E "s/(datadog_lambda:v)([0-9]+\.[0-9]+\.[0-9])/\1XX/g" | diff --git a/tests/integration/snapshots/logs/async-metrics_python37.log b/tests/integration/snapshots/logs/async-metrics_python37.log index 86720362..038f7191 100644 --- a/tests/integration/snapshots/logs/async-metrics_python37.log +++ b/tests/integration/snapshots/logs/async-metrics_python37.log @@ -1,4 +1,4 @@ -INIT_START Runtime Version: python:3.7.v22 Runtime Version ARN: arn:aws:lambda:eu-west-1:XXXX:eu-west-1 +INIT_START Runtime Version: python:3.7.vX Runtime Version ARN: arn:aws:lambda:eu-west-1:XXXX:eu-west-1 START { "m": "aws.lambda.enhanced.invocations", diff --git a/tests/integration/snapshots/logs/async-metrics_python38.log b/tests/integration/snapshots/logs/async-metrics_python38.log index 763622aa..e38fa8f8 100644 --- a/tests/integration/snapshots/logs/async-metrics_python38.log +++ b/tests/integration/snapshots/logs/async-metrics_python38.log @@ -1,4 +1,4 @@ -INIT_START Runtime Version: python:3.8.v15 Runtime Version ARN: arn:aws:lambda:eu-west-1:XXXX:eu-west-1 +INIT_START Runtime Version: python:3.8.vX Runtime Version ARN: arn:aws:lambda:eu-west-1:XXXX:eu-west-1 START { "m": "aws.lambda.enhanced.invocations", diff --git a/tests/integration/snapshots/logs/async-metrics_python39.log b/tests/integration/snapshots/logs/async-metrics_python39.log index bcf08b79..c3fa5623 100644 --- a/tests/integration/snapshots/logs/async-metrics_python39.log +++ b/tests/integration/snapshots/logs/async-metrics_python39.log @@ -1,4 +1,4 @@ -INIT_START Runtime Version: python:3.9.v16 Runtime Version ARN: arn:aws:lambda:eu-west-1:XXXX:eu-west-1 +INIT_START Runtime Version: python:3.9.vX Runtime Version ARN: arn:aws:lambda:eu-west-1:XXXX:eu-west-1 START { "m": "aws.lambda.enhanced.invocations", diff --git a/tests/integration/snapshots/logs/sync-metrics_python37.log b/tests/integration/snapshots/logs/sync-metrics_python37.log index 466a0f36..bbf21d60 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python37.log +++ b/tests/integration/snapshots/logs/sync-metrics_python37.log @@ -1,4 +1,4 @@ -INIT_START Runtime Version: python:3.7.v22 Runtime Version ARN: arn:aws:lambda:eu-west-1:XXXX:eu-west-1 +INIT_START Runtime Version: python:3.7.vX Runtime Version ARN: arn:aws:lambda:eu-west-1:XXXX:eu-west-1 START { "m": "aws.lambda.enhanced.invocations", @@ -139,7 +139,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -158,7 +158,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "component": "requests", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -312,7 +312,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -331,7 +331,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "component": "requests", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -478,7 +478,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -497,7 +497,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "component": "requests", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -659,7 +659,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -678,7 +678,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "component": "requests", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -832,7 +832,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -851,7 +851,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "component": "requests", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1002,7 +1002,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -1021,7 +1021,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "component": "requests", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1173,7 +1173,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -1192,7 +1192,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "component": "requests", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1343,7 +1343,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -1362,7 +1362,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "component": "requests", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1521,7 +1521,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -1540,7 +1540,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "component": "requests", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", diff --git a/tests/integration/snapshots/logs/sync-metrics_python38.log b/tests/integration/snapshots/logs/sync-metrics_python38.log index f8f4f4e5..8c3fb728 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python38.log +++ b/tests/integration/snapshots/logs/sync-metrics_python38.log @@ -1,4 +1,4 @@ -INIT_START Runtime Version: python:3.8.v15 Runtime Version ARN: arn:aws:lambda:eu-west-1:XXXX:eu-west-1 +INIT_START Runtime Version: python:3.8.vX Runtime Version ARN: arn:aws:lambda:eu-west-1:XXXX:eu-west-1 START { "m": "aws.lambda.enhanced.invocations", @@ -139,7 +139,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -158,7 +158,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "component": "requests", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -312,7 +312,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -331,7 +331,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "component": "requests", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -478,7 +478,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -497,7 +497,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "component": "requests", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -659,7 +659,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -678,7 +678,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "component": "requests", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -832,7 +832,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -851,7 +851,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "component": "requests", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1002,7 +1002,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} +END Duration: XXXX ms Memory Used: XXXX MB { "traces": [ [ @@ -1021,7 +1022,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "component": "requests", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1039,7 +1040,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head ] ] } -END Duration: XXXX ms Memory Used: XXXX MB START { "m": "aws.lambda.enhanced.invocations", @@ -1173,7 +1173,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -1192,7 +1192,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "component": "requests", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1343,7 +1343,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -1362,7 +1362,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "component": "requests", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1521,7 +1521,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -1540,7 +1540,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "component": "requests", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", diff --git a/tests/integration/snapshots/logs/sync-metrics_python39.log b/tests/integration/snapshots/logs/sync-metrics_python39.log index d8b07cb1..1c7e071e 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python39.log +++ b/tests/integration/snapshots/logs/sync-metrics_python39.log @@ -1,4 +1,4 @@ -INIT_START Runtime Version: python:3.9.v16 Runtime Version ARN: arn:aws:lambda:eu-west-1:XXXX:eu-west-1 +INIT_START Runtime Version: python:3.9.vX Runtime Version ARN: arn:aws:lambda:eu-west-1:XXXX:eu-west-1 START { "m": "aws.lambda.enhanced.invocations", @@ -139,7 +139,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -158,7 +158,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "component": "requests", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -312,7 +312,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -331,7 +331,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "component": "requests", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -478,7 +478,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -497,7 +497,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "component": "requests", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -659,7 +659,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -678,7 +678,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "component": "requests", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -832,7 +832,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -851,7 +851,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "component": "requests", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1002,7 +1002,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -1021,7 +1021,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "component": "requests", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1173,7 +1173,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -1192,7 +1192,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "component": "requests", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1343,7 +1343,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -1362,7 +1362,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "component": "requests", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1521,7 +1521,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -1540,7 +1540,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "component": "requests", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points?%3Credacted%3E", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", diff --git a/tests/test_cold_start.py b/tests/test_cold_start.py index 22e7dc9c..0fc00326 100644 --- a/tests/test_cold_start.py +++ b/tests/test_cold_start.py @@ -66,9 +66,11 @@ def find_spec(*args, **kwargs): import dummy_module except Exception as e: self.assertEqual(str(e), "Module failed to load") - self.assertEqual(len(cold_start.root_nodes), 1) + meta_path.pop(0) # clean up first before checking test results + self.assertEqual( + len(cold_start.root_nodes), 1 + ) # push_node should have pushed the node self.assertEqual(cold_start.root_nodes[0].module_name, mock_module_spec.name) - meta_path.pop(0) class TestColdStartTracer(unittest.TestCase): From 1688b25ae82cd2c870472253b39cbd89122bbfcf Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Mon, 20 Mar 2023 11:34:51 -0400 Subject: [PATCH 005/268] feat: support LINEAGE field on x-ray trace ID (#310) * feat: support LINEAGE field on x-ray trace ID * fix: flake8 did not like my comment length * feat: temporarily comment out test * Update tests/test_cold_start.py Co-authored-by: Rey Abolofia * feat: use xtest instead of comment * feat: black --------- Co-authored-by: Rey Abolofia --- datadog_lambda/xray.py | 5 +++-- tests/test_cold_start.py | 2 +- tests/test_xray.py | 4 ++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/datadog_lambda/xray.py b/datadog_lambda/xray.py index 2e3a2fe2..bbaecb2e 100644 --- a/datadog_lambda/xray.py +++ b/datadog_lambda/xray.py @@ -45,12 +45,13 @@ def build_segment_payload(payload): def parse_xray_header(raw_trace_id): - # Example: Root=1-5e272390-8c398be037738dc042009320;Parent=94ae789b969f1cc5;Sampled=1 + # Example: + # Root=1-5e272390-8c398be037738dc042009320;Parent=94ae789b969f1cc5;Sampled=1;Lineage=c6c5b1b9:0 logger.debug("Reading trace context from env var %s", raw_trace_id) if len(raw_trace_id) == 0: return None parts = raw_trace_id.split(";") - if len(parts) != 3: + if len(parts) < 3: return None root = parts[0].replace("Root=", "") parent = parts[1].replace("Parent=", "") diff --git a/tests/test_cold_start.py b/tests/test_cold_start.py index 0fc00326..8c4bb15e 100644 --- a/tests/test_cold_start.py +++ b/tests/test_cold_start.py @@ -43,7 +43,7 @@ def find_spec(*args, **kwargs): meta_path.pop() os.environ["DD_COLD_START_TRACING"] = "true" - def test_exec_module_failure_case(self): + def xtest_exec_module_failure_case(self): mock_importer = MagicMock() mock_module_spec = MagicMock() mock_module_spec.name = "test_name" diff --git a/tests/test_xray.py b/tests/test_xray.py index d996f8e8..ac3594a9 100644 --- a/tests/test_xray.py +++ b/tests/test_xray.py @@ -37,7 +37,7 @@ def test_send_segment_sampled_out(self): os.environ["AWS_XRAY_DAEMON_ADDRESS"] = "fake-agent.com:8080" os.environ[ "_X_AMZN_TRACE_ID" - ] = "Root=1-5e272390-8c398be037738dc042009320;Parent=94ae789b969f1cc5;Sampled=0" + ] = "Root=1-5e272390-8c398be037738dc042009320;Parent=94ae789b969f1cc5;Sampled=0;Lineage=c6c5b1b9:0" with patch( "datadog_lambda.xray.send", MagicMock(return_value=None) @@ -50,7 +50,7 @@ def test_send_segment_sampled(self): os.environ["AWS_XRAY_DAEMON_ADDRESS"] = "fake-agent.com:8080" os.environ[ "_X_AMZN_TRACE_ID" - ] = "Root=1-5e272390-8c398be037738dc042009320;Parent=94ae789b969f1cc5;Sampled=1" + ] = "Root=1-5e272390-8c398be037738dc042009320;Parent=94ae789b969f1cc5;Sampled=1;Lineage=c6c5b1b9:0" with patch( "datadog_lambda.xray.send", MagicMock(return_value=None) ) as mock_send: From c87ff6b8de6e8897b1735889d9d7e94940292760 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Mon, 20 Mar 2023 16:12:41 -0400 Subject: [PATCH 006/268] fix the flaky test_exec_module_failure_case by enforcing the _cold_start= True (#311) --- tests/test_cold_start.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/tests/test_cold_start.py b/tests/test_cold_start.py index 8c4bb15e..56636dec 100644 --- a/tests/test_cold_start.py +++ b/tests/test_cold_start.py @@ -7,7 +7,9 @@ class TestColdStartTracingSetup(unittest.TestCase): def test_initialize_cold_start_tracing(self): + cold_start._cold_start = True cold_start.initialize_cold_start_tracing() # testing double wrapping + cold_start._cold_start = True cold_start.initialize_cold_start_tracing() cold_start.reset_node_stacks() for module_name in ["ast", "dis", "inspect"]: @@ -22,6 +24,7 @@ def test_initialize_cold_start_tracing(self): def test_bad_importer_find_spec_attribute_error(self): mock_importer = object() # AttributeError when accessing find_spec meta_path.append(mock_importer) + cold_start._cold_start = True cold_start.initialize_cold_start_tracing() # safe to call meta_path.pop() @@ -38,12 +41,13 @@ def find_spec(*args, **kwargs): mock_importer.find_spec = find_spec meta_path.append(mock_importer) + cold_start._cold_start = True cold_start.initialize_cold_start_tracing() self.assertFalse(mock_loader in cold_start.already_wrapped_loaders) meta_path.pop() os.environ["DD_COLD_START_TRACING"] = "true" - def xtest_exec_module_failure_case(self): + def test_exec_module_failure_case(self): mock_importer = MagicMock() mock_module_spec = MagicMock() mock_module_spec.name = "test_name" @@ -60,6 +64,7 @@ def find_spec(*args, **kwargs): mock_importer.find_spec = find_spec meta_path.insert(0, mock_importer) + cold_start._cold_start = True cold_start.initialize_cold_start_tracing() cold_start.reset_node_stacks() try: From 411b29fcc710c96681ec7f03b034780ad43c37e0 Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Wed, 22 Mar 2023 08:40:06 -0400 Subject: [PATCH 007/268] v4.69.0 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 4353970f..fc9dd509 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "4.68.0" +version = "4.69.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From ad8140a8aa784f73969e6967699621662ec3c3a8 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 10 Apr 2023 17:27:12 -0400 Subject: [PATCH 008/268] update snapshots (#312) Co-authored-by: joeyzhao2018 --- .../snapshots/logs/async-metrics_python37.log | 36 +++++++--- .../snapshots/logs/async-metrics_python38.log | 36 +++++++--- .../snapshots/logs/async-metrics_python39.log | 36 +++++++--- .../snapshots/logs/sync-metrics_python37.log | 63 +++++++++++++----- .../snapshots/logs/sync-metrics_python38.log | 65 +++++++++++++------ .../snapshots/logs/sync-metrics_python39.log | 65 +++++++++++++------ 6 files changed, 218 insertions(+), 83 deletions(-) diff --git a/tests/integration/snapshots/logs/async-metrics_python37.log b/tests/integration/snapshots/logs/async-metrics_python37.log index 038f7191..46a4f336 100644 --- a/tests/integration/snapshots/logs/async-metrics_python37.log +++ b/tests/integration/snapshots/logs/async-metrics_python37.log @@ -70,8 +70,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -123,6 +123,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -146,6 +147,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -230,8 +232,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -279,6 +281,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -302,6 +305,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -380,8 +384,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -428,6 +432,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -451,6 +456,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -539,8 +545,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -592,6 +598,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -615,6 +622,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -699,8 +707,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -748,6 +756,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -771,6 +780,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -852,8 +862,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -901,6 +911,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -924,6 +935,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1006,8 +1018,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1055,6 +1067,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -1078,6 +1091,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1159,8 +1173,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1208,6 +1222,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -1231,6 +1246,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1318,8 +1334,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1369,6 +1385,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -1392,6 +1409,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", diff --git a/tests/integration/snapshots/logs/async-metrics_python38.log b/tests/integration/snapshots/logs/async-metrics_python38.log index e38fa8f8..f27dfcd9 100644 --- a/tests/integration/snapshots/logs/async-metrics_python38.log +++ b/tests/integration/snapshots/logs/async-metrics_python38.log @@ -70,8 +70,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -123,6 +123,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -146,6 +147,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -230,8 +232,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -279,6 +281,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -302,6 +305,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -380,8 +384,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -428,6 +432,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -451,6 +456,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -539,8 +545,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -592,6 +598,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -615,6 +622,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -699,8 +707,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -748,6 +756,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -771,6 +780,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -852,8 +862,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -901,6 +911,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -924,6 +935,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1006,8 +1018,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1055,6 +1067,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -1078,6 +1091,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1159,8 +1173,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1208,6 +1222,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -1231,6 +1246,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1318,8 +1334,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1369,6 +1385,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -1392,6 +1409,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", diff --git a/tests/integration/snapshots/logs/async-metrics_python39.log b/tests/integration/snapshots/logs/async-metrics_python39.log index c3fa5623..1968de5e 100644 --- a/tests/integration/snapshots/logs/async-metrics_python39.log +++ b/tests/integration/snapshots/logs/async-metrics_python39.log @@ -70,8 +70,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -123,6 +123,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -146,6 +147,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -230,8 +232,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -279,6 +281,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -302,6 +305,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -380,8 +384,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -428,6 +432,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -451,6 +456,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -539,8 +545,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -592,6 +598,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -615,6 +622,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -699,8 +707,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -748,6 +756,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -771,6 +780,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -852,8 +862,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -901,6 +911,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -924,6 +935,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1006,8 +1018,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1055,6 +1067,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -1078,6 +1091,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1159,8 +1173,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1208,6 +1222,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -1231,6 +1246,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1318,8 +1334,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1369,6 +1385,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -1392,6 +1409,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", diff --git a/tests/integration/snapshots/logs/sync-metrics_python37.log b/tests/integration/snapshots/logs/sync-metrics_python37.log index bbf21d60..33853293 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python37.log +++ b/tests/integration/snapshots/logs/sync-metrics_python37.log @@ -50,8 +50,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -103,6 +103,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -126,6 +127,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -157,6 +159,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "runtime-id": "XXXX", "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", @@ -165,8 +168,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -227,8 +230,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -276,6 +279,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -299,6 +303,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -330,6 +335,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "runtime-id": "XXXX", "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", @@ -338,8 +344,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -394,8 +400,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -442,6 +448,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -465,6 +472,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -496,6 +504,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "runtime-id": "XXXX", "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", @@ -504,8 +513,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -570,8 +579,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -623,6 +632,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -646,6 +656,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -677,6 +688,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "runtime-id": "XXXX", "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", @@ -685,8 +697,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -747,8 +759,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -796,6 +808,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -819,6 +832,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -850,6 +864,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "runtime-id": "XXXX", "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", @@ -858,8 +873,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -917,8 +932,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -966,6 +981,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -989,6 +1005,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1020,6 +1037,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "runtime-id": "XXXX", "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", @@ -1028,8 +1046,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -1088,8 +1106,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1137,6 +1155,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -1160,6 +1179,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1191,6 +1211,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "runtime-id": "XXXX", "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", @@ -1199,8 +1220,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -1258,8 +1279,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1307,6 +1328,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -1330,6 +1352,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1361,6 +1384,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "runtime-id": "XXXX", "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", @@ -1369,8 +1393,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -1434,8 +1458,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1485,6 +1509,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -1508,6 +1533,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1539,6 +1565,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "runtime-id": "XXXX", "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", @@ -1547,8 +1574,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 diff --git a/tests/integration/snapshots/logs/sync-metrics_python38.log b/tests/integration/snapshots/logs/sync-metrics_python38.log index 8c3fb728..c62928a3 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python38.log +++ b/tests/integration/snapshots/logs/sync-metrics_python38.log @@ -50,8 +50,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -103,6 +103,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -126,6 +127,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -157,6 +159,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "runtime-id": "XXXX", "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", @@ -165,8 +168,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -227,8 +230,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -276,6 +279,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -299,6 +303,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -330,6 +335,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "runtime-id": "XXXX", "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", @@ -338,8 +344,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -394,8 +400,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -442,6 +448,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -465,6 +472,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -496,6 +504,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "runtime-id": "XXXX", "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", @@ -504,8 +513,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -570,8 +579,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -623,6 +632,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -646,6 +656,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -677,6 +688,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "runtime-id": "XXXX", "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", @@ -685,8 +697,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -747,8 +759,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -796,6 +808,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -819,6 +832,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -850,6 +864,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "runtime-id": "XXXX", "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", @@ -858,8 +873,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -917,8 +932,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -966,6 +981,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -989,6 +1005,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1003,7 +1020,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] } HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} -END Duration: XXXX ms Memory Used: XXXX MB { "traces": [ [ @@ -1021,6 +1037,7 @@ END Duration: XXXX ms Memory Used: XXXX MB "runtime-id": "XXXX", "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", @@ -1029,8 +1046,8 @@ END Duration: XXXX ms Memory Used: XXXX MB "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -1040,6 +1057,7 @@ END Duration: XXXX ms Memory Used: XXXX MB ] ] } +END Duration: XXXX ms Memory Used: XXXX MB START { "m": "aws.lambda.enhanced.invocations", @@ -1088,8 +1106,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1137,6 +1155,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -1160,6 +1179,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1191,6 +1211,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "runtime-id": "XXXX", "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", @@ -1199,8 +1220,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -1258,8 +1279,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1307,6 +1328,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -1330,6 +1352,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1361,6 +1384,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "runtime-id": "XXXX", "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", @@ -1369,8 +1393,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -1434,8 +1458,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1485,6 +1509,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -1508,6 +1533,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1539,6 +1565,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "runtime-id": "XXXX", "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", @@ -1547,8 +1574,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 diff --git a/tests/integration/snapshots/logs/sync-metrics_python39.log b/tests/integration/snapshots/logs/sync-metrics_python39.log index 1c7e071e..fbde4bcd 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python39.log +++ b/tests/integration/snapshots/logs/sync-metrics_python39.log @@ -50,8 +50,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -103,6 +103,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -126,6 +127,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -140,6 +142,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] } HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} +END Duration: XXXX ms (init: XXXX ms) Memory Used: XXXX MB { "traces": [ [ @@ -157,6 +160,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "runtime-id": "XXXX", "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", @@ -165,8 +169,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -176,7 +180,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept ] ] } -END Duration: XXXX ms (init: XXXX ms) Memory Used: XXXX MB START { "m": "aws.lambda.enhanced.invocations", @@ -227,8 +230,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -276,6 +279,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -299,6 +303,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -330,6 +335,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "runtime-id": "XXXX", "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", @@ -338,8 +344,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -394,8 +400,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -442,6 +448,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -465,6 +472,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -496,6 +504,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "runtime-id": "XXXX", "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", @@ -504,8 +513,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -570,8 +579,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -623,6 +632,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -646,6 +656,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -677,6 +688,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "runtime-id": "XXXX", "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", @@ -685,8 +697,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -747,8 +759,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -796,6 +808,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -819,6 +832,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -850,6 +864,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "runtime-id": "XXXX", "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", @@ -858,8 +873,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -917,8 +932,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -966,6 +981,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -989,6 +1005,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1020,6 +1037,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "runtime-id": "XXXX", "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", @@ -1028,8 +1046,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -1088,8 +1106,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1137,6 +1155,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -1160,6 +1179,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1191,6 +1211,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "runtime-id": "XXXX", "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", @@ -1199,8 +1220,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -1258,8 +1279,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1307,6 +1328,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -1330,6 +1352,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1361,6 +1384,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "runtime-id": "XXXX", "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", @@ -1369,8 +1393,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -1434,8 +1458,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1485,6 +1509,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -1508,6 +1533,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1539,6 +1565,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "runtime-id": "XXXX", "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", @@ -1547,8 +1574,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 From ce5328077fcb47924432bd81b963c8cd7500982a Mon Sep 17 00:00:00 2001 From: kimi <47579703+kimi-p@users.noreply.github.com> Date: Wed, 12 Apr 2023 11:01:21 -0400 Subject: [PATCH 009/268] Lambda and Step Functions Span Linking (#320) --- datadog_lambda/tracing.py | 41 ++++++++++++++++++++++++++++++++++++++- datadog_lambda/trigger.py | 6 +++++- tests/test_tracing.py | 26 ++++++++++++++++++++++--- 3 files changed, 68 insertions(+), 5 deletions(-) diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 19ef8c04..67836e46 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -2,7 +2,7 @@ # under the Apache License Version 2.0. # This product includes software developed at Datadog (https://www.datadoghq.com/). # Copyright 2019 Datadog, Inc. - +import hashlib import logging import os import json @@ -328,6 +328,39 @@ def extract_context_from_kinesis_event(event, lambda_context): return extract_context_from_lambda_context(lambda_context) +def _deterministic_md5_hash(s: str) -> str: + """MD5 here is to generate trace_id, not for any encryption.""" + hex_number = hashlib.md5(s.encode("ascii")).hexdigest() + binary = bin(int(hex_number, 16)) + binary_str = str(binary) + binary_str_remove_0b = binary_str[2:].rjust(128, "0") + most_significant_64_bits_without_leading_1 = "0" + binary_str_remove_0b[1:-64] + result = str(int(most_significant_64_bits_without_leading_1, 2)) + if result == "0" * 64: + return "1" + return result + + +def extract_context_from_step_functions(event, lambda_context): + """ + Only extract datadog trace context when Step Functions Context Object is injected + into lambda's event dict. + """ + try: + execution_id = event.get("Execution").get("Id") + state_name = event.get("State").get("Name") + state_entered_time = event.get("State").get("EnteredTime") + trace_id = _deterministic_md5_hash(execution_id) + parent_id = _deterministic_md5_hash( + execution_id + "#" + state_name + "#" + state_entered_time + ) + sampling_priority = SamplingPriority.AUTO_KEEP + return trace_id, parent_id, sampling_priority + except Exception as e: + logger.debug("The Step Functions trace extractor returned with error %s", e) + return extract_context_from_lambda_context(lambda_context) + + def extract_context_custom_extractor(extractor, event, lambda_context): """ Extract Datadog trace context using a custom trace extractor function @@ -440,6 +473,12 @@ def extract_dd_trace_context( parent_id, sampling_priority, ) = extract_context_from_kinesis_event(event, lambda_context) + elif event_source.equals(EventTypes.STEPFUNCTIONS): + ( + trace_id, + parent_id, + sampling_priority, + ) = extract_context_from_step_functions(event, lambda_context) else: trace_id, parent_id, sampling_priority = extract_context_from_lambda_context( lambda_context diff --git a/datadog_lambda/trigger.py b/datadog_lambda/trigger.py index 0576e3f9..bbb44b30 100644 --- a/datadog_lambda/trigger.py +++ b/datadog_lambda/trigger.py @@ -34,12 +34,13 @@ class EventTypes(_stringTypedEnum): CLOUDWATCH_EVENTS = "cloudwatch-events" CLOUDFRONT = "cloudfront" DYNAMODB = "dynamodb" + EVENTBRIDGE = "eventbridge" KINESIS = "kinesis" LAMBDA_FUNCTION_URL = "lambda-function-url" S3 = "s3" SNS = "sns" SQS = "sqs" - EVENTBRIDGE = "eventbridge" + STEPFUNCTIONS = "states" class EventSubtypes(_stringTypedEnum): @@ -145,6 +146,9 @@ def parse_event_source(event: dict) -> _EventSource: if event.get("source") == "aws.events" or has_event_categories: event_source = _EventSource(EventTypes.CLOUDWATCH_EVENTS) + if "Execution" in event and "StateMachine" in event and "State" in event: + event_source = _EventSource(EventTypes.STEPFUNCTIONS) + event_record = get_first_record(event) if event_record: aws_event_source = event_record.get( diff --git a/tests/test_tracing.py b/tests/test_tracing.py index 25865d5e..e19c66aa 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -5,7 +5,7 @@ from unittest.mock import MagicMock, Mock, patch, call import ddtrace -from ddtrace.constants import ERROR_MSG, ERROR_TYPE + from ddtrace import tracer from ddtrace.context import Context @@ -15,6 +15,7 @@ XraySubsegment, ) from datadog_lambda.tracing import ( + _deterministic_md5_hash, create_inferred_span, extract_dd_trace_context, create_dd_dummy_metadata_subsegment, @@ -1334,9 +1335,7 @@ def test_create_inferred_span_from_api_gateway_event_no_apiid(self): event = json.load(event) ctx = get_mock_context() ctx.aws_request_id = "123" - print(event) span = create_inferred_span(event, ctx) - print(span) self.assertEqual(span.get_tag("operation_name"), "aws.apigateway.rest") self.assertEqual( span.service, @@ -1389,3 +1388,24 @@ def test_no_error_with_nonetype_headers(self): lambda_ctx, ) self.assertEqual(ctx, None) + + +class TestStepFunctionsTraceContext(unittest.TestCase): + def test_deterministic_m5_hash(self): + result = _deterministic_md5_hash("some_testing_random_string") + self.assertEqual("2251275791555400689", result) + + def test_deterministic_m5_hash__result_the_same_as_backend(self): + result = _deterministic_md5_hash( + "arn:aws:states:sa-east-1:601427271234:express:DatadogStateMachine:acaf1a67-336a-e854-1599-2a627eb2dd8a" + ":c8baf081-31f1-464d-971f-70cb17d01111#step-one#2022-12-08T21:08:19.224Z" + ) + self.assertEqual("8034507082463708833", result) + + def test_deterministic_m5_hash__always_leading_with_zero(self): + for i in range(100): + result = _deterministic_md5_hash(str(i)) + result_in_binary = bin(int(result)) + # Leading zeros will be omitted, so only test for full 64 bits present + if len(result_in_binary) == 66: # "0b" + 64 bits. + self.assertTrue(result_in_binary.startswith("0b0")) From 12b2c8bf6feeba6e9ccc682d7ae5db9d1044b192 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Wed, 12 Apr 2023 14:14:36 -0400 Subject: [PATCH 010/268] Modify end time of lambda load span to be last cold start node's end_time (#319) * modify endtime of lambda load span to be the last cold start node endtime --- datadog_lambda/cold_start.py | 13 +++++++++---- datadog_lambda/tracing.py | 2 +- scripts/build_layers.sh | 2 +- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/datadog_lambda/cold_start.py b/datadog_lambda/cold_start.py index fdb43b81..a10a2ad7 100644 --- a/datadog_lambda/cold_start.py +++ b/datadog_lambda/cold_start.py @@ -134,14 +134,16 @@ def __init__( self, tracer, function_name, - cold_start_span_finish_time_ns, + current_span_start_time_ns, trace_ctx, min_duration_ms: int, - ignored_libs: List[str] = [], + ignored_libs: List[str] = None, ): + if ignored_libs is None: + ignored_libs = [] self._tracer = tracer self.function_name = function_name - self.cold_start_span_finish_time_ns = cold_start_span_finish_time_ns + self.current_span_start_time_ns = current_span_start_time_ns self.min_duration_ms = min_duration_ms self.trace_ctx = trace_ctx self.ignored_libs = ignored_libs @@ -151,11 +153,14 @@ def trace(self, root_nodes: List[ImportNode] = root_nodes): if not root_nodes: return cold_start_span_start_time_ns = root_nodes[0].start_time_ns + cold_start_span_end_time_ns = min( + root_nodes[-1].end_time_ns, self.current_span_start_time_ns + ) cold_start_span = self.create_cold_start_span(cold_start_span_start_time_ns) while root_nodes: root_node = root_nodes.pop() self.trace_tree(root_node, cold_start_span) - self.finish_span(cold_start_span, self.cold_start_span_finish_time_ns) + self.finish_span(cold_start_span, cold_start_span_end_time_ns) def trace_tree(self, import_node: ImportNode, parent_span): if ( diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 67836e46..7879697e 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -385,7 +385,7 @@ def is_authorizer_response(response) -> bool: and response["principalId"] and response["policyDocument"] ) - except KeyError: + except (KeyError, AttributeError): pass except Exception as e: logger.debug("unknown error while checking is_authorizer_response %s", e) diff --git a/scripts/build_layers.sh b/scripts/build_layers.sh index 0bf67f49..e1bd557e 100755 --- a/scripts/build_layers.sh +++ b/scripts/build_layers.sh @@ -68,7 +68,7 @@ mkdir $LAYER_DIR for python_version in "${PYTHON_VERSIONS[@]}" do - if [ "$python_version" == "3.8" ] || [ "$python_version" == "3.9" ]; then + if [ "$python_version" != "3.7" ]; then echo "Building layer for Python ${python_version} arch=arm64" docker_build_zip ${python_version} $LAYER_DIR/${LAYER_FILES_PREFIX}-arm64-${python_version}.zip arm64 fi From dc51d5250fba737c345246610cad1a6a99af3ada Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Wed, 12 Apr 2023 15:27:03 -0400 Subject: [PATCH 011/268] v4.70.0 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index fc9dd509..3508fcb3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "4.69.0" +version = "4.70.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 0cfae172953e35143d9f77d30802eae491d84d7f Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Mon, 17 Apr 2023 14:27:03 -0400 Subject: [PATCH 012/268] adding python3.10 (#324) * adding python3.10 * stringify python-version params in build.yml --- .github/workflows/build.yml | 4 +- .vscode/launch.json | 15 + .vscode/settings.json | 5 +- README.md | 2 +- pyproject.toml | 1 + scripts/add_new_region.sh | 12 +- scripts/build_layers.sh | 2 +- scripts/check_layer_size.sh | 2 +- scripts/list_layers.sh | 6 +- scripts/publish_layers.sh | 10 +- scripts/run_integration_tests.sh | 7 +- scripts/run_tests.sh | 4 +- scripts/sign_layers.sh | 6 +- .../logs/async-metrics_python310.log | 1426 +++++++++++++++ .../snapshots/logs/sync-metrics_python310.log | 1588 +++++++++++++++++ ...son => async-metrics_api-gateway-get.json} | 0 ...amodb.json => async-metrics_dynamodb.json} | 0 ... => async-metrics_eventbridge-custom.json} | 0 ....json => async-metrics_http-api copy.json} | 0 ...p-api.json => async-metrics_http-api.json} | 0 ...inesis.json => async-metrics_kinesis.json} | 0 ...sync-metrics_python27_api-gateway-get.json | 8 - .../async-metrics_python27_sns.json | 10 - .../async-metrics_python27_sqs.json | 11 - ...sync-metrics_python38_api-gateway-get.json | 8 - .../async-metrics_python38_dynamodb.json | 8 - ...c-metrics_python38_eventbridge-custom.json | 8 - .../async-metrics_python38_kinesis.json | 8 - .../async-metrics_python38_s3.json | 8 - .../async-metrics_python38_sns.json | 10 - .../async-metrics_python38_sqs.json | 11 - .../async-metrics_python38_websocket.json | 8 - ...sync-metrics_python39_api-gateway-get.json | 8 - .../async-metrics_python39_dynamodb.json | 8 - ...c-metrics_python39_eventbridge-custom.json | 8 - .../async-metrics_python39_http-api.json | 8 - .../async-metrics_python39_kinesis.json | 8 - .../async-metrics_python39_s3.json | 8 - .../async-metrics_python39_sns.json | 10 - .../async-metrics_python39_sqs.json | 11 - .../async-metrics_python39_websocket.json | 8 - ...python36_s3.json => async-metrics_s3.json} | 0 ...thon36_sns.json => async-metrics_sns.json} | 0 ...thon36_sqs.json => async-metrics_sqs.json} | 0 ...cket.json => async-metrics_websocket.json} | 0 ...json => sync-metrics_api-gateway-get.json} | 0 ...namodb.json => sync-metrics_dynamodb.json} | 0 ...n => sync-metrics_eventbridge-custom.json} | 0 ...tp-api.json => sync-metrics_http-api.json} | 0 ...kinesis.json => sync-metrics_kinesis.json} | 0 ...sync-metrics_python27_api-gateway-get.json | 8 - .../sync-metrics_python27_sns.json | 10 - .../sync-metrics_python27_sqs.json | 11 - ...sync-metrics_python36_api-gateway-get.json | 8 - .../sync-metrics_python36_dynamodb.json | 8 - ...c-metrics_python36_eventbridge-custom.json | 8 - .../sync-metrics_python36_http-api.json | 8 - .../sync-metrics_python36_kinesis.json | 8 - .../sync-metrics_python36_s3.json | 8 - .../sync-metrics_python36_sns.json | 10 - .../sync-metrics_python36_sqs.json | 11 - .../sync-metrics_python36_websocket.json | 8 - ...sync-metrics_python37_api-gateway-get.json | 8 - .../sync-metrics_python37_dynamodb.json | 8 - ...c-metrics_python37_eventbridge-custom.json | 8 - .../sync-metrics_python37_http-api.json | 8 - .../sync-metrics_python37_kinesis.json | 8 - .../sync-metrics_python37_s3.json | 8 - .../sync-metrics_python37_sns.json | 10 - .../sync-metrics_python37_sqs.json | 11 - .../sync-metrics_python37_websocket.json | 8 - ...sync-metrics_python38_api-gateway-get.json | 8 - .../sync-metrics_python38_dynamodb.json | 8 - ...c-metrics_python38_eventbridge-custom.json | 8 - .../sync-metrics_python38_http-api.json | 8 - .../sync-metrics_python38_kinesis.json | 8 - .../sync-metrics_python38_s3.json | 8 - .../sync-metrics_python38_sns.json | 10 - .../sync-metrics_python38_sqs.json | 11 - .../sync-metrics_python38_websocket.json | 8 - ...sync-metrics_python39_api-gateway-get.json | 8 - .../sync-metrics_python39_dynamodb.json | 8 - ...c-metrics_python39_eventbridge-custom.json | 8 - .../sync-metrics_python39_http-api.json | 8 - .../sync-metrics_python39_kinesis.json | 8 - .../sync-metrics_python39_s3.json | 8 - .../sync-metrics_python39_sns.json | 10 - .../sync-metrics_python39_sqs.json | 11 - .../sync-metrics_python39_websocket.json | 8 - ..._python37_s3.json => sync-metrics_s3.json} | 0 ...ython37_sns.json => sync-metrics_sns.json} | 0 ...ython37_sqs.json => sync-metrics_sqs.json} | 0 ...ocket.json => sync-metrics_websocket.json} | 0 93 files changed, 3063 insertions(+), 539 deletions(-) create mode 100644 .vscode/launch.json create mode 100644 tests/integration/snapshots/logs/async-metrics_python310.log create mode 100644 tests/integration/snapshots/logs/sync-metrics_python310.log rename tests/integration/snapshots/return_values/{async-metrics_python36_api-gateway-get.json => async-metrics_api-gateway-get.json} (100%) rename tests/integration/snapshots/return_values/{async-metrics_python36_dynamodb.json => async-metrics_dynamodb.json} (100%) rename tests/integration/snapshots/return_values/{async-metrics_python36_eventbridge-custom.json => async-metrics_eventbridge-custom.json} (100%) rename tests/integration/snapshots/return_values/{async-metrics_python36_http-api.json => async-metrics_http-api copy.json} (100%) rename tests/integration/snapshots/return_values/{async-metrics_python37_http-api.json => async-metrics_http-api.json} (100%) rename tests/integration/snapshots/return_values/{async-metrics_python36_kinesis.json => async-metrics_kinesis.json} (100%) delete mode 100644 tests/integration/snapshots/return_values/async-metrics_python27_api-gateway-get.json delete mode 100644 tests/integration/snapshots/return_values/async-metrics_python27_sns.json delete mode 100644 tests/integration/snapshots/return_values/async-metrics_python27_sqs.json delete mode 100644 tests/integration/snapshots/return_values/async-metrics_python38_api-gateway-get.json delete mode 100644 tests/integration/snapshots/return_values/async-metrics_python38_dynamodb.json delete mode 100644 tests/integration/snapshots/return_values/async-metrics_python38_eventbridge-custom.json delete mode 100644 tests/integration/snapshots/return_values/async-metrics_python38_kinesis.json delete mode 100644 tests/integration/snapshots/return_values/async-metrics_python38_s3.json delete mode 100644 tests/integration/snapshots/return_values/async-metrics_python38_sns.json delete mode 100644 tests/integration/snapshots/return_values/async-metrics_python38_sqs.json delete mode 100644 tests/integration/snapshots/return_values/async-metrics_python38_websocket.json delete mode 100644 tests/integration/snapshots/return_values/async-metrics_python39_api-gateway-get.json delete mode 100644 tests/integration/snapshots/return_values/async-metrics_python39_dynamodb.json delete mode 100644 tests/integration/snapshots/return_values/async-metrics_python39_eventbridge-custom.json delete mode 100644 tests/integration/snapshots/return_values/async-metrics_python39_http-api.json delete mode 100644 tests/integration/snapshots/return_values/async-metrics_python39_kinesis.json delete mode 100644 tests/integration/snapshots/return_values/async-metrics_python39_s3.json delete mode 100644 tests/integration/snapshots/return_values/async-metrics_python39_sns.json delete mode 100644 tests/integration/snapshots/return_values/async-metrics_python39_sqs.json delete mode 100644 tests/integration/snapshots/return_values/async-metrics_python39_websocket.json rename tests/integration/snapshots/return_values/{async-metrics_python36_s3.json => async-metrics_s3.json} (100%) rename tests/integration/snapshots/return_values/{async-metrics_python36_sns.json => async-metrics_sns.json} (100%) rename tests/integration/snapshots/return_values/{async-metrics_python36_sqs.json => async-metrics_sqs.json} (100%) rename tests/integration/snapshots/return_values/{async-metrics_python36_websocket.json => async-metrics_websocket.json} (100%) rename tests/integration/snapshots/return_values/{async-metrics_python37_api-gateway-get.json => sync-metrics_api-gateway-get.json} (100%) rename tests/integration/snapshots/return_values/{async-metrics_python37_dynamodb.json => sync-metrics_dynamodb.json} (100%) rename tests/integration/snapshots/return_values/{async-metrics_python37_eventbridge-custom.json => sync-metrics_eventbridge-custom.json} (100%) rename tests/integration/snapshots/return_values/{async-metrics_python38_http-api.json => sync-metrics_http-api.json} (100%) rename tests/integration/snapshots/return_values/{async-metrics_python37_kinesis.json => sync-metrics_kinesis.json} (100%) delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python27_api-gateway-get.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python27_sns.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python27_sqs.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python36_api-gateway-get.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python36_dynamodb.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python36_eventbridge-custom.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python36_http-api.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python36_kinesis.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python36_s3.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python36_sns.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python36_sqs.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python36_websocket.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python37_api-gateway-get.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python37_dynamodb.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python37_eventbridge-custom.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python37_http-api.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python37_kinesis.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python37_s3.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python37_sns.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python37_sqs.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python37_websocket.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python38_api-gateway-get.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python38_dynamodb.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python38_eventbridge-custom.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python38_http-api.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python38_kinesis.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python38_s3.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python38_sns.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python38_sqs.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python38_websocket.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python39_api-gateway-get.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python39_dynamodb.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python39_eventbridge-custom.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python39_http-api.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python39_kinesis.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python39_s3.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python39_sns.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python39_sqs.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python39_websocket.json rename tests/integration/snapshots/return_values/{async-metrics_python37_s3.json => sync-metrics_s3.json} (100%) rename tests/integration/snapshots/return_values/{async-metrics_python37_sns.json => sync-metrics_sns.json} (100%) rename tests/integration/snapshots/return_values/{async-metrics_python37_sqs.json => sync-metrics_sqs.json} (100%) rename tests/integration/snapshots/return_values/{async-metrics_python37_websocket.json => sync-metrics_websocket.json} (100%) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0cc6b753..bc76a699 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -41,7 +41,7 @@ jobs: strategy: max-parallel: 4 matrix: - python-version: [3.7, 3.8, 3.9] + python-version: ['3.7', '3.8', '3.9', '3.10'] steps: - name: Checkout @@ -68,7 +68,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - runtime-param: [3.7, 3.8, 3.9] + runtime-param: ['3.7', '3.8', '3.9', '3.10'] steps: - name: Checkout uses: actions/checkout@v3 diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 00000000..fb1d43eb --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,15 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "Python: Module", + "type": "python", + "request": "launch", + "module": "unittest", + "justMyCode": true + } + ] +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json index db92ccf3..e58c4de2 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,4 +1,7 @@ { "python.pythonPath": "/usr/local/bin/python3", - "python.formatting.provider": "black" + "python.formatting.provider": "black", + "python.testing.unittestArgs": ["-v", "-s", "./tests", "-p", "test*.py"], + "python.testing.pytestEnabled": false, + "python.testing.unittestEnabled": true } diff --git a/README.md b/README.md index 9ebcdcde..87ec805c 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ [![Slack](https://chat.datadoghq.com/badge.svg?bg=632CA6)](https://chat.datadoghq.com/) [![License](https://img.shields.io/badge/license-Apache--2.0-blue)](https://github.com/DataDog/datadog-lambda-python/blob/main/LICENSE) -Datadog Lambda Library for Python (3.7, 3.8, and 3.9) enables [enhanced Lambda metrics](https://docs.datadoghq.com/serverless/enhanced_lambda_metrics), [distributed tracing](https://docs.datadoghq.com/serverless/distributed_tracing), and [custom metric submission](https://docs.datadoghq.com/serverless/custom_metrics) from AWS Lambda functions. +Datadog Lambda Library for Python (3.7, 3.8, 3.9, and 3.10) enables [enhanced Lambda metrics](https://docs.datadoghq.com/serverless/enhanced_lambda_metrics), [distributed tracing](https://docs.datadoghq.com/serverless/distributed_tracing), and [custom metric submission](https://docs.datadoghq.com/serverless/custom_metrics) from AWS Lambda functions. ## Installation diff --git a/pyproject.toml b/pyproject.toml index 3508fcb3..6e1195bb 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -19,6 +19,7 @@ classifiers = [ "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", ] [tool.poetry.dependencies] diff --git a/scripts/add_new_region.sh b/scripts/add_new_region.sh index 005c8616..12a27b69 100755 --- a/scripts/add_new_region.sh +++ b/scripts/add_new_region.sh @@ -8,12 +8,12 @@ # Copy layers from us-east-1 to new region # args: [new-region] -set -e +set -e OLD_REGION='us-east-1' -PYTHON_VERSIONS_FOR_AWS_CLI=("python3.7" "python3.8" "python3.9") -LAYER_NAMES=("Datadog-Python37" "Datadog-Python38" "Datadog-Python39") +LAYER_NAMES=("Datadog-Python37" "Datadog-Python38" "Datadog-Python38-ARM" "Datadog-Python39" "Datadog-Python39-ARM" "Datadog-Python310" "Datadog-Python310-ARM") +PYTHON_VERSIONS_FOR_AWS_CLI=("python3.7" "python3.8" "python3.8" "python3.9" "python3.9" "python3.10" "python3.10") NEW_REGION=$1 publish_layer() { @@ -68,11 +68,11 @@ for layer_name in "${LAYER_NAMES[@]}"; do fi # run for each version of layer - for i in $(seq 1 $last_layer_version); do + for i in $(seq 1 $last_layer_version); do layer_path=$layer_name"_"$i.zip aws_version_key="${PYTHON_VERSIONS_FOR_AWS_CLI[$j]}" - # download layer versions + # download layer versions URL=$(AWS_REGION=$OLD_REGION aws lambda get-layer-version --layer-name $layer_name --version-number $i --query Content.Location --output text) curl $URL -o $layer_path @@ -82,4 +82,4 @@ for layer_name in "${LAYER_NAMES[@]}"; do done j=$(expr $j + 1) -done \ No newline at end of file +done diff --git a/scripts/build_layers.sh b/scripts/build_layers.sh index e1bd557e..1a35a595 100755 --- a/scripts/build_layers.sh +++ b/scripts/build_layers.sh @@ -14,7 +14,7 @@ set -e LAYER_DIR=".layers" LAYER_FILES_PREFIX="datadog_lambda_py" -AVAILABLE_PYTHON_VERSIONS=("3.7" "3.8" "3.9") +AVAILABLE_PYTHON_VERSIONS=("3.7" "3.8" "3.9" "3.10") # Determine which Python versions to build layers for if [ -z "$PYTHON_VERSION" ]; then diff --git a/scripts/check_layer_size.sh b/scripts/check_layer_size.sh index 448686c9..e3da8ed5 100755 --- a/scripts/check_layer_size.sh +++ b/scripts/check_layer_size.sh @@ -14,7 +14,7 @@ MAX_LAYER_UNCOMPRESSED_SIZE_KB=$(expr 24 \* 1024) LAYER_FILES_PREFIX="datadog_lambda_py" LAYER_DIR=".layers" -VERSIONS=("3.7" "3.8" "3.9") +VERSIONS=("3.7" "3.8" "3.9" "3.10") for version in "${VERSIONS[@]}" do diff --git a/scripts/list_layers.sh b/scripts/list_layers.sh index 2835187e..2039f31e 100755 --- a/scripts/list_layers.sh +++ b/scripts/list_layers.sh @@ -10,7 +10,7 @@ set -e -LAYER_NAMES=("Datadog-Python37" "Datadog-Python38" "Datadog-Python38-ARM" "Datadog-Python39" "Datadog-Python39-ARM") +LAYER_NAMES=("Datadog-Python37" "Datadog-Python38" "Datadog-Python38-ARM" "Datadog-Python39" "Datadog-Python39-ARM" "Datadog-Python310" "Datadog-Python310-ARM") AVAILABLE_REGIONS=$(aws ec2 describe-regions | jq -r '.[] | .[] | .RegionName') LAYERS_MISSING_REGIONS=() @@ -63,6 +63,6 @@ done if [ ${#LAYERS_MISSING_REGIONS[@]} -gt 0 ]; then echo "WARNING: Following regions missing layers: ${LAYERS_MISSING_REGIONS[@]}" - echo "Please run ./add_new_region.sh to add layers to the missing regions" + echo "Please run ./add_new_region.sh to add layers to the missing regions" exit 1 -fi \ No newline at end of file +fi diff --git a/scripts/publish_layers.sh b/scripts/publish_layers.sh index d7d12ea4..88b2741f 100755 --- a/scripts/publish_layers.sh +++ b/scripts/publish_layers.sh @@ -13,10 +13,10 @@ set -e # Makes sure any subprocesses will be terminated with this process trap "pkill -P $$; exit 1;" INT -PYTHON_VERSIONS_FOR_AWS_CLI=("python3.7" "python3.8" "python3.8" "python3.9" "python3.9") -LAYER_PATHS=(".layers/datadog_lambda_py-amd64-3.7.zip" ".layers/datadog_lambda_py-amd64-3.8.zip" ".layers/datadog_lambda_py-arm64-3.8.zip" ".layers/datadog_lambda_py-amd64-3.9.zip" ".layers/datadog_lambda_py-arm64-3.9.zip") -AVAILABLE_LAYERS=("Datadog-Python37" "Datadog-Python38" "Datadog-Python38-ARM" "Datadog-Python39" "Datadog-Python39-ARM") -ARCHS=("amd64" "amd64" "amd64""amd64" "amd64" "arm64") +PYTHON_VERSIONS_FOR_AWS_CLI=("python3.7" "python3.8" "python3.8" "python3.9" "python3.9" "python3.10" "python3.10") +LAYER_PATHS=(".layers/datadog_lambda_py-amd64-3.7.zip" ".layers/datadog_lambda_py-amd64-3.8.zip" ".layers/datadog_lambda_py-arm64-3.8.zip" ".layers/datadog_lambda_py-amd64-3.9.zip" ".layers/datadog_lambda_py-arm64-3.9.zip" ".layers/datadog_lambda_py-amd64-3.10.zip" ".layers/datadog_lambda_py-arm64-3.10.zip") +AVAILABLE_LAYERS=("Datadog-Python37" "Datadog-Python38" "Datadog-Python38-ARM" "Datadog-Python39" "Datadog-Python39-ARM" "Datadog-Python310" "Datadog-Python310-ARM") +ARCHS=("amd64" "amd64" "amd64""amd64" "amd64" "arm64" "amd64" "arm64") AVAILABLE_REGIONS=$(aws ec2 describe-regions | jq -r '.[] | .[] | .RegionName') # Check that the layer files exist @@ -129,7 +129,7 @@ do # This shouldn't happen unless someone manually deleted the latest version, say 28 # and then try to republish it again. The published version is actually be 29, because - # Lambda layers are immutable and AWS will skip deleted version and use the next number. + # Lambda layers are immutable and AWS will skip deleted version and use the next number. if [ $latest_version -gt $VERSION ]; then echo "ERROR: Published version $latest_version is greater than the desired version $VERSION!" echo "Exiting" diff --git a/scripts/run_integration_tests.sh b/scripts/run_integration_tests.sh index 6187c6eb..85a3dd2f 100755 --- a/scripts/run_integration_tests.sh +++ b/scripts/run_integration_tests.sh @@ -11,7 +11,7 @@ set -e # These values need to be in sync with serverless.yml, where there needs to be a function # defined for every handler_runtime combination LAMBDA_HANDLERS=("async-metrics" "sync-metrics") -RUNTIMES=("python37" "python38" "python39") +RUNTIMES=("python37" "python38" "python39" "python310") LOGS_WAIT_SECONDS=20 @@ -31,8 +31,9 @@ mismatch_found=false python37=("python3.7" "3.7" $(xxd -l 4 -c 4 -p < /dev/random)) python38=("python3.8" "3.8" $(xxd -l 4 -c 4 -p < /dev/random)) python39=("python3.9" "3.9" $(xxd -l 4 -c 4 -p < /dev/random)) +python310=("python3.10" "3.10" $(xxd -l 4 -c 4 -p < /dev/random)) -PARAMETERS_SETS=("python37" "python38" "python39") +PARAMETERS_SETS=("python37" "python38" "python39" "python310") if [ -z "$RUNTIME_PARAM" ]; then echo "Python version not specified, running for all python versions." @@ -111,7 +112,7 @@ python version : ${!python_version} and run id : ${!run_id}" for input_event_file in "${input_event_files[@]}"; do # Get event name without trailing ".json" so we can build the snapshot file name input_event_name=$(echo "$input_event_file" | sed "s/.json//") - snapshot_path="./snapshots/return_values/${handler_name}_${parameters_set}_${input_event_name}.json" + snapshot_path="./snapshots/return_values/${handler_name}_${input_event_name}.json" return_value=$(PYTHON_VERSION=${!python_version} RUNTIME=$parameters_set SERVERLESS_RUNTIME=${!serverless_runtime} \ serverless invoke --stage ${!run_id} -f "$function_name" --path "./input_events/$input_event_file") diff --git a/scripts/run_tests.sh b/scripts/run_tests.sh index 9d667cd9..a5bf09b7 100755 --- a/scripts/run_tests.sh +++ b/scripts/run_tests.sh @@ -8,7 +8,7 @@ # Run unit tests in Docker set -e -PYTHON_VERSIONS=("3.7" "3.8" "3.9") +PYTHON_VERSIONS=("3.7" "3.8" "3.9" "3.10") for python_version in "${PYTHON_VERSIONS[@]}" do @@ -18,7 +18,7 @@ do --build-arg python_version=$python_version docker run -w /test \ datadog-lambda-python-test:$python_version \ - nose2 -v + nose2 -v docker run -w /test \ datadog-lambda-python-test:$python_version \ flake8 datadog_lambda/ diff --git a/scripts/sign_layers.sh b/scripts/sign_layers.sh index 5a7e7921..166093a4 100755 --- a/scripts/sign_layers.sh +++ b/scripts/sign_layers.sh @@ -14,6 +14,8 @@ LAYER_FILES=( "datadog_lambda_py-arm64-3.8.zip" "datadog_lambda_py-amd64-3.9.zip" "datadog_lambda_py-arm64-3.9.zip" + "datadog_lambda_py-amd64-3.10.zip" + "datadog_lambda_py-arm64-3.10.zip" ) SIGNING_PROFILE_NAME="DatadogLambdaSigningProfile" @@ -38,7 +40,7 @@ fi for LAYER_FILE in "${LAYER_FILES[@]}" do - echo + echo echo "${LAYER_FILE}" echo "-------------------------" @@ -68,7 +70,7 @@ do do sleep 3 SECONDS_WAITED_SO_FAR=$((SECONDS_WAITED_SO_FAR + 3)) - + SIGNING_JOB_DESCRIPTION=$(aws signer describe-signing-job \ --job-id $SIGNING_JOB_ID \ --region $REGION\ diff --git a/tests/integration/snapshots/logs/async-metrics_python310.log b/tests/integration/snapshots/logs/async-metrics_python310.log new file mode 100644 index 00000000..a7ad8826 --- /dev/null +++ b/tests/integration/snapshots/logs/async-metrics_python310.log @@ -0,0 +1,1426 @@ +INIT_START Runtime Version: python:3.10.vX Runtime Version ARN: arn:aws:lambda:eu-west-1:XXXX:eu-west-1 +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python310", + "resource:integration-tests-python-XXXX-async-metrics_python310", + "cold_start:true", + "memorysize:1024", + "runtime:python3.10", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "XXXX.execute-api.us-east-2.amazonaws.com", + "resource": "GET /", + "name": "aws.apigateway", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.apigateway.rest", + "http.url": "XXXX.execute-api.us-east-2.amazonaws.com/", + "endpoint": "/", + "http.method": "GET", + "resource_names": "GET /", + "apiid": "XXXX", + "apiname": "XXXX", + "stage": "Prod", + "request_id": "XXXX", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "http.status_code": "200", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python310", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "true", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python310", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python310", + "functionname": "integration-tests-python-XXXX-async-metrics_python310", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "api-gateway", + "function_trigger.event_source_arn": "XXXX", + "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", + "http.url_details.path": "/Prod/", + "http.method": "GET", + "http.status_code": "200" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms (init: XXXX ms) Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python310", + "resource:integration-tests-python-XXXX-async-metrics_python310", + "cold_start:false", + "memorysize:1024", + "runtime:python3.10", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "dynamodb", + "resource": "ExampleTableWithStream", + "name": "aws.dynamodb", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.dynamodb", + "resource_names": "ExampleTableWithStream", + "tablename": "ExampleTableWithStream", + "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", + "event_id": "XXXX", + "event_name": "INSERT", + "event_version": "1.1", + "stream_view_type": "NEW_AND_OLD_IMAGES", + "size_bytes": "26", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python310", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python310", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python310", + "functionname": "integration-tests-python-XXXX-async-metrics_python310", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "dynamodb", + "function_trigger.event_source_arn": "XXXX" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python310", + "resource:integration-tests-python-XXXX-async-metrics_python310", + "cold_start:false", + "memorysize:1024", + "runtime:python3.10", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "eventbridge", + "resource": "eventbridge.custom.event.sender", + "name": "aws.eventbridge", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.eventbridge", + "resource_names": "eventbridge.custom.event.sender", + "detail_type": "testdetail", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python310", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python310", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python310", + "functionname": "integration-tests-python-XXXX-async-metrics_python310", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "eventbridge" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python310", + "resource:integration-tests-python-XXXX-async-metrics_python310", + "cold_start:false", + "memorysize:1024", + "runtime:python3.10", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", + "resource": "GET /httpapi/get", + "name": "aws.httpapi", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.httpapi", + "endpoint": "/httpapi/get", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "http.method": "GET", + "http.protocol": "HTTP/1.1", + "http.source_ip": "XXXX", + "http.user_agent": "XXXX/7.64.1", + "resource_names": "GET /httpapi/get", + "request_id": "XXXX", + "apiid": "XXXX", + "apiname": "XXXX", + "stage": "$default", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "http.status_code": "200", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python310", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python310", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python310", + "functionname": "integration-tests-python-XXXX-async-metrics_python310", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "api-gateway", + "function_trigger.event_source_arn": "XXXX$default", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.url_details.path": "/httpapi/get", + "http.method": "GET", + "http.status_code": "200" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python310", + "resource:integration-tests-python-XXXX-async-metrics_python310", + "cold_start:false", + "memorysize:1024", + "runtime:python3.10", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "kinesis", + "resource": "EXAMPLE", + "name": "aws.kinesis", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.kinesis", + "resource_names": "EXAMPLE", + "streamname": "EXAMPLE", + "shardid": "shardId-XXXX", + "event_source_arn": "arn:aws:kinesis:EXAMPLE", + "event_id": "XXXX", + "event_name": "aws:kinesis:record", + "event_version": "1.0", + "partition_key": "XXXX", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python310", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python310", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python310", + "functionname": "integration-tests-python-XXXX-async-metrics_python310", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "kinesis", + "function_trigger.event_source_arn": "XXXX" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python310", + "resource:integration-tests-python-XXXX-async-metrics_python310", + "cold_start:false", + "memorysize:1024", + "runtime:python3.10", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "s3", + "resource": "example-bucket", + "name": "aws.s3", + "error": 0, + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.s3", + "resource_names": "example-bucket", + "event_name": "ObjectCreated:Put", + "bucketname": "example-bucket", + "bucket_arn": "arn:aws:s3:::example-bucket", + "object_key": "test/key", + "object_size": "1024", + "object_etag": "XXXX", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python310", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python310", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python310", + "functionname": "integration-tests-python-XXXX-async-metrics_python310", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "s3", + "function_trigger.event_source_arn": "XXXX" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python310", + "resource:integration-tests-python-XXXX-async-metrics_python310", + "cold_start:false", + "memorysize:1024", + "runtime:python3.10", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "sns", + "resource": "sns-lambda", + "name": "aws.sns", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.sns", + "resource_names": "sns-lambda", + "topicname": "sns-lambda", + "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", + "message_id": "XXXX", + "type": "Notification", + "subject": "TestInvoke", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python310", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python310", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python310", + "functionname": "integration-tests-python-XXXX-async-metrics_python310", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "sns", + "function_trigger.event_source_arn": "XXXX" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python310", + "resource:integration-tests-python-XXXX-async-metrics_python310", + "cold_start:false", + "memorysize:1024", + "runtime:python3.10", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "sqs", + "resource": "my-queue", + "name": "aws.sqs", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.sqs", + "resource_names": "my-queue", + "queuename": "my-queue", + "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", + "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", + "sender_id": "AIDAIENQZJOLO23YVJ4VO", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python310", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python310", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python310", + "functionname": "integration-tests-python-XXXX-async-metrics_python310", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "sqs", + "function_trigger.event_source_arn": "XXXX" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python310", + "resource:integration-tests-python-XXXX-async-metrics_python310", + "cold_start:false", + "memorysize:1024", + "runtime:python3.10", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", + "resource": "$default", + "name": "aws.apigateway.websocket", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.apigateway.websocket", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com$default", + "endpoint": "$default", + "resource_names": "$default", + "apiid": "XXXX", + "apiname": "XXXX", + "stage": "dev", + "request_id": "XXXX", + "connection_id": "XXXX=", + "event_type": "MESSAGE", + "message_direction": "IN", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "http.status_code": "200", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python310", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python310", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python310", + "functionname": "integration-tests-python-XXXX-async-metrics_python310", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "api-gateway", + "function_trigger.event_source_arn": "XXXX", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.status_code": "200" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB diff --git a/tests/integration/snapshots/logs/sync-metrics_python310.log b/tests/integration/snapshots/logs/sync-metrics_python310.log new file mode 100644 index 00000000..a8266552 --- /dev/null +++ b/tests/integration/snapshots/logs/sync-metrics_python310.log @@ -0,0 +1,1588 @@ +INIT_START Runtime Version: python:3.10.vX Runtime Version ARN: arn:aws:lambda:eu-west-1:XXXX:eu-west-1 +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python310", + "resource:integration-tests-python-XXXX-sync-metrics_python310", + "cold_start:true", + "memorysize:1024", + "runtime:python3.10", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "XXXX.execute-api.us-east-2.amazonaws.com", + "resource": "GET /", + "name": "aws.apigateway", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.apigateway.rest", + "http.url": "XXXX.execute-api.us-east-2.amazonaws.com/", + "endpoint": "/", + "http.method": "GET", + "resource_names": "GET /", + "apiid": "XXXX", + "apiname": "XXXX", + "stage": "Prod", + "request_id": "XXXX", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "http.status_code": "200", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python310", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "true", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python310", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python310", + "functionname": "integration-tests-python-XXXX-sync-metrics_python310", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "api-gateway", + "function_trigger.event_source_arn": "XXXX", + "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", + "http.url_details.path": "/Prod/", + "http.method": "GET", + "http.status_code": "200" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X"], "interval": 10}]} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms (init: XXXX ms) Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python310", + "resource:integration-tests-python-XXXX-sync-metrics_python310", + "cold_start:false", + "memorysize:1024", + "runtime:python3.10", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "dynamodb", + "resource": "ExampleTableWithStream", + "name": "aws.dynamodb", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.dynamodb", + "resource_names": "ExampleTableWithStream", + "tablename": "ExampleTableWithStream", + "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", + "event_id": "XXXX", + "event_name": "INSERT", + "event_version": "1.1", + "stream_view_type": "NEW_AND_OLD_IMAGES", + "size_bytes": "26", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python310", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python310", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python310", + "functionname": "integration-tests-python-XXXX-sync-metrics_python310", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "dynamodb", + "function_trigger.event_source_arn": "XXXX" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X"], "interval": 10}]} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python310", + "resource:integration-tests-python-XXXX-sync-metrics_python310", + "cold_start:false", + "memorysize:1024", + "runtime:python3.10", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "eventbridge", + "resource": "eventbridge.custom.event.sender", + "name": "aws.eventbridge", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.eventbridge", + "resource_names": "eventbridge.custom.event.sender", + "detail_type": "testdetail", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python310", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python310", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python310", + "functionname": "integration-tests-python-XXXX-sync-metrics_python310", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "eventbridge" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X"], "interval": 10}]} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python310", + "resource:integration-tests-python-XXXX-sync-metrics_python310", + "cold_start:false", + "memorysize:1024", + "runtime:python3.10", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", + "resource": "GET /httpapi/get", + "name": "aws.httpapi", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.httpapi", + "endpoint": "/httpapi/get", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "http.method": "GET", + "http.protocol": "HTTP/1.1", + "http.source_ip": "XXXX", + "http.user_agent": "XXXX/7.64.1", + "resource_names": "GET /httpapi/get", + "request_id": "XXXX", + "apiid": "XXXX", + "apiname": "XXXX", + "stage": "$default", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "http.status_code": "200", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python310", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python310", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python310", + "functionname": "integration-tests-python-XXXX-sync-metrics_python310", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "api-gateway", + "function_trigger.event_source_arn": "XXXX$default", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.url_details.path": "/httpapi/get", + "http.method": "GET", + "http.status_code": "200" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X"], "interval": 10}]} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python310", + "resource:integration-tests-python-XXXX-sync-metrics_python310", + "cold_start:false", + "memorysize:1024", + "runtime:python3.10", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "kinesis", + "resource": "EXAMPLE", + "name": "aws.kinesis", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.kinesis", + "resource_names": "EXAMPLE", + "streamname": "EXAMPLE", + "shardid": "shardId-XXXX", + "event_source_arn": "arn:aws:kinesis:EXAMPLE", + "event_id": "XXXX", + "event_name": "aws:kinesis:record", + "event_version": "1.0", + "partition_key": "XXXX", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python310", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python310", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python310", + "functionname": "integration-tests-python-XXXX-sync-metrics_python310", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "kinesis", + "function_trigger.event_source_arn": "XXXX" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X"], "interval": 10}]} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python310", + "resource:integration-tests-python-XXXX-sync-metrics_python310", + "cold_start:false", + "memorysize:1024", + "runtime:python3.10", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "s3", + "resource": "example-bucket", + "name": "aws.s3", + "error": 0, + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.s3", + "resource_names": "example-bucket", + "event_name": "ObjectCreated:Put", + "bucketname": "example-bucket", + "bucket_arn": "arn:aws:s3:::example-bucket", + "object_key": "test/key", + "object_size": "1024", + "object_etag": "XXXX", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python310", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python310", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python310", + "functionname": "integration-tests-python-XXXX-sync-metrics_python310", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "s3", + "function_trigger.event_source_arn": "XXXX" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X"], "interval": 10}]} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python310", + "resource:integration-tests-python-XXXX-sync-metrics_python310", + "cold_start:false", + "memorysize:1024", + "runtime:python3.10", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "sns", + "resource": "sns-lambda", + "name": "aws.sns", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.sns", + "resource_names": "sns-lambda", + "topicname": "sns-lambda", + "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", + "message_id": "XXXX", + "type": "Notification", + "subject": "TestInvoke", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python310", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python310", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python310", + "functionname": "integration-tests-python-XXXX-sync-metrics_python310", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "sns", + "function_trigger.event_source_arn": "XXXX" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X"], "interval": 10}]} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python310", + "resource:integration-tests-python-XXXX-sync-metrics_python310", + "cold_start:false", + "memorysize:1024", + "runtime:python3.10", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "sqs", + "resource": "my-queue", + "name": "aws.sqs", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.sqs", + "resource_names": "my-queue", + "queuename": "my-queue", + "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", + "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", + "sender_id": "AIDAIENQZJOLO23YVJ4VO", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python310", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python310", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python310", + "functionname": "integration-tests-python-XXXX-sync-metrics_python310", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "sqs", + "function_trigger.event_source_arn": "XXXX" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X"], "interval": 10}]} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python310", + "resource:integration-tests-python-XXXX-sync-metrics_python310", + "cold_start:false", + "memorysize:1024", + "runtime:python3.10", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", + "resource": "$default", + "name": "aws.apigateway.websocket", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.apigateway.websocket", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com$default", + "endpoint": "$default", + "resource_names": "$default", + "apiid": "XXXX", + "apiname": "XXXX", + "stage": "dev", + "request_id": "XXXX", + "connection_id": "XXXX=", + "event_type": "MESSAGE", + "message_direction": "IN", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "http.status_code": "200", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python310", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python310", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python310", + "functionname": "integration-tests-python-XXXX-sync-metrics_python310", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "api-gateway", + "function_trigger.event_source_arn": "XXXX", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.status_code": "200" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X"], "interval": 10}]} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB diff --git a/tests/integration/snapshots/return_values/async-metrics_python36_api-gateway-get.json b/tests/integration/snapshots/return_values/async-metrics_api-gateway-get.json similarity index 100% rename from tests/integration/snapshots/return_values/async-metrics_python36_api-gateway-get.json rename to tests/integration/snapshots/return_values/async-metrics_api-gateway-get.json diff --git a/tests/integration/snapshots/return_values/async-metrics_python36_dynamodb.json b/tests/integration/snapshots/return_values/async-metrics_dynamodb.json similarity index 100% rename from tests/integration/snapshots/return_values/async-metrics_python36_dynamodb.json rename to tests/integration/snapshots/return_values/async-metrics_dynamodb.json diff --git a/tests/integration/snapshots/return_values/async-metrics_python36_eventbridge-custom.json b/tests/integration/snapshots/return_values/async-metrics_eventbridge-custom.json similarity index 100% rename from tests/integration/snapshots/return_values/async-metrics_python36_eventbridge-custom.json rename to tests/integration/snapshots/return_values/async-metrics_eventbridge-custom.json diff --git a/tests/integration/snapshots/return_values/async-metrics_python36_http-api.json b/tests/integration/snapshots/return_values/async-metrics_http-api copy.json similarity index 100% rename from tests/integration/snapshots/return_values/async-metrics_python36_http-api.json rename to tests/integration/snapshots/return_values/async-metrics_http-api copy.json diff --git a/tests/integration/snapshots/return_values/async-metrics_python37_http-api.json b/tests/integration/snapshots/return_values/async-metrics_http-api.json similarity index 100% rename from tests/integration/snapshots/return_values/async-metrics_python37_http-api.json rename to tests/integration/snapshots/return_values/async-metrics_http-api.json diff --git a/tests/integration/snapshots/return_values/async-metrics_python36_kinesis.json b/tests/integration/snapshots/return_values/async-metrics_kinesis.json similarity index 100% rename from tests/integration/snapshots/return_values/async-metrics_python36_kinesis.json rename to tests/integration/snapshots/return_values/async-metrics_kinesis.json diff --git a/tests/integration/snapshots/return_values/async-metrics_python27_api-gateway-get.json b/tests/integration/snapshots/return_values/async-metrics_python27_api-gateway-get.json deleted file mode 100644 index d8e93bb0..00000000 --- a/tests/integration/snapshots/return_values/async-metrics_python27_api-gateway-get.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "body": { - "message": "hello, dog!", - "event_record_ids": [], - "request_id": "41b45ea3-70b5-11e6-b7bd-69b5aaebc7d9" - }, - "statusCode": 200 -} diff --git a/tests/integration/snapshots/return_values/async-metrics_python27_sns.json b/tests/integration/snapshots/return_values/async-metrics_python27_sns.json deleted file mode 100644 index 08cbae60..00000000 --- a/tests/integration/snapshots/return_values/async-metrics_python27_sns.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "body": { - "message": "hello, dog!", - "event_record_ids": [ - "95df01b4-ee98-5cb9-9903-4c221d41eb5e" - ], - "request_id": null - }, - "statusCode": 200 -} diff --git a/tests/integration/snapshots/return_values/async-metrics_python27_sqs.json b/tests/integration/snapshots/return_values/async-metrics_python27_sqs.json deleted file mode 100644 index 03f2a6cd..00000000 --- a/tests/integration/snapshots/return_values/async-metrics_python27_sqs.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "body": { - "message": "hello, dog!", - "event_record_ids": [ - "059f36b4-87a3-44ab-83d2-661975830a7d", - "2e1424d4-f796-459a-8184-9c92662be6da" - ], - "request_id": null - }, - "statusCode": 200 -} diff --git a/tests/integration/snapshots/return_values/async-metrics_python38_api-gateway-get.json b/tests/integration/snapshots/return_values/async-metrics_python38_api-gateway-get.json deleted file mode 100644 index 64b72447..00000000 --- a/tests/integration/snapshots/return_values/async-metrics_python38_api-gateway-get.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": "77375676-xmpl-4b79-853a-f982474efe18", - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/async-metrics_python38_dynamodb.json b/tests/integration/snapshots/return_values/async-metrics_python38_dynamodb.json deleted file mode 100644 index 1ad668ec..00000000 --- a/tests/integration/snapshots/return_values/async-metrics_python38_dynamodb.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": null, - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/async-metrics_python38_eventbridge-custom.json b/tests/integration/snapshots/return_values/async-metrics_python38_eventbridge-custom.json deleted file mode 100644 index 1ad668ec..00000000 --- a/tests/integration/snapshots/return_values/async-metrics_python38_eventbridge-custom.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": null, - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/async-metrics_python38_kinesis.json b/tests/integration/snapshots/return_values/async-metrics_python38_kinesis.json deleted file mode 100644 index 1ad668ec..00000000 --- a/tests/integration/snapshots/return_values/async-metrics_python38_kinesis.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": null, - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/async-metrics_python38_s3.json b/tests/integration/snapshots/return_values/async-metrics_python38_s3.json deleted file mode 100644 index 1ad668ec..00000000 --- a/tests/integration/snapshots/return_values/async-metrics_python38_s3.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": null, - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/async-metrics_python38_sns.json b/tests/integration/snapshots/return_values/async-metrics_python38_sns.json deleted file mode 100644 index e1f007e6..00000000 --- a/tests/integration/snapshots/return_values/async-metrics_python38_sns.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": null, - "event_record_ids": [ - "95df01b4-ee98-5cb9-9903-4c221d41eb5e" - ] - } -} diff --git a/tests/integration/snapshots/return_values/async-metrics_python38_sqs.json b/tests/integration/snapshots/return_values/async-metrics_python38_sqs.json deleted file mode 100644 index 970f7dff..00000000 --- a/tests/integration/snapshots/return_values/async-metrics_python38_sqs.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": null, - "event_record_ids": [ - "059f36b4-87a3-44ab-83d2-661975830a7d", - "2e1424d4-f796-459a-8184-9c92662be6da" - ] - } -} diff --git a/tests/integration/snapshots/return_values/async-metrics_python38_websocket.json b/tests/integration/snapshots/return_values/async-metrics_python38_websocket.json deleted file mode 100644 index d888139d..00000000 --- a/tests/integration/snapshots/return_values/async-metrics_python38_websocket.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": "Fc5S3EvdGjQFtsQ=", - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/async-metrics_python39_api-gateway-get.json b/tests/integration/snapshots/return_values/async-metrics_python39_api-gateway-get.json deleted file mode 100644 index 64b72447..00000000 --- a/tests/integration/snapshots/return_values/async-metrics_python39_api-gateway-get.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": "77375676-xmpl-4b79-853a-f982474efe18", - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/async-metrics_python39_dynamodb.json b/tests/integration/snapshots/return_values/async-metrics_python39_dynamodb.json deleted file mode 100644 index 1ad668ec..00000000 --- a/tests/integration/snapshots/return_values/async-metrics_python39_dynamodb.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": null, - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/async-metrics_python39_eventbridge-custom.json b/tests/integration/snapshots/return_values/async-metrics_python39_eventbridge-custom.json deleted file mode 100644 index 1ad668ec..00000000 --- a/tests/integration/snapshots/return_values/async-metrics_python39_eventbridge-custom.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": null, - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/async-metrics_python39_http-api.json b/tests/integration/snapshots/return_values/async-metrics_python39_http-api.json deleted file mode 100644 index d279e5e2..00000000 --- a/tests/integration/snapshots/return_values/async-metrics_python39_http-api.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": "FaHnXjKCGjQEJ7A=", - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/async-metrics_python39_kinesis.json b/tests/integration/snapshots/return_values/async-metrics_python39_kinesis.json deleted file mode 100644 index 1ad668ec..00000000 --- a/tests/integration/snapshots/return_values/async-metrics_python39_kinesis.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": null, - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/async-metrics_python39_s3.json b/tests/integration/snapshots/return_values/async-metrics_python39_s3.json deleted file mode 100644 index 1ad668ec..00000000 --- a/tests/integration/snapshots/return_values/async-metrics_python39_s3.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": null, - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/async-metrics_python39_sns.json b/tests/integration/snapshots/return_values/async-metrics_python39_sns.json deleted file mode 100644 index e1f007e6..00000000 --- a/tests/integration/snapshots/return_values/async-metrics_python39_sns.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": null, - "event_record_ids": [ - "95df01b4-ee98-5cb9-9903-4c221d41eb5e" - ] - } -} diff --git a/tests/integration/snapshots/return_values/async-metrics_python39_sqs.json b/tests/integration/snapshots/return_values/async-metrics_python39_sqs.json deleted file mode 100644 index 970f7dff..00000000 --- a/tests/integration/snapshots/return_values/async-metrics_python39_sqs.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": null, - "event_record_ids": [ - "059f36b4-87a3-44ab-83d2-661975830a7d", - "2e1424d4-f796-459a-8184-9c92662be6da" - ] - } -} diff --git a/tests/integration/snapshots/return_values/async-metrics_python39_websocket.json b/tests/integration/snapshots/return_values/async-metrics_python39_websocket.json deleted file mode 100644 index d888139d..00000000 --- a/tests/integration/snapshots/return_values/async-metrics_python39_websocket.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": "Fc5S3EvdGjQFtsQ=", - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/async-metrics_python36_s3.json b/tests/integration/snapshots/return_values/async-metrics_s3.json similarity index 100% rename from tests/integration/snapshots/return_values/async-metrics_python36_s3.json rename to tests/integration/snapshots/return_values/async-metrics_s3.json diff --git a/tests/integration/snapshots/return_values/async-metrics_python36_sns.json b/tests/integration/snapshots/return_values/async-metrics_sns.json similarity index 100% rename from tests/integration/snapshots/return_values/async-metrics_python36_sns.json rename to tests/integration/snapshots/return_values/async-metrics_sns.json diff --git a/tests/integration/snapshots/return_values/async-metrics_python36_sqs.json b/tests/integration/snapshots/return_values/async-metrics_sqs.json similarity index 100% rename from tests/integration/snapshots/return_values/async-metrics_python36_sqs.json rename to tests/integration/snapshots/return_values/async-metrics_sqs.json diff --git a/tests/integration/snapshots/return_values/async-metrics_python36_websocket.json b/tests/integration/snapshots/return_values/async-metrics_websocket.json similarity index 100% rename from tests/integration/snapshots/return_values/async-metrics_python36_websocket.json rename to tests/integration/snapshots/return_values/async-metrics_websocket.json diff --git a/tests/integration/snapshots/return_values/async-metrics_python37_api-gateway-get.json b/tests/integration/snapshots/return_values/sync-metrics_api-gateway-get.json similarity index 100% rename from tests/integration/snapshots/return_values/async-metrics_python37_api-gateway-get.json rename to tests/integration/snapshots/return_values/sync-metrics_api-gateway-get.json diff --git a/tests/integration/snapshots/return_values/async-metrics_python37_dynamodb.json b/tests/integration/snapshots/return_values/sync-metrics_dynamodb.json similarity index 100% rename from tests/integration/snapshots/return_values/async-metrics_python37_dynamodb.json rename to tests/integration/snapshots/return_values/sync-metrics_dynamodb.json diff --git a/tests/integration/snapshots/return_values/async-metrics_python37_eventbridge-custom.json b/tests/integration/snapshots/return_values/sync-metrics_eventbridge-custom.json similarity index 100% rename from tests/integration/snapshots/return_values/async-metrics_python37_eventbridge-custom.json rename to tests/integration/snapshots/return_values/sync-metrics_eventbridge-custom.json diff --git a/tests/integration/snapshots/return_values/async-metrics_python38_http-api.json b/tests/integration/snapshots/return_values/sync-metrics_http-api.json similarity index 100% rename from tests/integration/snapshots/return_values/async-metrics_python38_http-api.json rename to tests/integration/snapshots/return_values/sync-metrics_http-api.json diff --git a/tests/integration/snapshots/return_values/async-metrics_python37_kinesis.json b/tests/integration/snapshots/return_values/sync-metrics_kinesis.json similarity index 100% rename from tests/integration/snapshots/return_values/async-metrics_python37_kinesis.json rename to tests/integration/snapshots/return_values/sync-metrics_kinesis.json diff --git a/tests/integration/snapshots/return_values/sync-metrics_python27_api-gateway-get.json b/tests/integration/snapshots/return_values/sync-metrics_python27_api-gateway-get.json deleted file mode 100644 index d8e93bb0..00000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python27_api-gateway-get.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "body": { - "message": "hello, dog!", - "event_record_ids": [], - "request_id": "41b45ea3-70b5-11e6-b7bd-69b5aaebc7d9" - }, - "statusCode": 200 -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python27_sns.json b/tests/integration/snapshots/return_values/sync-metrics_python27_sns.json deleted file mode 100644 index 08cbae60..00000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python27_sns.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "body": { - "message": "hello, dog!", - "event_record_ids": [ - "95df01b4-ee98-5cb9-9903-4c221d41eb5e" - ], - "request_id": null - }, - "statusCode": 200 -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python27_sqs.json b/tests/integration/snapshots/return_values/sync-metrics_python27_sqs.json deleted file mode 100644 index 03f2a6cd..00000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python27_sqs.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "body": { - "message": "hello, dog!", - "event_record_ids": [ - "059f36b4-87a3-44ab-83d2-661975830a7d", - "2e1424d4-f796-459a-8184-9c92662be6da" - ], - "request_id": null - }, - "statusCode": 200 -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python36_api-gateway-get.json b/tests/integration/snapshots/return_values/sync-metrics_python36_api-gateway-get.json deleted file mode 100644 index 64b72447..00000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python36_api-gateway-get.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": "77375676-xmpl-4b79-853a-f982474efe18", - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python36_dynamodb.json b/tests/integration/snapshots/return_values/sync-metrics_python36_dynamodb.json deleted file mode 100644 index 1ad668ec..00000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python36_dynamodb.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": null, - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python36_eventbridge-custom.json b/tests/integration/snapshots/return_values/sync-metrics_python36_eventbridge-custom.json deleted file mode 100644 index 1ad668ec..00000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python36_eventbridge-custom.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": null, - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python36_http-api.json b/tests/integration/snapshots/return_values/sync-metrics_python36_http-api.json deleted file mode 100644 index d279e5e2..00000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python36_http-api.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": "FaHnXjKCGjQEJ7A=", - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python36_kinesis.json b/tests/integration/snapshots/return_values/sync-metrics_python36_kinesis.json deleted file mode 100644 index 1ad668ec..00000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python36_kinesis.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": null, - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python36_s3.json b/tests/integration/snapshots/return_values/sync-metrics_python36_s3.json deleted file mode 100644 index 1ad668ec..00000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python36_s3.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": null, - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python36_sns.json b/tests/integration/snapshots/return_values/sync-metrics_python36_sns.json deleted file mode 100644 index e1f007e6..00000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python36_sns.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": null, - "event_record_ids": [ - "95df01b4-ee98-5cb9-9903-4c221d41eb5e" - ] - } -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python36_sqs.json b/tests/integration/snapshots/return_values/sync-metrics_python36_sqs.json deleted file mode 100644 index 970f7dff..00000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python36_sqs.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": null, - "event_record_ids": [ - "059f36b4-87a3-44ab-83d2-661975830a7d", - "2e1424d4-f796-459a-8184-9c92662be6da" - ] - } -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python36_websocket.json b/tests/integration/snapshots/return_values/sync-metrics_python36_websocket.json deleted file mode 100644 index d888139d..00000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python36_websocket.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": "Fc5S3EvdGjQFtsQ=", - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python37_api-gateway-get.json b/tests/integration/snapshots/return_values/sync-metrics_python37_api-gateway-get.json deleted file mode 100644 index 64b72447..00000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python37_api-gateway-get.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": "77375676-xmpl-4b79-853a-f982474efe18", - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python37_dynamodb.json b/tests/integration/snapshots/return_values/sync-metrics_python37_dynamodb.json deleted file mode 100644 index 1ad668ec..00000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python37_dynamodb.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": null, - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python37_eventbridge-custom.json b/tests/integration/snapshots/return_values/sync-metrics_python37_eventbridge-custom.json deleted file mode 100644 index 1ad668ec..00000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python37_eventbridge-custom.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": null, - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python37_http-api.json b/tests/integration/snapshots/return_values/sync-metrics_python37_http-api.json deleted file mode 100644 index d279e5e2..00000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python37_http-api.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": "FaHnXjKCGjQEJ7A=", - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python37_kinesis.json b/tests/integration/snapshots/return_values/sync-metrics_python37_kinesis.json deleted file mode 100644 index 1ad668ec..00000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python37_kinesis.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": null, - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python37_s3.json b/tests/integration/snapshots/return_values/sync-metrics_python37_s3.json deleted file mode 100644 index 1ad668ec..00000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python37_s3.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": null, - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python37_sns.json b/tests/integration/snapshots/return_values/sync-metrics_python37_sns.json deleted file mode 100644 index e1f007e6..00000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python37_sns.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": null, - "event_record_ids": [ - "95df01b4-ee98-5cb9-9903-4c221d41eb5e" - ] - } -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python37_sqs.json b/tests/integration/snapshots/return_values/sync-metrics_python37_sqs.json deleted file mode 100644 index 970f7dff..00000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python37_sqs.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": null, - "event_record_ids": [ - "059f36b4-87a3-44ab-83d2-661975830a7d", - "2e1424d4-f796-459a-8184-9c92662be6da" - ] - } -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python37_websocket.json b/tests/integration/snapshots/return_values/sync-metrics_python37_websocket.json deleted file mode 100644 index d888139d..00000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python37_websocket.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": "Fc5S3EvdGjQFtsQ=", - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python38_api-gateway-get.json b/tests/integration/snapshots/return_values/sync-metrics_python38_api-gateway-get.json deleted file mode 100644 index 64b72447..00000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python38_api-gateway-get.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": "77375676-xmpl-4b79-853a-f982474efe18", - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python38_dynamodb.json b/tests/integration/snapshots/return_values/sync-metrics_python38_dynamodb.json deleted file mode 100644 index 1ad668ec..00000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python38_dynamodb.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": null, - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python38_eventbridge-custom.json b/tests/integration/snapshots/return_values/sync-metrics_python38_eventbridge-custom.json deleted file mode 100644 index 1ad668ec..00000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python38_eventbridge-custom.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": null, - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python38_http-api.json b/tests/integration/snapshots/return_values/sync-metrics_python38_http-api.json deleted file mode 100644 index d279e5e2..00000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python38_http-api.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": "FaHnXjKCGjQEJ7A=", - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python38_kinesis.json b/tests/integration/snapshots/return_values/sync-metrics_python38_kinesis.json deleted file mode 100644 index 1ad668ec..00000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python38_kinesis.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": null, - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python38_s3.json b/tests/integration/snapshots/return_values/sync-metrics_python38_s3.json deleted file mode 100644 index 1ad668ec..00000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python38_s3.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": null, - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python38_sns.json b/tests/integration/snapshots/return_values/sync-metrics_python38_sns.json deleted file mode 100644 index e1f007e6..00000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python38_sns.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": null, - "event_record_ids": [ - "95df01b4-ee98-5cb9-9903-4c221d41eb5e" - ] - } -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python38_sqs.json b/tests/integration/snapshots/return_values/sync-metrics_python38_sqs.json deleted file mode 100644 index 970f7dff..00000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python38_sqs.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": null, - "event_record_ids": [ - "059f36b4-87a3-44ab-83d2-661975830a7d", - "2e1424d4-f796-459a-8184-9c92662be6da" - ] - } -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python38_websocket.json b/tests/integration/snapshots/return_values/sync-metrics_python38_websocket.json deleted file mode 100644 index d888139d..00000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python38_websocket.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": "Fc5S3EvdGjQFtsQ=", - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python39_api-gateway-get.json b/tests/integration/snapshots/return_values/sync-metrics_python39_api-gateway-get.json deleted file mode 100644 index 64b72447..00000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python39_api-gateway-get.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": "77375676-xmpl-4b79-853a-f982474efe18", - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python39_dynamodb.json b/tests/integration/snapshots/return_values/sync-metrics_python39_dynamodb.json deleted file mode 100644 index 1ad668ec..00000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python39_dynamodb.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": null, - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python39_eventbridge-custom.json b/tests/integration/snapshots/return_values/sync-metrics_python39_eventbridge-custom.json deleted file mode 100644 index 1ad668ec..00000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python39_eventbridge-custom.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": null, - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python39_http-api.json b/tests/integration/snapshots/return_values/sync-metrics_python39_http-api.json deleted file mode 100644 index d279e5e2..00000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python39_http-api.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": "FaHnXjKCGjQEJ7A=", - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python39_kinesis.json b/tests/integration/snapshots/return_values/sync-metrics_python39_kinesis.json deleted file mode 100644 index 1ad668ec..00000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python39_kinesis.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": null, - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python39_s3.json b/tests/integration/snapshots/return_values/sync-metrics_python39_s3.json deleted file mode 100644 index 1ad668ec..00000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python39_s3.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": null, - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python39_sns.json b/tests/integration/snapshots/return_values/sync-metrics_python39_sns.json deleted file mode 100644 index e1f007e6..00000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python39_sns.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": null, - "event_record_ids": [ - "95df01b4-ee98-5cb9-9903-4c221d41eb5e" - ] - } -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python39_sqs.json b/tests/integration/snapshots/return_values/sync-metrics_python39_sqs.json deleted file mode 100644 index 970f7dff..00000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python39_sqs.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": null, - "event_record_ids": [ - "059f36b4-87a3-44ab-83d2-661975830a7d", - "2e1424d4-f796-459a-8184-9c92662be6da" - ] - } -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python39_websocket.json b/tests/integration/snapshots/return_values/sync-metrics_python39_websocket.json deleted file mode 100644 index d888139d..00000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python39_websocket.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": "Fc5S3EvdGjQFtsQ=", - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/async-metrics_python37_s3.json b/tests/integration/snapshots/return_values/sync-metrics_s3.json similarity index 100% rename from tests/integration/snapshots/return_values/async-metrics_python37_s3.json rename to tests/integration/snapshots/return_values/sync-metrics_s3.json diff --git a/tests/integration/snapshots/return_values/async-metrics_python37_sns.json b/tests/integration/snapshots/return_values/sync-metrics_sns.json similarity index 100% rename from tests/integration/snapshots/return_values/async-metrics_python37_sns.json rename to tests/integration/snapshots/return_values/sync-metrics_sns.json diff --git a/tests/integration/snapshots/return_values/async-metrics_python37_sqs.json b/tests/integration/snapshots/return_values/sync-metrics_sqs.json similarity index 100% rename from tests/integration/snapshots/return_values/async-metrics_python37_sqs.json rename to tests/integration/snapshots/return_values/sync-metrics_sqs.json diff --git a/tests/integration/snapshots/return_values/async-metrics_python37_websocket.json b/tests/integration/snapshots/return_values/sync-metrics_websocket.json similarity index 100% rename from tests/integration/snapshots/return_values/async-metrics_python37_websocket.json rename to tests/integration/snapshots/return_values/sync-metrics_websocket.json From 3eaecde9dd7c1be6c51bf3711165ebfd880dd288 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Mon, 17 Apr 2023 21:52:57 -0400 Subject: [PATCH 013/268] version 4.71.0 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 6e1195bb..495c1247 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "4.70.0" +version = "4.71.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From a3ea6ac7d8ab0298ec5ce4de4aede2e8346004f3 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Tue, 25 Apr 2023 10:33:08 -0400 Subject: [PATCH 014/268] Some env variables depend on DD_TRACE_ENABLED (#323) * Some env variables depend on DD_TRACE_ENABLED * cleanup and add test cases --- datadog_lambda/wrapper.py | 59 ++++++++++++++++++++------------ tests/test_wrapper.py | 71 +++++++++++++++++++++++++-------------- 2 files changed, 84 insertions(+), 46 deletions(-) diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index fb849cec..e24358d0 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -57,6 +57,20 @@ service_env_var = os.environ.get("DD_SERVICE", "DefaultServiceName") env_env_var = os.environ.get("DD_ENV", None) +DD_FLUSH_TO_LOG = "DD_FLUSH_TO_LOG" +DD_LOGS_INJECTION = "DD_LOGS_INJECTION" +DD_MERGE_XRAY_TRACES = "DD_MERGE_XRAY_TRACES" +AWS_LAMBDA_FUNCTION_NAME = "AWS_LAMBDA_FUNCTION_NAME" +DD_TRACE_EXTRACTOR = "DD_TRACE_EXTRACTOR" +DD_TRACE_MANAGED_SERVICES = "DD_TRACE_MANAGED_SERVICES" +DD_ENCODE_AUTHORIZER_CONTEXT = "DD_ENCODE_AUTHORIZER_CONTEXT" +DD_DECODE_AUTHORIZER_CONTEXT = "DD_DECODE_AUTHORIZER_CONTEXT" +DD_COLD_START_TRACING = "DD_COLD_START_TRACING" +DD_MIN_COLD_START_DURATION = "DD_MIN_COLD_START_DURATION" +DD_COLD_START_TRACE_SKIP_LIB = "DD_COLD_START_TRACE_SKIP_LIB" +DD_REQUESTS_SERVICE_NAME = "DD_REQUESTS_SERVICE_NAME" +DD_SERVICE = "DD_SERVICE" + """ Usage: @@ -110,49 +124,52 @@ def __init__(self, func): """Executes when the wrapped function gets wrapped""" try: self.func = func - self.flush_to_log = os.environ.get("DD_FLUSH_TO_LOG", "").lower() == "true" + self.flush_to_log = os.environ.get(DD_FLUSH_TO_LOG, "").lower() == "true" self.logs_injection = ( - os.environ.get("DD_LOGS_INJECTION", "true").lower() == "true" + os.environ.get(DD_LOGS_INJECTION, "true").lower() == "true" ) self.merge_xray_traces = ( - os.environ.get("DD_MERGE_XRAY_TRACES", "false").lower() == "true" + os.environ.get(DD_MERGE_XRAY_TRACES, "false").lower() == "true" ) - self.function_name = os.environ.get("AWS_LAMBDA_FUNCTION_NAME", "function") - self.extractor_env = os.environ.get("DD_TRACE_EXTRACTOR", None) + self.function_name = os.environ.get(AWS_LAMBDA_FUNCTION_NAME, "function") + self.extractor_env = os.environ.get(DD_TRACE_EXTRACTOR, None) self.trace_extractor = None self.span = None self.inferred_span = None - self.make_inferred_span = ( - os.environ.get("DD_TRACE_MANAGED_SERVICES", "true").lower() == "true" + depends_on_dd_tracing_enabled = ( + lambda original_boolean: dd_tracing_enabled and original_boolean + ) + self.make_inferred_span = depends_on_dd_tracing_enabled( + os.environ.get(DD_TRACE_MANAGED_SERVICES, "true").lower() == "true" ) - self.encode_authorizer_context = ( - os.environ.get("DD_ENCODE_AUTHORIZER_CONTEXT", "true").lower() == "true" + self.encode_authorizer_context = depends_on_dd_tracing_enabled( + os.environ.get(DD_ENCODE_AUTHORIZER_CONTEXT, "true").lower() == "true" ) - self.decode_authorizer_context = ( - os.environ.get("DD_DECODE_AUTHORIZER_CONTEXT", "true").lower() == "true" + self.decode_authorizer_context = depends_on_dd_tracing_enabled( + os.environ.get(DD_DECODE_AUTHORIZER_CONTEXT, "true").lower() == "true" ) - self.cold_start_tracing = ( - os.environ.get("DD_COLD_START_TRACING", "true").lower() == "true" + self.cold_start_tracing = depends_on_dd_tracing_enabled( + os.environ.get(DD_COLD_START_TRACING, "true").lower() == "true" ) self.min_cold_start_trace_duration = 3 - if "DD_MIN_COLD_START_DURATION" in os.environ: + if DD_MIN_COLD_START_DURATION in os.environ: try: self.min_cold_start_trace_duration = int( - os.environ["DD_MIN_COLD_START_DURATION"] + os.environ[DD_MIN_COLD_START_DURATION] ) except Exception: - logger.debug("Malformatted env DD_MIN_COLD_START_DURATION") + logger.debug(f"Malformatted env {DD_MIN_COLD_START_DURATION}") self.cold_start_trace_skip_lib = [ "ddtrace.internal.compat", "ddtrace.filters", ] - if "DD_COLD_START_TRACE_SKIP_LIB" in os.environ: + if DD_COLD_START_TRACE_SKIP_LIB in os.environ: try: self.cold_start_trace_skip_lib = os.environ[ - "DD_COLD_START_TRACE_SKIP_LIB" + DD_COLD_START_TRACE_SKIP_LIB ].split(",") except Exception: - logger.debug("Malformatted for env DD_COLD_START_TRACE_SKIP_LIB") + logger.debug(f"Malformatted for env {DD_COLD_START_TRACE_SKIP_LIB}") self.response = None if profiling_env_var: self.prof = profiler.Profiler(env=env_env_var, service=service_env_var) @@ -170,8 +187,8 @@ def __init__(self, func): # This prevents a breaking change in ddtrace v0.49 regarding the service name # in requests-related spans - os.environ["DD_REQUESTS_SERVICE_NAME"] = os.environ.get( - "DD_SERVICE", "aws.lambda" + os.environ[DD_REQUESTS_SERVICE_NAME] = os.environ.get( + DD_SERVICE, "aws.lambda" ) # Patch third-party libraries for tracing patch_all() diff --git a/tests/test_wrapper.py b/tests/test_wrapper.py index bde397c2..f4be6cb0 100644 --- a/tests/test_wrapper.py +++ b/tests/test_wrapper.py @@ -6,7 +6,7 @@ from unittest.mock import patch, call, ANY, MagicMock from datadog_lambda.constants import TraceHeader -from datadog_lambda.wrapper import datadog_lambda_wrapper +import datadog_lambda.wrapper as wrapper from datadog_lambda.metric import lambda_metric from datadog_lambda.thread_stats_writer import ThreadStatsWriter @@ -31,8 +31,11 @@ class TestDatadogLambdaWrapper(unittest.TestCase): def setUp(self): # Force @datadog_lambda_wrapper to always create a real # (not no-op) wrapper. - datadog_lambda_wrapper._force_wrap = True + patch("ddtrace.internal.remoteconfig.RemoteConfig").start() + patch("ddtrace.internal.writer.AgentWriter.flush_queue").start() + wrapper.datadog_lambda_wrapper._force_wrap = True + wrapper.dd_tracing_enabled = True patcher = patch( "datadog.threadstats.reporters.HttpReporter.flush_distributions" ) @@ -84,7 +87,9 @@ def setUp(self): self.addCleanup(patcher.stop) def test_datadog_lambda_wrapper(self): - @datadog_lambda_wrapper + wrapper.dd_tracing_enabled = False + + @wrapper.datadog_lambda_wrapper def lambda_handler(event, context): lambda_metric("test.metric", 100) @@ -93,7 +98,7 @@ def lambda_handler(event, context): lambda_context = get_mock_context() lambda_handler(lambda_event, lambda_context) - + wrapper.dd_tracing_enabled = True self.mock_threadstats_flush_distributions.assert_has_calls( [ call( @@ -112,7 +117,10 @@ def lambda_handler(event, context): ] ) self.mock_extract_dd_trace_context.assert_called_with( - lambda_event, lambda_context, extractor=None, decode_authorizer_context=True + lambda_event, + lambda_context, + extractor=None, + decode_authorizer_context=False, ) self.mock_set_correlation_ids.assert_called() self.mock_inject_correlation_ids.assert_called() @@ -121,7 +129,7 @@ def lambda_handler(event, context): def test_datadog_lambda_wrapper_flush_to_log(self): os.environ["DD_FLUSH_TO_LOG"] = "True" - @datadog_lambda_wrapper + @wrapper.datadog_lambda_wrapper def lambda_handler(event, context): lambda_metric("test.metric", 100) @@ -139,7 +147,7 @@ def test_datadog_lambda_wrapper_flush_in_thread(self): metric_module.lambda_stats.stop() metric_module.lambda_stats = ThreadStatsWriter(True) - @datadog_lambda_wrapper + @wrapper.datadog_lambda_wrapper def lambda_handler(event, context): import time @@ -166,7 +174,7 @@ def test_datadog_lambda_wrapper_not_flush_in_thread(self): metric_module.lambda_stats.stop() metric_module.lambda_stats = ThreadStatsWriter(False) - @datadog_lambda_wrapper + @wrapper.datadog_lambda_wrapper def lambda_handler(event, context): import time @@ -188,21 +196,22 @@ def lambda_handler(event, context): def test_datadog_lambda_wrapper_inject_correlation_ids(self): os.environ["DD_LOGS_INJECTION"] = "True" + wrapper.dd_tracing_enabled = False - @datadog_lambda_wrapper + @wrapper.datadog_lambda_wrapper def lambda_handler(event, context): lambda_metric("test.metric", 100) lambda_event = {} lambda_handler(lambda_event, get_mock_context()) - + wrapper.dd_tracing_enabled = True self.mock_set_correlation_ids.assert_called() self.mock_inject_correlation_ids.assert_called() del os.environ["DD_LOGS_INJECTION"] def test_invocations_metric(self): - @datadog_lambda_wrapper + @wrapper.datadog_lambda_wrapper def lambda_handler(event, context): lambda_metric("test.metric", 100) @@ -232,7 +241,7 @@ def lambda_handler(event, context): ) def test_errors_metric(self): - @datadog_lambda_wrapper + @wrapper.datadog_lambda_wrapper def lambda_handler(event, context): raise RuntimeError() @@ -288,7 +297,7 @@ def test_5xx_sends_errors_metric_and_set_tags(self, mock_extract_trigger_tags): "http.method": "GET", } - @datadog_lambda_wrapper + @wrapper.datadog_lambda_wrapper def lambda_handler(event, context): return {"statusCode": 500, "body": "fake response body"} @@ -334,7 +343,7 @@ def lambda_handler(event, context): ) def test_enhanced_metrics_cold_start_tag(self): - @datadog_lambda_wrapper + @wrapper.datadog_lambda_wrapper def lambda_handler(event, context): lambda_metric("test.metric", 100) @@ -386,7 +395,7 @@ def lambda_handler(event, context): ) def test_enhanced_metrics_latest(self): - @datadog_lambda_wrapper + @wrapper.datadog_lambda_wrapper def lambda_handler(event, context): lambda_metric("test.metric", 100) @@ -420,7 +429,7 @@ def lambda_handler(event, context): ) def test_enhanced_metrics_alias(self): - @datadog_lambda_wrapper + @wrapper.datadog_lambda_wrapper def lambda_handler(event, context): lambda_metric("test.metric", 100) @@ -456,7 +465,7 @@ def lambda_handler(event, context): def test_no_enhanced_metrics_without_env_var(self): os.environ["DD_ENHANCED_METRICS"] = "false" - @datadog_lambda_wrapper + @wrapper.datadog_lambda_wrapper def lambda_handler(event, context): raise RuntimeError() @@ -474,15 +483,15 @@ def test_only_one_wrapper_in_use(self): self.mock_submit_invocations_metric = patcher.start() self.addCleanup(patcher.stop) - @datadog_lambda_wrapper + @wrapper.datadog_lambda_wrapper def lambda_handler(event, context): lambda_metric("test.metric", 100) # Turn off _force_wrap to emulate the nested wrapper scenario, # the second @datadog_lambda_wrapper should actually be no-op. - datadog_lambda_wrapper._force_wrap = False + wrapper.datadog_lambda_wrapper._force_wrap = False - lambda_handler_double_wrapped = datadog_lambda_wrapper(lambda_handler) + lambda_handler_double_wrapped = wrapper.datadog_lambda_wrapper(lambda_handler) lambda_event = {} @@ -492,7 +501,7 @@ def lambda_handler(event, context): self.mock_submit_invocations_metric.assert_called_once() def test_dd_requests_service_name_default(self): - @datadog_lambda_wrapper + @wrapper.datadog_lambda_wrapper def lambda_handler(event, context): pass @@ -501,7 +510,7 @@ def lambda_handler(event, context): def test_dd_requests_service_name_set(self): os.environ["DD_SERVICE"] = "myAwesomeService" - @datadog_lambda_wrapper + @wrapper.datadog_lambda_wrapper def lambda_handler(event, context): pass @@ -509,7 +518,7 @@ def lambda_handler(event, context): del os.environ["DD_SERVICE"] def test_encode_authorizer_span(self): - @datadog_lambda_wrapper + @wrapper.datadog_lambda_wrapper def lambda_handler(event, context): return { "principalId": "foo", @@ -537,7 +546,7 @@ def lambda_handler(event, context): mock_span.start_ns = 1668127541671386817 mock_span.duration_ns = 1e8 lambda_handler.inferred_span = mock_span - + lambda_handler.make_inferred_span = False result = lambda_handler(lambda_event, lambda_context) inject_data = json.loads(base64.b64decode(result["context"]["_datadog"])) self.assertEquals(inject_data[TraceHeader.PARENT_ID], "123") @@ -551,10 +560,22 @@ def test_different_return_type_no_error(self, MockPrintExc): mock_context = get_mock_context() for test_result in TEST_RESULTS: - @datadog_lambda_wrapper + @wrapper.datadog_lambda_wrapper def return_type_test(event, context): return test_result result = return_type_test({}, mock_context) self.assertEquals(result, test_result) self.assertFalse(MockPrintExc.called) + + +class TestLambdaDecoratorSettings(unittest.TestCase): + def test_some_envs_should_depend_on_dd_tracing_enabled(self): + wrapper.dd_tracing_enabled = False + os.environ[wrapper.DD_TRACE_MANAGED_SERVICES] = "true" + os.environ[wrapper.DD_ENCODE_AUTHORIZER_CONTEXT] = "true" + os.environ[wrapper.DD_DECODE_AUTHORIZER_CONTEXT] = "true" + decorator = wrapper._LambdaDecorator(func=None) + self.assertFalse(decorator.make_inferred_span) + self.assertFalse(decorator.encode_authorizer_context) + self.assertFalse(decorator.decode_authorizer_context) From 046ff89604f58a6aa258a72f771301ab3a325f70 Mon Sep 17 00:00:00 2001 From: Pedro Palacios Avila Date: Tue, 25 Apr 2023 10:26:34 -0500 Subject: [PATCH 015/268] fix: Ensure injected headers are `str` (#325) The python3.7 runtime cannot serialize byte strings --- datadog_lambda/wrapper.py | 2 +- tests/test_wrapper.py | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index e24358d0..57b540f6 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -236,7 +236,7 @@ def _inject_authorizer_span_headers(self, request_id): injected_headers[Headers.Parent_Span_Finish_Time] = finish_time_ns if request_id is not None: injected_headers[Headers.Authorizing_Request_Id] = request_id - datadog_data = base64.b64encode(json.dumps(injected_headers).encode()) + datadog_data = base64.b64encode(json.dumps(injected_headers).encode()).decode() self.response.setdefault("context", {}) self.response["context"]["_datadog"] = datadog_data diff --git a/tests/test_wrapper.py b/tests/test_wrapper.py index f4be6cb0..a2af8846 100644 --- a/tests/test_wrapper.py +++ b/tests/test_wrapper.py @@ -548,7 +548,9 @@ def lambda_handler(event, context): lambda_handler.inferred_span = mock_span lambda_handler.make_inferred_span = False result = lambda_handler(lambda_event, lambda_context) - inject_data = json.loads(base64.b64decode(result["context"]["_datadog"])) + raw_inject_data = result["context"]["_datadog"] + self.assertIsInstance(raw_inject_data, str) + inject_data = json.loads(base64.b64decode(raw_inject_data)) self.assertEquals(inject_data[TraceHeader.PARENT_ID], "123") self.assertEquals(inject_data[TraceHeader.TRACE_ID], "456") self.assertEquals(inject_data[TraceHeader.SAMPLING_PRIORITY], "1") From 309559b01e992e9ff9c9a1fb0ca2eb0033d68da2 Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Thu, 27 Apr 2023 13:50:45 -0400 Subject: [PATCH 016/268] feat: Strip setuptools (#322) --- Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Dockerfile b/Dockerfile index 277bac10..225f4797 100644 --- a/Dockerfile +++ b/Dockerfile @@ -17,3 +17,4 @@ RUN find ./python/lib/$runtime/site-packages -name \*.pyc -delete # Remove botocore (40MB) to reduce package size. aws-xray-sdk # installs it, while it's already provided by the Lambda Runtime. RUN rm -rf ./python/lib/$runtime/site-packages/botocore* +RUN rm -rf ./python/lib/$runtime/site-packages/setuptools From 759701d5b7f4f26b8963d31b7d680ebd98ff273c Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Thu, 27 Apr 2023 15:14:14 -0400 Subject: [PATCH 017/268] version 4.72.0 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 495c1247..452d8263 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "4.71.0" +version = "4.72.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From a8949387c49575f84970b429913e9ca7f5079454 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Fri, 28 Apr 2023 14:09:41 -0400 Subject: [PATCH 018/268] [downsizing] remove jsonshema/tests dir (#327) --- Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Dockerfile b/Dockerfile index 225f4797..656b109f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -18,3 +18,4 @@ RUN find ./python/lib/$runtime/site-packages -name \*.pyc -delete # installs it, while it's already provided by the Lambda Runtime. RUN rm -rf ./python/lib/$runtime/site-packages/botocore* RUN rm -rf ./python/lib/$runtime/site-packages/setuptools +RUN rm -rf ./python/lib/$runtime/site-packages/jsonschema/tests From 834aa15e9fd9d0a54c55754e777cdbd02c885f84 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Thu, 18 May 2023 16:23:10 -0400 Subject: [PATCH 019/268] enforce urllib3 version (#335) --- pyproject.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/pyproject.toml b/pyproject.toml index 452d8263..b60bf1dc 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -27,6 +27,7 @@ python = ">=3.7.0,<4" datadog = ">=0.41.0,<1.0.0" wrapt = "^1.11.2" ddtrace = "^1.6.4" +urllib3 = "<2.0.0" importlib_metadata = {version = "^1.0", python = "<3.8"} boto3 = { version = "^1.10.33", optional = true } typing_extensions = {version = "^4.0", python = "<3.8"} From 77ade8285682c802512c36e2f16750a696ac5611 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Tue, 23 May 2023 16:31:51 -0400 Subject: [PATCH 020/268] set_correlation_ids should handle the empty context case (#334) * set_correlation_ids handles empty trace context case --- datadog_lambda/tracing.py | 31 ++++++++++++++--------------- tests/test_tracing.py | 41 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+), 16 deletions(-) diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 7879697e..eca0e10b 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -515,10 +515,12 @@ def get_dd_trace_context(): automatically, but this function can be used to manually inject the trace context to an outgoing request. """ - global dd_trace_context + if dd_tracing_enabled: + dd_trace_py_context = _get_dd_trace_py_context() + if dd_trace_py_context is not None: + return _context_obj_to_headers(dd_trace_py_context) - context = None - xray_context = None + global dd_trace_context try: xray_context = _get_xray_trace_context() # xray (sub)segment @@ -527,22 +529,17 @@ def get_dd_trace_context(): "get_dd_trace_context couldn't read from segment from x-ray, with error %s" % e ) + if not xray_context: + return {} - if xray_context and not dd_trace_context: - context = xray_context - elif xray_context and dd_trace_context: - context = dd_trace_context.copy() - context["parent-id"] = xray_context.get("parent-id") - logger.debug( - "Set parent id from xray trace context: %s", context.get("parent-id") - ) + if not dd_trace_context: + return _context_obj_to_headers(xray_context) - if dd_tracing_enabled: - dd_trace_py_context = _get_dd_trace_py_context() - if dd_trace_py_context is not None: - context = dd_trace_py_context + context = dd_trace_context.copy() + context["parent-id"] = xray_context.get("parent-id") + logger.debug("Set parent id from xray trace context: %s", context.get("parent-id")) - return _context_obj_to_headers(context) if context is not None else {} + return _context_obj_to_headers(context) def set_correlation_ids(): @@ -561,6 +558,8 @@ def set_correlation_ids(): return context = get_dd_trace_context() + if not context: + return span = tracer.trace("dummy.span") span.trace_id = int(context[TraceHeader.TRACE_ID]) diff --git a/tests/test_tracing.py b/tests/test_tracing.py index e19c66aa..07a053fa 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -42,6 +42,32 @@ event_samples = "tests/event_samples/" +span_to_finish = None + + +def _clean_up_span(): + global span_to_finish + if span_to_finish is not None: + span_to_finish.finish() + span_to_finish = None + + +def register_span(span): + global span_to_finish + _clean_up_span() + span_to_finish = span + return span + + +def wrapped_span_creator(span_creator_func): + def result_func(*args, **kwargs): + return register_span(span_creator_func(*args, **kwargs)) + + return result_func + + +create_inferred_span = wrapped_span_creator(create_inferred_span) + class ClientContext(object): def __init__(self, custom=None): @@ -482,6 +508,15 @@ def test_set_correlation_ids(self): span = tracer.current_span() self.assertEqual(span.trace_id, 123) self.assertEqual(span.span_id, 456) + span.finish() + + def test_set_correlation_ids_handle_empty_trace_context(self): + # neither x-ray or ddtrace is used. no tracing context at all. + self.mock_get_dd_trace_context.return_value = {} + # no exception thrown + set_correlation_ids() + span = tracer.current_span() + self.assertIsNone(span) class TestFunctionSpanTags(unittest.TestCase): @@ -587,6 +622,9 @@ def setUp(self): self.mock_span_stop = patcher.start() self.addCleanup(patcher.stop) + def tearDown(self): + _clean_up_span() + def test_create_inferred_span_from_authorizer_request_api_gateway_v1_event(self): event_sample_source = "authorizer-request-api-gateway-v1" finish_time = ( @@ -733,6 +771,9 @@ def _basic_common_checks( class TestInferredSpans(unittest.TestCase): + def tearDown(self): + _clean_up_span() + def test_create_inferred_span_from_api_gateway_event(self): event_sample_source = "api-gateway" test_file = event_samples + event_sample_source + ".json" From 16f5e4ca09e2362763e9c63eb6580fb31d98d3c8 Mon Sep 17 00:00:00 2001 From: Andrew Rodriguez <49878080+zARODz11z@users.noreply.github.com> Date: Tue, 6 Jun 2023 13:40:12 -0700 Subject: [PATCH 021/268] DD_SERVICE_MAPPING implementation with tests (#333) * DD_SERVICE_MAPPING implementation with tests * use colon as delimiter * pin urllib3 to below 2.0.0 * use module level dictionary, make control flow easier to understand, refactor tests to work * revert poetry.lock and pyproject.toml * remove my urllib addition * format with black * use generic lambda_api_gateway instead of lambda_api_gateway_websocket * refactor tests and src code to leverage helper functions instead of env vars * add bad input tests and refactor tests to use get and set service mapping in test module --- datadog_lambda/tracing.py | 90 ++++- tests/event_samples/lambda-url.json | 47 +++ tests/test_tracing.py | 507 ++++++++++++++++++++++++++++ 3 files changed, 628 insertions(+), 16 deletions(-) create mode 100644 tests/event_samples/lambda-url.json diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index eca0e10b..f356e13f 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -684,9 +684,36 @@ def create_inferred_span( return None +def create_service_mapping(val): + new_service_mapping = {} + for entry in val.split(","): + parts = entry.split(":") + if len(parts) == 2: + key = parts[0].strip() + value = parts[1].strip() + if key != value and key and value: + new_service_mapping[key] = value + return new_service_mapping + + +def determine_service_name(service_mapping, specific_key, generic_key, default_value): + service_name = service_mapping.get(specific_key) + if service_name is None: + service_name = service_mapping.get(generic_key, default_value) + return service_name + + +service_mapping = {} +# Initialization code +service_mapping_str = os.getenv("DD_SERVICE_MAPPING", "") +service_mapping = create_service_mapping(service_mapping_str) + + def create_inferred_span_from_lambda_function_url_event(event, context): request_context = event.get("requestContext") + api_id = request_context.get("apiId") domain = request_context.get("domainName") + service_name = determine_service_name(service_mapping, api_id, "lambda_url", domain) method = request_context.get("http", {}).get("method") path = request_context.get("http", {}).get("path") resource = "{0} {1}".format(method, path) @@ -700,7 +727,7 @@ def create_inferred_span_from_lambda_function_url_event(event, context): } request_time_epoch = request_context.get("timeEpoch") args = { - "service": domain, + "service": service_name, "resource": resource, "span_type": "http", } @@ -789,13 +816,18 @@ def create_inferred_span_from_api_gateway_websocket_event( request_context = event.get("requestContext") domain = request_context.get("domainName") endpoint = request_context.get("routeKey") + api_id = request_context.get("apiId") + + service_name = determine_service_name( + service_mapping, api_id, "lambda_api_gateway", domain + ) tags = { "operation_name": "aws.apigateway.websocket", "http.url": domain + endpoint, "endpoint": endpoint, "resource_names": endpoint, - "apiid": request_context.get("apiId"), - "apiname": request_context.get("apiId"), + "apiid": api_id, + "apiname": api_id, "stage": request_context.get("stage"), "request_id": context.aws_request_id, "connection_id": request_context.get("connectionId"), @@ -808,7 +840,7 @@ def create_inferred_span_from_api_gateway_websocket_event( else: InferredSpanInfo.set_tags(tags, tag_source="self", synchronicity="sync") args = { - "service": domain, + "service": service_name, "resource": endpoint, "span_type": "web", } @@ -837,6 +869,10 @@ def create_inferred_span_from_api_gateway_event( ): request_context = event.get("requestContext") domain = request_context.get("domainName", "") + api_id = request_context.get("apiId") + service_name = determine_service_name( + service_mapping, api_id, "lambda_api_gateway", domain + ) method = event.get("httpMethod") path = event.get("path") resource = "{0} {1}".format(method, path) @@ -846,8 +882,8 @@ def create_inferred_span_from_api_gateway_event( "endpoint": path, "http.method": method, "resource_names": resource, - "apiid": request_context.get("apiId"), - "apiname": request_context.get("apiId"), + "apiid": api_id, + "apiname": api_id, "stage": request_context.get("stage"), "request_id": context.aws_request_id, } @@ -857,7 +893,7 @@ def create_inferred_span_from_api_gateway_event( else: InferredSpanInfo.set_tags(tags, tag_source="self", synchronicity="sync") args = { - "service": domain, + "service": service_name, "resource": resource, "span_type": "http", } @@ -887,6 +923,10 @@ def create_inferred_span_from_http_api_event( ): request_context = event.get("requestContext") domain = request_context.get("domainName") + api_id = request_context.get("apiId") + service_name = determine_service_name( + service_mapping, api_id, "lambda_api_gateway", domain + ) method = request_context.get("http", {}).get("method") path = event.get("rawPath") resource = "{0} {1}".format(method, path) @@ -900,8 +940,8 @@ def create_inferred_span_from_http_api_event( "http.user_agent": request_context.get("http", {}).get("userAgent"), "resource_names": resource, "request_id": context.aws_request_id, - "apiid": request_context.get("apiId"), - "apiname": request_context.get("apiId"), + "apiid": api_id, + "apiname": api_id, "stage": request_context.get("stage"), } request_time_epoch_ms = int(request_context.get("timeEpoch")) @@ -910,7 +950,7 @@ def create_inferred_span_from_http_api_event( else: InferredSpanInfo.set_tags(tags, tag_source="self", synchronicity="sync") args = { - "service": domain, + "service": service_name, "resource": resource, "span_type": "http", } @@ -935,6 +975,9 @@ def create_inferred_span_from_sqs_event(event, context): event_record = get_first_record(event) event_source_arn = event_record.get("eventSourceARN") queue_name = event_source_arn.split(":")[-1] + service_name = determine_service_name( + service_mapping, queue_name, "lambda_sqs", "sqs" + ) tags = { "operation_name": "aws.sqs", "resource_names": queue_name, @@ -946,7 +989,7 @@ def create_inferred_span_from_sqs_event(event, context): InferredSpanInfo.set_tags(tags, tag_source="self", synchronicity="async") request_time_epoch = event_record.get("attributes", {}).get("SentTimestamp") args = { - "service": "sqs", + "service": service_name, "resource": queue_name, "span_type": "web", } @@ -989,6 +1032,9 @@ def create_inferred_span_from_sns_event(event, context): sns_message = event_record.get("Sns") topic_arn = event_record.get("Sns", {}).get("TopicArn") topic_name = topic_arn.split(":")[-1] + service_name = determine_service_name( + service_mapping, topic_name, "lambda_sns", "sns" + ) tags = { "operation_name": "aws.sns", "resource_names": topic_name, @@ -1008,7 +1054,7 @@ def create_inferred_span_from_sns_event(event, context): dt = datetime.strptime(timestamp, sns_dt_format) args = { - "service": "sns", + "service": service_name, "resource": topic_name, "span_type": "web", } @@ -1026,6 +1072,9 @@ def create_inferred_span_from_kinesis_event(event, context): event_id = event_record.get("eventID") stream_name = event_source_arn.split(":")[-1] shard_id = event_id.split(":")[0] + service_name = determine_service_name( + service_mapping, stream_name, "lambda_kinesis", "kinesis" + ) tags = { "operation_name": "aws.kinesis", "resource_names": stream_name, @@ -1043,7 +1092,7 @@ def create_inferred_span_from_kinesis_event(event, context): ) args = { - "service": "kinesis", + "service": service_name, "resource": stream_name, "span_type": "web", } @@ -1059,6 +1108,9 @@ def create_inferred_span_from_dynamodb_event(event, context): event_record = get_first_record(event) event_source_arn = event_record.get("eventSourceARN") table_name = event_source_arn.split("/")[1] + service_name = determine_service_name( + service_mapping, table_name, "lambda_dynamodb", "dynamodb" + ) dynamodb_message = event_record.get("dynamodb") tags = { "operation_name": "aws.dynamodb", @@ -1076,7 +1128,7 @@ def create_inferred_span_from_dynamodb_event(event, context): "ApproximateCreationDateTime" ) args = { - "service": "dynamodb", + "service": service_name, "resource": table_name, "span_type": "web", } @@ -1092,6 +1144,9 @@ def create_inferred_span_from_dynamodb_event(event, context): def create_inferred_span_from_s3_event(event, context): event_record = get_first_record(event) bucket_name = event_record.get("s3", {}).get("bucket", {}).get("name") + service_name = determine_service_name( + service_mapping, bucket_name, "lambda_s3", "s3" + ) tags = { "operation_name": "aws.s3", "resource_names": bucket_name, @@ -1108,7 +1163,7 @@ def create_inferred_span_from_s3_event(event, context): dt = datetime.strptime(timestamp, dt_format) args = { - "service": "s3", + "service": service_name, "resource": bucket_name, "span_type": "web", } @@ -1122,6 +1177,9 @@ def create_inferred_span_from_s3_event(event, context): def create_inferred_span_from_eventbridge_event(event, context): source = event.get("source") + service_name = determine_service_name( + service_mapping, source, "lambda_eventbridge", "eventbridge" + ) tags = { "operation_name": "aws.eventbridge", "resource_names": source, @@ -1137,7 +1195,7 @@ def create_inferred_span_from_eventbridge_event(event, context): dt = datetime.strptime(timestamp, dt_format) args = { - "service": "eventbridge", + "service": service_name, "resource": source, "span_type": "web", } diff --git a/tests/event_samples/lambda-url.json b/tests/event_samples/lambda-url.json new file mode 100644 index 00000000..8e78650a --- /dev/null +++ b/tests/event_samples/lambda-url.json @@ -0,0 +1,47 @@ +{ + "version": "2.0", + "routeKey": "$default", + "rawPath": "/", + "rawQueryString": "", + "headers": { + "sec-fetch-mode": "navigate", + "sec-fetch-site": "none", + "accept-language": "en-US,en;q=0.9", + "x-forwarded-proto": "https", + "x-forwarded-port": "443", + "x-forwarded-for": "71.195.30.42", + "sec-fetch-user": "?1", + "pragma": "no-cache", + "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9", + "sec-ch-ua": "\"Google Chrome\";v=\"95\", \"Chromium\";v=\"95\", \";Not A Brand\";v=\"99\"", + "sec-ch-ua-mobile": "?0", + "x-amzn-trace-id": "Root=1-61953929-1ec00c3011062a48477b169e", + "sec-ch-ua-platform": "\"macOS\"", + "host": "a8hyhsshac.lambda-url.eu-south-1.amazonaws.com", + "upgrade-insecure-requests": "1", + "cache-control": "no-cache", + "accept-encoding": "gzip, deflate, br", + "sec-fetch-dest": "document", + "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36" + }, + "requestContext": { + "accountId": "601427279990", + "apiId": "a8hyhsshac", + "domainName": "a8hyhsshac.lambda-url.eu-south-1.amazonaws.com", + "domainPrefix": "a8hyhsshac", + "http": { + "method": "GET", + "path": "/", + "protocol": "HTTP/1.1", + "sourceIp": "71.195.30.42", + "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36" + }, + "requestId": "ec4d58f8-2b8b-4ceb-a1d5-2be7bff58505", + "routeKey": "$default", + "stage": "$default", + "time": "17/Nov/2021:17:17:29 +0000", + "timeEpoch": 1637169449721 + }, + "isBase64Encoded": false + } + \ No newline at end of file diff --git a/tests/test_tracing.py b/tests/test_tracing.py index 07a053fa..74cebac4 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -1,6 +1,7 @@ import unittest import json import os +import copy from unittest.mock import MagicMock, Mock, patch, call @@ -29,6 +30,9 @@ _convert_xray_sampling, InferredSpanInfo, extract_context_from_eventbridge_event, + create_service_mapping, + determine_service_name, + service_mapping as global_service_mapping, ) from datadog_lambda.trigger import EventTypes @@ -770,6 +774,509 @@ def _basic_common_checks( self.assertEqual(span.get_tag("request_id"), "abc123") +class TestServiceMapping(unittest.TestCase): + def setUp(self): + self.service_mapping = {} + + def get_service_mapping(self): + return global_service_mapping + + def set_service_mapping(self, new_service_mapping): + global_service_mapping.clear() + global_service_mapping.update(new_service_mapping) + + def test_create_service_mapping_invalid_input(self): + # Test case where the input is a string without a colon to split on + val = "api1" + self.assertEqual(create_service_mapping(val), {}) + + # Test case where the input is an empty string + val = "" + self.assertEqual(create_service_mapping(val), {}) + + # Test case where the key and value are identical + val = "api1:api1" + self.assertEqual(create_service_mapping(val), {}) + + # Test case where the key or value is missing + val = ":api1" + self.assertEqual(create_service_mapping(val), {}) + val = "api1:" + self.assertEqual(create_service_mapping(val), {}) + + def test_create_service_mapping(self): + val = "api1:service1,api2:service2" + expected_output = {"api1": "service1", "api2": "service2"} + self.assertEqual(create_service_mapping(val), expected_output) + + def test_get_service_mapping(self): + os.environ["DD_SERVICE_MAPPING"] = "api1:service1,api2:service2" + expected_output = {"api1": "service1", "api2": "service2"} + self.set_service_mapping( + create_service_mapping(os.environ["DD_SERVICE_MAPPING"]) + ) + self.assertEqual(self.get_service_mapping(), expected_output) + + def test_set_service_mapping(self): + new_service_mapping = {"api3": "service3", "api4": "service4"} + self.set_service_mapping(new_service_mapping) + self.assertEqual(self.get_service_mapping(), new_service_mapping) + + def test_determine_service_name(self): + # Prepare the environment + os.environ["DD_SERVICE_MAPPING"] = "api1:service1,api2:service2" + self.set_service_mapping( + create_service_mapping(os.environ["DD_SERVICE_MAPPING"]) + ) + + # Case where specific key is in the service mapping + specific_key = "api1" + self.assertEqual( + determine_service_name( + self.get_service_mapping(), specific_key, "lambda_url", "default" + ), + "service1", + ) + + # Case where specific key is not in the service mapping, but generic key is + specific_key = "api3" + self.assertEqual( + determine_service_name( + self.get_service_mapping(), specific_key, "api2", "default" + ), + "service2", + ) + + # Case where neither specific nor generic keys are in the service mapping + specific_key = "api3" + self.assertEqual( + determine_service_name( + self.get_service_mapping(), specific_key, "api3", "default" + ), + "default", + ) + + def test_remaps_all_inferred_span_service_names_from_api_gateway_event(self): + new_service_mapping = {"lambda_api_gateway": "new-name"} + self.set_service_mapping(new_service_mapping) + event_sample_source = "api-gateway" + test_file = event_samples + event_sample_source + ".json" + with open(test_file, "r") as event: + original_event = json.load(event) + + ctx = get_mock_context() + ctx.aws_request_id = "123" + + span1 = create_inferred_span(original_event, ctx) + self.assertEqual(span1.get_tag("operation_name"), "aws.apigateway.rest") + self.assertEqual(span1.service, "new-name") + + # Testing the second event + event2 = copy.deepcopy(original_event) + event2["requestContext"][ + "domainName" + ] = "different.execute-api.us-east-2.amazonaws.com" + span2 = create_inferred_span(event2, ctx) + self.assertEqual(span2.get_tag("operation_name"), "aws.apigateway.rest") + self.assertEqual(span2.service, "new-name") + + def test_remaps_specific_inferred_span_service_names_from_api_gateway_event( + self, + ): + new_service_mapping = {"1234567890": "new-name"} + self.set_service_mapping(new_service_mapping) + event_sample_source = "api-gateway" + test_file = event_samples + event_sample_source + ".json" + with open(test_file, "r") as event: + original_event = json.load(event) + + ctx = get_mock_context() + ctx.aws_request_id = "123" + + span1 = create_inferred_span(original_event, ctx) + self.assertEqual(span1.get_tag("operation_name"), "aws.apigateway.rest") + self.assertEqual(span1.service, "new-name") + + # Testing the second event + event2 = copy.deepcopy(original_event) + event2["requestContext"]["apiId"] = "different" + span2 = create_inferred_span(event2, ctx) + self.assertEqual(span2.get_tag("operation_name"), "aws.apigateway.rest") + self.assertEqual( + span2.service, "70ixmpl4fl.execute-api.us-east-2.amazonaws.com" + ) + + def test_remaps_specific_inferred_span_service_names_from_api_gateway_websocket_event( + self, + ): + self.set_service_mapping({"p62c47itsb": "new-name"}) + event_sample_source = "api-gateway-websocket-default" + test_file = event_samples + event_sample_source + ".json" + with open(test_file, "r") as event: + original_event = json.load(event) + + ctx = get_mock_context() + ctx.aws_request_id = "123" + + span1 = create_inferred_span(original_event, ctx) + self.assertEqual(span1.get_tag("operation_name"), "aws.apigateway.websocket") + self.assertEqual(span1.service, "new-name") + + # Testing the second event + event2 = copy.deepcopy(original_event) + event2["requestContext"]["apiId"] = "different" + span2 = create_inferred_span(event2, ctx) + self.assertEqual(span2.get_tag("operation_name"), "aws.apigateway.websocket") + self.assertEqual( + span2.service, "p62c47itsb.execute-api.eu-west-1.amazonaws.com" + ) + + def test_remaps_specific_inferred_span_service_names_from_api_gateway_http_event( + self, + ): + self.set_service_mapping({"x02yirxc7a": "new-name"}) + event_sample_source = "http-api" + test_file = event_samples + event_sample_source + ".json" + with open(test_file, "r") as event: + original_event = json.load(event) + + ctx = get_mock_context() + ctx.aws_request_id = "123" + + span1 = create_inferred_span(original_event, ctx) + self.assertEqual(span1.get_tag("operation_name"), "aws.httpapi") + self.assertEqual(span1.service, "new-name") + + # Testing the second event + event2 = copy.deepcopy(original_event) + event2["requestContext"]["apiId"] = "different" + span2 = create_inferred_span(event2, ctx) + self.assertEqual(span2.get_tag("operation_name"), "aws.httpapi") + self.assertEqual( + span2.service, "x02yirxc7a.execute-api.eu-west-1.amazonaws.com" + ) + + def test_remaps_all_inferred_span_service_names_from_lambda_url_event(self): + self.set_service_mapping({"lambda_url": "new-name"}) + event_sample_source = "lambda-url" + test_file = event_samples + event_sample_source + ".json" + with open(test_file, "r") as event: + original_event = json.load(event) + + ctx = get_mock_context() + ctx.aws_request_id = "123" + + span1 = create_inferred_span(original_event, ctx) + self.assertEqual(span1.get_tag("operation_name"), "aws.lambda.url") + self.assertEqual(span1.service, "new-name") + + # Testing the second event + event2 = copy.deepcopy(original_event) + event2["requestContext"][ + "domainName" + ] = "different.lambda-url.eu-south-1.amazonaws.com" + span2 = create_inferred_span(event2, ctx) + self.assertEqual(span2.get_tag("operation_name"), "aws.lambda.url") + self.assertEqual(span2.service, "new-name") + + def test_remaps_specific_inferred_span_service_names_from_lambda_url_event( + self, + ): + self.set_service_mapping({"a8hyhsshac": "new-name"}) + event_sample_source = "lambda-url" + test_file = event_samples + event_sample_source + ".json" + with open(test_file, "r") as event: + original_event = json.load(event) + + ctx = get_mock_context() + ctx.aws_request_id = "123" + + span1 = create_inferred_span(original_event, ctx) + self.assertEqual(span1.get_tag("operation_name"), "aws.lambda.url") + self.assertEqual(span1.service, "new-name") + + # Testing the second event + event2 = copy.deepcopy(original_event) + event2["requestContext"]["apiId"] = "different" + span2 = create_inferred_span(event2, ctx) + self.assertEqual(span2.get_tag("operation_name"), "aws.lambda.url") + self.assertEqual( + span2.service, "a8hyhsshac.lambda-url.eu-south-1.amazonaws.com" + ) + + def test_remaps_all_inferred_span_service_names_from_sqs_event(self): + self.set_service_mapping({"lambda_sqs": "new-name"}) + event_sample_source = "sqs-string-msg-attribute" + test_file = event_samples + event_sample_source + ".json" + with open(test_file, "r") as event: + original_event = json.load(event) + + ctx = get_mock_context() + ctx.aws_request_id = "123" + + span1 = create_inferred_span(original_event, ctx) + self.assertEqual(span1.get_tag("operation_name"), "aws.sqs") + self.assertEqual(span1.service, "new-name") + + # Testing the second event + event2 = copy.deepcopy(original_event) + event2["Records"][0][ + "eventSourceARN" + ] = "arn:aws:sqs:eu-west-1:123456789012:different-sqs-url" + span2 = create_inferred_span(event2, ctx) + self.assertEqual(span2.get_tag("operation_name"), "aws.sqs") + self.assertEqual(span2.service, "new-name") + + def test_remaps_specific_inferred_span_service_names_from_sqs_event(self): + self.set_service_mapping({"InferredSpansQueueNode": "new-name"}) + event_sample_source = "sqs-string-msg-attribute" + test_file = event_samples + event_sample_source + ".json" + with open(test_file, "r") as event: + original_event = json.load(event) + + ctx = get_mock_context() + ctx.aws_request_id = "123" + + span1 = create_inferred_span(original_event, ctx) + self.assertEqual(span1.get_tag("operation_name"), "aws.sqs") + self.assertEqual(span1.service, "new-name") + + # Testing the second event + event2 = copy.deepcopy(original_event) + event2["Records"][0][ + "eventSourceARN" + ] = "arn:aws:sqs:eu-west-1:123456789012:different-sqs-url" + span2 = create_inferred_span(event2, ctx) + self.assertEqual(span2.get_tag("operation_name"), "aws.sqs") + self.assertEqual(span2.service, "sqs") + + def test_remaps_all_inferred_span_service_names_from_sns_event(self): + self.set_service_mapping({"lambda_sns": "new-name"}) + event_sample_source = "sns-string-msg-attribute" + test_file = event_samples + event_sample_source + ".json" + with open(test_file, "r") as event: + original_event = json.load(event) + + ctx = get_mock_context() + ctx.aws_request_id = "123" + + span1 = create_inferred_span(original_event, ctx) + self.assertEqual(span1.get_tag("operation_name"), "aws.sns") + self.assertEqual(span1.service, "new-name") + + # Testing the second event + event2 = copy.deepcopy(original_event) + event2["Records"][0]["Sns"][ + "TopicArn" + ] = "arn:aws:sns:us-west-2:123456789012:different-sns-topic" + span2 = create_inferred_span(event2, ctx) + self.assertEqual(span2.get_tag("operation_name"), "aws.sns") + self.assertEqual(span2.service, "new-name") + + def test_remaps_specific_inferred_span_service_names_from_sns_event(self): + self.set_service_mapping({"serverlessTracingTopicPy": "new-name"}) + event_sample_source = "sns-string-msg-attribute" + test_file = event_samples + event_sample_source + ".json" + with open(test_file, "r") as event: + original_event = json.load(event) + + ctx = get_mock_context() + ctx.aws_request_id = "123" + + span1 = create_inferred_span(original_event, ctx) + self.assertEqual(span1.get_tag("operation_name"), "aws.sns") + self.assertEqual(span1.service, "new-name") + + # Testing the second event + event2 = copy.deepcopy(original_event) + event2["Records"][0]["Sns"][ + "TopicArn" + ] = "arn:aws:sns:us-west-2:123456789012:different-sns-topic" + span2 = create_inferred_span(event2, ctx) + self.assertEqual(span2.get_tag("operation_name"), "aws.sns") + self.assertEqual(span2.service, "sns") + + def test_remaps_all_inferred_span_service_names_from_kinesis_event(self): + self.set_service_mapping({"lambda_kinesis": "new-name"}) + event_sample_source = "kinesis" + test_file = event_samples + event_sample_source + ".json" + with open(test_file, "r") as event: + original_event = json.load(event) + + ctx = get_mock_context() + ctx.aws_request_id = "123" + + span1 = create_inferred_span(original_event, ctx) + self.assertEqual(span1.get_tag("operation_name"), "aws.kinesis") + self.assertEqual(span1.service, "new-name") + + # Testing the second event + event2 = copy.deepcopy(original_event) + event2["Records"][0][ + "eventSourceARN" + ] = "arn:aws:kinesis:eu-west-1:601427279990:stream/differentKinesisStream" + span2 = create_inferred_span(event2, ctx) + self.assertEqual(span2.get_tag("operation_name"), "aws.kinesis") + self.assertEqual(span2.service, "new-name") + + def test_remaps_specific_inferred_span_service_names_from_kinesis_event(self): + self.set_service_mapping({"Different_EXAMPLE": "new-name"}) + event_sample_source = "kinesis" + test_file = event_samples + event_sample_source + ".json" + with open(test_file, "r") as event: + original_event = json.load(event) + + ctx = get_mock_context() + ctx.aws_request_id = "123" + + span1 = create_inferred_span(original_event, ctx) + self.assertEqual(span1.get_tag("operation_name"), "aws.kinesis") + self.assertEqual(span1.service, "kinesis") + + # Testing the second event + event2 = copy.deepcopy(original_event) + event2["Records"][0][ + "eventSourceARN" + ] = "arn:aws:kinesis:eu-west-1:601427279990:stream/DifferentKinesisStream" + span2 = create_inferred_span(event2, ctx) + self.assertEqual(span2.get_tag("operation_name"), "aws.kinesis") + self.assertEqual(span2.service, "kinesis") + + def test_remaps_all_inferred_span_service_names_from_s3_event(self): + self.set_service_mapping({"lambda_s3": "new-name"}) + event_sample_source = "s3" + test_file = event_samples + event_sample_source + ".json" + with open(test_file, "r") as event: + original_event = json.load(event) + + ctx = get_mock_context() + ctx.aws_request_id = "123" + + span1 = create_inferred_span(original_event, ctx) + self.assertEqual(span1.get_tag("operation_name"), "aws.s3") + self.assertEqual(span1.service, "new-name") + + # Testing the second event + event2 = copy.deepcopy(original_event) + event2["Records"][0]["s3"]["bucket"][ + "arn" + ] = "arn:aws:s3:::different-example-bucket" + span2 = create_inferred_span(event2, ctx) + self.assertEqual(span2.get_tag("operation_name"), "aws.s3") + self.assertEqual(span2.service, "new-name") + + def test_remaps_specific_inferred_span_service_names_from_s3_event(self): + self.set_service_mapping({"example-bucket": "new-name"}) + event_sample_source = "s3" + test_file = event_samples + event_sample_source + ".json" + with open(test_file, "r") as event: + original_event = json.load(event) + + ctx = get_mock_context() + ctx.aws_request_id = "123" + + span1 = create_inferred_span(original_event, ctx) + self.assertEqual(span1.get_tag("operation_name"), "aws.s3") + self.assertEqual(span1.service, "new-name") + + # Testing the second event + event2 = copy.deepcopy(original_event) + event2["Records"][0]["s3"]["bucket"]["name"] = "different-example-bucket" + span2 = create_inferred_span(event2, ctx) + self.assertEqual(span2.get_tag("operation_name"), "aws.s3") + self.assertEqual(span2.service, "s3") + + def test_remaps_all_inferred_span_service_names_from_dynamodb_event(self): + self.set_service_mapping({"lambda_dynamodb": "new-name"}) + event_sample_source = "dynamodb" + test_file = event_samples + event_sample_source + ".json" + with open(test_file, "r") as event: + original_event = json.load(event) + + ctx = get_mock_context() + ctx.aws_request_id = "123" + + span1 = create_inferred_span(original_event, ctx) + self.assertEqual(span1.get_tag("operation_name"), "aws.dynamodb") + self.assertEqual(span1.service, "new-name") + + # Testing the second event + event2 = copy.deepcopy(original_event) + event2["Records"][0][ + "eventSourceARN" + ] = "arn:aws:dynamodb:us-east-1:123456789012:table/DifferentExampleTableWithStream/stream/2015-06-27T00:48:05.899" + span2 = create_inferred_span(event2, ctx) + self.assertEqual(span2.get_tag("operation_name"), "aws.dynamodb") + self.assertEqual(span2.service, "new-name") + + def test_remaps_specific_inferred_span_service_names_from_dynamodb_event(self): + self.set_service_mapping({"ExampleTableWithStream": "new-name"}) + event_sample_source = "dynamodb" + test_file = event_samples + event_sample_source + ".json" + with open(test_file, "r") as event: + original_event = json.load(event) + + ctx = get_mock_context() + ctx.aws_request_id = "123" + + span1 = create_inferred_span(original_event, ctx) + self.assertEqual(span1.get_tag("operation_name"), "aws.dynamodb") + self.assertEqual(span1.service, "new-name") + + # Testing the second event + event2 = copy.deepcopy(original_event) + event2["Records"][0][ + "eventSourceARN" + ] = "arn:aws:dynamodb:us-east-1:123456789012:table/DifferentExampleTableWithStream/stream/2015-06-27T00:48:05.899" + span2 = create_inferred_span(event2, ctx) + self.assertEqual(span2.get_tag("operation_name"), "aws.dynamodb") + self.assertEqual(span2.service, "dynamodb") + + def test_remaps_all_inferred_span_service_names_from_eventbridge_event(self): + self.set_service_mapping({"lambda_eventbridge": "new-name"}) + event_sample_source = "eventbridge-custom" + test_file = event_samples + event_sample_source + ".json" + with open(test_file, "r") as event: + original_event = json.load(event) + + ctx = get_mock_context() + ctx.aws_request_id = "123" + + span1 = create_inferred_span(original_event, ctx) + self.assertEqual(span1.get_tag("operation_name"), "aws.eventbridge") + self.assertEqual(span1.service, "new-name") + + # Testing the second event + event2 = copy.deepcopy(original_event) + event2["source"] = "different.eventbridge.custom.event.sender" + span2 = create_inferred_span(event2, ctx) + self.assertEqual(span2.get_tag("operation_name"), "aws.eventbridge") + self.assertEqual(span2.service, "new-name") + + def test_remaps_specific_inferred_span_service_names_from_eventbridge_event( + self, + ): + self.set_service_mapping({"eventbridge.custom.event.sender": "new-name"}) + event_sample_source = "eventbridge-custom" + test_file = event_samples + event_sample_source + ".json" + with open(test_file, "r") as event: + original_event = json.load(event) + + ctx = get_mock_context() + ctx.aws_request_id = "123" + + span1 = create_inferred_span(original_event, ctx) + self.assertEqual(span1.get_tag("operation_name"), "aws.eventbridge") + self.assertEqual(span1.service, "new-name") + + # Testing the second event + event2 = copy.deepcopy(original_event) + event2["source"] = "different.eventbridge.custom.event.sender" + span2 = create_inferred_span(event2, ctx) + self.assertEqual(span2.get_tag("operation_name"), "aws.eventbridge") + self.assertEqual(span2.service, "eventbridge") + + class TestInferredSpans(unittest.TestCase): def tearDown(self): _clean_up_span() From c9209cbf9752324910fbf7d5f6316b0bf8e0d4b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?jordan=20gonz=C3=A1lez?= <30836115+duncanista@users.noreply.github.com> Date: Thu, 15 Jun 2023 13:41:24 -0400 Subject: [PATCH 022/268] feat: add `peer.service` (#337) * update fallback service on wrapping * add `peer.service` for inferred spans * add tests * update integration tests * change fallback to previous value this should be handled in a profiling PR * remove logic from `tracing.py` * move `peer.service` one level up on span finish * add `service` to integration tests --- datadog_lambda/wrapper.py | 11 +- tests/integration/serverless.yml | 1 + .../logs/async-metrics_python310.log | 72 +++++++----- .../snapshots/logs/async-metrics_python37.log | 72 +++++++----- .../snapshots/logs/async-metrics_python38.log | 72 +++++++----- .../snapshots/logs/async-metrics_python39.log | 72 +++++++----- .../snapshots/logs/sync-metrics_python310.log | 110 ++++++++++-------- .../snapshots/logs/sync-metrics_python37.log | 108 ++++++++++------- .../snapshots/logs/sync-metrics_python38.log | 108 ++++++++++------- .../snapshots/logs/sync-metrics_python39.log | 110 ++++++++++-------- 10 files changed, 443 insertions(+), 293 deletions(-) diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index 57b540f6..6e838421 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -54,8 +54,6 @@ dd_capture_lambda_payload_enabled = ( os.environ.get("DD_CAPTURE_LAMBDA_PAYLOAD", "false").lower() == "true" ) -service_env_var = os.environ.get("DD_SERVICE", "DefaultServiceName") -env_env_var = os.environ.get("DD_ENV", None) DD_FLUSH_TO_LOG = "DD_FLUSH_TO_LOG" DD_LOGS_INJECTION = "DD_LOGS_INJECTION" @@ -70,6 +68,9 @@ DD_COLD_START_TRACE_SKIP_LIB = "DD_COLD_START_TRACE_SKIP_LIB" DD_REQUESTS_SERVICE_NAME = "DD_REQUESTS_SERVICE_NAME" DD_SERVICE = "DD_SERVICE" +DD_ENV = "DD_ENV" + +env_env_var = os.environ.get(DD_ENV, None) """ Usage: @@ -132,6 +133,7 @@ def __init__(self, func): os.environ.get(DD_MERGE_XRAY_TRACES, "false").lower() == "true" ) self.function_name = os.environ.get(AWS_LAMBDA_FUNCTION_NAME, "function") + self.service = os.environ.get(DD_SERVICE, None) self.extractor_env = os.environ.get(DD_TRACE_EXTRACTOR, None) self.trace_extractor = None self.span = None @@ -172,7 +174,7 @@ def __init__(self, func): logger.debug(f"Malformatted for env {DD_COLD_START_TRACE_SKIP_LIB}") self.response = None if profiling_env_var: - self.prof = profiler.Profiler(env=env_env_var, service=service_env_var) + self.prof = profiler.Profiler(env=env_env_var, service=self.service) if self.extractor_env: extractor_parts = self.extractor_env.rsplit(".", 1) if len(extractor_parts) == 2: @@ -315,6 +317,9 @@ def _after(self, event, context): if status_code: self.inferred_span.set_tag("http.status_code", status_code) + if self.service: + self.inferred_span.set_tag("peer.service", self.service) + if InferredSpanInfo.is_async(self.inferred_span) and self.span: self.inferred_span.finish(finish_time=self.span.start) else: diff --git a/tests/integration/serverless.yml b/tests/integration/serverless.yml index 27112f54..bb64c397 100644 --- a/tests/integration/serverless.yml +++ b/tests/integration/serverless.yml @@ -12,6 +12,7 @@ provider: DD_API_KEY: ${env:DD_API_KEY} DD_TRACE_MANAGED_SERVICES: true DD_COLD_START_TRACING: false + DD_SERVICE: ${self:service} timeout: 15 deploymentBucket: name: integration-tests-serververless-deployment-bucket diff --git a/tests/integration/snapshots/logs/async-metrics_python310.log b/tests/integration/snapshots/logs/async-metrics_python310.log index a7ad8826..d746aba4 100644 --- a/tests/integration/snapshots/logs/async-metrics_python310.log +++ b/tests/integration/snapshots/logs/async-metrics_python310.log @@ -66,6 +66,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -114,7 +115,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -130,7 +131,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -138,7 +140,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -228,6 +230,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "size_bytes": "26", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -272,7 +275,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -288,7 +291,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -296,7 +300,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -380,6 +384,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "detail_type": "testdetail", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -423,7 +428,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -439,7 +444,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -447,7 +453,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -541,6 +547,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -589,7 +596,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -605,7 +612,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -613,7 +621,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -703,6 +711,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "partition_key": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -747,7 +756,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -763,7 +772,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -771,7 +781,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -858,6 +868,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "object_etag": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -902,7 +913,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -918,7 +929,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -926,7 +938,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1014,6 +1026,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "subject": "TestInvoke", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -1058,7 +1071,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1074,7 +1087,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -1082,7 +1096,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1169,6 +1183,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "sender_id": "AIDAIENQZJOLO23YVJ4VO", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -1213,7 +1228,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1229,7 +1244,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -1237,7 +1253,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1330,6 +1346,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -1376,7 +1393,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1392,7 +1409,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -1400,7 +1418,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, diff --git a/tests/integration/snapshots/logs/async-metrics_python37.log b/tests/integration/snapshots/logs/async-metrics_python37.log index 46a4f336..e28bb9b3 100644 --- a/tests/integration/snapshots/logs/async-metrics_python37.log +++ b/tests/integration/snapshots/logs/async-metrics_python37.log @@ -66,6 +66,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -114,7 +115,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -130,7 +131,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -138,7 +140,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -228,6 +230,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "size_bytes": "26", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -272,7 +275,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -288,7 +291,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -296,7 +300,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -380,6 +384,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "detail_type": "testdetail", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -423,7 +428,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -439,7 +444,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -447,7 +453,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -541,6 +547,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -589,7 +596,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -605,7 +612,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -613,7 +621,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -703,6 +711,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "partition_key": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -747,7 +756,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -763,7 +772,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -771,7 +781,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -858,6 +868,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "object_etag": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -902,7 +913,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -918,7 +929,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -926,7 +938,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1014,6 +1026,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "subject": "TestInvoke", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -1058,7 +1071,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1074,7 +1087,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -1082,7 +1096,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1169,6 +1183,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "sender_id": "AIDAIENQZJOLO23YVJ4VO", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -1213,7 +1228,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1229,7 +1244,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -1237,7 +1253,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1330,6 +1346,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -1376,7 +1393,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1392,7 +1409,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -1400,7 +1418,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, diff --git a/tests/integration/snapshots/logs/async-metrics_python38.log b/tests/integration/snapshots/logs/async-metrics_python38.log index f27dfcd9..c146ef0f 100644 --- a/tests/integration/snapshots/logs/async-metrics_python38.log +++ b/tests/integration/snapshots/logs/async-metrics_python38.log @@ -66,6 +66,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -114,7 +115,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -130,7 +131,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -138,7 +140,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -228,6 +230,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "size_bytes": "26", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -272,7 +275,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -288,7 +291,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -296,7 +300,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -380,6 +384,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "detail_type": "testdetail", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -423,7 +428,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -439,7 +444,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -447,7 +453,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -541,6 +547,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -589,7 +596,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -605,7 +612,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -613,7 +621,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -703,6 +711,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "partition_key": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -747,7 +756,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -763,7 +772,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -771,7 +781,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -858,6 +868,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "object_etag": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -902,7 +913,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -918,7 +929,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -926,7 +938,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1014,6 +1026,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "subject": "TestInvoke", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -1058,7 +1071,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1074,7 +1087,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -1082,7 +1096,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1169,6 +1183,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "sender_id": "AIDAIENQZJOLO23YVJ4VO", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -1213,7 +1228,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1229,7 +1244,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -1237,7 +1253,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1330,6 +1346,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -1376,7 +1393,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1392,7 +1409,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -1400,7 +1418,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, diff --git a/tests/integration/snapshots/logs/async-metrics_python39.log b/tests/integration/snapshots/logs/async-metrics_python39.log index 1968de5e..bc0fb4e8 100644 --- a/tests/integration/snapshots/logs/async-metrics_python39.log +++ b/tests/integration/snapshots/logs/async-metrics_python39.log @@ -66,6 +66,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -114,7 +115,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -130,7 +131,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -138,7 +140,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -228,6 +230,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "size_bytes": "26", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -272,7 +275,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -288,7 +291,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -296,7 +300,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -380,6 +384,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "detail_type": "testdetail", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -423,7 +428,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -439,7 +444,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -447,7 +453,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -541,6 +547,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -589,7 +596,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -605,7 +612,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -613,7 +621,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -703,6 +711,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "partition_key": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -747,7 +756,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -763,7 +772,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -771,7 +781,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -858,6 +868,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "object_etag": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -902,7 +913,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -918,7 +929,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -926,7 +938,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1014,6 +1026,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "subject": "TestInvoke", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -1058,7 +1071,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1074,7 +1087,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -1082,7 +1096,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1169,6 +1183,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "sender_id": "AIDAIENQZJOLO23YVJ4VO", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -1213,7 +1228,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1229,7 +1244,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -1237,7 +1253,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1330,6 +1346,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -1376,7 +1393,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1392,7 +1409,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -1400,7 +1418,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, diff --git a/tests/integration/snapshots/logs/sync-metrics_python310.log b/tests/integration/snapshots/logs/sync-metrics_python310.log index a8266552..a72a34a9 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python310.log +++ b/tests/integration/snapshots/logs/sync-metrics_python310.log @@ -46,6 +46,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -94,7 +95,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -110,7 +111,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -118,7 +120,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -141,7 +143,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}]} { "traces": [ [ @@ -149,7 +151,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -226,6 +228,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "size_bytes": "26", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -270,7 +273,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -286,7 +289,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -294,7 +298,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -317,7 +321,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}]} { "traces": [ [ @@ -325,7 +329,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -396,6 +400,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "detail_type": "testdetail", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -439,7 +444,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -455,7 +460,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -463,7 +469,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -486,7 +492,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}]} { "traces": [ [ @@ -494,7 +500,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -575,6 +581,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -623,7 +630,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -639,7 +646,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -647,7 +655,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -670,7 +678,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}]} +END Duration: XXXX ms Memory Used: XXXX MB { "traces": [ [ @@ -678,7 +687,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -708,7 +717,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept ] ] } -END Duration: XXXX ms Memory Used: XXXX MB START { "m": "aws.lambda.enhanced.invocations", @@ -755,6 +763,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "partition_key": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -799,7 +808,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -815,7 +824,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -823,7 +833,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -846,7 +856,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}]} { "traces": [ [ @@ -854,7 +864,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -928,6 +938,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "object_etag": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -972,7 +983,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -988,7 +999,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -996,7 +1008,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1019,7 +1031,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}]} { "traces": [ [ @@ -1027,7 +1039,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1102,6 +1114,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "subject": "TestInvoke", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -1146,7 +1159,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1162,7 +1175,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -1170,7 +1184,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1193,7 +1207,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}]} { "traces": [ [ @@ -1201,7 +1215,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1275,6 +1289,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "sender_id": "AIDAIENQZJOLO23YVJ4VO", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -1319,7 +1334,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1335,7 +1350,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -1343,7 +1359,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1366,7 +1382,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}]} { "traces": [ [ @@ -1374,7 +1390,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1454,6 +1470,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -1500,7 +1517,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1516,7 +1533,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -1524,7 +1542,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1547,7 +1565,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}]} { "traces": [ [ @@ -1555,7 +1573,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, diff --git a/tests/integration/snapshots/logs/sync-metrics_python37.log b/tests/integration/snapshots/logs/sync-metrics_python37.log index 33853293..5bc76a99 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python37.log +++ b/tests/integration/snapshots/logs/sync-metrics_python37.log @@ -46,6 +46,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -94,7 +95,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -110,7 +111,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -118,7 +120,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -141,7 +143,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X", "service:integration-tests-python"], "interval": 10}]} { "traces": [ [ @@ -149,7 +151,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -226,6 +228,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "size_bytes": "26", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -270,7 +273,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -286,7 +289,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -294,7 +298,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -317,7 +321,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X", "service:integration-tests-python"], "interval": 10}]} { "traces": [ [ @@ -325,7 +329,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -396,6 +400,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "detail_type": "testdetail", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -439,7 +444,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -455,7 +460,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -463,7 +469,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -486,7 +492,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X", "service:integration-tests-python"], "interval": 10}]} { "traces": [ [ @@ -494,7 +500,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -575,6 +581,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -623,7 +630,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -639,7 +646,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -647,7 +655,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -670,7 +678,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X", "service:integration-tests-python"], "interval": 10}]} { "traces": [ [ @@ -678,7 +686,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -755,6 +763,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "partition_key": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -799,7 +808,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -815,7 +824,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -823,7 +833,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -846,7 +856,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X", "service:integration-tests-python"], "interval": 10}]} { "traces": [ [ @@ -854,7 +864,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -928,6 +938,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "object_etag": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -972,7 +983,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -988,7 +999,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -996,7 +1008,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1019,7 +1031,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X", "service:integration-tests-python"], "interval": 10}]} { "traces": [ [ @@ -1027,7 +1039,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1102,6 +1114,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "subject": "TestInvoke", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -1146,7 +1159,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1162,7 +1175,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -1170,7 +1184,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1193,7 +1207,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X", "service:integration-tests-python"], "interval": 10}]} { "traces": [ [ @@ -1201,7 +1215,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1275,6 +1289,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "sender_id": "AIDAIENQZJOLO23YVJ4VO", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -1319,7 +1334,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1335,7 +1350,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -1343,7 +1359,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1366,7 +1382,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X", "service:integration-tests-python"], "interval": 10}]} { "traces": [ [ @@ -1374,7 +1390,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1454,6 +1470,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -1500,7 +1517,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1516,7 +1533,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -1524,7 +1542,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1547,7 +1565,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X", "service:integration-tests-python"], "interval": 10}]} { "traces": [ [ @@ -1555,7 +1573,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, diff --git a/tests/integration/snapshots/logs/sync-metrics_python38.log b/tests/integration/snapshots/logs/sync-metrics_python38.log index c62928a3..213e64aa 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python38.log +++ b/tests/integration/snapshots/logs/sync-metrics_python38.log @@ -46,6 +46,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -94,7 +95,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -110,7 +111,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -118,7 +120,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -141,7 +143,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X", "service:integration-tests-python"], "interval": 10}]} { "traces": [ [ @@ -149,7 +151,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -226,6 +228,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "size_bytes": "26", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -270,7 +273,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -286,7 +289,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -294,7 +298,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -317,7 +321,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X", "service:integration-tests-python"], "interval": 10}]} { "traces": [ [ @@ -325,7 +329,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -396,6 +400,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "detail_type": "testdetail", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -439,7 +444,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -455,7 +460,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -463,7 +469,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -486,7 +492,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X", "service:integration-tests-python"], "interval": 10}]} { "traces": [ [ @@ -494,7 +500,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -575,6 +581,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -623,7 +630,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -639,7 +646,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -647,7 +655,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -670,7 +678,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X", "service:integration-tests-python"], "interval": 10}]} { "traces": [ [ @@ -678,7 +686,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -755,6 +763,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "partition_key": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -799,7 +808,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -815,7 +824,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -823,7 +833,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -846,7 +856,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X", "service:integration-tests-python"], "interval": 10}]} { "traces": [ [ @@ -854,7 +864,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -928,6 +938,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "object_etag": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -972,7 +983,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -988,7 +999,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -996,7 +1008,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1019,7 +1031,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X", "service:integration-tests-python"], "interval": 10}]} { "traces": [ [ @@ -1027,7 +1039,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1102,6 +1114,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "subject": "TestInvoke", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -1146,7 +1159,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1162,7 +1175,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -1170,7 +1184,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1193,7 +1207,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X", "service:integration-tests-python"], "interval": 10}]} { "traces": [ [ @@ -1201,7 +1215,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1275,6 +1289,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "sender_id": "AIDAIENQZJOLO23YVJ4VO", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -1319,7 +1334,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1335,7 +1350,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -1343,7 +1359,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1366,7 +1382,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X", "service:integration-tests-python"], "interval": 10}]} { "traces": [ [ @@ -1374,7 +1390,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1454,6 +1470,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -1500,7 +1517,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1516,7 +1533,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -1524,7 +1542,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1547,7 +1565,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X", "service:integration-tests-python"], "interval": 10}]} { "traces": [ [ @@ -1555,7 +1573,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, diff --git a/tests/integration/snapshots/logs/sync-metrics_python39.log b/tests/integration/snapshots/logs/sync-metrics_python39.log index fbde4bcd..54ab2bad 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python39.log +++ b/tests/integration/snapshots/logs/sync-metrics_python39.log @@ -46,6 +46,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -94,7 +95,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -110,7 +111,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -118,7 +120,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -141,8 +143,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} -END Duration: XXXX ms (init: XXXX ms) Memory Used: XXXX MB +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}]} { "traces": [ [ @@ -150,7 +151,7 @@ END Duration: XXXX ms (init: XXXX ms) Memory Used: XXXX MB "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -180,6 +181,7 @@ END Duration: XXXX ms (init: XXXX ms) Memory Used: XXXX MB ] ] } +END Duration: XXXX ms (init: XXXX ms) Memory Used: XXXX MB START { "m": "aws.lambda.enhanced.invocations", @@ -226,6 +228,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "size_bytes": "26", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -270,7 +273,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -286,7 +289,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -294,7 +298,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -317,7 +321,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}]} { "traces": [ [ @@ -325,7 +329,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -396,6 +400,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "detail_type": "testdetail", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -439,7 +444,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -455,7 +460,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -463,7 +469,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -486,7 +492,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}]} { "traces": [ [ @@ -494,7 +500,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -575,6 +581,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -623,7 +630,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -639,7 +646,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -647,7 +655,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -670,7 +678,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}]} { "traces": [ [ @@ -678,7 +686,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -755,6 +763,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "partition_key": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -799,7 +808,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -815,7 +824,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -823,7 +833,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -846,7 +856,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}]} { "traces": [ [ @@ -854,7 +864,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -928,6 +938,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "object_etag": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -972,7 +983,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -988,7 +999,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -996,7 +1008,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1019,7 +1031,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}]} { "traces": [ [ @@ -1027,7 +1039,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1102,6 +1114,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "subject": "TestInvoke", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -1146,7 +1159,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1162,7 +1175,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -1170,7 +1184,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1193,7 +1207,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}]} { "traces": [ [ @@ -1201,7 +1215,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1275,6 +1289,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "sender_id": "AIDAIENQZJOLO23YVJ4VO", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -1319,7 +1334,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1335,7 +1350,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -1343,7 +1359,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1366,7 +1382,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}]} { "traces": [ [ @@ -1374,7 +1390,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1454,6 +1470,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -1500,7 +1517,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1516,7 +1533,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -1524,7 +1542,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1547,7 +1565,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}]} { "traces": [ [ @@ -1555,7 +1573,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, From 0c848fc4d39710e77edfa3252bcdc10ac70749cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?jordan=20gonz=C3=A1lez?= <30836115+duncanista@users.noreply.github.com> Date: Fri, 16 Jun 2023 11:40:33 -0400 Subject: [PATCH 023/268] change `RemoteConfig` mock to be `worker.RemoteConfigPoller` (#340) --- tests/test_wrapper.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_wrapper.py b/tests/test_wrapper.py index a2af8846..c85d8bb4 100644 --- a/tests/test_wrapper.py +++ b/tests/test_wrapper.py @@ -31,7 +31,7 @@ class TestDatadogLambdaWrapper(unittest.TestCase): def setUp(self): # Force @datadog_lambda_wrapper to always create a real # (not no-op) wrapper. - patch("ddtrace.internal.remoteconfig.RemoteConfig").start() + patch("ddtrace.internal.remoteconfig.worker.RemoteConfigPoller").start() patch("ddtrace.internal.writer.AgentWriter.flush_queue").start() wrapper.datadog_lambda_wrapper._force_wrap = True From e750b6d8bbddcb9e7efd9ca19ef09cc01cbea842 Mon Sep 17 00:00:00 2001 From: Andrew Rodriguez <49878080+zARODz11z@users.noreply.github.com> Date: Thu, 22 Jun 2023 06:58:32 -0700 Subject: [PATCH 024/268] =?UTF-8?q?bump=20ddtrace=20to=20take=20advantage?= =?UTF-8?q?=20of=20new=20aws=20sdk=20request=20span=20tags=20&=20reg?= =?UTF-8?q?=E2=80=A6=20(#341)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * bump ddtrace to take advantage of new aws sdk request span tags & regen lock file * bump pyproject.toml minimum to 1.15.0 * remove added comment to publish sandbox script * regen poetry.lock --- poetry.lock | 711 ++++++++++++++++++++++++++++--------------------- pyproject.toml | 2 +- 2 files changed, 412 insertions(+), 301 deletions(-) diff --git a/poetry.lock b/poetry.lock index c1946f57..29fe6c1b 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,38 +1,41 @@ -# This file is automatically @generated by Poetry and should not be changed by hand. +# This file is automatically @generated by Poetry 1.4.2 and should not be changed by hand. [[package]] name = "attrs" -version = "22.2.0" +version = "23.1.0" description = "Classes Without Boilerplate" category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "attrs-22.2.0-py3-none-any.whl", hash = "sha256:29e95c7f6778868dbd49170f98f8818f78f3dc5e0e37c0b1f474e3561b240836"}, - {file = "attrs-22.2.0.tar.gz", hash = "sha256:c9227bfc2f01993c03f68db37d1d15c9690188323c067c641f1a35ca58185f99"}, + {file = "attrs-23.1.0-py3-none-any.whl", hash = "sha256:1f28b4522cdc2fb4256ac1a020c78acf9cba2c6b461ccd2c126f3aa8e8335d04"}, + {file = "attrs-23.1.0.tar.gz", hash = "sha256:6279836d581513a26f1bf235f9acd333bc9115683f14f7e8fae46c98fc50e015"}, ] +[package.dependencies] +importlib-metadata = {version = "*", markers = "python_version < \"3.8\""} + [package.extras] -cov = ["attrs[tests]", "coverage-enable-subprocess", "coverage[toml] (>=5.3)"] -dev = ["attrs[docs,tests]"] -docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope.interface"] -tests = ["attrs[tests-no-zope]", "zope.interface"] -tests-no-zope = ["cloudpickle", "cloudpickle", "hypothesis", "hypothesis", "mypy (>=0.971,<0.990)", "mypy (>=0.971,<0.990)", "pympler", "pympler", "pytest (>=4.3.0)", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-mypy-plugins", "pytest-xdist[psutil]", "pytest-xdist[psutil]"] +cov = ["attrs[tests]", "coverage[toml] (>=5.3)"] +dev = ["attrs[docs,tests]", "pre-commit"] +docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope-interface"] +tests = ["attrs[tests-no-zope]", "zope-interface"] +tests-no-zope = ["cloudpickle", "hypothesis", "mypy (>=1.1.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] [[package]] name = "boto3" -version = "1.26.41" +version = "1.26.158" description = "The AWS SDK for Python" category = "main" optional = true python-versions = ">= 3.7" files = [ - {file = "boto3-1.26.41-py3-none-any.whl", hash = "sha256:05a5ce3af2d7419e39d93498c7f56fd5c2cc17870c92c4abc75659553b0b16de"}, - {file = "boto3-1.26.41.tar.gz", hash = "sha256:8cbea352f28ec6b241f348356bcb8f331fc433bec3ad76ebf6194227f1a7f613"}, + {file = "boto3-1.26.158-py3-none-any.whl", hash = "sha256:0be407c2e941b422634766c0d754132ad4d33b5d0f84d9a30426b713b31ce3ab"}, + {file = "boto3-1.26.158.tar.gz", hash = "sha256:7f88d9403f81e6f3fc770c424f7089b15eb0553b168b1d2f979fa0d12b663b42"}, ] [package.dependencies] -botocore = ">=1.29.41,<1.30.0" +botocore = ">=1.29.158,<1.30.0" jmespath = ">=0.7.1,<2.0.0" s3transfer = ">=0.6.0,<0.7.0" @@ -41,14 +44,14 @@ crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] [[package]] name = "botocore" -version = "1.29.41" +version = "1.29.158" description = "Low-level, data-driven core of boto 3." category = "main" optional = true python-versions = ">= 3.7" files = [ - {file = "botocore-1.29.41-py3-none-any.whl", hash = "sha256:b670b7f8958a2908167081efb6ea39794bf61d618be729984629a63d85cf8bfe"}, - {file = "botocore-1.29.41.tar.gz", hash = "sha256:78761227d986d393956b6d08fdadcfe142748828e0e9db33f2f4c42a482dcd35"}, + {file = "botocore-1.29.158-py3-none-any.whl", hash = "sha256:267d4e7f36bdb45ea696386143ca6f68a358dc4baef85894cc4d9cffe97c0cd5"}, + {file = "botocore-1.29.158.tar.gz", hash = "sha256:2fd3b625f3d683d9dd6b400aba54d54a1e9b960b84ed07a466d25d1366e59482"}, ] [package.dependencies] @@ -57,7 +60,7 @@ python-dateutil = ">=2.1,<3.0.0" urllib3 = ">=1.25.4,<1.27" [package.extras] -crt = ["awscrt (==0.15.3)"] +crt = ["awscrt (==0.16.9)"] [[package]] name = "bytecode" @@ -73,14 +76,14 @@ files = [ [[package]] name = "bytecode" -version = "0.14.0" +version = "0.14.2" description = "Python module to generate and modify bytecode" category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "bytecode-0.14.0-py3-none-any.whl", hash = "sha256:f7b7cbed3239acee036d6c0f9d04286b100921114601bf844ae569b95bf91a9f"}, - {file = "bytecode-0.14.0.tar.gz", hash = "sha256:d41ad53c657ba0bef1cb4828d9d6e450766e31cb66c6f91fc1851f052889d1b7"}, + {file = "bytecode-0.14.2-py3-none-any.whl", hash = "sha256:e368a2b9bbd7c986133c951250db94fb32f774cfc49752a9db9073bcf9899762"}, + {file = "bytecode-0.14.2.tar.gz", hash = "sha256:386378d9025d68ddb144870ae74330a492717b11b8c9164c4034e88add808f0c"}, ] [package.dependencies] @@ -88,107 +91,195 @@ typing-extensions = {version = "*", markers = "python_version < \"3.10\""} [[package]] name = "cattrs" -version = "22.2.0" +version = "23.1.2" description = "Composable complex class support for attrs and dataclasses." category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "cattrs-22.2.0-py3-none-any.whl", hash = "sha256:bc12b1f0d000b9f9bee83335887d532a1d3e99a833d1bf0882151c97d3e68c21"}, - {file = "cattrs-22.2.0.tar.gz", hash = "sha256:f0eed5642399423cf656e7b66ce92cdc5b963ecafd041d1b24d136fdde7acf6d"}, + {file = "cattrs-23.1.2-py3-none-any.whl", hash = "sha256:b2bb14311ac17bed0d58785e5a60f022e5431aca3932e3fc5cc8ed8639de50a4"}, + {file = "cattrs-23.1.2.tar.gz", hash = "sha256:db1c821b8c537382b2c7c66678c3790091ca0275ac486c76f3c8f3920e83c657"}, ] [package.dependencies] attrs = ">=20" exceptiongroup = {version = "*", markers = "python_version < \"3.11\""} -typing_extensions = {version = "*", markers = "python_version < \"3.8\""} +typing_extensions = {version = ">=4.1.0", markers = "python_version < \"3.11\""} + +[package.extras] +bson = ["pymongo (>=4.2.0,<5.0.0)"] +cbor2 = ["cbor2 (>=5.4.6,<6.0.0)"] +msgpack = ["msgpack (>=1.0.2,<2.0.0)"] +orjson = ["orjson (>=3.5.2,<4.0.0)"] +pyyaml = ["PyYAML (>=6.0,<7.0)"] +tomlkit = ["tomlkit (>=0.11.4,<0.12.0)"] +ujson = ["ujson (>=5.4.0,<6.0.0)"] [[package]] name = "certifi" -version = "2022.12.7" +version = "2023.5.7" description = "Python package for providing Mozilla's CA Bundle." category = "main" optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2022.12.7-py3-none-any.whl", hash = "sha256:4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18"}, - {file = "certifi-2022.12.7.tar.gz", hash = "sha256:35824b4c3a97115964b408844d64aa14db1cc518f6562e8d7261699d1350a9e3"}, + {file = "certifi-2023.5.7-py3-none-any.whl", hash = "sha256:c6c2e98f5c7869efca1f8916fed228dd91539f9f1b444c314c06eef02980c716"}, + {file = "certifi-2023.5.7.tar.gz", hash = "sha256:0f0d56dc5a6ad56fd4ba36484d6cc34451e1c6548c61daad8c320169f91eddc7"}, ] [[package]] name = "charset-normalizer" -version = "2.1.1" +version = "3.1.0" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." category = "main" optional = false -python-versions = ">=3.6.0" -files = [ - {file = "charset-normalizer-2.1.1.tar.gz", hash = "sha256:5a3d016c7c547f69d6f81fb0db9449ce888b418b5b9952cc5e6e66843e9dd845"}, - {file = "charset_normalizer-2.1.1-py3-none-any.whl", hash = "sha256:83e9a75d1911279afd89352c68b45348559d1fc0506b054b346651b5e7fee29f"}, +python-versions = ">=3.7.0" +files = [ + {file = "charset-normalizer-3.1.0.tar.gz", hash = "sha256:34e0a2f9c370eb95597aae63bf85eb5e96826d81e3dcf88b8886012906f509b5"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e0ac8959c929593fee38da1c2b64ee9778733cdf03c482c9ff1d508b6b593b2b"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d7fc3fca01da18fbabe4625d64bb612b533533ed10045a2ac3dd194bfa656b60"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:04eefcee095f58eaabe6dc3cc2262f3bcd776d2c67005880894f447b3f2cb9c1"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:20064ead0717cf9a73a6d1e779b23d149b53daf971169289ed2ed43a71e8d3b0"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1435ae15108b1cb6fffbcea2af3d468683b7afed0169ad718451f8db5d1aff6f"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c84132a54c750fda57729d1e2599bb598f5fa0344085dbde5003ba429a4798c0"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75f2568b4189dda1c567339b48cba4ac7384accb9c2a7ed655cd86b04055c795"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:11d3bcb7be35e7b1bba2c23beedac81ee893ac9871d0ba79effc7fc01167db6c"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:891cf9b48776b5c61c700b55a598621fdb7b1e301a550365571e9624f270c203"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:5f008525e02908b20e04707a4f704cd286d94718f48bb33edddc7d7b584dddc1"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:b06f0d3bf045158d2fb8837c5785fe9ff9b8c93358be64461a1089f5da983137"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:49919f8400b5e49e961f320c735388ee686a62327e773fa5b3ce6721f7e785ce"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:22908891a380d50738e1f978667536f6c6b526a2064156203d418f4856d6e86a"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-win32.whl", hash = "sha256:12d1a39aa6b8c6f6248bb54550efcc1c38ce0d8096a146638fd4738e42284448"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:65ed923f84a6844de5fd29726b888e58c62820e0769b76565480e1fdc3d062f8"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9a3267620866c9d17b959a84dd0bd2d45719b817245e49371ead79ed4f710d19"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6734e606355834f13445b6adc38b53c0fd45f1a56a9ba06c2058f86893ae8017"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f8303414c7b03f794347ad062c0516cee0e15f7a612abd0ce1e25caf6ceb47df"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aaf53a6cebad0eae578f062c7d462155eada9c172bd8c4d250b8c1d8eb7f916a"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3dc5b6a8ecfdc5748a7e429782598e4f17ef378e3e272eeb1340ea57c9109f41"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e1b25e3ad6c909f398df8921780d6a3d120d8c09466720226fc621605b6f92b1"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ca564606d2caafb0abe6d1b5311c2649e8071eb241b2d64e75a0d0065107e62"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b82fab78e0b1329e183a65260581de4375f619167478dddab510c6c6fb04d9b6"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:bd7163182133c0c7701b25e604cf1611c0d87712e56e88e7ee5d72deab3e76b5"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:11d117e6c63e8f495412d37e7dc2e2fff09c34b2d09dbe2bee3c6229577818be"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:cf6511efa4801b9b38dc5546d7547d5b5c6ef4b081c60b23e4d941d0eba9cbeb"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:abc1185d79f47c0a7aaf7e2412a0eb2c03b724581139193d2d82b3ad8cbb00ac"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:cb7b2ab0188829593b9de646545175547a70d9a6e2b63bf2cd87a0a391599324"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-win32.whl", hash = "sha256:c36bcbc0d5174a80d6cccf43a0ecaca44e81d25be4b7f90f0ed7bcfbb5a00909"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:cca4def576f47a09a943666b8f829606bcb17e2bc2d5911a46c8f8da45f56755"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0c95f12b74681e9ae127728f7e5409cbbef9cd914d5896ef238cc779b8152373"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fca62a8301b605b954ad2e9c3666f9d97f63872aa4efcae5492baca2056b74ab"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ac0aa6cd53ab9a31d397f8303f92c42f534693528fafbdb997c82bae6e477ad9"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c3af8e0f07399d3176b179f2e2634c3ce9c1301379a6b8c9c9aeecd481da494f"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a5fc78f9e3f501a1614a98f7c54d3969f3ad9bba8ba3d9b438c3bc5d047dd28"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:628c985afb2c7d27a4800bfb609e03985aaecb42f955049957814e0491d4006d"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:74db0052d985cf37fa111828d0dd230776ac99c740e1a758ad99094be4f1803d"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:1e8fcdd8f672a1c4fc8d0bd3a2b576b152d2a349782d1eb0f6b8e52e9954731d"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:04afa6387e2b282cf78ff3dbce20f0cc071c12dc8f685bd40960cc68644cfea6"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:dd5653e67b149503c68c4018bf07e42eeed6b4e956b24c00ccdf93ac79cdff84"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d2686f91611f9e17f4548dbf050e75b079bbc2a82be565832bc8ea9047b61c8c"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-win32.whl", hash = "sha256:4155b51ae05ed47199dc5b2a4e62abccb274cee6b01da5b895099b61b1982974"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:322102cdf1ab682ecc7d9b1c5eed4ec59657a65e1c146a0da342b78f4112db23"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e633940f28c1e913615fd624fcdd72fdba807bf53ea6925d6a588e84e1151531"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:3a06f32c9634a8705f4ca9946d667609f52cf130d5548881401f1eb2c39b1e2c"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7381c66e0561c5757ffe616af869b916c8b4e42b367ab29fedc98481d1e74e14"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3573d376454d956553c356df45bb824262c397c6e26ce43e8203c4c540ee0acb"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e89df2958e5159b811af9ff0f92614dabf4ff617c03a4c1c6ff53bf1c399e0e1"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:78cacd03e79d009d95635e7d6ff12c21eb89b894c354bd2b2ed0b4763373693b"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:de5695a6f1d8340b12a5d6d4484290ee74d61e467c39ff03b39e30df62cf83a0"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1c60b9c202d00052183c9be85e5eaf18a4ada0a47d188a83c8f5c5b23252f649"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:f645caaf0008bacf349875a974220f1f1da349c5dbe7c4ec93048cdc785a3326"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:ea9f9c6034ea2d93d9147818f17c2a0860d41b71c38b9ce4d55f21b6f9165a11"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:80d1543d58bd3d6c271b66abf454d437a438dff01c3e62fdbcd68f2a11310d4b"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:73dc03a6a7e30b7edc5b01b601e53e7fc924b04e1835e8e407c12c037e81adbd"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6f5c2e7bc8a4bf7c426599765b1bd33217ec84023033672c1e9a8b35eaeaaaf8"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-win32.whl", hash = "sha256:12a2b561af122e3d94cdb97fe6fb2bb2b82cef0cdca131646fdb940a1eda04f0"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:3160a0fd9754aab7d47f95a6b63ab355388d890163eb03b2d2b87ab0a30cfa59"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:38e812a197bf8e71a59fe55b757a84c1f946d0ac114acafaafaf21667a7e169e"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6baf0baf0d5d265fa7944feb9f7451cc316bfe30e8df1a61b1bb08577c554f31"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8f25e17ab3039b05f762b0a55ae0b3632b2e073d9c8fc88e89aca31a6198e88f"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3747443b6a904001473370d7810aa19c3a180ccd52a7157aacc264a5ac79265e"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b116502087ce8a6b7a5f1814568ccbd0e9f6cfd99948aa59b0e241dc57cf739f"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d16fd5252f883eb074ca55cb622bc0bee49b979ae4e8639fff6ca3ff44f9f854"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21fa558996782fc226b529fdd2ed7866c2c6ec91cee82735c98a197fae39f706"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6f6c7a8a57e9405cad7485f4c9d3172ae486cfef1344b5ddd8e5239582d7355e"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ac3775e3311661d4adace3697a52ac0bab17edd166087d493b52d4f4f553f9f0"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:10c93628d7497c81686e8e5e557aafa78f230cd9e77dd0c40032ef90c18f2230"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:6f4f4668e1831850ebcc2fd0b1cd11721947b6dc7c00bf1c6bd3c929ae14f2c7"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:0be65ccf618c1e7ac9b849c315cc2e8a8751d9cfdaa43027d4f6624bd587ab7e"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:53d0a3fa5f8af98a1e261de6a3943ca631c526635eb5817a87a59d9a57ebf48f"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-win32.whl", hash = "sha256:a04f86f41a8916fe45ac5024ec477f41f886b3c435da2d4e3d2709b22ab02af1"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:830d2948a5ec37c386d3170c483063798d7879037492540f10a475e3fd6f244b"}, + {file = "charset_normalizer-3.1.0-py3-none-any.whl", hash = "sha256:3d9098b479e78c85080c98e1e35ff40b4a31d8953102bb0fd7d1b6f8a2111a3d"}, ] -[package.extras] -unicode-backport = ["unicodedata2"] - [[package]] name = "coverage" -version = "7.0.1" +version = "7.2.7" description = "Code coverage measurement for Python" category = "main" optional = true python-versions = ">=3.7" files = [ - {file = "coverage-7.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b3695c4f4750bca943b3e1f74ad4be8d29e4aeab927d50772c41359107bd5d5c"}, - {file = "coverage-7.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fa6a5a224b7f4cfb226f4fc55a57e8537fcc096f42219128c2c74c0e7d0953e1"}, - {file = "coverage-7.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:74f70cd92669394eaf8d7756d1b195c8032cf7bbbdfce3bc489d4e15b3b8cf73"}, - {file = "coverage-7.0.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b66bb21a23680dee0be66557dc6b02a3152ddb55edf9f6723fa4a93368f7158d"}, - {file = "coverage-7.0.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d87717959d4d0ee9db08a0f1d80d21eb585aafe30f9b0a54ecf779a69cb015f6"}, - {file = "coverage-7.0.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:854f22fa361d1ff914c7efa347398374cc7d567bdafa48ac3aa22334650dfba2"}, - {file = "coverage-7.0.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:1e414dc32ee5c3f36544ea466b6f52f28a7af788653744b8570d0bf12ff34bc0"}, - {file = "coverage-7.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6c5ad996c6fa4d8ed669cfa1e8551348729d008a2caf81489ab9ea67cfbc7498"}, - {file = "coverage-7.0.1-cp310-cp310-win32.whl", hash = "sha256:691571f31ace1837838b7e421d3a09a8c00b4aac32efacb4fc9bd0a5c647d25a"}, - {file = "coverage-7.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:89caf4425fe88889e2973a8e9a3f6f5f9bbe5dd411d7d521e86428c08a873a4a"}, - {file = "coverage-7.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:63d56165a7c76265468d7e0c5548215a5ba515fc2cba5232d17df97bffa10f6c"}, - {file = "coverage-7.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4f943a3b2bc520102dd3e0bb465e1286e12c9a54f58accd71b9e65324d9c7c01"}, - {file = "coverage-7.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:830525361249dc4cd013652b0efad645a385707a5ae49350c894b67d23fbb07c"}, - {file = "coverage-7.0.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fd1b9c5adc066db699ccf7fa839189a649afcdd9e02cb5dc9d24e67e7922737d"}, - {file = "coverage-7.0.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e00c14720b8b3b6c23b487e70bd406abafc976ddc50490f645166f111c419c39"}, - {file = "coverage-7.0.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:6d55d840e1b8c0002fce66443e124e8581f30f9ead2e54fbf6709fb593181f2c"}, - {file = "coverage-7.0.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:66b18c3cf8bbab0cce0d7b9e4262dc830e93588986865a8c78ab2ae324b3ed56"}, - {file = "coverage-7.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:12a5aa77783d49e05439fbe6e6b427484f8a0f9f456b46a51d8aac022cfd024d"}, - {file = "coverage-7.0.1-cp311-cp311-win32.whl", hash = "sha256:b77015d1cb8fe941be1222a5a8b4e3fbca88180cfa7e2d4a4e58aeabadef0ab7"}, - {file = "coverage-7.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:fb992c47cb1e5bd6a01e97182400bcc2ba2077080a17fcd7be23aaa6e572e390"}, - {file = "coverage-7.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:e78e9dcbf4f3853d3ae18a8f9272111242531535ec9e1009fa8ec4a2b74557dc"}, - {file = "coverage-7.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e60bef2e2416f15fdc05772bf87db06c6a6f9870d1db08fdd019fbec98ae24a9"}, - {file = "coverage-7.0.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9823e4789ab70f3ec88724bba1a203f2856331986cd893dedbe3e23a6cfc1e4e"}, - {file = "coverage-7.0.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9158f8fb06747ac17bd237930c4372336edc85b6e13bdc778e60f9d685c3ca37"}, - {file = "coverage-7.0.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:486ee81fa694b4b796fc5617e376326a088f7b9729c74d9defa211813f3861e4"}, - {file = "coverage-7.0.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:1285648428a6101b5f41a18991c84f1c3959cee359e51b8375c5882fc364a13f"}, - {file = "coverage-7.0.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:2c44fcfb3781b41409d0f060a4ed748537557de9362a8a9282182fafb7a76ab4"}, - {file = "coverage-7.0.1-cp37-cp37m-win32.whl", hash = "sha256:d6814854c02cbcd9c873c0f3286a02e3ac1250625cca822ca6bc1018c5b19f1c"}, - {file = "coverage-7.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:f66460f17c9319ea4f91c165d46840314f0a7c004720b20be58594d162a441d8"}, - {file = "coverage-7.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9b373c9345c584bb4b5f5b8840df7f4ab48c4cbb7934b58d52c57020d911b856"}, - {file = "coverage-7.0.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d3022c3007d3267a880b5adcf18c2a9bf1fc64469b394a804886b401959b8742"}, - {file = "coverage-7.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:92651580bd46519067e36493acb394ea0607b55b45bd81dd4e26379ed1871f55"}, - {file = "coverage-7.0.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3cfc595d2af13856505631be072835c59f1acf30028d1c860b435c5fc9c15b69"}, - {file = "coverage-7.0.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b4b3a4d9915b2be879aff6299c0a6129f3d08a775d5a061f503cf79571f73e4"}, - {file = "coverage-7.0.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b6f22bb64cc39bcb883e5910f99a27b200fdc14cdd79df8696fa96b0005c9444"}, - {file = "coverage-7.0.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:72d1507f152abacea81f65fee38e4ef3ac3c02ff8bc16f21d935fd3a8a4ad910"}, - {file = "coverage-7.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:0a79137fc99815fff6a852c233628e735ec15903cfd16da0f229d9c4d45926ab"}, - {file = "coverage-7.0.1-cp38-cp38-win32.whl", hash = "sha256:b3763e7fcade2ff6c8e62340af9277f54336920489ceb6a8cd6cc96da52fcc62"}, - {file = "coverage-7.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:09f6b5a8415b6b3e136d5fec62b552972187265cb705097bf030eb9d4ffb9b60"}, - {file = "coverage-7.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:978258fec36c154b5e250d356c59af7d4c3ba02bef4b99cda90b6029441d797d"}, - {file = "coverage-7.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:19ec666533f0f70a0993f88b8273057b96c07b9d26457b41863ccd021a043b9a"}, - {file = "coverage-7.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cfded268092a84605f1cc19e5c737f9ce630a8900a3589e9289622db161967e9"}, - {file = "coverage-7.0.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07bcfb1d8ac94af886b54e18a88b393f6a73d5959bb31e46644a02453c36e475"}, - {file = "coverage-7.0.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:397b4a923cc7566bbc7ae2dfd0ba5a039b61d19c740f1373791f2ebd11caea59"}, - {file = "coverage-7.0.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:aec2d1515d9d39ff270059fd3afbb3b44e6ec5758af73caf18991807138c7118"}, - {file = "coverage-7.0.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:c20cfebcc149a4c212f6491a5f9ff56f41829cd4f607b5be71bb2d530ef243b1"}, - {file = "coverage-7.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:fd556ff16a57a070ce4f31c635953cc44e25244f91a0378c6e9bdfd40fdb249f"}, - {file = "coverage-7.0.1-cp39-cp39-win32.whl", hash = "sha256:b9ea158775c7c2d3e54530a92da79496fb3fb577c876eec761c23e028f1e216c"}, - {file = "coverage-7.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:d1991f1dd95eba69d2cd7708ff6c2bbd2426160ffc73c2b81f617a053ebcb1a8"}, - {file = "coverage-7.0.1-pp37.pp38.pp39-none-any.whl", hash = "sha256:3dd4ee135e08037f458425b8842d24a95a0961831a33f89685ff86b77d378f89"}, - {file = "coverage-7.0.1.tar.gz", hash = "sha256:a4a574a19eeb67575a5328a5760bbbb737faa685616586a9f9da4281f940109c"}, + {file = "coverage-7.2.7-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d39b5b4f2a66ccae8b7263ac3c8170994b65266797fb96cbbfd3fb5b23921db8"}, + {file = "coverage-7.2.7-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6d040ef7c9859bb11dfeb056ff5b3872436e3b5e401817d87a31e1750b9ae2fb"}, + {file = "coverage-7.2.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ba90a9563ba44a72fda2e85302c3abc71c5589cea608ca16c22b9804262aaeb6"}, + {file = "coverage-7.2.7-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e7d9405291c6928619403db1d10bd07888888ec1abcbd9748fdaa971d7d661b2"}, + {file = "coverage-7.2.7-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:31563e97dae5598556600466ad9beea39fb04e0229e61c12eaa206e0aa202063"}, + {file = "coverage-7.2.7-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:ebba1cd308ef115925421d3e6a586e655ca5a77b5bf41e02eb0e4562a111f2d1"}, + {file = "coverage-7.2.7-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:cb017fd1b2603ef59e374ba2063f593abe0fc45f2ad9abdde5b4d83bd922a353"}, + {file = "coverage-7.2.7-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d62a5c7dad11015c66fbb9d881bc4caa5b12f16292f857842d9d1871595f4495"}, + {file = "coverage-7.2.7-cp310-cp310-win32.whl", hash = "sha256:ee57190f24fba796e36bb6d3aa8a8783c643d8fa9760c89f7a98ab5455fbf818"}, + {file = "coverage-7.2.7-cp310-cp310-win_amd64.whl", hash = "sha256:f75f7168ab25dd93110c8a8117a22450c19976afbc44234cbf71481094c1b850"}, + {file = "coverage-7.2.7-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:06a9a2be0b5b576c3f18f1a241f0473575c4a26021b52b2a85263a00f034d51f"}, + {file = "coverage-7.2.7-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5baa06420f837184130752b7c5ea0808762083bf3487b5038d68b012e5937dbe"}, + {file = "coverage-7.2.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fdec9e8cbf13a5bf63290fc6013d216a4c7232efb51548594ca3631a7f13c3a3"}, + {file = "coverage-7.2.7-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:52edc1a60c0d34afa421c9c37078817b2e67a392cab17d97283b64c5833f427f"}, + {file = "coverage-7.2.7-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63426706118b7f5cf6bb6c895dc215d8a418d5952544042c8a2d9fe87fcf09cb"}, + {file = "coverage-7.2.7-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:afb17f84d56068a7c29f5fa37bfd38d5aba69e3304af08ee94da8ed5b0865833"}, + {file = "coverage-7.2.7-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:48c19d2159d433ccc99e729ceae7d5293fbffa0bdb94952d3579983d1c8c9d97"}, + {file = "coverage-7.2.7-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0e1f928eaf5469c11e886fe0885ad2bf1ec606434e79842a879277895a50942a"}, + {file = "coverage-7.2.7-cp311-cp311-win32.whl", hash = "sha256:33d6d3ea29d5b3a1a632b3c4e4f4ecae24ef170b0b9ee493883f2df10039959a"}, + {file = "coverage-7.2.7-cp311-cp311-win_amd64.whl", hash = "sha256:5b7540161790b2f28143191f5f8ec02fb132660ff175b7747b95dcb77ac26562"}, + {file = "coverage-7.2.7-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f2f67fe12b22cd130d34d0ef79206061bfb5eda52feb6ce0dba0644e20a03cf4"}, + {file = "coverage-7.2.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a342242fe22407f3c17f4b499276a02b01e80f861f1682ad1d95b04018e0c0d4"}, + {file = "coverage-7.2.7-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:171717c7cb6b453aebac9a2ef603699da237f341b38eebfee9be75d27dc38e01"}, + {file = "coverage-7.2.7-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49969a9f7ffa086d973d91cec8d2e31080436ef0fb4a359cae927e742abfaaa6"}, + {file = "coverage-7.2.7-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b46517c02ccd08092f4fa99f24c3b83d8f92f739b4657b0f146246a0ca6a831d"}, + {file = "coverage-7.2.7-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:a3d33a6b3eae87ceaefa91ffdc130b5e8536182cd6dfdbfc1aa56b46ff8c86de"}, + {file = "coverage-7.2.7-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:976b9c42fb2a43ebf304fa7d4a310e5f16cc99992f33eced91ef6f908bd8f33d"}, + {file = "coverage-7.2.7-cp312-cp312-win32.whl", hash = "sha256:8de8bb0e5ad103888d65abef8bca41ab93721647590a3f740100cd65c3b00511"}, + {file = "coverage-7.2.7-cp312-cp312-win_amd64.whl", hash = "sha256:9e31cb64d7de6b6f09702bb27c02d1904b3aebfca610c12772452c4e6c21a0d3"}, + {file = "coverage-7.2.7-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:58c2ccc2f00ecb51253cbe5d8d7122a34590fac9646a960d1430d5b15321d95f"}, + {file = "coverage-7.2.7-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d22656368f0e6189e24722214ed8d66b8022db19d182927b9a248a2a8a2f67eb"}, + {file = "coverage-7.2.7-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a895fcc7b15c3fc72beb43cdcbdf0ddb7d2ebc959edac9cef390b0d14f39f8a9"}, + {file = "coverage-7.2.7-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e84606b74eb7de6ff581a7915e2dab7a28a0517fbe1c9239eb227e1354064dcd"}, + {file = "coverage-7.2.7-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:0a5f9e1dbd7fbe30196578ca36f3fba75376fb99888c395c5880b355e2875f8a"}, + {file = "coverage-7.2.7-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:419bfd2caae268623dd469eff96d510a920c90928b60f2073d79f8fe2bbc5959"}, + {file = "coverage-7.2.7-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:2aee274c46590717f38ae5e4650988d1af340fe06167546cc32fe2f58ed05b02"}, + {file = "coverage-7.2.7-cp37-cp37m-win32.whl", hash = "sha256:61b9a528fb348373c433e8966535074b802c7a5d7f23c4f421e6c6e2f1697a6f"}, + {file = "coverage-7.2.7-cp37-cp37m-win_amd64.whl", hash = "sha256:b1c546aca0ca4d028901d825015dc8e4d56aac4b541877690eb76490f1dc8ed0"}, + {file = "coverage-7.2.7-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:54b896376ab563bd38453cecb813c295cf347cf5906e8b41d340b0321a5433e5"}, + {file = "coverage-7.2.7-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:3d376df58cc111dc8e21e3b6e24606b5bb5dee6024f46a5abca99124b2229ef5"}, + {file = "coverage-7.2.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e330fc79bd7207e46c7d7fd2bb4af2963f5f635703925543a70b99574b0fea9"}, + {file = "coverage-7.2.7-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e9d683426464e4a252bf70c3498756055016f99ddaec3774bf368e76bbe02b6"}, + {file = "coverage-7.2.7-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d13c64ee2d33eccf7437961b6ea7ad8673e2be040b4f7fd4fd4d4d28d9ccb1e"}, + {file = "coverage-7.2.7-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b7aa5f8a41217360e600da646004f878250a0d6738bcdc11a0a39928d7dc2050"}, + {file = "coverage-7.2.7-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:8fa03bce9bfbeeef9f3b160a8bed39a221d82308b4152b27d82d8daa7041fee5"}, + {file = "coverage-7.2.7-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:245167dd26180ab4c91d5e1496a30be4cd721a5cf2abf52974f965f10f11419f"}, + {file = "coverage-7.2.7-cp38-cp38-win32.whl", hash = "sha256:d2c2db7fd82e9b72937969bceac4d6ca89660db0a0967614ce2481e81a0b771e"}, + {file = "coverage-7.2.7-cp38-cp38-win_amd64.whl", hash = "sha256:2e07b54284e381531c87f785f613b833569c14ecacdcb85d56b25c4622c16c3c"}, + {file = "coverage-7.2.7-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:537891ae8ce59ef63d0123f7ac9e2ae0fc8b72c7ccbe5296fec45fd68967b6c9"}, + {file = "coverage-7.2.7-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:06fb182e69f33f6cd1d39a6c597294cff3143554b64b9825d1dc69d18cc2fff2"}, + {file = "coverage-7.2.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:201e7389591af40950a6480bd9edfa8ed04346ff80002cec1a66cac4549c1ad7"}, + {file = "coverage-7.2.7-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f6951407391b639504e3b3be51b7ba5f3528adbf1a8ac3302b687ecababf929e"}, + {file = "coverage-7.2.7-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f48351d66575f535669306aa7d6d6f71bc43372473b54a832222803eb956fd1"}, + {file = "coverage-7.2.7-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b29019c76039dc3c0fd815c41392a044ce555d9bcdd38b0fb60fb4cd8e475ba9"}, + {file = "coverage-7.2.7-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:81c13a1fc7468c40f13420732805a4c38a105d89848b7c10af65a90beff25250"}, + {file = "coverage-7.2.7-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:975d70ab7e3c80a3fe86001d8751f6778905ec723f5b110aed1e450da9d4b7f2"}, + {file = "coverage-7.2.7-cp39-cp39-win32.whl", hash = "sha256:7ee7d9d4822c8acc74a5e26c50604dff824710bc8de424904c0982e25c39c6cb"}, + {file = "coverage-7.2.7-cp39-cp39-win_amd64.whl", hash = "sha256:eb393e5ebc85245347950143969b241d08b52b88a3dc39479822e073a1a8eb27"}, + {file = "coverage-7.2.7-pp37.pp38.pp39-none-any.whl", hash = "sha256:b7b4c971f05e6ae490fef852c218b0e79d4e52f79ef0c8475566584a8fb3e01d"}, + {file = "coverage-7.2.7.tar.gz", hash = "sha256:924d94291ca674905fe9481f12294eb11f2d3d3fd1adb20314ba89e94f44ed59"}, ] [package.extras] @@ -196,18 +287,17 @@ toml = ["tomli"] [[package]] name = "datadog" -version = "0.41.0" +version = "0.45.0" description = "The Datadog Python library" category = "main" optional = false -python-versions = "*" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ - {file = "datadog-0.41.0-py2.py3-none-any.whl", hash = "sha256:ab79ed38fb09ff1942c341e32849c4eeaf8b2e4d467b9e6bb1c6071808f454d6"}, - {file = "datadog-0.41.0.tar.gz", hash = "sha256:3de1a43b8a8d5f6b19d162ec1b482dc5ab2636c59cf65e60589702304510a689"}, + {file = "datadog-0.45.0-py2.py3-none-any.whl", hash = "sha256:144fce48bda79484b102349f159c4ea4c7cd35361f9e0d031ddf931a922a38a4"}, + {file = "datadog-0.45.0.tar.gz", hash = "sha256:6bffed67448cb4bf5dff559fb2acee1c06e7da8612b8e2a734f278b50b396603"}, ] [package.dependencies] -decorator = ">=3.3.2" requests = ">=2.6.0" [[package]] @@ -228,81 +318,81 @@ six = "*" [[package]] name = "ddtrace" -version = "1.6.4" +version = "1.15.0" description = "Datadog APM client library" category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ - {file = "ddtrace-1.6.4-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:3c4c9a18cf3270fc10801e286410c30a1a603cb848ee1f08bbd118e0b97ddfcc"}, - {file = "ddtrace-1.6.4-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:204c560719c31d3f9ff8456a4c6ca4d0d6b527c13951815cbcf1012ea48ff759"}, - {file = "ddtrace-1.6.4-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:c97a1cf8a8e50a12c6bd09f0f15e172c447ac5a5350a7bd256f6685897c9efbf"}, - {file = "ddtrace-1.6.4-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:93ad24ff023d9c364288f422e0d46eb7b866c91e6c0453a36e5a3fdbfb01a627"}, - {file = "ddtrace-1.6.4-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:6e65f860656488d6b6e005301c7138ba573b5cbf03270ec811c6d34f8aebf0b5"}, - {file = "ddtrace-1.6.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:b77e7d7e2e4de5851d8ff332e63957a46a367e6e3c5c94d4ad37dcaf047f11e1"}, - {file = "ddtrace-1.6.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:96d141807d5e446c67a4dcb16178cfa25523cedd075d73dad254f13a62a1231f"}, - {file = "ddtrace-1.6.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d65e211995e379b06a809dcaa229c09a08a02b161d574ca4716d055a65d9db05"}, - {file = "ddtrace-1.6.4-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0ed65ebd21f80acccba804fe671646e2476ce5e96162b9b2bfb0b8fd417fa6fa"}, - {file = "ddtrace-1.6.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:07ffa019d48175e23f1ccd449c45b0250656cbe210a0603900a981c29ae7786e"}, - {file = "ddtrace-1.6.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:5d9ab8cba1a808da3f6da7aa0303a227245d8b25617e0673a299c3e4cae16506"}, - {file = "ddtrace-1.6.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:72ddb4bfa46660d082be50ae09faec026c46a295524a3a722570c770bf632f98"}, - {file = "ddtrace-1.6.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:03e52db04d3ada8d234d050e66988b8ec559e4db57a03fd56112e50885bc2767"}, - {file = "ddtrace-1.6.4-cp310-cp310-win32.whl", hash = "sha256:aba27dd41468e06fbe0534ce45b182e7cf7fa582eb70a03fd341da63fea07032"}, - {file = "ddtrace-1.6.4-cp310-cp310-win_amd64.whl", hash = "sha256:cf0754548216361ce9de00b750b5a5ff8eb57e9fd1fd85f223b5f23cc36ba68a"}, - {file = "ddtrace-1.6.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:4464d1e886450d8c2c149ced95c4ecbe4481bc80225ebc5301385d0bf450e162"}, - {file = "ddtrace-1.6.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d32a006a1919282394e9095abb92d99efbadca7fec304bf07952e2d6f90383c5"}, - {file = "ddtrace-1.6.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a121b3417c444e9bb827c6d0a0b183f1c5517a9c8769c7ca43787ec48ad08bb1"}, - {file = "ddtrace-1.6.4-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7372e54b27d4359fa6d86d664880852a96a1786304ab2580e81796889ada449b"}, - {file = "ddtrace-1.6.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fb88df54546891cb738af2d00208d10ab4c391c03b489bbd6a8745f1c8a10d5c"}, - {file = "ddtrace-1.6.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:52ffa9c4324d26f58c4ddf4ca22abcc160386f53bfbdfd56bb772580a72cf958"}, - {file = "ddtrace-1.6.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:bc33cb8501db1d049160a312d9a4e68e2fb35d61fec4a3fa9665c940489246e3"}, - {file = "ddtrace-1.6.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f64498947e696efd1ff192d56f63987cd9b09beabb481e443aa802cca51eb841"}, - {file = "ddtrace-1.6.4-cp311-cp311-win32.whl", hash = "sha256:7766d7253ccab625c07203da36e10c1926d565e465897fdb34f03f532b0610b9"}, - {file = "ddtrace-1.6.4-cp311-cp311-win_amd64.whl", hash = "sha256:981cfe27a13e4347a8fdea9d7a8936b592359ad879df1de98077b1b70e5eeace"}, - {file = "ddtrace-1.6.4-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:cd25cf8e1457c94bb7fe5fc2bab700a9e22378f137cbb73a2fe847dbd2305020"}, - {file = "ddtrace-1.6.4-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:b9bfe5e83a1ea8c8673068a5218f4a80054d87eb9c3e2b581bacbdbac67a28ec"}, - {file = "ddtrace-1.6.4-cp35-cp35m-manylinux2014_aarch64.whl", hash = "sha256:57613420ae32d56a76d67f571210cc134368cbef17607e71b8eb66a5b1ea2d72"}, - {file = "ddtrace-1.6.4-cp35-cp35m-win32.whl", hash = "sha256:d574f29ab02b4f43bd93214891423f27145ff54c34242db6a47fc5a591e0e5d0"}, - {file = "ddtrace-1.6.4-cp35-cp35m-win_amd64.whl", hash = "sha256:89618a300428d53b25428d728bf2ba026a5e996bbd65d82917e8a47a4a0c7815"}, - {file = "ddtrace-1.6.4-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:ee954e1ebc8dc47328b7e145736e7b6d7167cec1d43ba661056210d08594ade8"}, - {file = "ddtrace-1.6.4-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cbda998fd438701a20461cd819a1d1a1d168ea7b3bcaa0ced6f41bac30ba359"}, - {file = "ddtrace-1.6.4-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fcbffb017cdeb468d083b4c07c91fa024a0652416acc35fcfabfbff366f522d2"}, - {file = "ddtrace-1.6.4-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f36f85ff84a7535fbdcbeed40d430f6d047a2cdd0c4de6dc7bc375e82708f646"}, - {file = "ddtrace-1.6.4-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:0a016a8d2f666e0e677d00d1f4057035ac5dc753f9b0e4fb378dd4f7882f2ade"}, - {file = "ddtrace-1.6.4-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:0a1be96afa6df810a32cc403a0d133ad87d6c5a9eeec861b178aaa3048d47da6"}, - {file = "ddtrace-1.6.4-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:10accb64d6ad8cc5dfddbb3150c0dd1c96ed5f62161d521d264b0afbaf3f075c"}, - {file = "ddtrace-1.6.4-cp36-cp36m-win32.whl", hash = "sha256:c1c35e16c71dd22c6f21e0d4a135071237fe988082048bc361a3213031e77170"}, - {file = "ddtrace-1.6.4-cp36-cp36m-win_amd64.whl", hash = "sha256:51156177b60331c2d9b024487d25418b1d1308b4d1eaa196cf4673a649bcc057"}, - {file = "ddtrace-1.6.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:04284a33f831ec5efb396f2b7e664d326982008ef8761d4054c3d663e13166bb"}, - {file = "ddtrace-1.6.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1dd4c3743fb93228c7470f447eff1d986417298b7242e80753ec406f67288a75"}, - {file = "ddtrace-1.6.4-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88c90fbfb22b707e6ab07d5c109634c17986d8090363f1e69cc0fb43ccb77098"}, - {file = "ddtrace-1.6.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:14430eda72c2d28b92b782201ea4edc6efdc8c74845a407039c1f6a4f244fb24"}, - {file = "ddtrace-1.6.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:a056086975d607acaa0377231615fa1a94c632fd4ece979f0d5554a423663e61"}, - {file = "ddtrace-1.6.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:dae04139b42b42e5eda3f544c7fe9875a5b190aeca9ce09eb01853d35a7f0054"}, - {file = "ddtrace-1.6.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:86a91dc39cc2f2a1c301e8549fb7bd84da78122d4c6ff4b60a97d89601d1c66c"}, - {file = "ddtrace-1.6.4-cp37-cp37m-win32.whl", hash = "sha256:e1efd72c2377f605dc053c763e9449b7188659190d48efb75669158db5a92844"}, - {file = "ddtrace-1.6.4-cp37-cp37m-win_amd64.whl", hash = "sha256:108c045b332a034f3e8e0df8d87b6b7a26e9e94007a8a84000f445450c11c44b"}, - {file = "ddtrace-1.6.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:121c2d6212142fb6815d2dcc56a82fb06e9e3568ee217015e6d72ec3caad7268"}, - {file = "ddtrace-1.6.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:3da580615a97e61ffbf564782679b98b81ba026248926619b030d648ff389a40"}, - {file = "ddtrace-1.6.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:73be527f3a2912e74045ee60e9d37fc8f1a8410b90ae3ac8fb94f01e6ee3f6d3"}, - {file = "ddtrace-1.6.4-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae70de026c79a895b2a5beecbbc0e46bb0c07d27af77a1662352a5608068b005"}, - {file = "ddtrace-1.6.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45a4f2c200c22ab4b6dbeb16b6f6b9aafa2a674b3c3e175f86cb2c2e16f69fff"}, - {file = "ddtrace-1.6.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:4a183627202355377d9e369f8d4d18ceee82dd2312d0d098fb1242f387ebcb2b"}, - {file = "ddtrace-1.6.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:97f1ed98e1a14091515aa482d528846ee4437260d68e819bb6ba09af4774fb3c"}, - {file = "ddtrace-1.6.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:f08d858a045a9117295e3008ba7c9586865ed16690c682441347508744c338e2"}, - {file = "ddtrace-1.6.4-cp38-cp38-win32.whl", hash = "sha256:71fae938615e77cb5cd04978a36874fa97c1d929c1b697c690affedd538914ed"}, - {file = "ddtrace-1.6.4-cp38-cp38-win_amd64.whl", hash = "sha256:53a0db94ae562222338490e5f409d3e2740d03f7d1099fdd02e769690ca70de2"}, - {file = "ddtrace-1.6.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:d727012ee9b4725cdbb0666e40e4e99cae3418c88b98159e073ec1479d30db73"}, - {file = "ddtrace-1.6.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:102c49d38d67efe6da378509ed7f9f88bc9c6c9a95bcc493c06e02a15e4865c2"}, - {file = "ddtrace-1.6.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5e6cc5ad17a456c6e93d25c6bd06580436fb5c007cef27c89b060a277e35b7a"}, - {file = "ddtrace-1.6.4-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ad9abf5879abad5b143ef9fcd9b557193b19000d8ff798b06ec86f1fe992cb89"}, - {file = "ddtrace-1.6.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:289edf7ea4f506f329b20394b08971487bf72351b0a9b9a63a5c7f4d18e1cda8"}, - {file = "ddtrace-1.6.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:3a3432c72a082e8f4090a55833cda1b6840676b5f58dbaca041d566f581a3062"}, - {file = "ddtrace-1.6.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7504b21d88ce528e86eb8727270e677a7b4a254ee070e54d0e81111bd68a6d0b"}, - {file = "ddtrace-1.6.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5e744e81727d1328e6830de6a749378e7cd31fc0e1c0aceb19b17685e90cb8fa"}, - {file = "ddtrace-1.6.4-cp39-cp39-win32.whl", hash = "sha256:2aed59c1a0ed33f0b752daa801980d9ab395f89ea8fbc2c788fea0b11a3ea826"}, - {file = "ddtrace-1.6.4-cp39-cp39-win_amd64.whl", hash = "sha256:4fb94ee5113141becb7e447bdf57e30bb447f9347785bf20211d0cf06e1e98e7"}, - {file = "ddtrace-1.6.4.tar.gz", hash = "sha256:33effab386caaaab314e08900b798c02ab5771f88697acb9bf64e5ba98c8009a"}, + {file = "ddtrace-1.15.0-cp27-cp27m-macosx_11_0_x86_64.whl", hash = "sha256:b1999cd8566dbb9d39bddf6d4d0c1de29c2664fb450fc29266fead74824c3f5d"}, + {file = "ddtrace-1.15.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:6cf4ec208a17206932537ff111188d2b014b7ef7b10b02490904b47b04282f7f"}, + {file = "ddtrace-1.15.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:017b945d382fee039eed3b6d65c0ff28e45f15fc506fd211c13af342ae080ac8"}, + {file = "ddtrace-1.15.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:ca352bcd44f880a3fc7468e267223ba5104ef788d4c22c81070c91d37db3db2b"}, + {file = "ddtrace-1.15.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:88cbe0f4355eb65cf4791bc6138e92fc7f7499f65671f2111d9d8f2e15265c18"}, + {file = "ddtrace-1.15.0-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:84dbdbf4c5cf3a01200b445565d5113f1377927a30856f98473461368e2342b3"}, + {file = "ddtrace-1.15.0-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:ecec3222ee2f55b39e76390957d68d7f9d44a06d2fe7a174fc3d192e001796dc"}, + {file = "ddtrace-1.15.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5a2ce601d0db71c98e8f58fdc47071552f39ecfac6b0bf5a543d01856295679"}, + {file = "ddtrace-1.15.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:19b12b51097e002026d8462dc5dc75763127b109e8c99def48e3f977dd8f2d41"}, + {file = "ddtrace-1.15.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5bfd8ec6bb83baca073b139501d51a1f4f17d52f7e43298aadff75ff67ea1996"}, + {file = "ddtrace-1.15.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:36aa6bf7ce975e2a592917e4f06a018940fa56ff42c4e6fe4622ed6e32df9aad"}, + {file = "ddtrace-1.15.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:a522c9e104914cd5d05e5635e2155f8ed7e36ca6a9a179b6f3d5e0705ee55da6"}, + {file = "ddtrace-1.15.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4c6d7ef4608f79bf3a7802ff86e5bc752f93938d94c004aca580539e51653e9f"}, + {file = "ddtrace-1.15.0-cp310-cp310-win32.whl", hash = "sha256:e7c997f264440c2190b94928392e59e49c441cea2edfa4d4ed7a9ed1511815f7"}, + {file = "ddtrace-1.15.0-cp310-cp310-win_amd64.whl", hash = "sha256:7a063beaf22cc0935804bbf06deb75b4aaf58b7cad959d42842fce25acaa4278"}, + {file = "ddtrace-1.15.0-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:cd486b653cae16510270900b6ab4fbb81359331e730c6d9ff5310d19a47d3253"}, + {file = "ddtrace-1.15.0-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:cdec6dad5b113d62972e0a8cb1cacd7aa73689a6455f67d82a4f6916ede96a35"}, + {file = "ddtrace-1.15.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4bc992561a158ecfac3e0cc627eeb90d8d1065d0e8793ae3e04ee06a5b0cf81"}, + {file = "ddtrace-1.15.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:94dfd564551530831fe25e46163f232bf351df087b4bd9701d518ffe37310034"}, + {file = "ddtrace-1.15.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:275d8e7c7a41f9fa63ed2d370667fd875830fb898121a479554505f6623cd334"}, + {file = "ddtrace-1.15.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:f397f4abb858f53773459c1524e81526cd3cc697c0cec99ad04ab87be9ad172e"}, + {file = "ddtrace-1.15.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:8fa49e1deaf1316e17fd6fc21ac0ea4d92d5ecd2b783b700d370fc6ba70c3988"}, + {file = "ddtrace-1.15.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5a4d8c723ac4a84b993bfeb0b476724d99296b196470c190072cd98855019eee"}, + {file = "ddtrace-1.15.0-cp311-cp311-win32.whl", hash = "sha256:af2760a4d6fe21470ca5af6b04a2c20bc5f69606508a2369c7b5a403248fb518"}, + {file = "ddtrace-1.15.0-cp311-cp311-win_amd64.whl", hash = "sha256:e40151f748c154b116f16b69031b7fbc58e04cb6d40640b7c8358ce2ab5f69df"}, + {file = "ddtrace-1.15.0-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:0737dd77ceceba3510041a1e415a1b95c523d368cb7fd9c1541c07912b0d43b0"}, + {file = "ddtrace-1.15.0-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:07a3b1fc6725abc5cf4bc441ae5e0cc9a567eecea2590222afe432a25067525c"}, + {file = "ddtrace-1.15.0-cp35-cp35m-manylinux2014_aarch64.whl", hash = "sha256:b09772d02a3294d6781eb2b3e51dd755bd24967fecfaa94f266ff21add0a1623"}, + {file = "ddtrace-1.15.0-cp35-cp35m-win32.whl", hash = "sha256:9ff9f3db0cf97f581b2c7a8abd76eb43954a0c4629cdba137f17e35333ffa182"}, + {file = "ddtrace-1.15.0-cp35-cp35m-win_amd64.whl", hash = "sha256:6afee087ae47728ba0506e530958df1cc3f63ed7be4292fabff913a9478b474e"}, + {file = "ddtrace-1.15.0-cp36-cp36m-macosx_11_0_x86_64.whl", hash = "sha256:807b4234c80a11cea987a5b23e0e4d946427e17a6a2264cc34f63bfb17f15012"}, + {file = "ddtrace-1.15.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1695052fa79b8262704e78283be4b9fea50eea762ddfbb2aabc71e70647186bd"}, + {file = "ddtrace-1.15.0-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0bcf0f016c849245d6d240dbc5d641a8e36ca1e5d69e2427a8e07bd23f6094c9"}, + {file = "ddtrace-1.15.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6863a96e692aa1af8a8cdbfecf106feaa1eb6de1ad1c552fad76c0b6923a9b5"}, + {file = "ddtrace-1.15.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:e19143fae1133d6109bb29927c676048cf8d453dd27adc0f6fc153bda5696314"}, + {file = "ddtrace-1.15.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:3f4ffa2200663b92536723209f16f67454a86e88f705df24a156cd266680db10"}, + {file = "ddtrace-1.15.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:26b8450db283d4b378b73046ecd6db01d8eb652f80b1b0888e4ed3e602070f39"}, + {file = "ddtrace-1.15.0-cp36-cp36m-win32.whl", hash = "sha256:68c00db16c7942a327898e4ac077e420d0ccd2bfd8d1adf917211687681ace79"}, + {file = "ddtrace-1.15.0-cp36-cp36m-win_amd64.whl", hash = "sha256:917b90931e6a83268e180e295e1188c218387c524de9552fba946dabdc9f780a"}, + {file = "ddtrace-1.15.0-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:08dae33cbc49c1634458bf3f0b2263ed589f3f0a9d26efd2baa69642d932a8fd"}, + {file = "ddtrace-1.15.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c8d2c8c6d9d0d0aa28826e43f60103da8a1a0b709801547443a9a0f71b6fb39"}, + {file = "ddtrace-1.15.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b5e2dbf357ac907c1724401586fe2a3379f8d77b9b3e7598f1006fa37138bb2e"}, + {file = "ddtrace-1.15.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a435e143b5324453b598923ca87f9f298fd3e3b79a6ebf689d8a6f6991a71bad"}, + {file = "ddtrace-1.15.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:88006fa7755fe3b3c975a9ae4ddba6231929f7961a374105cda53d9b3db2cf56"}, + {file = "ddtrace-1.15.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:f8a71a6409df291a38553e980df1bcfbd9018b33b450e5508b5a1518f564dce4"}, + {file = "ddtrace-1.15.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:52e2d5ab754e7b866d43bba7e86b853a7024667994b31cb690ff5183d45f4d43"}, + {file = "ddtrace-1.15.0-cp37-cp37m-win32.whl", hash = "sha256:abeec391239f59257c7a9a0e9ed6d4c0777256bd5ee89cfa057d42ced603ad05"}, + {file = "ddtrace-1.15.0-cp37-cp37m-win_amd64.whl", hash = "sha256:bdae8d560f10da94f3cf77f548b54b537a47ba56462bd96686129f908c7930b1"}, + {file = "ddtrace-1.15.0-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:ed6801ea071cd4879c49d2a30476afe1fc9a969485f95efd5ef754b43df1142c"}, + {file = "ddtrace-1.15.0-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:b17903b46f6ce66e3f8645b0e7553fea7720c2e69fcf38b3e486ca15eb50a618"}, + {file = "ddtrace-1.15.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f03134274f7c4ef11d52764eaefd6e0355233e4e7d0ad88c872275dd344fd7ec"}, + {file = "ddtrace-1.15.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:61a1cc91877c09288e85f742d3659007f4b925fc575aa66e48ce9e116af835e1"}, + {file = "ddtrace-1.15.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8b8578c3d5ab888ee9f1fe57d8b63cbc4cbf38c4444b501b830b7ab7abb0e5ef"}, + {file = "ddtrace-1.15.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2623759718ec083ab29a70d3f9902e7785dcc6b226fd4378de2605c3b4cd887a"}, + {file = "ddtrace-1.15.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:15d1db69608dc73a22c123525a66f6ce0e85dce57f322d67c6fbbf7f23d3a21c"}, + {file = "ddtrace-1.15.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:9af6737ba124a791dd632a818fa1e26914be5da7bea530bb11863f35376256b9"}, + {file = "ddtrace-1.15.0-cp38-cp38-win32.whl", hash = "sha256:2b9b76144690a6dd3f8e114baa8263d4eeaea3dd8fe7905201fb3a910451c5c6"}, + {file = "ddtrace-1.15.0-cp38-cp38-win_amd64.whl", hash = "sha256:15701417ce75896041c20d3b076cd04d5a73529a50c38dcc4bd905c4388b24fc"}, + {file = "ddtrace-1.15.0-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:a7e5bc435a75d59c1e24c10b5823d9640728290ddb452c86c9fd6d63ca9d4edb"}, + {file = "ddtrace-1.15.0-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:1db33af2792e5b07f45c6880831edd9bb016000cce580fb023a8fe5130fc0a6f"}, + {file = "ddtrace-1.15.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0af977fe8e4d7344793dcd447c8687064b49da5a274931bfed4fe9ec3463ea65"}, + {file = "ddtrace-1.15.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a496201556d1ad95219a032a03de8927108411f7bc7d4dbcefda3bf8785b5663"}, + {file = "ddtrace-1.15.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a6ef7c443207b898a25d5899873d8de476c349460c1d501c8c706c4dba0e606a"}, + {file = "ddtrace-1.15.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4f3700a1bc59277e7b576c87cebffe95bd1256b2207dff36cdfb29a0f26416b2"}, + {file = "ddtrace-1.15.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:93269e17aadc054c357c917e66319b966a8a18e735b81796b61ae282946a2170"}, + {file = "ddtrace-1.15.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8f0ed9fc210ba7fd31d64fb1e2435b382fede962b15d5661ed38566ad49d2c6f"}, + {file = "ddtrace-1.15.0-cp39-cp39-win32.whl", hash = "sha256:dd21d45b9a78e94dcbd9171dd73706d02eee762cbf2a3f00ffaad7e69128b159"}, + {file = "ddtrace-1.15.0-cp39-cp39-win_amd64.whl", hash = "sha256:1d1289506153af3c774e375f6aa803bd9d4c91b2ba60d9e0e06d8a25e784c4bc"}, + {file = "ddtrace-1.15.0.tar.gz", hash = "sha256:b275e25cd723cdd01d6901e690cea7852b742cfebfe800eb289e483f8f398bd0"}, ] [package.dependencies] @@ -311,15 +401,14 @@ bytecode = [ {version = ">=0.13.0,<0.14.0", markers = "python_version == \"3.7\""}, {version = "*", markers = "python_version >= \"3.8\""}, ] -cattrs = "*" +cattrs = {version = "*", markers = "python_version >= \"3.7\""} ddsketch = ">=2.0.1" envier = "*" importlib-metadata = {version = "*", markers = "python_version < \"3.8\""} jsonschema = "*" -packaging = ">=17.1" +opentelemetry-api = {version = ">=1", markers = "python_version >= \"3.7\""} protobuf = {version = ">=3", markers = "python_version >= \"3.7\""} six = ">=1.12.0" -tenacity = ">=5" typing-extensions = "*" xmltodict = ">=0.12" @@ -327,17 +416,23 @@ xmltodict = ">=0.12" opentracing = ["opentracing (>=2.0.0)"] [[package]] -name = "decorator" -version = "5.1.1" -description = "Decorators for Humans" +name = "deprecated" +version = "1.2.14" +description = "Python @deprecated decorator to deprecate old python classes, functions or methods." category = "main" optional = false -python-versions = ">=3.5" +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ - {file = "decorator-5.1.1-py3-none-any.whl", hash = "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186"}, - {file = "decorator-5.1.1.tar.gz", hash = "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330"}, + {file = "Deprecated-1.2.14-py2.py3-none-any.whl", hash = "sha256:6fac8b097794a90302bdbb17b9b815e732d3c4720583ff1b198499d78470466c"}, + {file = "Deprecated-1.2.14.tar.gz", hash = "sha256:e5323eb936458dccc2582dc6f9c322c852a775a27065ff2b0c4970b9d53d01b3"}, ] +[package.dependencies] +wrapt = ">=1.10,<2" + +[package.extras] +dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "sphinx (<2)", "tox"] + [[package]] name = "envier" version = "0.4.0" @@ -355,14 +450,14 @@ mypy = ["mypy"] [[package]] name = "exceptiongroup" -version = "1.1.0" +version = "1.1.1" description = "Backport of PEP 654 (exception groups)" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "exceptiongroup-1.1.0-py3-none-any.whl", hash = "sha256:327cbda3da756e2de031a3107b81ab7b3770a602c4d16ca618298c526f4bec1e"}, - {file = "exceptiongroup-1.1.0.tar.gz", hash = "sha256:bcb67d800a4497e1b404c2dd44fca47d3b7a5e5433dbab67f96c1a685cdfdf23"}, + {file = "exceptiongroup-1.1.1-py3-none-any.whl", hash = "sha256:232c37c63e4f682982c8b6459f33a8981039e5fb8756b2074364e5055c498c9e"}, + {file = "exceptiongroup-1.1.1.tar.gz", hash = "sha256:d484c3090ba2889ae2928419117447a14daf3c1231d5e30d0aae34f354f01785"}, ] [package.extras] @@ -433,14 +528,14 @@ testing = ["importlib-resources (>=1.3)", "packaging", "pep517"] [[package]] name = "importlib-resources" -version = "5.10.2" +version = "5.12.0" description = "Read resources from Python packages" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "importlib_resources-5.10.2-py3-none-any.whl", hash = "sha256:7d543798b0beca10b6a01ac7cafda9f822c54db9e8376a6bf57e0cbd74d486b6"}, - {file = "importlib_resources-5.10.2.tar.gz", hash = "sha256:e4a96c8cc0339647ff9a5e0550d9f276fc5a01ffa276012b58ec108cfd7b8484"}, + {file = "importlib_resources-5.12.0-py3-none-any.whl", hash = "sha256:7b1deeebbf351c7578e09bf2f63fa2ce8b5ffec296e0d349139d43cca061a81a"}, + {file = "importlib_resources-5.12.0.tar.gz", hash = "sha256:4be82589bf5c1d7999aedf2a45159d10cb3ca4f19b2271f8792bc8e6da7b22f6"}, ] [package.dependencies] @@ -519,17 +614,21 @@ coverage-plugin = ["coverage (>=4.4.1)"] doc = ["Sphinx (>=1.6.5)", "mock", "sphinx-rtd-theme"] [[package]] -name = "packaging" -version = "22.0" -description = "Core utilities for Python packages" +name = "opentelemetry-api" +version = "1.15.0" +description = "OpenTelemetry Python API" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "packaging-22.0-py3-none-any.whl", hash = "sha256:957e2148ba0e1a3b282772e791ef1d8083648bc131c8ab0c1feba110ce1146c3"}, - {file = "packaging-22.0.tar.gz", hash = "sha256:2198ec20bd4c017b8f9717e00f0c8714076fc2fd93816750ab48e2c41de2cfd3"}, + {file = "opentelemetry_api-1.15.0-py3-none-any.whl", hash = "sha256:e6c2d2e42140fd396e96edf75a7ceb11073f4efb4db87565a431cc9d0f93f2e0"}, + {file = "opentelemetry_api-1.15.0.tar.gz", hash = "sha256:79ab791b4aaad27acc3dc3ba01596db5b5aac2ef75c70622c6038051d6c2cded"}, ] +[package.dependencies] +deprecated = ">=1.2.6" +setuptools = ">=16.0" + [[package]] name = "pkgutil-resolve-name" version = "1.3.10" @@ -544,26 +643,25 @@ files = [ [[package]] name = "protobuf" -version = "4.21.12" +version = "4.23.3" description = "" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "protobuf-4.21.12-cp310-abi3-win32.whl", hash = "sha256:b135410244ebe777db80298297a97fbb4c862c881b4403b71bac9d4107d61fd1"}, - {file = "protobuf-4.21.12-cp310-abi3-win_amd64.whl", hash = "sha256:89f9149e4a0169cddfc44c74f230d7743002e3aa0b9472d8c28f0388102fc4c2"}, - {file = "protobuf-4.21.12-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:299ea899484ee6f44604deb71f424234f654606b983cb496ea2a53e3c63ab791"}, - {file = "protobuf-4.21.12-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:d1736130bce8cf131ac7957fa26880ca19227d4ad68b4888b3be0dea1f95df97"}, - {file = "protobuf-4.21.12-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:78a28c9fa223998472886c77042e9b9afb6fe4242bd2a2a5aced88e3f4422aa7"}, - {file = "protobuf-4.21.12-cp37-cp37m-win32.whl", hash = "sha256:3d164928ff0727d97022957c2b849250ca0e64777ee31efd7d6de2e07c494717"}, - {file = "protobuf-4.21.12-cp37-cp37m-win_amd64.whl", hash = "sha256:f45460f9ee70a0ec1b6694c6e4e348ad2019275680bd68a1d9314b8c7e01e574"}, - {file = "protobuf-4.21.12-cp38-cp38-win32.whl", hash = "sha256:6ab80df09e3208f742c98443b6166bcb70d65f52cfeb67357d52032ea1ae9bec"}, - {file = "protobuf-4.21.12-cp38-cp38-win_amd64.whl", hash = "sha256:1f22ac0ca65bb70a876060d96d914dae09ac98d114294f77584b0d2644fa9c30"}, - {file = "protobuf-4.21.12-cp39-cp39-win32.whl", hash = "sha256:27f4d15021da6d2b706ddc3860fac0a5ddaba34ab679dc182b60a8bb4e1121cc"}, - {file = "protobuf-4.21.12-cp39-cp39-win_amd64.whl", hash = "sha256:237216c3326d46808a9f7c26fd1bd4b20015fb6867dc5d263a493ef9a539293b"}, - {file = "protobuf-4.21.12-py2.py3-none-any.whl", hash = "sha256:a53fd3f03e578553623272dc46ac2f189de23862e68565e83dde203d41b76fc5"}, - {file = "protobuf-4.21.12-py3-none-any.whl", hash = "sha256:b98d0148f84e3a3c569e19f52103ca1feacdac0d2df8d6533cf983d1fda28462"}, - {file = "protobuf-4.21.12.tar.gz", hash = "sha256:7cd532c4566d0e6feafecc1059d04c7915aec8e182d1cf7adee8b24ef1e2e6ab"}, + {file = "protobuf-4.23.3-cp310-abi3-win32.whl", hash = "sha256:514b6bbd54a41ca50c86dd5ad6488afe9505901b3557c5e0f7823a0cf67106fb"}, + {file = "protobuf-4.23.3-cp310-abi3-win_amd64.whl", hash = "sha256:cc14358a8742c4e06b1bfe4be1afbdf5c9f6bd094dff3e14edb78a1513893ff5"}, + {file = "protobuf-4.23.3-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:2991f5e7690dab569f8f81702e6700e7364cc3b5e572725098215d3da5ccc6ac"}, + {file = "protobuf-4.23.3-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:08fe19d267608d438aa37019236db02b306e33f6b9902c3163838b8e75970223"}, + {file = "protobuf-4.23.3-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:3b01a5274ac920feb75d0b372d901524f7e3ad39c63b1a2d55043f3887afe0c1"}, + {file = "protobuf-4.23.3-cp37-cp37m-win32.whl", hash = "sha256:aca6e86a08c5c5962f55eac9b5bd6fce6ed98645d77e8bfc2b952ecd4a8e4f6a"}, + {file = "protobuf-4.23.3-cp37-cp37m-win_amd64.whl", hash = "sha256:0149053336a466e3e0b040e54d0b615fc71de86da66791c592cc3c8d18150bf8"}, + {file = "protobuf-4.23.3-cp38-cp38-win32.whl", hash = "sha256:84ea0bd90c2fdd70ddd9f3d3fc0197cc24ecec1345856c2b5ba70e4d99815359"}, + {file = "protobuf-4.23.3-cp38-cp38-win_amd64.whl", hash = "sha256:3bcbeb2bf4bb61fe960dd6e005801a23a43578200ea8ceb726d1f6bd0e562ba1"}, + {file = "protobuf-4.23.3-cp39-cp39-win32.whl", hash = "sha256:5cb9e41188737f321f4fce9a4337bf40a5414b8d03227e1d9fbc59bc3a216e35"}, + {file = "protobuf-4.23.3-cp39-cp39-win_amd64.whl", hash = "sha256:29660574cd769f2324a57fb78127cda59327eb6664381ecfe1c69731b83e8288"}, + {file = "protobuf-4.23.3-py3-none-any.whl", hash = "sha256:447b9786ac8e50ae72cae7a2eec5c5df6a9dbf9aa6f908f1b8bda6032644ea62"}, + {file = "protobuf-4.23.3.tar.gz", hash = "sha256:7a92beb30600332a52cdadbedb40d33fd7c8a0d7f549c440347bc606fb3fe34b"}, ] [[package]] @@ -644,21 +742,21 @@ six = ">=1.5" [[package]] name = "requests" -version = "2.28.1" +version = "2.31.0" description = "Python HTTP for Humans." category = "main" optional = false -python-versions = ">=3.7, <4" +python-versions = ">=3.7" files = [ - {file = "requests-2.28.1-py3-none-any.whl", hash = "sha256:8fefa2a1a1365bf5520aac41836fbee479da67864514bdb821f31ce07ce65349"}, - {file = "requests-2.28.1.tar.gz", hash = "sha256:7c5599b102feddaa661c826c56ab4fee28bfd17f5abca1ebbe3e7f19d7c97983"}, + {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"}, + {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"}, ] [package.dependencies] certifi = ">=2017.4.17" -charset-normalizer = ">=2,<3" +charset-normalizer = ">=2,<4" idna = ">=2.5,<4" -urllib3 = ">=1.21.1,<1.27" +urllib3 = ">=1.21.1,<3" [package.extras] socks = ["PySocks (>=1.5.6,!=1.5.7)"] @@ -666,14 +764,14 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] [[package]] name = "s3transfer" -version = "0.6.0" +version = "0.6.1" description = "An Amazon S3 Transfer Manager" category = "main" optional = true python-versions = ">= 3.7" files = [ - {file = "s3transfer-0.6.0-py3-none-any.whl", hash = "sha256:06176b74f3a15f61f1b4f25a1fc29a4429040b7647133a463da8fa5bd28d5ecd"}, - {file = "s3transfer-0.6.0.tar.gz", hash = "sha256:2ed07d3866f523cc561bf4a00fc5535827981b117dd7876f036b0c1aca42c947"}, + {file = "s3transfer-0.6.1-py3-none-any.whl", hash = "sha256:3c0da2d074bf35d6870ef157158641178a4204a6e689e82546083e31e0311346"}, + {file = "s3transfer-0.6.1.tar.gz", hash = "sha256:640bb492711f4c0c0905e1f62b6aaeb771881935ad27884852411f8e9cacbca9"}, ] [package.dependencies] @@ -683,54 +781,56 @@ botocore = ">=1.12.36,<2.0a.0" crt = ["botocore[crt] (>=1.20.29,<2.0a.0)"] [[package]] -name = "six" -version = "1.16.0" -description = "Python 2 and 3 compatibility utilities" +name = "setuptools" +version = "68.0.0" +description = "Easily download, build, install, upgrade, and uninstall Python packages" category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +python-versions = ">=3.7" files = [ - {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, - {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, + {file = "setuptools-68.0.0-py3-none-any.whl", hash = "sha256:11e52c67415a381d10d6b462ced9cfb97066179f0e871399e006c4ab101fc85f"}, + {file = "setuptools-68.0.0.tar.gz", hash = "sha256:baf1fdb41c6da4cd2eae722e135500da913332ab3f2f5c7d33af9b492acb5235"}, ] +[package.extras] +docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (==0.8.3)", "sphinx-reredirects", "sphinxcontrib-towncrier"] +testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pip-run (>=8.8)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] +testing-integration = ["build[virtualenv]", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] + [[package]] -name = "tenacity" -version = "8.1.0" -description = "Retry code until it succeeds" +name = "six" +version = "1.16.0" +description = "Python 2 and 3 compatibility utilities" category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" files = [ - {file = "tenacity-8.1.0-py3-none-any.whl", hash = "sha256:35525cd47f82830069f0d6b73f7eb83bc5b73ee2fff0437952cedf98b27653ac"}, - {file = "tenacity-8.1.0.tar.gz", hash = "sha256:e48c437fdf9340f5666b92cd7990e96bc5fc955e1298baf4a907e3972067a445"}, + {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, + {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, ] -[package.extras] -doc = ["reno", "sphinx", "tornado (>=4.5)"] - [[package]] name = "typing-extensions" -version = "4.4.0" +version = "4.6.3" description = "Backported and Experimental Type Hints for Python 3.7+" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "typing_extensions-4.4.0-py3-none-any.whl", hash = "sha256:16fa4864408f655d35ec496218b85f79b3437c829e93320c7c9215ccfd92489e"}, - {file = "typing_extensions-4.4.0.tar.gz", hash = "sha256:1511434bb92bf8dd198c12b1cc812e800d4181cfcb867674e0f8279cc93087aa"}, + {file = "typing_extensions-4.6.3-py3-none-any.whl", hash = "sha256:88a4153d8505aabbb4e13aacb7c486c2b4a33ca3b3f807914a9b4c844c471c26"}, + {file = "typing_extensions-4.6.3.tar.gz", hash = "sha256:d91d5919357fe7f681a9f2b5b4cb2a5f1ef0a1e9f59c4d8ff0d3491e05c0ffd5"}, ] [[package]] name = "urllib3" -version = "1.26.13" +version = "1.26.16" description = "HTTP library with thread-safe connection pooling, file post, and more." category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" files = [ - {file = "urllib3-1.26.13-py2.py3-none-any.whl", hash = "sha256:47cc05d99aaa09c9e72ed5809b60e7ba354e64b59c9c173ac3018642d8bb41fc"}, - {file = "urllib3-1.26.13.tar.gz", hash = "sha256:c083dd0dce68dbfbe1129d5271cb90f9447dea7d52097c6e0126120c521ddea8"}, + {file = "urllib3-1.26.16-py2.py3-none-any.whl", hash = "sha256:8d36afa7616d8ab714608411b4a3b13e58f463aee519024578e062e141dce20f"}, + {file = "urllib3-1.26.16.tar.gz", hash = "sha256:8f135f6502756bde6b2a9b28989df5fbe87c9970cecaa69041edcce7f0589b14"}, ] [package.extras] @@ -740,76 +840,87 @@ socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] [[package]] name = "wrapt" -version = "1.14.1" +version = "1.15.0" description = "Module for decorators, wrappers and monkey patching." category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" files = [ - {file = "wrapt-1.14.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:1b376b3f4896e7930f1f772ac4b064ac12598d1c38d04907e696cc4d794b43d3"}, - {file = "wrapt-1.14.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:903500616422a40a98a5a3c4ff4ed9d0066f3b4c951fa286018ecdf0750194ef"}, - {file = "wrapt-1.14.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:5a9a0d155deafd9448baff28c08e150d9b24ff010e899311ddd63c45c2445e28"}, - {file = "wrapt-1.14.1-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:ddaea91abf8b0d13443f6dac52e89051a5063c7d014710dcb4d4abb2ff811a59"}, - {file = "wrapt-1.14.1-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:36f582d0c6bc99d5f39cd3ac2a9062e57f3cf606ade29a0a0d6b323462f4dd87"}, - {file = "wrapt-1.14.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:7ef58fb89674095bfc57c4069e95d7a31cfdc0939e2a579882ac7d55aadfd2a1"}, - {file = "wrapt-1.14.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:e2f83e18fe2f4c9e7db597e988f72712c0c3676d337d8b101f6758107c42425b"}, - {file = "wrapt-1.14.1-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:ee2b1b1769f6707a8a445162ea16dddf74285c3964f605877a20e38545c3c462"}, - {file = "wrapt-1.14.1-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:833b58d5d0b7e5b9832869f039203389ac7cbf01765639c7309fd50ef619e0b1"}, - {file = "wrapt-1.14.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:80bb5c256f1415f747011dc3604b59bc1f91c6e7150bd7db03b19170ee06b320"}, - {file = "wrapt-1.14.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:07f7a7d0f388028b2df1d916e94bbb40624c59b48ecc6cbc232546706fac74c2"}, - {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:02b41b633c6261feff8ddd8d11c711df6842aba629fdd3da10249a53211a72c4"}, - {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2fe803deacd09a233e4762a1adcea5db5d31e6be577a43352936179d14d90069"}, - {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:257fd78c513e0fb5cdbe058c27a0624c9884e735bbd131935fd49e9fe719d310"}, - {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:4fcc4649dc762cddacd193e6b55bc02edca674067f5f98166d7713b193932b7f"}, - {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:11871514607b15cfeb87c547a49bca19fde402f32e2b1c24a632506c0a756656"}, - {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8ad85f7f4e20964db4daadcab70b47ab05c7c1cf2a7c1e51087bfaa83831854c"}, - {file = "wrapt-1.14.1-cp310-cp310-win32.whl", hash = "sha256:a9a52172be0b5aae932bef82a79ec0a0ce87288c7d132946d645eba03f0ad8a8"}, - {file = "wrapt-1.14.1-cp310-cp310-win_amd64.whl", hash = "sha256:6d323e1554b3d22cfc03cd3243b5bb815a51f5249fdcbb86fda4bf62bab9e164"}, - {file = "wrapt-1.14.1-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:43ca3bbbe97af00f49efb06e352eae40434ca9d915906f77def219b88e85d907"}, - {file = "wrapt-1.14.1-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:6b1a564e6cb69922c7fe3a678b9f9a3c54e72b469875aa8018f18b4d1dd1adf3"}, - {file = "wrapt-1.14.1-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:00b6d4ea20a906c0ca56d84f93065b398ab74b927a7a3dbd470f6fc503f95dc3"}, - {file = "wrapt-1.14.1-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:a85d2b46be66a71bedde836d9e41859879cc54a2a04fad1191eb50c2066f6e9d"}, - {file = "wrapt-1.14.1-cp35-cp35m-win32.whl", hash = "sha256:dbcda74c67263139358f4d188ae5faae95c30929281bc6866d00573783c422b7"}, - {file = "wrapt-1.14.1-cp35-cp35m-win_amd64.whl", hash = "sha256:b21bb4c09ffabfa0e85e3a6b623e19b80e7acd709b9f91452b8297ace2a8ab00"}, - {file = "wrapt-1.14.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:9e0fd32e0148dd5dea6af5fee42beb949098564cc23211a88d799e434255a1f4"}, - {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9736af4641846491aedb3c3f56b9bc5568d92b0692303b5a305301a95dfd38b1"}, - {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5b02d65b9ccf0ef6c34cba6cf5bf2aab1bb2f49c6090bafeecc9cd81ad4ea1c1"}, - {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21ac0156c4b089b330b7666db40feee30a5d52634cc4560e1905d6529a3897ff"}, - {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:9f3e6f9e05148ff90002b884fbc2a86bd303ae847e472f44ecc06c2cd2fcdb2d"}, - {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:6e743de5e9c3d1b7185870f480587b75b1cb604832e380d64f9504a0535912d1"}, - {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:d79d7d5dc8a32b7093e81e97dad755127ff77bcc899e845f41bf71747af0c569"}, - {file = "wrapt-1.14.1-cp36-cp36m-win32.whl", hash = "sha256:81b19725065dcb43df02b37e03278c011a09e49757287dca60c5aecdd5a0b8ed"}, - {file = "wrapt-1.14.1-cp36-cp36m-win_amd64.whl", hash = "sha256:b014c23646a467558be7da3d6b9fa409b2c567d2110599b7cf9a0c5992b3b471"}, - {file = "wrapt-1.14.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:88bd7b6bd70a5b6803c1abf6bca012f7ed963e58c68d76ee20b9d751c74a3248"}, - {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5901a312f4d14c59918c221323068fad0540e34324925c8475263841dbdfe68"}, - {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d77c85fedff92cf788face9bfa3ebaa364448ebb1d765302e9af11bf449ca36d"}, - {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d649d616e5c6a678b26d15ece345354f7c2286acd6db868e65fcc5ff7c24a77"}, - {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7d2872609603cb35ca513d7404a94d6d608fc13211563571117046c9d2bcc3d7"}, - {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:ee6acae74a2b91865910eef5e7de37dc6895ad96fa23603d1d27ea69df545015"}, - {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:2b39d38039a1fdad98c87279b48bc5dce2c0ca0d73483b12cb72aa9609278e8a"}, - {file = "wrapt-1.14.1-cp37-cp37m-win32.whl", hash = "sha256:60db23fa423575eeb65ea430cee741acb7c26a1365d103f7b0f6ec412b893853"}, - {file = "wrapt-1.14.1-cp37-cp37m-win_amd64.whl", hash = "sha256:709fe01086a55cf79d20f741f39325018f4df051ef39fe921b1ebe780a66184c"}, - {file = "wrapt-1.14.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8c0ce1e99116d5ab21355d8ebe53d9460366704ea38ae4d9f6933188f327b456"}, - {file = "wrapt-1.14.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e3fb1677c720409d5f671e39bac6c9e0e422584e5f518bfd50aa4cbbea02433f"}, - {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:642c2e7a804fcf18c222e1060df25fc210b9c58db7c91416fb055897fc27e8cc"}, - {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7b7c050ae976e286906dd3f26009e117eb000fb2cf3533398c5ad9ccc86867b1"}, - {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef3f72c9666bba2bab70d2a8b79f2c6d2c1a42a7f7e2b0ec83bb2f9e383950af"}, - {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:01c205616a89d09827986bc4e859bcabd64f5a0662a7fe95e0d359424e0e071b"}, - {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:5a0f54ce2c092aaf439813735584b9537cad479575a09892b8352fea5e988dc0"}, - {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2cf71233a0ed05ccdabe209c606fe0bac7379fdcf687f39b944420d2a09fdb57"}, - {file = "wrapt-1.14.1-cp38-cp38-win32.whl", hash = "sha256:aa31fdcc33fef9eb2552cbcbfee7773d5a6792c137b359e82879c101e98584c5"}, - {file = "wrapt-1.14.1-cp38-cp38-win_amd64.whl", hash = "sha256:d1967f46ea8f2db647c786e78d8cc7e4313dbd1b0aca360592d8027b8508e24d"}, - {file = "wrapt-1.14.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3232822c7d98d23895ccc443bbdf57c7412c5a65996c30442ebe6ed3df335383"}, - {file = "wrapt-1.14.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:988635d122aaf2bdcef9e795435662bcd65b02f4f4c1ae37fbee7401c440b3a7"}, - {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cca3c2cdadb362116235fdbd411735de4328c61425b0aa9f872fd76d02c4e86"}, - {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d52a25136894c63de15a35bc0bdc5adb4b0e173b9c0d07a2be9d3ca64a332735"}, - {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40e7bc81c9e2b2734ea4bc1aceb8a8f0ceaac7c5299bc5d69e37c44d9081d43b"}, - {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b9b7a708dd92306328117d8c4b62e2194d00c365f18eff11a9b53c6f923b01e3"}, - {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:6a9a25751acb379b466ff6be78a315e2b439d4c94c1e99cb7266d40a537995d3"}, - {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:34aa51c45f28ba7f12accd624225e2b1e5a3a45206aa191f6f9aac931d9d56fe"}, - {file = "wrapt-1.14.1-cp39-cp39-win32.whl", hash = "sha256:dee0ce50c6a2dd9056c20db781e9c1cfd33e77d2d569f5d1d9321c641bb903d5"}, - {file = "wrapt-1.14.1-cp39-cp39-win_amd64.whl", hash = "sha256:dee60e1de1898bde3b238f18340eec6148986da0455d8ba7848d50470a7a32fb"}, - {file = "wrapt-1.14.1.tar.gz", hash = "sha256:380a85cf89e0e69b7cfbe2ea9f765f004ff419f34194018a6827ac0e3edfed4d"}, + {file = "wrapt-1.15.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:ca1cccf838cd28d5a0883b342474c630ac48cac5df0ee6eacc9c7290f76b11c1"}, + {file = "wrapt-1.15.0-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:e826aadda3cae59295b95343db8f3d965fb31059da7de01ee8d1c40a60398b29"}, + {file = "wrapt-1.15.0-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:5fc8e02f5984a55d2c653f5fea93531e9836abbd84342c1d1e17abc4a15084c2"}, + {file = "wrapt-1.15.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:96e25c8603a155559231c19c0349245eeb4ac0096fe3c1d0be5c47e075bd4f46"}, + {file = "wrapt-1.15.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:40737a081d7497efea35ab9304b829b857f21558acfc7b3272f908d33b0d9d4c"}, + {file = "wrapt-1.15.0-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:f87ec75864c37c4c6cb908d282e1969e79763e0d9becdfe9fe5473b7bb1e5f09"}, + {file = "wrapt-1.15.0-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:1286eb30261894e4c70d124d44b7fd07825340869945c79d05bda53a40caa079"}, + {file = "wrapt-1.15.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:493d389a2b63c88ad56cdc35d0fa5752daac56ca755805b1b0c530f785767d5e"}, + {file = "wrapt-1.15.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:58d7a75d731e8c63614222bcb21dd992b4ab01a399f1f09dd82af17bbfc2368a"}, + {file = "wrapt-1.15.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:21f6d9a0d5b3a207cdf7acf8e58d7d13d463e639f0c7e01d82cdb671e6cb7923"}, + {file = "wrapt-1.15.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ce42618f67741d4697684e501ef02f29e758a123aa2d669e2d964ff734ee00ee"}, + {file = "wrapt-1.15.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41d07d029dd4157ae27beab04d22b8e261eddfc6ecd64ff7000b10dc8b3a5727"}, + {file = "wrapt-1.15.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:54accd4b8bc202966bafafd16e69da9d5640ff92389d33d28555c5fd4f25ccb7"}, + {file = "wrapt-1.15.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fbfbca668dd15b744418265a9607baa970c347eefd0db6a518aaf0cfbd153c0"}, + {file = "wrapt-1.15.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:76e9c727a874b4856d11a32fb0b389afc61ce8aaf281ada613713ddeadd1cfec"}, + {file = "wrapt-1.15.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e20076a211cd6f9b44a6be58f7eeafa7ab5720eb796975d0c03f05b47d89eb90"}, + {file = "wrapt-1.15.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a74d56552ddbde46c246b5b89199cb3fd182f9c346c784e1a93e4dc3f5ec9975"}, + {file = "wrapt-1.15.0-cp310-cp310-win32.whl", hash = "sha256:26458da5653aa5b3d8dc8b24192f574a58984c749401f98fff994d41d3f08da1"}, + {file = "wrapt-1.15.0-cp310-cp310-win_amd64.whl", hash = "sha256:75760a47c06b5974aa5e01949bf7e66d2af4d08cb8c1d6516af5e39595397f5e"}, + {file = "wrapt-1.15.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ba1711cda2d30634a7e452fc79eabcadaffedf241ff206db2ee93dd2c89a60e7"}, + {file = "wrapt-1.15.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:56374914b132c702aa9aa9959c550004b8847148f95e1b824772d453ac204a72"}, + {file = "wrapt-1.15.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a89ce3fd220ff144bd9d54da333ec0de0399b52c9ac3d2ce34b569cf1a5748fb"}, + {file = "wrapt-1.15.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3bbe623731d03b186b3d6b0d6f51865bf598587c38d6f7b0be2e27414f7f214e"}, + {file = "wrapt-1.15.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3abbe948c3cbde2689370a262a8d04e32ec2dd4f27103669a45c6929bcdbfe7c"}, + {file = "wrapt-1.15.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:b67b819628e3b748fd3c2192c15fb951f549d0f47c0449af0764d7647302fda3"}, + {file = "wrapt-1.15.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:7eebcdbe3677e58dd4c0e03b4f2cfa346ed4049687d839adad68cc38bb559c92"}, + {file = "wrapt-1.15.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:74934ebd71950e3db69960a7da29204f89624dde411afbfb3b4858c1409b1e98"}, + {file = "wrapt-1.15.0-cp311-cp311-win32.whl", hash = "sha256:bd84395aab8e4d36263cd1b9308cd504f6cf713b7d6d3ce25ea55670baec5416"}, + {file = "wrapt-1.15.0-cp311-cp311-win_amd64.whl", hash = "sha256:a487f72a25904e2b4bbc0817ce7a8de94363bd7e79890510174da9d901c38705"}, + {file = "wrapt-1.15.0-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:4ff0d20f2e670800d3ed2b220d40984162089a6e2c9646fdb09b85e6f9a8fc29"}, + {file = "wrapt-1.15.0-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:9ed6aa0726b9b60911f4aed8ec5b8dd7bf3491476015819f56473ffaef8959bd"}, + {file = "wrapt-1.15.0-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:896689fddba4f23ef7c718279e42f8834041a21342d95e56922e1c10c0cc7afb"}, + {file = "wrapt-1.15.0-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:75669d77bb2c071333417617a235324a1618dba66f82a750362eccbe5b61d248"}, + {file = "wrapt-1.15.0-cp35-cp35m-win32.whl", hash = "sha256:fbec11614dba0424ca72f4e8ba3c420dba07b4a7c206c8c8e4e73f2e98f4c559"}, + {file = "wrapt-1.15.0-cp35-cp35m-win_amd64.whl", hash = "sha256:fd69666217b62fa5d7c6aa88e507493a34dec4fa20c5bd925e4bc12fce586639"}, + {file = "wrapt-1.15.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:b0724f05c396b0a4c36a3226c31648385deb6a65d8992644c12a4963c70326ba"}, + {file = "wrapt-1.15.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bbeccb1aa40ab88cd29e6c7d8585582c99548f55f9b2581dfc5ba68c59a85752"}, + {file = "wrapt-1.15.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:38adf7198f8f154502883242f9fe7333ab05a5b02de7d83aa2d88ea621f13364"}, + {file = "wrapt-1.15.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:578383d740457fa790fdf85e6d346fda1416a40549fe8db08e5e9bd281c6a475"}, + {file = "wrapt-1.15.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:a4cbb9ff5795cd66f0066bdf5947f170f5d63a9274f99bdbca02fd973adcf2a8"}, + {file = "wrapt-1.15.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:af5bd9ccb188f6a5fdda9f1f09d9f4c86cc8a539bd48a0bfdc97723970348418"}, + {file = "wrapt-1.15.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:b56d5519e470d3f2fe4aa7585f0632b060d532d0696c5bdfb5e8319e1d0f69a2"}, + {file = "wrapt-1.15.0-cp36-cp36m-win32.whl", hash = "sha256:77d4c1b881076c3ba173484dfa53d3582c1c8ff1f914c6461ab70c8428b796c1"}, + {file = "wrapt-1.15.0-cp36-cp36m-win_amd64.whl", hash = "sha256:077ff0d1f9d9e4ce6476c1a924a3332452c1406e59d90a2cf24aeb29eeac9420"}, + {file = "wrapt-1.15.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:5c5aa28df055697d7c37d2099a7bc09f559d5053c3349b1ad0c39000e611d317"}, + {file = "wrapt-1.15.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3a8564f283394634a7a7054b7983e47dbf39c07712d7b177b37e03f2467a024e"}, + {file = "wrapt-1.15.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:780c82a41dc493b62fc5884fb1d3a3b81106642c5c5c78d6a0d4cbe96d62ba7e"}, + {file = "wrapt-1.15.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e169e957c33576f47e21864cf3fc9ff47c223a4ebca8960079b8bd36cb014fd0"}, + {file = "wrapt-1.15.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:b02f21c1e2074943312d03d243ac4388319f2456576b2c6023041c4d57cd7019"}, + {file = "wrapt-1.15.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:f2e69b3ed24544b0d3dbe2c5c0ba5153ce50dcebb576fdc4696d52aa22db6034"}, + {file = "wrapt-1.15.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d787272ed958a05b2c86311d3a4135d3c2aeea4fc655705f074130aa57d71653"}, + {file = "wrapt-1.15.0-cp37-cp37m-win32.whl", hash = "sha256:02fce1852f755f44f95af51f69d22e45080102e9d00258053b79367d07af39c0"}, + {file = "wrapt-1.15.0-cp37-cp37m-win_amd64.whl", hash = "sha256:abd52a09d03adf9c763d706df707c343293d5d106aea53483e0ec8d9e310ad5e"}, + {file = "wrapt-1.15.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cdb4f085756c96a3af04e6eca7f08b1345e94b53af8921b25c72f096e704e145"}, + {file = "wrapt-1.15.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:230ae493696a371f1dbffaad3dafbb742a4d27a0afd2b1aecebe52b740167e7f"}, + {file = "wrapt-1.15.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63424c681923b9f3bfbc5e3205aafe790904053d42ddcc08542181a30a7a51bd"}, + {file = "wrapt-1.15.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d6bcbfc99f55655c3d93feb7ef3800bd5bbe963a755687cbf1f490a71fb7794b"}, + {file = "wrapt-1.15.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c99f4309f5145b93eca6e35ac1a988f0dc0a7ccf9ccdcd78d3c0adf57224e62f"}, + {file = "wrapt-1.15.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b130fe77361d6771ecf5a219d8e0817d61b236b7d8b37cc045172e574ed219e6"}, + {file = "wrapt-1.15.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:96177eb5645b1c6985f5c11d03fc2dbda9ad24ec0f3a46dcce91445747e15094"}, + {file = "wrapt-1.15.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5fe3e099cf07d0fb5a1e23d399e5d4d1ca3e6dfcbe5c8570ccff3e9208274f7"}, + {file = "wrapt-1.15.0-cp38-cp38-win32.whl", hash = "sha256:abd8f36c99512755b8456047b7be10372fca271bf1467a1caa88db991e7c421b"}, + {file = "wrapt-1.15.0-cp38-cp38-win_amd64.whl", hash = "sha256:b06fa97478a5f478fb05e1980980a7cdf2712015493b44d0c87606c1513ed5b1"}, + {file = "wrapt-1.15.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2e51de54d4fb8fb50d6ee8327f9828306a959ae394d3e01a1ba8b2f937747d86"}, + {file = "wrapt-1.15.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0970ddb69bba00670e58955f8019bec4a42d1785db3faa043c33d81de2bf843c"}, + {file = "wrapt-1.15.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76407ab327158c510f44ded207e2f76b657303e17cb7a572ffe2f5a8a48aa04d"}, + {file = "wrapt-1.15.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cd525e0e52a5ff16653a3fc9e3dd827981917d34996600bbc34c05d048ca35cc"}, + {file = "wrapt-1.15.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d37ac69edc5614b90516807de32d08cb8e7b12260a285ee330955604ed9dd29"}, + {file = "wrapt-1.15.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:078e2a1a86544e644a68422f881c48b84fef6d18f8c7a957ffd3f2e0a74a0d4a"}, + {file = "wrapt-1.15.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:2cf56d0e237280baed46f0b5316661da892565ff58309d4d2ed7dba763d984b8"}, + {file = "wrapt-1.15.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:7dc0713bf81287a00516ef43137273b23ee414fe41a3c14be10dd95ed98a2df9"}, + {file = "wrapt-1.15.0-cp39-cp39-win32.whl", hash = "sha256:46ed616d5fb42f98630ed70c3529541408166c22cdfd4540b88d5f21006b0eff"}, + {file = "wrapt-1.15.0-cp39-cp39-win_amd64.whl", hash = "sha256:eef4d64c650f33347c1f9266fa5ae001440b232ad9b98f1f43dfe7a79435c0a6"}, + {file = "wrapt-1.15.0-py3-none-any.whl", hash = "sha256:64b1df0f83706b4ef4cfb4fb0e4c2669100fd7ecacfb59e091fad300d4e04640"}, + {file = "wrapt-1.15.0.tar.gz", hash = "sha256:d06730c6aed78cee4126234cf2d071e01b44b915e725a6cb439a879ec9754a3a"}, ] [[package]] @@ -826,24 +937,24 @@ files = [ [[package]] name = "zipp" -version = "3.11.0" +version = "3.15.0" description = "Backport of pathlib-compatible object wrapper for zip files" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "zipp-3.11.0-py3-none-any.whl", hash = "sha256:83a28fcb75844b5c0cdaf5aa4003c2d728c77e05f5aeabe8e95e56727005fbaa"}, - {file = "zipp-3.11.0.tar.gz", hash = "sha256:a7a22e05929290a67401440b39690ae6563279bced5f314609d9d03798f56766"}, + {file = "zipp-3.15.0-py3-none-any.whl", hash = "sha256:48904fc76a60e542af151aded95726c1a5c34ed43ab4134b597665c86d7ad556"}, + {file = "zipp-3.15.0.tar.gz", hash = "sha256:112929ad649da941c23de50f356a2b5570c954b65150642bccdd66bf194d224b"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)"] -testing = ["flake8 (<5)", "func-timeout", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] +docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +testing = ["big-O", "flake8 (<5)", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] [extras] -dev = ["boto3", "requests", "nose2", "flake8", "httpretty"] +dev = ["boto3", "flake8", "httpretty", "nose2", "requests"] [metadata] lock-version = "2.0" python-versions = ">=3.7.0,<4" -content-hash = "6ba474ff11bf0665dea4165d426c582eda61054671cd1d0d75889a24bb1bd48c" +content-hash = "220b7348acf7d71f280bee0d89763f562c191d946cb0e4ef7c46c0e6c1ff98c0" diff --git a/pyproject.toml b/pyproject.toml index b60bf1dc..8479ceff 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -26,7 +26,7 @@ classifiers = [ python = ">=3.7.0,<4" datadog = ">=0.41.0,<1.0.0" wrapt = "^1.11.2" -ddtrace = "^1.6.4" +ddtrace = "^1.15.0" urllib3 = "<2.0.0" importlib_metadata = {version = "^1.0", python = "<3.8"} boto3 = { version = "^1.10.33", optional = true } From 1b67127200495c8139480dfc67bae81ee888c287 Mon Sep 17 00:00:00 2001 From: Andrew Rodriguez Date: Thu, 22 Jun 2023 11:17:04 -0700 Subject: [PATCH 025/268] version 4.74.0 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 8479ceff..0b262030 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "4.72.0" +version = "4.74.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From ae76b331502eb082797596ad010c233778ebe2ed Mon Sep 17 00:00:00 2001 From: Andrew Rodriguez <49878080+zARODz11z@users.noreply.github.com> Date: Thu, 22 Jun 2023 13:50:39 -0700 Subject: [PATCH 026/268] add commit step before push (#342) --- scripts/publish_prod.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/publish_prod.sh b/scripts/publish_prod.sh index a1bd5596..fe7bda5d 100755 --- a/scripts/publish_prod.sh +++ b/scripts/publish_prod.sh @@ -86,6 +86,7 @@ echo "Publishing to https://pypi.org/project/datadog-lambda/" echo echo 'Publishing updates to github' +git commit pyproject.toml -m "Bump version to ${$NEW_VERSION}" git push origin main git tag "v$LAYER_VERSION" git push origin "refs/tags/v$LAYER_VERSION" From 9aef51df18adabb6b89bdbad7ec2c02abfd70a64 Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Wed, 28 Jun 2023 14:12:34 -0400 Subject: [PATCH 027/268] Aj/proactive init (#343) * feat: support proactive initialization * feat: 10 sec max init time * fix: specs * fix: format, fix missing import * feat: Only tag if it is a proactive init * feat: add units --- datadog_lambda/cold_start.py | 31 ++++++++++++++++++++++++++++--- datadog_lambda/tracing.py | 3 +++ datadog_lambda/wrapper.py | 17 +++++++++++++---- tests/test_cold_start.py | 29 +++++++++++++++++++++++++++++ tests/test_tracing.py | 13 ++++++++++--- 5 files changed, 83 insertions(+), 10 deletions(-) diff --git a/datadog_lambda/cold_start.py b/datadog_lambda/cold_start.py index a10a2ad7..0a3ba34d 100644 --- a/datadog_lambda/cold_start.py +++ b/datadog_lambda/cold_start.py @@ -6,17 +6,28 @@ logger = logging.getLogger(__name__) _cold_start = True +_proactive_initialization = False _lambda_container_initialized = False -def set_cold_start(): +def set_cold_start(init_timestamp_ns): """Set the value of the cold start global This should be executed once per Lambda execution before the execution """ global _cold_start global _lambda_container_initialized - _cold_start = not _lambda_container_initialized + global _proactive_initialization + if not _lambda_container_initialized: + now = time.time_ns() + if (now - init_timestamp_ns) // 1_000_000_000 > 10: + _cold_start = False + _proactive_initialization = True + else: + _cold_start = not _lambda_container_initialized + else: + _cold_start = False + _proactive_initialization = False _lambda_container_initialized = True @@ -25,11 +36,25 @@ def is_cold_start(): return _cold_start +def is_proactive_init(): + """Returns the value of the global proactive_initialization""" + return _proactive_initialization + + +def is_new_sandbox(): + return is_cold_start() or is_proactive_init() + + def get_cold_start_tag(): """Returns the cold start tag to be used in metrics""" return "cold_start:{}".format(str(is_cold_start()).lower()) +def get_proactive_init_tag(): + """Returns the proactive init tag to be used in metrics""" + return "proactive_initialization:{}".format(str(is_proactive_init()).lower()) + + class ImportNode(object): def __init__(self, module_name, full_file_path, start_time_ns, end_time_ns=None): self.module_name = module_name @@ -115,7 +140,7 @@ def wrapped_find_spec(*args, **kwargs): def initialize_cold_start_tracing(): if ( - is_cold_start() + is_new_sandbox() and os.environ.get("DD_TRACE_ENABLED", "true").lower() == "true" and os.environ.get("DD_COLD_START_TRACING", "true").lower() == "true" ): diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index f356e13f..198332a3 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -1211,6 +1211,7 @@ def create_function_execution_span( context, function_name, is_cold_start, + is_proactive_init, trace_context_source, merge_xray_traces, trigger_tags, @@ -1235,6 +1236,8 @@ def create_function_execution_span( "dd_trace": ddtrace_version, "span.name": "aws.lambda", } + if is_proactive_init: + tags["proactive_initialization"] = str(is_proactive_init).lower() if trace_context_source == TraceContextSource.XRAY and merge_xray_traces: tags["_dd.parent_source"] = trace_context_source tags.update(trigger_tags) diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index 6e838421..7b9e87f9 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -11,7 +11,13 @@ from time import time_ns from datadog_lambda.extension import should_use_extension, flush_extension -from datadog_lambda.cold_start import set_cold_start, is_cold_start, ColdStartTracer +from datadog_lambda.cold_start import ( + set_cold_start, + is_cold_start, + is_proactive_init, + is_new_sandbox, + ColdStartTracer, +) from datadog_lambda.constants import ( TraceContextSource, XraySubsegment, @@ -72,6 +78,8 @@ env_env_var = os.environ.get(DD_ENV, None) +init_timestamp_ns = time_ns() + """ Usage: @@ -245,7 +253,7 @@ def _inject_authorizer_span_headers(self, request_id): def _before(self, event, context): try: self.response = None - set_cold_start() + set_cold_start(init_timestamp_ns) submit_invocations_metric(context) self.trigger_tags = extract_trigger_tags(event, context) # Extract Datadog trace context and source from incoming requests @@ -272,6 +280,7 @@ def _before(self, event, context): context, self.function_name, is_cold_start(), + is_proactive_init(), trace_context_source, self.merge_xray_traces, self.trigger_tags, @@ -279,7 +288,7 @@ def _before(self, event, context): ) else: set_correlation_ids() - if profiling_env_var and is_cold_start(): + if profiling_env_var and is_new_sandbox(): self.prof.start(stop_on_exit=False, profile_children=True) logger.debug("datadog_lambda_wrapper _before() done") except Exception: @@ -299,7 +308,7 @@ def _after(self, event, context): self.trigger_tags, XraySubsegment.LAMBDA_FUNCTION_TAGS_KEY ) should_trace_cold_start = ( - dd_tracing_enabled and self.cold_start_tracing and is_cold_start() + dd_tracing_enabled and self.cold_start_tracing and is_new_sandbox() ) if should_trace_cold_start: trace_ctx = tracer.current_trace_context() diff --git a/tests/test_cold_start.py b/tests/test_cold_start.py index 56636dec..65193e1d 100644 --- a/tests/test_cold_start.py +++ b/tests/test_cold_start.py @@ -1,3 +1,4 @@ +import time import unittest import datadog_lambda.cold_start as cold_start from sys import modules, meta_path @@ -6,6 +7,34 @@ class TestColdStartTracingSetup(unittest.TestCase): + def test_proactive_init(self): + cold_start._cold_start = True + cold_start._proactive_initialization = False + cold_start._lambda_container_initialized = False + fifteen_seconds_ago = time.time_ns() - 15_000_000_000 + cold_start.set_cold_start(fifteen_seconds_ago) + self.assertTrue(cold_start.is_proactive_init()) + self.assertTrue(cold_start.is_new_sandbox()) + self.assertFalse(cold_start.is_cold_start()) + self.assertEqual( + cold_start.get_proactive_init_tag(), "proactive_initialization:true" + ) + self.assertEqual(cold_start.get_cold_start_tag(), "cold_start:false") + + def test_cold_start(self): + cold_start._cold_start = True + cold_start._proactive_initialization = False + cold_start._lambda_container_initialized = False + one_second_ago = time.time_ns() - 1_000_000_000 + cold_start.set_cold_start(one_second_ago) + self.assertFalse(cold_start.is_proactive_init()) + self.assertTrue(cold_start.is_new_sandbox()) + self.assertTrue(cold_start.is_cold_start()) + self.assertEqual( + cold_start.get_proactive_init_tag(), "proactive_initialization:false" + ) + self.assertEqual(cold_start.get_cold_start_tag(), "cold_start:true") + def test_initialize_cold_start_tracing(self): cold_start._cold_start = True cold_start.initialize_cold_start_tracing() # testing double wrapping diff --git a/tests/test_tracing.py b/tests/test_tracing.py index 74cebac4..f5f41f94 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -526,7 +526,9 @@ def test_set_correlation_ids_handle_empty_trace_context(self): class TestFunctionSpanTags(unittest.TestCase): def test_function(self): ctx = get_mock_context() - span = create_function_execution_span(ctx, "", False, {"source": ""}, False, {}) + span = create_function_execution_span( + ctx, "", False, False, {"source": ""}, False, {} + ) self.assertEqual(span.get_tag("function_arn"), function_arn) self.assertEqual(span.get_tag("function_version"), "$LATEST") self.assertEqual(span.get_tag("resource_names"), "Function") @@ -537,7 +539,9 @@ def test_function_with_version(self): ctx = get_mock_context( invoked_function_arn=function_arn + ":" + function_version ) - span = create_function_execution_span(ctx, "", False, {"source": ""}, False, {}) + span = create_function_execution_span( + ctx, "", False, False, {"source": ""}, False, {} + ) self.assertEqual(span.get_tag("function_arn"), function_arn) self.assertEqual(span.get_tag("function_version"), function_version) self.assertEqual(span.get_tag("resource_names"), "Function") @@ -546,7 +550,9 @@ def test_function_with_version(self): def test_function_with_alias(self): function_alias = "alias" ctx = get_mock_context(invoked_function_arn=function_arn + ":" + function_alias) - span = create_function_execution_span(ctx, "", False, {"source": ""}, False, {}) + span = create_function_execution_span( + ctx, "", False, False, {"source": ""}, False, {} + ) self.assertEqual(span.get_tag("function_arn"), function_arn) self.assertEqual(span.get_tag("function_version"), function_alias) self.assertEqual(span.get_tag("resource_names"), "Function") @@ -558,6 +564,7 @@ def test_function_with_trigger_tags(self): ctx, "", False, + False, {"source": ""}, False, {"function_trigger.event_source": "cloudwatch-logs"}, From 7deccbea164ce34763d7c20d4c22400a5a71046d Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Fri, 30 Jun 2023 10:25:52 -0400 Subject: [PATCH 028/268] bump to v4.75.0 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 0b262030..f484d35b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "4.74.0" +version = "4.75.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 6d6e2ae94b590daf9521281a40af2c2c062dcc30 Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Fri, 30 Jun 2023 11:04:36 -0400 Subject: [PATCH 029/268] fix: fix bad substitution error (#345) --- scripts/publish_prod.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/publish_prod.sh b/scripts/publish_prod.sh index fe7bda5d..a6ea0dee 100755 --- a/scripts/publish_prod.sh +++ b/scripts/publish_prod.sh @@ -86,7 +86,7 @@ echo "Publishing to https://pypi.org/project/datadog-lambda/" echo echo 'Publishing updates to github' -git commit pyproject.toml -m "Bump version to ${$NEW_VERSION}" +git commit pyproject.toml -m "Bump version to ${NEW_VERSION}" git push origin main git tag "v$LAYER_VERSION" git push origin "refs/tags/v$LAYER_VERSION" From ff0984bf4872affbc63fde0737ac8fa2f23cb5c1 Mon Sep 17 00:00:00 2001 From: Leandro Damascena Date: Mon, 24 Jul 2023 18:00:06 +0100 Subject: [PATCH 030/268] dev: upgrade importlib_metadata dependency (#351) --- poetry.lock | 559 ++++++++++++++++++++----------------------------- pyproject.toml | 2 +- 2 files changed, 224 insertions(+), 337 deletions(-) diff --git a/poetry.lock b/poetry.lock index 29fe6c1b..efc2f08b 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,10 +1,9 @@ -# This file is automatically @generated by Poetry 1.4.2 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.5.1 and should not be changed by hand. [[package]] name = "attrs" version = "23.1.0" description = "Classes Without Boilerplate" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -24,18 +23,17 @@ tests-no-zope = ["cloudpickle", "hypothesis", "mypy (>=1.1.1)", "pympler", "pyte [[package]] name = "boto3" -version = "1.26.158" +version = "1.28.9" description = "The AWS SDK for Python" -category = "main" optional = true python-versions = ">= 3.7" files = [ - {file = "boto3-1.26.158-py3-none-any.whl", hash = "sha256:0be407c2e941b422634766c0d754132ad4d33b5d0f84d9a30426b713b31ce3ab"}, - {file = "boto3-1.26.158.tar.gz", hash = "sha256:7f88d9403f81e6f3fc770c424f7089b15eb0553b168b1d2f979fa0d12b663b42"}, + {file = "boto3-1.28.9-py3-none-any.whl", hash = "sha256:01f078047eb4d238c6b9c6cc623f2af33b4ae67980c5326691e35cb5493ff6c7"}, + {file = "boto3-1.28.9.tar.gz", hash = "sha256:4cc0c6005be910e52077227e670930ab55a41ba86cdb6d1c052571d08cd4d32c"}, ] [package.dependencies] -botocore = ">=1.29.158,<1.30.0" +botocore = ">=1.31.9,<1.32.0" jmespath = ">=0.7.1,<2.0.0" s3transfer = ">=0.6.0,<0.7.0" @@ -44,14 +42,13 @@ crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] [[package]] name = "botocore" -version = "1.29.158" +version = "1.31.9" description = "Low-level, data-driven core of boto 3." -category = "main" optional = true python-versions = ">= 3.7" files = [ - {file = "botocore-1.29.158-py3-none-any.whl", hash = "sha256:267d4e7f36bdb45ea696386143ca6f68a358dc4baef85894cc4d9cffe97c0cd5"}, - {file = "botocore-1.29.158.tar.gz", hash = "sha256:2fd3b625f3d683d9dd6b400aba54d54a1e9b960b84ed07a466d25d1366e59482"}, + {file = "botocore-1.31.9-py3-none-any.whl", hash = "sha256:e56ccd3536a90094ea5b176b5dd33bfe4f049efdf71af468ea1661bd424c787d"}, + {file = "botocore-1.31.9.tar.gz", hash = "sha256:bd849d3ac95f1781385ed831d753a04a3ec870a59d6598175aaedd71dc2baf5f"}, ] [package.dependencies] @@ -60,13 +57,12 @@ python-dateutil = ">=2.1,<3.0.0" urllib3 = ">=1.25.4,<1.27" [package.extras] -crt = ["awscrt (==0.16.9)"] +crt = ["awscrt (==0.16.26)"] [[package]] name = "bytecode" version = "0.13.0" description = "Python module to generate and modify bytecode" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -78,7 +74,6 @@ files = [ name = "bytecode" version = "0.14.2" description = "Python module to generate and modify bytecode" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -93,7 +88,6 @@ typing-extensions = {version = "*", markers = "python_version < \"3.10\""} name = "cattrs" version = "23.1.2" description = "Composable complex class support for attrs and dataclasses." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -117,106 +111,132 @@ ujson = ["ujson (>=5.4.0,<6.0.0)"] [[package]] name = "certifi" -version = "2023.5.7" +version = "2023.7.22" description = "Python package for providing Mozilla's CA Bundle." -category = "main" optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2023.5.7-py3-none-any.whl", hash = "sha256:c6c2e98f5c7869efca1f8916fed228dd91539f9f1b444c314c06eef02980c716"}, - {file = "certifi-2023.5.7.tar.gz", hash = "sha256:0f0d56dc5a6ad56fd4ba36484d6cc34451e1c6548c61daad8c320169f91eddc7"}, + {file = "certifi-2023.7.22-py3-none-any.whl", hash = "sha256:92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9"}, + {file = "certifi-2023.7.22.tar.gz", hash = "sha256:539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082"}, ] [[package]] name = "charset-normalizer" -version = "3.1.0" +version = "3.2.0" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." -category = "main" optional = false python-versions = ">=3.7.0" files = [ - {file = "charset-normalizer-3.1.0.tar.gz", hash = "sha256:34e0a2f9c370eb95597aae63bf85eb5e96826d81e3dcf88b8886012906f509b5"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e0ac8959c929593fee38da1c2b64ee9778733cdf03c482c9ff1d508b6b593b2b"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d7fc3fca01da18fbabe4625d64bb612b533533ed10045a2ac3dd194bfa656b60"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:04eefcee095f58eaabe6dc3cc2262f3bcd776d2c67005880894f447b3f2cb9c1"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:20064ead0717cf9a73a6d1e779b23d149b53daf971169289ed2ed43a71e8d3b0"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1435ae15108b1cb6fffbcea2af3d468683b7afed0169ad718451f8db5d1aff6f"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c84132a54c750fda57729d1e2599bb598f5fa0344085dbde5003ba429a4798c0"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75f2568b4189dda1c567339b48cba4ac7384accb9c2a7ed655cd86b04055c795"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:11d3bcb7be35e7b1bba2c23beedac81ee893ac9871d0ba79effc7fc01167db6c"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:891cf9b48776b5c61c700b55a598621fdb7b1e301a550365571e9624f270c203"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:5f008525e02908b20e04707a4f704cd286d94718f48bb33edddc7d7b584dddc1"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:b06f0d3bf045158d2fb8837c5785fe9ff9b8c93358be64461a1089f5da983137"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:49919f8400b5e49e961f320c735388ee686a62327e773fa5b3ce6721f7e785ce"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:22908891a380d50738e1f978667536f6c6b526a2064156203d418f4856d6e86a"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-win32.whl", hash = "sha256:12d1a39aa6b8c6f6248bb54550efcc1c38ce0d8096a146638fd4738e42284448"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:65ed923f84a6844de5fd29726b888e58c62820e0769b76565480e1fdc3d062f8"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9a3267620866c9d17b959a84dd0bd2d45719b817245e49371ead79ed4f710d19"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6734e606355834f13445b6adc38b53c0fd45f1a56a9ba06c2058f86893ae8017"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f8303414c7b03f794347ad062c0516cee0e15f7a612abd0ce1e25caf6ceb47df"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aaf53a6cebad0eae578f062c7d462155eada9c172bd8c4d250b8c1d8eb7f916a"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3dc5b6a8ecfdc5748a7e429782598e4f17ef378e3e272eeb1340ea57c9109f41"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e1b25e3ad6c909f398df8921780d6a3d120d8c09466720226fc621605b6f92b1"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ca564606d2caafb0abe6d1b5311c2649e8071eb241b2d64e75a0d0065107e62"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b82fab78e0b1329e183a65260581de4375f619167478dddab510c6c6fb04d9b6"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:bd7163182133c0c7701b25e604cf1611c0d87712e56e88e7ee5d72deab3e76b5"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:11d117e6c63e8f495412d37e7dc2e2fff09c34b2d09dbe2bee3c6229577818be"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:cf6511efa4801b9b38dc5546d7547d5b5c6ef4b081c60b23e4d941d0eba9cbeb"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:abc1185d79f47c0a7aaf7e2412a0eb2c03b724581139193d2d82b3ad8cbb00ac"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:cb7b2ab0188829593b9de646545175547a70d9a6e2b63bf2cd87a0a391599324"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-win32.whl", hash = "sha256:c36bcbc0d5174a80d6cccf43a0ecaca44e81d25be4b7f90f0ed7bcfbb5a00909"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:cca4def576f47a09a943666b8f829606bcb17e2bc2d5911a46c8f8da45f56755"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0c95f12b74681e9ae127728f7e5409cbbef9cd914d5896ef238cc779b8152373"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fca62a8301b605b954ad2e9c3666f9d97f63872aa4efcae5492baca2056b74ab"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ac0aa6cd53ab9a31d397f8303f92c42f534693528fafbdb997c82bae6e477ad9"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c3af8e0f07399d3176b179f2e2634c3ce9c1301379a6b8c9c9aeecd481da494f"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a5fc78f9e3f501a1614a98f7c54d3969f3ad9bba8ba3d9b438c3bc5d047dd28"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:628c985afb2c7d27a4800bfb609e03985aaecb42f955049957814e0491d4006d"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:74db0052d985cf37fa111828d0dd230776ac99c740e1a758ad99094be4f1803d"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:1e8fcdd8f672a1c4fc8d0bd3a2b576b152d2a349782d1eb0f6b8e52e9954731d"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:04afa6387e2b282cf78ff3dbce20f0cc071c12dc8f685bd40960cc68644cfea6"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:dd5653e67b149503c68c4018bf07e42eeed6b4e956b24c00ccdf93ac79cdff84"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d2686f91611f9e17f4548dbf050e75b079bbc2a82be565832bc8ea9047b61c8c"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-win32.whl", hash = "sha256:4155b51ae05ed47199dc5b2a4e62abccb274cee6b01da5b895099b61b1982974"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:322102cdf1ab682ecc7d9b1c5eed4ec59657a65e1c146a0da342b78f4112db23"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e633940f28c1e913615fd624fcdd72fdba807bf53ea6925d6a588e84e1151531"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:3a06f32c9634a8705f4ca9946d667609f52cf130d5548881401f1eb2c39b1e2c"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7381c66e0561c5757ffe616af869b916c8b4e42b367ab29fedc98481d1e74e14"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3573d376454d956553c356df45bb824262c397c6e26ce43e8203c4c540ee0acb"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e89df2958e5159b811af9ff0f92614dabf4ff617c03a4c1c6ff53bf1c399e0e1"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:78cacd03e79d009d95635e7d6ff12c21eb89b894c354bd2b2ed0b4763373693b"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:de5695a6f1d8340b12a5d6d4484290ee74d61e467c39ff03b39e30df62cf83a0"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1c60b9c202d00052183c9be85e5eaf18a4ada0a47d188a83c8f5c5b23252f649"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:f645caaf0008bacf349875a974220f1f1da349c5dbe7c4ec93048cdc785a3326"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:ea9f9c6034ea2d93d9147818f17c2a0860d41b71c38b9ce4d55f21b6f9165a11"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:80d1543d58bd3d6c271b66abf454d437a438dff01c3e62fdbcd68f2a11310d4b"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:73dc03a6a7e30b7edc5b01b601e53e7fc924b04e1835e8e407c12c037e81adbd"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6f5c2e7bc8a4bf7c426599765b1bd33217ec84023033672c1e9a8b35eaeaaaf8"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-win32.whl", hash = "sha256:12a2b561af122e3d94cdb97fe6fb2bb2b82cef0cdca131646fdb940a1eda04f0"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:3160a0fd9754aab7d47f95a6b63ab355388d890163eb03b2d2b87ab0a30cfa59"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:38e812a197bf8e71a59fe55b757a84c1f946d0ac114acafaafaf21667a7e169e"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6baf0baf0d5d265fa7944feb9f7451cc316bfe30e8df1a61b1bb08577c554f31"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8f25e17ab3039b05f762b0a55ae0b3632b2e073d9c8fc88e89aca31a6198e88f"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3747443b6a904001473370d7810aa19c3a180ccd52a7157aacc264a5ac79265e"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b116502087ce8a6b7a5f1814568ccbd0e9f6cfd99948aa59b0e241dc57cf739f"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d16fd5252f883eb074ca55cb622bc0bee49b979ae4e8639fff6ca3ff44f9f854"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21fa558996782fc226b529fdd2ed7866c2c6ec91cee82735c98a197fae39f706"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6f6c7a8a57e9405cad7485f4c9d3172ae486cfef1344b5ddd8e5239582d7355e"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ac3775e3311661d4adace3697a52ac0bab17edd166087d493b52d4f4f553f9f0"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:10c93628d7497c81686e8e5e557aafa78f230cd9e77dd0c40032ef90c18f2230"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:6f4f4668e1831850ebcc2fd0b1cd11721947b6dc7c00bf1c6bd3c929ae14f2c7"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:0be65ccf618c1e7ac9b849c315cc2e8a8751d9cfdaa43027d4f6624bd587ab7e"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:53d0a3fa5f8af98a1e261de6a3943ca631c526635eb5817a87a59d9a57ebf48f"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-win32.whl", hash = "sha256:a04f86f41a8916fe45ac5024ec477f41f886b3c435da2d4e3d2709b22ab02af1"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:830d2948a5ec37c386d3170c483063798d7879037492540f10a475e3fd6f244b"}, - {file = "charset_normalizer-3.1.0-py3-none-any.whl", hash = "sha256:3d9098b479e78c85080c98e1e35ff40b4a31d8953102bb0fd7d1b6f8a2111a3d"}, + {file = "charset-normalizer-3.2.0.tar.gz", hash = "sha256:3bb3d25a8e6c0aedd251753a79ae98a093c7e7b471faa3aa9a93a81431987ace"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0b87549028f680ca955556e3bd57013ab47474c3124dc069faa0b6545b6c9710"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7c70087bfee18a42b4040bb9ec1ca15a08242cf5867c58726530bdf3945672ed"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a103b3a7069b62f5d4890ae1b8f0597618f628b286b03d4bc9195230b154bfa9"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94aea8eff76ee6d1cdacb07dd2123a68283cb5569e0250feab1240058f53b623"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:db901e2ac34c931d73054d9797383d0f8009991e723dab15109740a63e7f902a"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b0dac0ff919ba34d4df1b6131f59ce95b08b9065233446be7e459f95554c0dc8"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:193cbc708ea3aca45e7221ae58f0fd63f933753a9bfb498a3b474878f12caaad"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:09393e1b2a9461950b1c9a45d5fd251dc7c6f228acab64da1c9c0165d9c7765c"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:baacc6aee0b2ef6f3d308e197b5d7a81c0e70b06beae1f1fcacffdbd124fe0e3"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:bf420121d4c8dce6b889f0e8e4ec0ca34b7f40186203f06a946fa0276ba54029"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:c04a46716adde8d927adb9457bbe39cf473e1e2c2f5d0a16ceb837e5d841ad4f"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:aaf63899c94de41fe3cf934601b0f7ccb6b428c6e4eeb80da72c58eab077b19a"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d62e51710986674142526ab9f78663ca2b0726066ae26b78b22e0f5e571238dd"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-win32.whl", hash = "sha256:04e57ab9fbf9607b77f7d057974694b4f6b142da9ed4a199859d9d4d5c63fe96"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:48021783bdf96e3d6de03a6e39a1171ed5bd7e8bb93fc84cc649d11490f87cea"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:4957669ef390f0e6719db3613ab3a7631e68424604a7b448f079bee145da6e09"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:46fb8c61d794b78ec7134a715a3e564aafc8f6b5e338417cb19fe9f57a5a9bf2"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f779d3ad205f108d14e99bb3859aa7dd8e9c68874617c72354d7ecaec2a054ac"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f25c229a6ba38a35ae6e25ca1264621cc25d4d38dca2942a7fce0b67a4efe918"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2efb1bd13885392adfda4614c33d3b68dee4921fd0ac1d3988f8cbb7d589e72a"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f30b48dd7fa1474554b0b0f3fdfdd4c13b5c737a3c6284d3cdc424ec0ffff3a"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:246de67b99b6851627d945db38147d1b209a899311b1305dd84916f2b88526c6"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9bd9b3b31adcb054116447ea22caa61a285d92e94d710aa5ec97992ff5eb7cf3"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:8c2f5e83493748286002f9369f3e6607c565a6a90425a3a1fef5ae32a36d749d"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:3170c9399da12c9dc66366e9d14da8bf7147e1e9d9ea566067bbce7bb74bd9c2"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:7a4826ad2bd6b07ca615c74ab91f32f6c96d08f6fcc3902ceeedaec8cdc3bcd6"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:3b1613dd5aee995ec6d4c69f00378bbd07614702a315a2cf6c1d21461fe17c23"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9e608aafdb55eb9f255034709e20d5a83b6d60c054df0802fa9c9883d0a937aa"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-win32.whl", hash = "sha256:f2a1d0fd4242bd8643ce6f98927cf9c04540af6efa92323e9d3124f57727bfc1"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:681eb3d7e02e3c3655d1b16059fbfb605ac464c834a0c629048a30fad2b27489"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c57921cda3a80d0f2b8aec7e25c8aa14479ea92b5b51b6876d975d925a2ea346"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41b25eaa7d15909cf3ac4c96088c1f266a9a93ec44f87f1d13d4a0e86c81b982"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f058f6963fd82eb143c692cecdc89e075fa0828db2e5b291070485390b2f1c9c"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a7647ebdfb9682b7bb97e2a5e7cb6ae735b1c25008a70b906aecca294ee96cf4"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eef9df1eefada2c09a5e7a40991b9fc6ac6ef20b1372abd48d2794a316dc0449"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e03b8895a6990c9ab2cdcd0f2fe44088ca1c65ae592b8f795c3294af00a461c3"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:ee4006268ed33370957f55bf2e6f4d263eaf4dc3cfc473d1d90baff6ed36ce4a"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c4983bf937209c57240cff65906b18bb35e64ae872da6a0db937d7b4af845dd7"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:3bb7fda7260735efe66d5107fb7e6af6a7c04c7fce9b2514e04b7a74b06bf5dd"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:72814c01533f51d68702802d74f77ea026b5ec52793c791e2da806a3844a46c3"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:70c610f6cbe4b9fce272c407dd9d07e33e6bf7b4aa1b7ffb6f6ded8e634e3592"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-win32.whl", hash = "sha256:a401b4598e5d3f4a9a811f3daf42ee2291790c7f9d74b18d75d6e21dda98a1a1"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:c0b21078a4b56965e2b12f247467b234734491897e99c1d51cee628da9786959"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:95eb302ff792e12aba9a8b8f8474ab229a83c103d74a750ec0bd1c1eea32e669"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1a100c6d595a7f316f1b6f01d20815d916e75ff98c27a01ae817439ea7726329"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:6339d047dab2780cc6220f46306628e04d9750f02f983ddb37439ca47ced7149"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4b749b9cc6ee664a3300bb3a273c1ca8068c46be705b6c31cf5d276f8628a94"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a38856a971c602f98472050165cea2cdc97709240373041b69030be15047691f"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f87f746ee241d30d6ed93969de31e5ffd09a2961a051e60ae6bddde9ec3583aa"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89f1b185a01fe560bc8ae5f619e924407efca2191b56ce749ec84982fc59a32a"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e1c8a2f4c69e08e89632defbfabec2feb8a8d99edc9f89ce33c4b9e36ab63037"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2f4ac36d8e2b4cc1aa71df3dd84ff8efbe3bfb97ac41242fbcfc053c67434f46"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a386ebe437176aab38c041de1260cd3ea459c6ce5263594399880bbc398225b2"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:ccd16eb18a849fd8dcb23e23380e2f0a354e8daa0c984b8a732d9cfaba3a776d"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:e6a5bf2cba5ae1bb80b154ed68a3cfa2fa00fde979a7f50d6598d3e17d9ac20c"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:45de3f87179c1823e6d9e32156fb14c1927fcc9aba21433f088fdfb555b77c10"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-win32.whl", hash = "sha256:1000fba1057b92a65daec275aec30586c3de2401ccdcd41f8a5c1e2c87078706"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:8b2c760cfc7042b27ebdb4a43a4453bd829a5742503599144d54a032c5dc7e9e"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:855eafa5d5a2034b4621c74925d89c5efef61418570e5ef9b37717d9c796419c"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:203f0c8871d5a7987be20c72442488a0b8cfd0f43b7973771640fc593f56321f"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e857a2232ba53ae940d3456f7533ce6ca98b81917d47adc3c7fd55dad8fab858"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e86d77b090dbddbe78867a0275cb4df08ea195e660f1f7f13435a4649e954e5"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c4fb39a81950ec280984b3a44f5bd12819953dc5fa3a7e6fa7a80db5ee853952"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2dee8e57f052ef5353cf608e0b4c871aee320dd1b87d351c28764fc0ca55f9f4"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8700f06d0ce6f128de3ccdbc1acaea1ee264d2caa9ca05daaf492fde7c2a7200"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1920d4ff15ce893210c1f0c0e9d19bfbecb7983c76b33f046c13a8ffbd570252"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:c1c76a1743432b4b60ab3358c937a3fe1341c828ae6194108a94c69028247f22"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f7560358a6811e52e9c4d142d497f1a6e10103d3a6881f18d04dbce3729c0e2c"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:c8063cf17b19661471ecbdb3df1c84f24ad2e389e326ccaf89e3fb2484d8dd7e"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:cd6dbe0238f7743d0efe563ab46294f54f9bc8f4b9bcf57c3c666cc5bc9d1299"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:1249cbbf3d3b04902ff081ffbb33ce3377fa6e4c7356f759f3cd076cc138d020"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-win32.whl", hash = "sha256:6c409c0deba34f147f77efaa67b8e4bb83d2f11c8806405f76397ae5b8c0d1c9"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:7095f6fbfaa55defb6b733cfeb14efaae7a29f0b59d8cf213be4e7ca0b857b80"}, + {file = "charset_normalizer-3.2.0-py3-none-any.whl", hash = "sha256:8e098148dd37b4ce3baca71fb394c81dc5d9c7728c95df695d2dca218edf40e6"}, +] + +[[package]] +name = "cmake" +version = "3.27.0" +description = "CMake is an open-source, cross-platform family of tools designed to build, test and package software" +optional = false +python-versions = "*" +files = [ + {file = "cmake-3.27.0-py2.py3-none-macosx_10_10_universal2.macosx_10_10_x86_64.macosx_11_0_arm64.macosx_11_0_universal2.whl", hash = "sha256:9ccab4cd93578d3c2df32e66b44b313b75a7484032645040431dc06a583ca4aa"}, + {file = "cmake-3.27.0-py2.py3-none-manylinux2010_i686.manylinux_2_12_i686.whl", hash = "sha256:199bfaefb752e82d8067aeee5d6a6e0414fe0d60e9a3fd08e95d537a97e0db16"}, + {file = "cmake-3.27.0-py2.py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:8745eff805f36762d3e8e904698b853cb4a9da8b4b07d1c12bcd1e1a6c4a1709"}, + {file = "cmake-3.27.0-py2.py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:58a3f39d3d1bc897f05e531bfa676246a2b25d424c6a47e4b6bbc193fb560db7"}, + {file = "cmake-3.27.0-py2.py3-none-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:b470ccd3f86cf19a63f6b221c9cceebcc58e32d3787d0d5f9f43d1d91a095090"}, + {file = "cmake-3.27.0-py2.py3-none-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:35a8d397ce883e93b5e6561e2803ce9470df52283862264093c1078530f98189"}, + {file = "cmake-3.27.0-py2.py3-none-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:1f38d87b2c65763a0113f4a6c652e6f4b5adf90b384c1e1d69e4f8a3104a57d6"}, + {file = "cmake-3.27.0-py2.py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b9d5811954dcedcaa6c915c4a9bb6d64b55ac189e9cbc74be726307d9d084804"}, + {file = "cmake-3.27.0-py2.py3-none-musllinux_1_1_aarch64.whl", hash = "sha256:073e4f196d0888216e6794c08cd984ddabc108c0e4e66f48fbd7610d1e6d726d"}, + {file = "cmake-3.27.0-py2.py3-none-musllinux_1_1_i686.whl", hash = "sha256:e58e48643903e6fad76274337f9a4d3c575b8e21cd05c6214780b2c98bb0c706"}, + {file = "cmake-3.27.0-py2.py3-none-musllinux_1_1_ppc64le.whl", hash = "sha256:9740ed9f61a3bd8708a41cadd5c057c04f38e5b89bd773e369df2e210a1c55a3"}, + {file = "cmake-3.27.0-py2.py3-none-musllinux_1_1_s390x.whl", hash = "sha256:1b3189171665f5c8d748ae7fe10a29fff1ebeedeaef57b16f1ea54b1ec0fe514"}, + {file = "cmake-3.27.0-py2.py3-none-musllinux_1_1_x86_64.whl", hash = "sha256:c4c968c188e7518deb463a14e64f3a19f242c9dcf7f24e1dbcc1419690cd54e0"}, + {file = "cmake-3.27.0-py2.py3-none-win32.whl", hash = "sha256:5561aca62b65aac844f3931e74cfeb696e4534de145e3307bf942e735736541e"}, + {file = "cmake-3.27.0-py2.py3-none-win_amd64.whl", hash = "sha256:48be3afe62c9513a49be007896a4058fafec512cb1f269a50126da30aacad97f"}, + {file = "cmake-3.27.0-py2.py3-none-win_arm64.whl", hash = "sha256:6f46a170b0c9c552d52da4346534570f818195dfc4f1d0c03264e24cc348fc60"}, + {file = "cmake-3.27.0.tar.gz", hash = "sha256:d03f0a76a2b96805044ad1178b92aeeb5f695caa6776a32522bb5c430a55b4e8"}, ] +[package.extras] +test = ["coverage (>=4.2)", "flake8 (>=3.0.4)", "path.py (>=11.5.0)", "pytest (>=3.0.3)", "pytest-cov (>=2.4.0)", "pytest-runner (>=2.9)", "pytest-virtualenv (>=1.7.0)", "scikit-build (>=0.10.0)", "setuptools (>=28.0.0)", "virtualenv (>=15.0.3)", "wheel"] + [[package]] name = "coverage" version = "7.2.7" description = "Code coverage measurement for Python" -category = "main" optional = true python-versions = ">=3.7" files = [ @@ -287,14 +307,13 @@ toml = ["tomli"] [[package]] name = "datadog" -version = "0.45.0" +version = "0.46.0" description = "The Datadog Python library" -category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ - {file = "datadog-0.45.0-py2.py3-none-any.whl", hash = "sha256:144fce48bda79484b102349f159c4ea4c7cd35361f9e0d031ddf931a922a38a4"}, - {file = "datadog-0.45.0.tar.gz", hash = "sha256:6bffed67448cb4bf5dff559fb2acee1c06e7da8612b8e2a734f278b50b396603"}, + {file = "datadog-0.46.0-py2.py3-none-any.whl", hash = "sha256:3d7bcda6177b43be4cdb52e16b4bdd4f9005716c0dd7cfea009e018c36bb7a3d"}, + {file = "datadog-0.46.0.tar.gz", hash = "sha256:e4fbc92a85e2b0919a226896ae45fc5e4b356c0c57f1c2659659dfbe0789c674"}, ] [package.dependencies] @@ -304,7 +323,6 @@ requests = ">=2.6.0" name = "ddsketch" version = "2.0.4" description = "Distributed quantile sketches" -category = "main" optional = false python-versions = ">=2.7" files = [ @@ -318,81 +336,80 @@ six = "*" [[package]] name = "ddtrace" -version = "1.15.0" +version = "1.17.1" description = "Datadog APM client library" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ - {file = "ddtrace-1.15.0-cp27-cp27m-macosx_11_0_x86_64.whl", hash = "sha256:b1999cd8566dbb9d39bddf6d4d0c1de29c2664fb450fc29266fead74824c3f5d"}, - {file = "ddtrace-1.15.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:6cf4ec208a17206932537ff111188d2b014b7ef7b10b02490904b47b04282f7f"}, - {file = "ddtrace-1.15.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:017b945d382fee039eed3b6d65c0ff28e45f15fc506fd211c13af342ae080ac8"}, - {file = "ddtrace-1.15.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:ca352bcd44f880a3fc7468e267223ba5104ef788d4c22c81070c91d37db3db2b"}, - {file = "ddtrace-1.15.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:88cbe0f4355eb65cf4791bc6138e92fc7f7499f65671f2111d9d8f2e15265c18"}, - {file = "ddtrace-1.15.0-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:84dbdbf4c5cf3a01200b445565d5113f1377927a30856f98473461368e2342b3"}, - {file = "ddtrace-1.15.0-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:ecec3222ee2f55b39e76390957d68d7f9d44a06d2fe7a174fc3d192e001796dc"}, - {file = "ddtrace-1.15.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5a2ce601d0db71c98e8f58fdc47071552f39ecfac6b0bf5a543d01856295679"}, - {file = "ddtrace-1.15.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:19b12b51097e002026d8462dc5dc75763127b109e8c99def48e3f977dd8f2d41"}, - {file = "ddtrace-1.15.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5bfd8ec6bb83baca073b139501d51a1f4f17d52f7e43298aadff75ff67ea1996"}, - {file = "ddtrace-1.15.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:36aa6bf7ce975e2a592917e4f06a018940fa56ff42c4e6fe4622ed6e32df9aad"}, - {file = "ddtrace-1.15.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:a522c9e104914cd5d05e5635e2155f8ed7e36ca6a9a179b6f3d5e0705ee55da6"}, - {file = "ddtrace-1.15.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4c6d7ef4608f79bf3a7802ff86e5bc752f93938d94c004aca580539e51653e9f"}, - {file = "ddtrace-1.15.0-cp310-cp310-win32.whl", hash = "sha256:e7c997f264440c2190b94928392e59e49c441cea2edfa4d4ed7a9ed1511815f7"}, - {file = "ddtrace-1.15.0-cp310-cp310-win_amd64.whl", hash = "sha256:7a063beaf22cc0935804bbf06deb75b4aaf58b7cad959d42842fce25acaa4278"}, - {file = "ddtrace-1.15.0-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:cd486b653cae16510270900b6ab4fbb81359331e730c6d9ff5310d19a47d3253"}, - {file = "ddtrace-1.15.0-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:cdec6dad5b113d62972e0a8cb1cacd7aa73689a6455f67d82a4f6916ede96a35"}, - {file = "ddtrace-1.15.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4bc992561a158ecfac3e0cc627eeb90d8d1065d0e8793ae3e04ee06a5b0cf81"}, - {file = "ddtrace-1.15.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:94dfd564551530831fe25e46163f232bf351df087b4bd9701d518ffe37310034"}, - {file = "ddtrace-1.15.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:275d8e7c7a41f9fa63ed2d370667fd875830fb898121a479554505f6623cd334"}, - {file = "ddtrace-1.15.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:f397f4abb858f53773459c1524e81526cd3cc697c0cec99ad04ab87be9ad172e"}, - {file = "ddtrace-1.15.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:8fa49e1deaf1316e17fd6fc21ac0ea4d92d5ecd2b783b700d370fc6ba70c3988"}, - {file = "ddtrace-1.15.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5a4d8c723ac4a84b993bfeb0b476724d99296b196470c190072cd98855019eee"}, - {file = "ddtrace-1.15.0-cp311-cp311-win32.whl", hash = "sha256:af2760a4d6fe21470ca5af6b04a2c20bc5f69606508a2369c7b5a403248fb518"}, - {file = "ddtrace-1.15.0-cp311-cp311-win_amd64.whl", hash = "sha256:e40151f748c154b116f16b69031b7fbc58e04cb6d40640b7c8358ce2ab5f69df"}, - {file = "ddtrace-1.15.0-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:0737dd77ceceba3510041a1e415a1b95c523d368cb7fd9c1541c07912b0d43b0"}, - {file = "ddtrace-1.15.0-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:07a3b1fc6725abc5cf4bc441ae5e0cc9a567eecea2590222afe432a25067525c"}, - {file = "ddtrace-1.15.0-cp35-cp35m-manylinux2014_aarch64.whl", hash = "sha256:b09772d02a3294d6781eb2b3e51dd755bd24967fecfaa94f266ff21add0a1623"}, - {file = "ddtrace-1.15.0-cp35-cp35m-win32.whl", hash = "sha256:9ff9f3db0cf97f581b2c7a8abd76eb43954a0c4629cdba137f17e35333ffa182"}, - {file = "ddtrace-1.15.0-cp35-cp35m-win_amd64.whl", hash = "sha256:6afee087ae47728ba0506e530958df1cc3f63ed7be4292fabff913a9478b474e"}, - {file = "ddtrace-1.15.0-cp36-cp36m-macosx_11_0_x86_64.whl", hash = "sha256:807b4234c80a11cea987a5b23e0e4d946427e17a6a2264cc34f63bfb17f15012"}, - {file = "ddtrace-1.15.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1695052fa79b8262704e78283be4b9fea50eea762ddfbb2aabc71e70647186bd"}, - {file = "ddtrace-1.15.0-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0bcf0f016c849245d6d240dbc5d641a8e36ca1e5d69e2427a8e07bd23f6094c9"}, - {file = "ddtrace-1.15.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6863a96e692aa1af8a8cdbfecf106feaa1eb6de1ad1c552fad76c0b6923a9b5"}, - {file = "ddtrace-1.15.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:e19143fae1133d6109bb29927c676048cf8d453dd27adc0f6fc153bda5696314"}, - {file = "ddtrace-1.15.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:3f4ffa2200663b92536723209f16f67454a86e88f705df24a156cd266680db10"}, - {file = "ddtrace-1.15.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:26b8450db283d4b378b73046ecd6db01d8eb652f80b1b0888e4ed3e602070f39"}, - {file = "ddtrace-1.15.0-cp36-cp36m-win32.whl", hash = "sha256:68c00db16c7942a327898e4ac077e420d0ccd2bfd8d1adf917211687681ace79"}, - {file = "ddtrace-1.15.0-cp36-cp36m-win_amd64.whl", hash = "sha256:917b90931e6a83268e180e295e1188c218387c524de9552fba946dabdc9f780a"}, - {file = "ddtrace-1.15.0-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:08dae33cbc49c1634458bf3f0b2263ed589f3f0a9d26efd2baa69642d932a8fd"}, - {file = "ddtrace-1.15.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c8d2c8c6d9d0d0aa28826e43f60103da8a1a0b709801547443a9a0f71b6fb39"}, - {file = "ddtrace-1.15.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b5e2dbf357ac907c1724401586fe2a3379f8d77b9b3e7598f1006fa37138bb2e"}, - {file = "ddtrace-1.15.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a435e143b5324453b598923ca87f9f298fd3e3b79a6ebf689d8a6f6991a71bad"}, - {file = "ddtrace-1.15.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:88006fa7755fe3b3c975a9ae4ddba6231929f7961a374105cda53d9b3db2cf56"}, - {file = "ddtrace-1.15.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:f8a71a6409df291a38553e980df1bcfbd9018b33b450e5508b5a1518f564dce4"}, - {file = "ddtrace-1.15.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:52e2d5ab754e7b866d43bba7e86b853a7024667994b31cb690ff5183d45f4d43"}, - {file = "ddtrace-1.15.0-cp37-cp37m-win32.whl", hash = "sha256:abeec391239f59257c7a9a0e9ed6d4c0777256bd5ee89cfa057d42ced603ad05"}, - {file = "ddtrace-1.15.0-cp37-cp37m-win_amd64.whl", hash = "sha256:bdae8d560f10da94f3cf77f548b54b537a47ba56462bd96686129f908c7930b1"}, - {file = "ddtrace-1.15.0-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:ed6801ea071cd4879c49d2a30476afe1fc9a969485f95efd5ef754b43df1142c"}, - {file = "ddtrace-1.15.0-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:b17903b46f6ce66e3f8645b0e7553fea7720c2e69fcf38b3e486ca15eb50a618"}, - {file = "ddtrace-1.15.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f03134274f7c4ef11d52764eaefd6e0355233e4e7d0ad88c872275dd344fd7ec"}, - {file = "ddtrace-1.15.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:61a1cc91877c09288e85f742d3659007f4b925fc575aa66e48ce9e116af835e1"}, - {file = "ddtrace-1.15.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8b8578c3d5ab888ee9f1fe57d8b63cbc4cbf38c4444b501b830b7ab7abb0e5ef"}, - {file = "ddtrace-1.15.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2623759718ec083ab29a70d3f9902e7785dcc6b226fd4378de2605c3b4cd887a"}, - {file = "ddtrace-1.15.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:15d1db69608dc73a22c123525a66f6ce0e85dce57f322d67c6fbbf7f23d3a21c"}, - {file = "ddtrace-1.15.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:9af6737ba124a791dd632a818fa1e26914be5da7bea530bb11863f35376256b9"}, - {file = "ddtrace-1.15.0-cp38-cp38-win32.whl", hash = "sha256:2b9b76144690a6dd3f8e114baa8263d4eeaea3dd8fe7905201fb3a910451c5c6"}, - {file = "ddtrace-1.15.0-cp38-cp38-win_amd64.whl", hash = "sha256:15701417ce75896041c20d3b076cd04d5a73529a50c38dcc4bd905c4388b24fc"}, - {file = "ddtrace-1.15.0-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:a7e5bc435a75d59c1e24c10b5823d9640728290ddb452c86c9fd6d63ca9d4edb"}, - {file = "ddtrace-1.15.0-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:1db33af2792e5b07f45c6880831edd9bb016000cce580fb023a8fe5130fc0a6f"}, - {file = "ddtrace-1.15.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0af977fe8e4d7344793dcd447c8687064b49da5a274931bfed4fe9ec3463ea65"}, - {file = "ddtrace-1.15.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a496201556d1ad95219a032a03de8927108411f7bc7d4dbcefda3bf8785b5663"}, - {file = "ddtrace-1.15.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a6ef7c443207b898a25d5899873d8de476c349460c1d501c8c706c4dba0e606a"}, - {file = "ddtrace-1.15.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4f3700a1bc59277e7b576c87cebffe95bd1256b2207dff36cdfb29a0f26416b2"}, - {file = "ddtrace-1.15.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:93269e17aadc054c357c917e66319b966a8a18e735b81796b61ae282946a2170"}, - {file = "ddtrace-1.15.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8f0ed9fc210ba7fd31d64fb1e2435b382fede962b15d5661ed38566ad49d2c6f"}, - {file = "ddtrace-1.15.0-cp39-cp39-win32.whl", hash = "sha256:dd21d45b9a78e94dcbd9171dd73706d02eee762cbf2a3f00ffaad7e69128b159"}, - {file = "ddtrace-1.15.0-cp39-cp39-win_amd64.whl", hash = "sha256:1d1289506153af3c774e375f6aa803bd9d4c91b2ba60d9e0e06d8a25e784c4bc"}, - {file = "ddtrace-1.15.0.tar.gz", hash = "sha256:b275e25cd723cdd01d6901e690cea7852b742cfebfe800eb289e483f8f398bd0"}, + {file = "ddtrace-1.17.1-cp27-cp27m-macosx_11_0_x86_64.whl", hash = "sha256:c03f33ada5853507fc500e2232c4ec6b5bc17d0f9300ac383a816a937b31c4ae"}, + {file = "ddtrace-1.17.1-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:4da15eb2508d87bfe8d426f94e6835168e8554ddf651053efebaa4b1aff31506"}, + {file = "ddtrace-1.17.1-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:8f0472afa42185b033ba31e423fb0d35a851252eb790757547f032450d80e313"}, + {file = "ddtrace-1.17.1-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:7d563b9712fcfa659f5e2f6b93fd1ac3e9f4ecaa3e00127f05efe2553d446515"}, + {file = "ddtrace-1.17.1-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:2964efad960a8aae2169b1b8654ec2ea71a633c6649a0dc1249a972eb1b2991b"}, + {file = "ddtrace-1.17.1-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:ffc707f2be400d5ad68ec321eec79393f0da40a84e30792084aa39b2d764510e"}, + {file = "ddtrace-1.17.1-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:d93337e941a408b6027dbe781efb1576cbb04802af5b88dd70f3905d5c3efb16"}, + {file = "ddtrace-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ecedb514e610027a918e749d98d37a42f60bcbba8bee3d24a4b98c453bc50b8f"}, + {file = "ddtrace-1.17.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:63b493934e6e942151400b0bd904554ce0f5b83c46b21dfb7822551a38d4a80d"}, + {file = "ddtrace-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c3a1519cddaae319a3060c8a60c08dace6d1b7903adc9ee85daa5967d04348ce"}, + {file = "ddtrace-1.17.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:dbe105ebbf7e6a1ea7c0f367b129019925bef69be8797c7f21d6ca798e4f72ec"}, + {file = "ddtrace-1.17.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:fe3543f05175617ac03254409a207110e8c598cbc5cf9d3366dfa3b5f245b6af"}, + {file = "ddtrace-1.17.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f95187c1016fe83d177caa69cfef5a6c503dc7d3fbed98071b9254944fcb99c2"}, + {file = "ddtrace-1.17.1-cp310-cp310-win32.whl", hash = "sha256:1cfd31b42445d74afcd2b4ea8ae5263e83b1463c9e720d954ca6ee7b016c29d4"}, + {file = "ddtrace-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:7264e83e9ec88a3306e3deb8f75377b60391e27a6fad473d8398fde2cfb089d6"}, + {file = "ddtrace-1.17.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:45d299e36a01b0bfe6e8f4dbcc72d6392c1bb9c37a3c90ff6e446ab6987334fa"}, + {file = "ddtrace-1.17.1-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:69aaca3e2fa60bf6227b9efc178df95624a05766b0c01669989eb26c2a371441"}, + {file = "ddtrace-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9e147b355ebfa5db7f69e9419a6ca36569de2497b7f96323690044f3882a6b2e"}, + {file = "ddtrace-1.17.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:da4422526d2b904dc0e6a284ab1b4137db23f9e87b73afe7faeccb9f7bc7f38e"}, + {file = "ddtrace-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2b8b5674f900e67234d64403d93af599944e1b55c59ca2c911c608743bc32d9"}, + {file = "ddtrace-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ad1488feeead393123cab86c31214902f687810878f03ace6952f8b9ad7802f3"}, + {file = "ddtrace-1.17.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:d2aaf7ac883fd736e7ac2e25e3a46686d77e829da31d93e73b7c25cfc8844289"}, + {file = "ddtrace-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:897a26b37ce1d9e33d386831707c0fc5e707170ddf8061500a3d23dcb01670cb"}, + {file = "ddtrace-1.17.1-cp311-cp311-win32.whl", hash = "sha256:45ee0b553bcb28f4c314bd4e172deb7cddb0f3ce1e02e8db7eb7115479002f38"}, + {file = "ddtrace-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:c826f9e4eedb92d58239e0f89eb33282e938dd6532604c77691966b18c53ced8"}, + {file = "ddtrace-1.17.1-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:525f3dcf98e92c18559035bdec8db67c4868b5c4aea8e28173fc2412fb298986"}, + {file = "ddtrace-1.17.1-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:3919586b6bade3f55f45df86b4bf3625047fb814952b6b959d634cd046c38346"}, + {file = "ddtrace-1.17.1-cp35-cp35m-manylinux2014_aarch64.whl", hash = "sha256:3547e4510dc6e6678ca8d69798a55dd30eda32ec04075d74437b957f6018aa47"}, + {file = "ddtrace-1.17.1-cp35-cp35m-win32.whl", hash = "sha256:336e7f51996e27bed4325afa26bcc9159987bb65a2a0313b7966d9cf51329ab8"}, + {file = "ddtrace-1.17.1-cp35-cp35m-win_amd64.whl", hash = "sha256:cd31b7fef4541583e86e98a32a9bb258b571367e453f682c020a0357e34382f2"}, + {file = "ddtrace-1.17.1-cp36-cp36m-macosx_11_0_x86_64.whl", hash = "sha256:01cf264fa1b87c57a2f468bc1e778cfd85172253060243d380ef808cb4fe508b"}, + {file = "ddtrace-1.17.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e59fd650f0b80ee4f6a6c0859f60968ec494a39621def7498aff2e01ea2786d"}, + {file = "ddtrace-1.17.1-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:828fe6f4ba7ab33d849ab4430860ffe6b97645b922eb4a48485f66a4f750368c"}, + {file = "ddtrace-1.17.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8ee7a6a00c6ea226b753e996be31aa63fb4046e38dbe705e33d5b6479dad3e5e"}, + {file = "ddtrace-1.17.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:9aac5e9dc01638c54ed7475d430f6367bcbf84ba0085e93bc817c97d322fa708"}, + {file = "ddtrace-1.17.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:20148f79134e7d1624d06b48459f5bdbb653393d48041833be056da4e0468005"}, + {file = "ddtrace-1.17.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:5851034a6cd10712f89cce08100fd6c18e8f003dd44e95020f8d0c3defd677eb"}, + {file = "ddtrace-1.17.1-cp36-cp36m-win32.whl", hash = "sha256:b2672821bcd0e6d05b3717b35b23ad2c498e6ffa2d409cb4f02675acda841ced"}, + {file = "ddtrace-1.17.1-cp36-cp36m-win_amd64.whl", hash = "sha256:23f3a663c7c4b5970996cd8d02490339781db186da691d9a636d0c6efd74f44c"}, + {file = "ddtrace-1.17.1-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:b83770ce0a3e9cc755d206d7c444b8baca564bed888f36f93f7f832cae45f2db"}, + {file = "ddtrace-1.17.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d2cfa5ab6e12565358de637c6e7471d9ccb953308962ebe9f269213ac15963e5"}, + {file = "ddtrace-1.17.1-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6148358ea8c263219d34bf685949977dd53410bbe4ad0bab312590c73e053c1f"}, + {file = "ddtrace-1.17.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ec1d7477d27368422f5e3a6849205e6072a9ce22e6729bac289ceddb8e90c94"}, + {file = "ddtrace-1.17.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:44a3f465fd14a0fb4a1afd75d569853d58ccf8a5a098832c6feb30973447c347"}, + {file = "ddtrace-1.17.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:5014019b9e05715affdbfc9aef58fad70d5e3577f9ee26806db010429e5f918d"}, + {file = "ddtrace-1.17.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:59d3d25f901e601cb90165a4447806d1b94dfcff4ad51bf525479f4f7cae8da2"}, + {file = "ddtrace-1.17.1-cp37-cp37m-win32.whl", hash = "sha256:5dde643c651a8e96dec6c3ebb2e1b3e56fa3dff82988eaee206eb0010c56036d"}, + {file = "ddtrace-1.17.1-cp37-cp37m-win_amd64.whl", hash = "sha256:a25b20f830630f3dc45ab8af2be811ff3f0f4f9430688c20003fb6fdedd857e9"}, + {file = "ddtrace-1.17.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:878a0dfa195029f0fe8ae1d9788caada72ba326c90137f3df78a19062ade5836"}, + {file = "ddtrace-1.17.1-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:9587a247fd2c5d02ce64fef5d0317beb0455f94525ef53e7fa8d5268d93e8271"}, + {file = "ddtrace-1.17.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ae0e740e7cf76ae475fa4bf36df1458b82e2fcf6d90731894afe5c92c42a203"}, + {file = "ddtrace-1.17.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:96afa2aaf627caee4afd65b919bf8e1fb17d5aa69ea32b345e8076a39327558e"}, + {file = "ddtrace-1.17.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b14677d9b8db4d58deae8c5128df61f4148d40d0967e5f33cbbebdcf1e94500f"}, + {file = "ddtrace-1.17.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:891df3133de285e08af4fe1c0b22d322bca49554ef63864187115acec9b7455e"}, + {file = "ddtrace-1.17.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:51e26935bdf779723646eea1b651d429eb49ca8cb7ec1cd5a17e9d8252cd8579"}, + {file = "ddtrace-1.17.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:25aa1c136af010ae435751ba917e7fca4bee5d14e7cfcd95a5488abf46e6eb14"}, + {file = "ddtrace-1.17.1-cp38-cp38-win32.whl", hash = "sha256:52558471cb5a33f1e256388d15a1ac41d2e00e07c3db1abf9dd88c76936b0089"}, + {file = "ddtrace-1.17.1-cp38-cp38-win_amd64.whl", hash = "sha256:88b1e205bab48b101d5c0a162a834bc6d40f55ba5a26a8ce5a90baeb5dd630b8"}, + {file = "ddtrace-1.17.1-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:4701394b010609ea49ea1da184b0427da361089d670fc13eeb516f806d201a4c"}, + {file = "ddtrace-1.17.1-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:1adbd17fd4d4492819737775c9f2ed70b667ad6f866ed123eeda2ef127939f9d"}, + {file = "ddtrace-1.17.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0044149ccb10fd732c34385500afb3be41c835a136b2734a1e90bb7b4b81bd41"}, + {file = "ddtrace-1.17.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8e669a67541f353ffb95ae165d77d43842e7d909a1ab47ffeeb1564eadcd9c6f"}, + {file = "ddtrace-1.17.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:09cb358184c250d2ebef2535d9c037099f9f5e6e1bb74c0c3f10e31224026956"}, + {file = "ddtrace-1.17.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:98e49005001acecdec2616ea063e743bde782f88b1a8c616349ee29a72d44f7e"}, + {file = "ddtrace-1.17.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:c8a204e83d6422521d233c18213b6e7e266422d93ef1d0c7d0e7802887688e23"}, + {file = "ddtrace-1.17.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:2668f87347b364c6ec8f8c3a5c3da82a2219621756e887eb2873fdcf3793c78d"}, + {file = "ddtrace-1.17.1-cp39-cp39-win32.whl", hash = "sha256:2c2ebebb4704d89714f9c9681acc07d3b84aa29bb719c2bc93c4b9e187f5e113"}, + {file = "ddtrace-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:293f0a50891fc79f477b0a268adf42bca8b9b4944475a6018225ffc1e322afb6"}, + {file = "ddtrace-1.17.1.tar.gz", hash = "sha256:7e1639ccfbf00e6fd610798bf6095c068a4648378e0a2e05571604442b33abb0"}, ] [package.dependencies] @@ -402,10 +419,10 @@ bytecode = [ {version = "*", markers = "python_version >= \"3.8\""}, ] cattrs = {version = "*", markers = "python_version >= \"3.7\""} +cmake = {version = ">=3.24.2", markers = "python_version >= \"3.6\""} ddsketch = ">=2.0.1" envier = "*" importlib-metadata = {version = "*", markers = "python_version < \"3.8\""} -jsonschema = "*" opentelemetry-api = {version = ">=1", markers = "python_version >= \"3.7\""} protobuf = {version = ">=3", markers = "python_version >= \"3.7\""} six = ">=1.12.0" @@ -419,7 +436,6 @@ opentracing = ["opentracing (>=2.0.0)"] name = "deprecated" version = "1.2.14" description = "Python @deprecated decorator to deprecate old python classes, functions or methods." -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -437,7 +453,6 @@ dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "sphinx (<2)", "tox"] name = "envier" version = "0.4.0" description = "Python application configuration via the environment" -category = "main" optional = false python-versions = ">=2.7" files = [ @@ -450,14 +465,13 @@ mypy = ["mypy"] [[package]] name = "exceptiongroup" -version = "1.1.1" +version = "1.1.2" description = "Backport of PEP 654 (exception groups)" -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "exceptiongroup-1.1.1-py3-none-any.whl", hash = "sha256:232c37c63e4f682982c8b6459f33a8981039e5fb8756b2074364e5055c498c9e"}, - {file = "exceptiongroup-1.1.1.tar.gz", hash = "sha256:d484c3090ba2889ae2928419117447a14daf3c1231d5e30d0aae34f354f01785"}, + {file = "exceptiongroup-1.1.2-py3-none-any.whl", hash = "sha256:e346e69d186172ca7cf029c8c1d16235aa0e04035e5750b4b95039e65204328f"}, + {file = "exceptiongroup-1.1.2.tar.gz", hash = "sha256:12c3e887d6485d16943a309616de20ae5582633e0a2eda17f4e10fd61c1e8af5"}, ] [package.extras] @@ -467,7 +481,6 @@ test = ["pytest (>=6)"] name = "flake8" version = "3.9.2" description = "the modular source code checker: pep8 pyflakes and co" -category = "main" optional = true python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" files = [ @@ -485,7 +498,6 @@ pyflakes = ">=2.3.0,<2.4.0" name = "httpretty" version = "0.9.7" description = "HTTP client mock for Python" -category = "main" optional = true python-versions = "*" files = [ @@ -499,7 +511,6 @@ six = "*" name = "idna" version = "3.4" description = "Internationalized Domain Names in Applications (IDNA)" -category = "main" optional = false python-versions = ">=3.5" files = [ @@ -509,47 +520,28 @@ files = [ [[package]] name = "importlib-metadata" -version = "1.7.0" +version = "6.7.0" description = "Read metadata from Python packages" -category = "main" -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" -files = [ - {file = "importlib_metadata-1.7.0-py2.py3-none-any.whl", hash = "sha256:dc15b2969b4ce36305c51eebe62d418ac7791e9a157911d58bfb1f9ccd8e2070"}, - {file = "importlib_metadata-1.7.0.tar.gz", hash = "sha256:90bb658cdbbf6d1735b6341ce708fc7024a3e14e99ffdc5783edea9f9b077f83"}, -] - -[package.dependencies] -zipp = ">=0.5" - -[package.extras] -docs = ["rst.linker", "sphinx"] -testing = ["importlib-resources (>=1.3)", "packaging", "pep517"] - -[[package]] -name = "importlib-resources" -version = "5.12.0" -description = "Read resources from Python packages" -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "importlib_resources-5.12.0-py3-none-any.whl", hash = "sha256:7b1deeebbf351c7578e09bf2f63fa2ce8b5ffec296e0d349139d43cca061a81a"}, - {file = "importlib_resources-5.12.0.tar.gz", hash = "sha256:4be82589bf5c1d7999aedf2a45159d10cb3ca4f19b2271f8792bc8e6da7b22f6"}, + {file = "importlib_metadata-6.7.0-py3-none-any.whl", hash = "sha256:cb52082e659e97afc5dac71e79de97d8681de3aa07ff18578330904a9d18e5b5"}, + {file = "importlib_metadata-6.7.0.tar.gz", hash = "sha256:1aaf550d4f73e5d6783e7acb77aec43d49da8017410afae93822cc9cca98c4d4"}, ] [package.dependencies] -zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""} +typing-extensions = {version = ">=3.6.4", markers = "python_version < \"3.8\""} +zipp = ">=0.5" [package.extras] docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["flake8 (<5)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] +perf = ["ipython"] +testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)", "pytest-ruff"] [[package]] name = "jmespath" version = "1.0.1" description = "JSON Matching Expressions" -category = "main" optional = true python-versions = ">=3.7" files = [ @@ -557,35 +549,10 @@ files = [ {file = "jmespath-1.0.1.tar.gz", hash = "sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe"}, ] -[[package]] -name = "jsonschema" -version = "4.17.3" -description = "An implementation of JSON Schema validation for Python" -category = "main" -optional = false -python-versions = ">=3.7" -files = [ - {file = "jsonschema-4.17.3-py3-none-any.whl", hash = "sha256:a870ad254da1a8ca84b6a2905cac29d265f805acc57af304784962a2aa6508f6"}, - {file = "jsonschema-4.17.3.tar.gz", hash = "sha256:0f864437ab8b6076ba6707453ef8f98a6a0d512a80e93f8abdb676f737ecb60d"}, -] - -[package.dependencies] -attrs = ">=17.4.0" -importlib-metadata = {version = "*", markers = "python_version < \"3.8\""} -importlib-resources = {version = ">=1.4.0", markers = "python_version < \"3.9\""} -pkgutil-resolve-name = {version = ">=1.3.10", markers = "python_version < \"3.9\""} -pyrsistent = ">=0.14.0,<0.17.0 || >0.17.0,<0.17.1 || >0.17.1,<0.17.2 || >0.17.2" -typing-extensions = {version = "*", markers = "python_version < \"3.8\""} - -[package.extras] -format = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3987", "uri-template", "webcolors (>=1.11)"] -format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "uri-template", "webcolors (>=1.11)"] - [[package]] name = "mccabe" version = "0.6.1" description = "McCabe checker, plugin for flake8" -category = "main" optional = true python-versions = "*" files = [ @@ -597,7 +564,6 @@ files = [ name = "nose2" version = "0.9.2" description = "unittest2 with plugins, the succesor to nose" -category = "main" optional = true python-versions = "*" files = [ @@ -615,60 +581,45 @@ doc = ["Sphinx (>=1.6.5)", "mock", "sphinx-rtd-theme"] [[package]] name = "opentelemetry-api" -version = "1.15.0" +version = "1.19.0" description = "OpenTelemetry Python API" -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "opentelemetry_api-1.15.0-py3-none-any.whl", hash = "sha256:e6c2d2e42140fd396e96edf75a7ceb11073f4efb4db87565a431cc9d0f93f2e0"}, - {file = "opentelemetry_api-1.15.0.tar.gz", hash = "sha256:79ab791b4aaad27acc3dc3ba01596db5b5aac2ef75c70622c6038051d6c2cded"}, + {file = "opentelemetry_api-1.19.0-py3-none-any.whl", hash = "sha256:dcd2a0ad34b691964947e1d50f9e8c415c32827a1d87f0459a72deb9afdf5597"}, + {file = "opentelemetry_api-1.19.0.tar.gz", hash = "sha256:db374fb5bea00f3c7aa290f5d94cea50b659e6ea9343384c5f6c2bb5d5e8db65"}, ] [package.dependencies] deprecated = ">=1.2.6" -setuptools = ">=16.0" - -[[package]] -name = "pkgutil-resolve-name" -version = "1.3.10" -description = "Resolve a name to an object." -category = "main" -optional = false -python-versions = ">=3.6" -files = [ - {file = "pkgutil_resolve_name-1.3.10-py3-none-any.whl", hash = "sha256:ca27cc078d25c5ad71a9de0a7a330146c4e014c2462d9af19c6b828280649c5e"}, - {file = "pkgutil_resolve_name-1.3.10.tar.gz", hash = "sha256:357d6c9e6a755653cfd78893817c0853af365dd51ec97f3d358a819373bbd174"}, -] +importlib-metadata = ">=6.0,<7.0" [[package]] name = "protobuf" -version = "4.23.3" +version = "4.23.4" description = "" -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "protobuf-4.23.3-cp310-abi3-win32.whl", hash = "sha256:514b6bbd54a41ca50c86dd5ad6488afe9505901b3557c5e0f7823a0cf67106fb"}, - {file = "protobuf-4.23.3-cp310-abi3-win_amd64.whl", hash = "sha256:cc14358a8742c4e06b1bfe4be1afbdf5c9f6bd094dff3e14edb78a1513893ff5"}, - {file = "protobuf-4.23.3-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:2991f5e7690dab569f8f81702e6700e7364cc3b5e572725098215d3da5ccc6ac"}, - {file = "protobuf-4.23.3-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:08fe19d267608d438aa37019236db02b306e33f6b9902c3163838b8e75970223"}, - {file = "protobuf-4.23.3-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:3b01a5274ac920feb75d0b372d901524f7e3ad39c63b1a2d55043f3887afe0c1"}, - {file = "protobuf-4.23.3-cp37-cp37m-win32.whl", hash = "sha256:aca6e86a08c5c5962f55eac9b5bd6fce6ed98645d77e8bfc2b952ecd4a8e4f6a"}, - {file = "protobuf-4.23.3-cp37-cp37m-win_amd64.whl", hash = "sha256:0149053336a466e3e0b040e54d0b615fc71de86da66791c592cc3c8d18150bf8"}, - {file = "protobuf-4.23.3-cp38-cp38-win32.whl", hash = "sha256:84ea0bd90c2fdd70ddd9f3d3fc0197cc24ecec1345856c2b5ba70e4d99815359"}, - {file = "protobuf-4.23.3-cp38-cp38-win_amd64.whl", hash = "sha256:3bcbeb2bf4bb61fe960dd6e005801a23a43578200ea8ceb726d1f6bd0e562ba1"}, - {file = "protobuf-4.23.3-cp39-cp39-win32.whl", hash = "sha256:5cb9e41188737f321f4fce9a4337bf40a5414b8d03227e1d9fbc59bc3a216e35"}, - {file = "protobuf-4.23.3-cp39-cp39-win_amd64.whl", hash = "sha256:29660574cd769f2324a57fb78127cda59327eb6664381ecfe1c69731b83e8288"}, - {file = "protobuf-4.23.3-py3-none-any.whl", hash = "sha256:447b9786ac8e50ae72cae7a2eec5c5df6a9dbf9aa6f908f1b8bda6032644ea62"}, - {file = "protobuf-4.23.3.tar.gz", hash = "sha256:7a92beb30600332a52cdadbedb40d33fd7c8a0d7f549c440347bc606fb3fe34b"}, + {file = "protobuf-4.23.4-cp310-abi3-win32.whl", hash = "sha256:5fea3c64d41ea5ecf5697b83e41d09b9589e6f20b677ab3c48e5f242d9b7897b"}, + {file = "protobuf-4.23.4-cp310-abi3-win_amd64.whl", hash = "sha256:7b19b6266d92ca6a2a87effa88ecc4af73ebc5cfde194dc737cf8ef23a9a3b12"}, + {file = "protobuf-4.23.4-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:8547bf44fe8cec3c69e3042f5c4fb3e36eb2a7a013bb0a44c018fc1e427aafbd"}, + {file = "protobuf-4.23.4-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:fee88269a090ada09ca63551bf2f573eb2424035bcf2cb1b121895b01a46594a"}, + {file = "protobuf-4.23.4-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:effeac51ab79332d44fba74660d40ae79985901ac21bca408f8dc335a81aa597"}, + {file = "protobuf-4.23.4-cp37-cp37m-win32.whl", hash = "sha256:c3e0939433c40796ca4cfc0fac08af50b00eb66a40bbbc5dee711998fb0bbc1e"}, + {file = "protobuf-4.23.4-cp37-cp37m-win_amd64.whl", hash = "sha256:9053df6df8e5a76c84339ee4a9f5a2661ceee4a0dab019e8663c50ba324208b0"}, + {file = "protobuf-4.23.4-cp38-cp38-win32.whl", hash = "sha256:e1c915778d8ced71e26fcf43c0866d7499891bca14c4368448a82edc61fdbc70"}, + {file = "protobuf-4.23.4-cp38-cp38-win_amd64.whl", hash = "sha256:351cc90f7d10839c480aeb9b870a211e322bf05f6ab3f55fcb2f51331f80a7d2"}, + {file = "protobuf-4.23.4-cp39-cp39-win32.whl", hash = "sha256:6dd9b9940e3f17077e820b75851126615ee38643c2c5332aa7a359988820c720"}, + {file = "protobuf-4.23.4-cp39-cp39-win_amd64.whl", hash = "sha256:0a5759f5696895de8cc913f084e27fd4125e8fb0914bb729a17816a33819f474"}, + {file = "protobuf-4.23.4-py3-none-any.whl", hash = "sha256:e9d0be5bf34b275b9f87ba7407796556abeeba635455d036c7351f7c183ef8ff"}, + {file = "protobuf-4.23.4.tar.gz", hash = "sha256:ccd9430c0719dce806b93f89c91de7977304729e55377f872a92465d548329a9"}, ] [[package]] name = "pycodestyle" version = "2.7.0" description = "Python style guide checker" -category = "main" optional = true python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -680,7 +631,6 @@ files = [ name = "pyflakes" version = "2.3.1" description = "passive checker of Python programs" -category = "main" optional = true python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -688,48 +638,10 @@ files = [ {file = "pyflakes-2.3.1.tar.gz", hash = "sha256:f5bc8ecabc05bb9d291eb5203d6810b49040f6ff446a756326104746cc00c1db"}, ] -[[package]] -name = "pyrsistent" -version = "0.19.3" -description = "Persistent/Functional/Immutable data structures" -category = "main" -optional = false -python-versions = ">=3.7" -files = [ - {file = "pyrsistent-0.19.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:20460ac0ea439a3e79caa1dbd560344b64ed75e85d8703943e0b66c2a6150e4a"}, - {file = "pyrsistent-0.19.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4c18264cb84b5e68e7085a43723f9e4c1fd1d935ab240ce02c0324a8e01ccb64"}, - {file = "pyrsistent-0.19.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4b774f9288dda8d425adb6544e5903f1fb6c273ab3128a355c6b972b7df39dcf"}, - {file = "pyrsistent-0.19.3-cp310-cp310-win32.whl", hash = "sha256:5a474fb80f5e0d6c9394d8db0fc19e90fa540b82ee52dba7d246a7791712f74a"}, - {file = "pyrsistent-0.19.3-cp310-cp310-win_amd64.whl", hash = "sha256:49c32f216c17148695ca0e02a5c521e28a4ee6c5089f97e34fe24163113722da"}, - {file = "pyrsistent-0.19.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f0774bf48631f3a20471dd7c5989657b639fd2d285b861237ea9e82c36a415a9"}, - {file = "pyrsistent-0.19.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ab2204234c0ecd8b9368dbd6a53e83c3d4f3cab10ecaf6d0e772f456c442393"}, - {file = "pyrsistent-0.19.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e42296a09e83028b3476f7073fcb69ffebac0e66dbbfd1bd847d61f74db30f19"}, - {file = "pyrsistent-0.19.3-cp311-cp311-win32.whl", hash = "sha256:64220c429e42a7150f4bfd280f6f4bb2850f95956bde93c6fda1b70507af6ef3"}, - {file = "pyrsistent-0.19.3-cp311-cp311-win_amd64.whl", hash = "sha256:016ad1afadf318eb7911baa24b049909f7f3bb2c5b1ed7b6a8f21db21ea3faa8"}, - {file = "pyrsistent-0.19.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c4db1bd596fefd66b296a3d5d943c94f4fac5bcd13e99bffe2ba6a759d959a28"}, - {file = "pyrsistent-0.19.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aeda827381f5e5d65cced3024126529ddc4289d944f75e090572c77ceb19adbf"}, - {file = "pyrsistent-0.19.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:42ac0b2f44607eb92ae88609eda931a4f0dfa03038c44c772e07f43e738bcac9"}, - {file = "pyrsistent-0.19.3-cp37-cp37m-win32.whl", hash = "sha256:e8f2b814a3dc6225964fa03d8582c6e0b6650d68a232df41e3cc1b66a5d2f8d1"}, - {file = "pyrsistent-0.19.3-cp37-cp37m-win_amd64.whl", hash = "sha256:c9bb60a40a0ab9aba40a59f68214eed5a29c6274c83b2cc206a359c4a89fa41b"}, - {file = "pyrsistent-0.19.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:a2471f3f8693101975b1ff85ffd19bb7ca7dd7c38f8a81701f67d6b4f97b87d8"}, - {file = "pyrsistent-0.19.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cc5d149f31706762c1f8bda2e8c4f8fead6e80312e3692619a75301d3dbb819a"}, - {file = "pyrsistent-0.19.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3311cb4237a341aa52ab8448c27e3a9931e2ee09561ad150ba94e4cfd3fc888c"}, - {file = "pyrsistent-0.19.3-cp38-cp38-win32.whl", hash = "sha256:f0e7c4b2f77593871e918be000b96c8107da48444d57005b6a6bc61fb4331b2c"}, - {file = "pyrsistent-0.19.3-cp38-cp38-win_amd64.whl", hash = "sha256:c147257a92374fde8498491f53ffa8f4822cd70c0d85037e09028e478cababb7"}, - {file = "pyrsistent-0.19.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:b735e538f74ec31378f5a1e3886a26d2ca6351106b4dfde376a26fc32a044edc"}, - {file = "pyrsistent-0.19.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99abb85579e2165bd8522f0c0138864da97847875ecbd45f3e7e2af569bfc6f2"}, - {file = "pyrsistent-0.19.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3a8cb235fa6d3fd7aae6a4f1429bbb1fec1577d978098da1252f0489937786f3"}, - {file = "pyrsistent-0.19.3-cp39-cp39-win32.whl", hash = "sha256:c74bed51f9b41c48366a286395c67f4e894374306b197e62810e0fdaf2364da2"}, - {file = "pyrsistent-0.19.3-cp39-cp39-win_amd64.whl", hash = "sha256:878433581fc23e906d947a6814336eee031a00e6defba224234169ae3d3d6a98"}, - {file = "pyrsistent-0.19.3-py3-none-any.whl", hash = "sha256:ccf0d6bd208f8111179f0c26fdf84ed7c3891982f2edaeae7422575f47e66b64"}, - {file = "pyrsistent-0.19.3.tar.gz", hash = "sha256:1a2994773706bbb4995c31a97bc94f1418314923bd1048c6d964837040376440"}, -] - [[package]] name = "python-dateutil" version = "2.8.2" description = "Extensions to the standard Python datetime module" -category = "main" optional = true python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" files = [ @@ -744,7 +656,6 @@ six = ">=1.5" name = "requests" version = "2.31.0" description = "Python HTTP for Humans." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -766,7 +677,6 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] name = "s3transfer" version = "0.6.1" description = "An Amazon S3 Transfer Manager" -category = "main" optional = true python-versions = ">= 3.7" files = [ @@ -780,28 +690,10 @@ botocore = ">=1.12.36,<2.0a.0" [package.extras] crt = ["botocore[crt] (>=1.20.29,<2.0a.0)"] -[[package]] -name = "setuptools" -version = "68.0.0" -description = "Easily download, build, install, upgrade, and uninstall Python packages" -category = "main" -optional = false -python-versions = ">=3.7" -files = [ - {file = "setuptools-68.0.0-py3-none-any.whl", hash = "sha256:11e52c67415a381d10d6b462ced9cfb97066179f0e871399e006c4ab101fc85f"}, - {file = "setuptools-68.0.0.tar.gz", hash = "sha256:baf1fdb41c6da4cd2eae722e135500da913332ab3f2f5c7d33af9b492acb5235"}, -] - -[package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (==0.8.3)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pip-run (>=8.8)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] -testing-integration = ["build[virtualenv]", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] - [[package]] name = "six" version = "1.16.0" description = "Python 2 and 3 compatibility utilities" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -811,21 +703,19 @@ files = [ [[package]] name = "typing-extensions" -version = "4.6.3" +version = "4.7.1" description = "Backported and Experimental Type Hints for Python 3.7+" -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "typing_extensions-4.6.3-py3-none-any.whl", hash = "sha256:88a4153d8505aabbb4e13aacb7c486c2b4a33ca3b3f807914a9b4c844c471c26"}, - {file = "typing_extensions-4.6.3.tar.gz", hash = "sha256:d91d5919357fe7f681a9f2b5b4cb2a5f1ef0a1e9f59c4d8ff0d3491e05c0ffd5"}, + {file = "typing_extensions-4.7.1-py3-none-any.whl", hash = "sha256:440d5dd3af93b060174bf433bccd69b0babc3b15b1a8dca43789fd7f61514b36"}, + {file = "typing_extensions-4.7.1.tar.gz", hash = "sha256:b75ddc264f0ba5615db7ba217daeb99701ad295353c45f9e95963337ceeeffb2"}, ] [[package]] name = "urllib3" version = "1.26.16" description = "HTTP library with thread-safe connection pooling, file post, and more." -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" files = [ @@ -842,7 +732,6 @@ socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] name = "wrapt" version = "1.15.0" description = "Module for decorators, wrappers and monkey patching." -category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" files = [ @@ -927,7 +816,6 @@ files = [ name = "xmltodict" version = "0.13.0" description = "Makes working with XML feel like you are working with JSON" -category = "main" optional = false python-versions = ">=3.4" files = [ @@ -939,7 +827,6 @@ files = [ name = "zipp" version = "3.15.0" description = "Backport of pathlib-compatible object wrapper for zip files" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -957,4 +844,4 @@ dev = ["boto3", "flake8", "httpretty", "nose2", "requests"] [metadata] lock-version = "2.0" python-versions = ">=3.7.0,<4" -content-hash = "220b7348acf7d71f280bee0d89763f562c191d946cb0e4ef7c46c0e6c1ff98c0" +content-hash = "eca28227b90c7b8efbec239508900cd72c220e0b43431552f45db99bc12b617d" diff --git a/pyproject.toml b/pyproject.toml index f484d35b..8e4a3bd9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -28,7 +28,7 @@ datadog = ">=0.41.0,<1.0.0" wrapt = "^1.11.2" ddtrace = "^1.15.0" urllib3 = "<2.0.0" -importlib_metadata = {version = "^1.0", python = "<3.8"} +importlib_metadata = {version = "*", python = "<3.8"} boto3 = { version = "^1.10.33", optional = true } typing_extensions = {version = "^4.0", python = "<3.8"} requests = { version ="^2.22.0", optional = true } From 8aa1fd39989fdccd8d81438adda80fa95b0f8251 Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Mon, 24 Jul 2023 14:57:15 -0400 Subject: [PATCH 031/268] feat: Add peer.service and tracer updates to snapshot tests (#352) --- .../logs/async-metrics_python310.log | 45 ++++++++++++--- .../snapshots/logs/async-metrics_python37.log | 45 ++++++++++++--- .../snapshots/logs/async-metrics_python38.log | 45 ++++++++++++--- .../snapshots/logs/async-metrics_python39.log | 45 ++++++++++++--- .../snapshots/logs/sync-metrics_python310.log | 56 +++++++++++++++---- .../snapshots/logs/sync-metrics_python37.log | 54 +++++++++++++++--- .../snapshots/logs/sync-metrics_python38.log | 54 +++++++++++++++--- .../snapshots/logs/sync-metrics_python39.log | 56 +++++++++++++++---- 8 files changed, 326 insertions(+), 74 deletions(-) diff --git a/tests/integration/snapshots/logs/async-metrics_python310.log b/tests/integration/snapshots/logs/async-metrics_python310.log index d746aba4..5fc4c660 100644 --- a/tests/integration/snapshots/logs/async-metrics_python310.log +++ b/tests/integration/snapshots/logs/async-metrics_python310.log @@ -68,7 +68,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -127,6 +128,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -152,6 +154,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -232,7 +235,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -287,6 +291,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -312,6 +317,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -386,7 +392,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -440,6 +447,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -465,6 +473,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -549,7 +558,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -608,6 +618,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -633,6 +644,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -713,7 +725,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -768,6 +781,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -793,6 +807,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -870,7 +885,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -925,6 +941,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -950,6 +967,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1028,7 +1046,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -1083,6 +1102,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1108,6 +1128,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1185,7 +1206,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -1240,6 +1262,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1265,6 +1288,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1348,7 +1372,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -1405,6 +1430,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1430,6 +1456,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python37.log b/tests/integration/snapshots/logs/async-metrics_python37.log index e28bb9b3..10fcca4c 100644 --- a/tests/integration/snapshots/logs/async-metrics_python37.log +++ b/tests/integration/snapshots/logs/async-metrics_python37.log @@ -68,7 +68,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -127,6 +128,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -152,6 +154,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -232,7 +235,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -287,6 +291,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -312,6 +317,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -386,7 +392,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -440,6 +447,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -465,6 +473,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -549,7 +558,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -608,6 +618,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -633,6 +644,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -713,7 +725,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -768,6 +781,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -793,6 +807,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -870,7 +885,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -925,6 +941,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -950,6 +967,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1028,7 +1046,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -1083,6 +1102,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1108,6 +1128,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1185,7 +1206,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -1240,6 +1262,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1265,6 +1288,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1348,7 +1372,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -1405,6 +1430,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1430,6 +1456,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python38.log b/tests/integration/snapshots/logs/async-metrics_python38.log index c146ef0f..eb7b9d8b 100644 --- a/tests/integration/snapshots/logs/async-metrics_python38.log +++ b/tests/integration/snapshots/logs/async-metrics_python38.log @@ -68,7 +68,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -127,6 +128,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -152,6 +154,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -232,7 +235,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -287,6 +291,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -312,6 +317,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -386,7 +392,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -440,6 +447,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -465,6 +473,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -549,7 +558,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -608,6 +618,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -633,6 +644,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -713,7 +725,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -768,6 +781,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -793,6 +807,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -870,7 +885,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -925,6 +941,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -950,6 +967,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1028,7 +1046,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -1083,6 +1102,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1108,6 +1128,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1185,7 +1206,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -1240,6 +1262,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1265,6 +1288,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1348,7 +1372,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -1405,6 +1430,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1430,6 +1456,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python39.log b/tests/integration/snapshots/logs/async-metrics_python39.log index bc0fb4e8..af584ad1 100644 --- a/tests/integration/snapshots/logs/async-metrics_python39.log +++ b/tests/integration/snapshots/logs/async-metrics_python39.log @@ -68,7 +68,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -127,6 +128,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -152,6 +154,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -232,7 +235,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -287,6 +291,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -312,6 +317,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -386,7 +392,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -440,6 +447,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -465,6 +473,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -549,7 +558,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -608,6 +618,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -633,6 +644,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -713,7 +725,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -768,6 +781,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -793,6 +807,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -870,7 +885,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -925,6 +941,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -950,6 +967,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1028,7 +1046,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -1083,6 +1102,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1108,6 +1128,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1185,7 +1206,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -1240,6 +1262,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1265,6 +1288,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1348,7 +1372,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -1405,6 +1430,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1430,6 +1456,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, diff --git a/tests/integration/snapshots/logs/sync-metrics_python310.log b/tests/integration/snapshots/logs/sync-metrics_python310.log index a72a34a9..a3b7f553 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python310.log +++ b/tests/integration/snapshots/logs/sync-metrics_python310.log @@ -48,7 +48,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -107,6 +108,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -132,6 +134,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -164,6 +167,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -230,7 +234,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -285,6 +290,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -310,6 +316,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -342,6 +349,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -402,7 +410,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -456,6 +465,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -481,6 +491,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -513,6 +524,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -583,7 +595,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -642,6 +655,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -667,6 +681,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -679,7 +694,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] } HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}]} -END Duration: XXXX ms Memory Used: XXXX MB { "traces": [ [ @@ -700,6 +714,7 @@ END Duration: XXXX ms Memory Used: XXXX MB "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -717,6 +732,7 @@ END Duration: XXXX ms Memory Used: XXXX MB ] ] } +END Duration: XXXX ms Memory Used: XXXX MB START { "m": "aws.lambda.enhanced.invocations", @@ -765,7 +781,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -820,6 +837,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -845,6 +863,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -877,6 +896,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -940,7 +960,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -995,6 +1016,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1020,6 +1042,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1052,6 +1075,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1116,7 +1140,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -1171,6 +1196,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1196,6 +1222,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1228,6 +1255,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1291,7 +1319,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -1346,6 +1375,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1371,6 +1401,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1403,6 +1434,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1472,7 +1504,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -1529,6 +1562,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1554,6 +1588,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1586,6 +1621,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", diff --git a/tests/integration/snapshots/logs/sync-metrics_python37.log b/tests/integration/snapshots/logs/sync-metrics_python37.log index 5bc76a99..df14e89e 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python37.log +++ b/tests/integration/snapshots/logs/sync-metrics_python37.log @@ -48,7 +48,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -107,6 +108,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -132,6 +134,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -164,6 +167,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -230,7 +234,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -285,6 +290,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -310,6 +316,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -342,6 +349,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -402,7 +410,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -456,6 +465,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -481,6 +491,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -513,6 +524,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -583,7 +595,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -642,6 +655,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -667,6 +681,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -699,6 +714,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -765,7 +781,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -820,6 +837,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -845,6 +863,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -877,6 +896,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -940,7 +960,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -995,6 +1016,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1020,6 +1042,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1052,6 +1075,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1116,7 +1140,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -1171,6 +1196,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1196,6 +1222,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1228,6 +1255,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1291,7 +1319,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -1346,6 +1375,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1371,6 +1401,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1403,6 +1434,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1472,7 +1504,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -1529,6 +1562,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1554,6 +1588,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1586,6 +1621,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", diff --git a/tests/integration/snapshots/logs/sync-metrics_python38.log b/tests/integration/snapshots/logs/sync-metrics_python38.log index 213e64aa..d800af7a 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python38.log +++ b/tests/integration/snapshots/logs/sync-metrics_python38.log @@ -48,7 +48,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -107,6 +108,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -132,6 +134,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -164,6 +167,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -230,7 +234,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -285,6 +290,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -310,6 +316,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -342,6 +349,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -402,7 +410,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -456,6 +465,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -481,6 +491,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -513,6 +524,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -583,7 +595,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -642,6 +655,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -667,6 +681,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -699,6 +714,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -765,7 +781,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -820,6 +837,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -845,6 +863,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -877,6 +896,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -940,7 +960,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -995,6 +1016,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1020,6 +1042,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1052,6 +1075,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1116,7 +1140,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -1171,6 +1196,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1196,6 +1222,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1228,6 +1255,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1291,7 +1319,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -1346,6 +1375,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1371,6 +1401,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1403,6 +1434,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1472,7 +1504,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -1529,6 +1562,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1554,6 +1588,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1586,6 +1621,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", diff --git a/tests/integration/snapshots/logs/sync-metrics_python39.log b/tests/integration/snapshots/logs/sync-metrics_python39.log index 54ab2bad..66dd2a4b 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python39.log +++ b/tests/integration/snapshots/logs/sync-metrics_python39.log @@ -48,7 +48,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -107,6 +108,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -132,6 +134,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -164,6 +167,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -230,7 +234,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -285,6 +290,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -310,6 +316,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -342,6 +349,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -402,7 +410,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -456,6 +465,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -481,6 +491,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -513,6 +524,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -583,7 +595,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -642,6 +655,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -667,6 +681,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -679,6 +694,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] } HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}]} +END Duration: XXXX ms Memory Used: XXXX MB { "traces": [ [ @@ -699,6 +715,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -716,7 +733,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept ] ] } -END Duration: XXXX ms Memory Used: XXXX MB START { "m": "aws.lambda.enhanced.invocations", @@ -765,7 +781,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -820,6 +837,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -845,6 +863,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -877,6 +896,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -940,7 +960,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -995,6 +1016,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1020,6 +1042,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1052,6 +1075,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1116,7 +1140,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -1171,6 +1196,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1196,6 +1222,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1228,6 +1255,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1291,7 +1319,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -1346,6 +1375,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1371,6 +1401,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1403,6 +1434,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1472,7 +1504,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -1529,6 +1562,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1554,6 +1588,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1586,6 +1621,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", From 6c7851fe640df13a1118660a2c96d78260b8ecc6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?jordan=20gonz=C3=A1lez?= <30836115+duncanista@users.noreply.github.com> Date: Thu, 27 Jul 2023 19:05:51 -0400 Subject: [PATCH 032/268] misc: pin `ddtrace` to `1.15.2` (#356) * update `ddtrace` to `^1.17.2` * pin version of `ddtrace@1.15.2` * feat: ints --------- Co-authored-by: AJ Stuyvenberg --- poetry.lock | 186 ++++++++---------- pyproject.toml | 2 +- .../logs/async-metrics_python310.log | 45 +---- .../snapshots/logs/async-metrics_python37.log | 45 +---- .../snapshots/logs/async-metrics_python38.log | 45 +---- .../snapshots/logs/async-metrics_python39.log | 45 +---- .../snapshots/logs/sync-metrics_python310.log | 54 +---- .../snapshots/logs/sync-metrics_python37.log | 54 +---- .../snapshots/logs/sync-metrics_python38.log | 54 +---- .../snapshots/logs/sync-metrics_python39.log | 56 +----- 10 files changed, 152 insertions(+), 434 deletions(-) diff --git a/poetry.lock b/poetry.lock index efc2f08b..5b473ed9 100644 --- a/poetry.lock +++ b/poetry.lock @@ -23,17 +23,17 @@ tests-no-zope = ["cloudpickle", "hypothesis", "mypy (>=1.1.1)", "pympler", "pyte [[package]] name = "boto3" -version = "1.28.9" +version = "1.28.13" description = "The AWS SDK for Python" optional = true python-versions = ">= 3.7" files = [ - {file = "boto3-1.28.9-py3-none-any.whl", hash = "sha256:01f078047eb4d238c6b9c6cc623f2af33b4ae67980c5326691e35cb5493ff6c7"}, - {file = "boto3-1.28.9.tar.gz", hash = "sha256:4cc0c6005be910e52077227e670930ab55a41ba86cdb6d1c052571d08cd4d32c"}, + {file = "boto3-1.28.13-py3-none-any.whl", hash = "sha256:b2d178c8a56fe3e4c9b123dccdff20e9555d12a597b72627fa659aa6295e238a"}, + {file = "boto3-1.28.13.tar.gz", hash = "sha256:db6443fd2c65d9f35f671b03bacb0592b62d06884395ed65d75922ccddc34c2e"}, ] [package.dependencies] -botocore = ">=1.31.9,<1.32.0" +botocore = ">=1.31.13,<1.32.0" jmespath = ">=0.7.1,<2.0.0" s3transfer = ">=0.6.0,<0.7.0" @@ -42,13 +42,13 @@ crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] [[package]] name = "botocore" -version = "1.31.9" +version = "1.31.13" description = "Low-level, data-driven core of boto 3." optional = true python-versions = ">= 3.7" files = [ - {file = "botocore-1.31.9-py3-none-any.whl", hash = "sha256:e56ccd3536a90094ea5b176b5dd33bfe4f049efdf71af468ea1661bd424c787d"}, - {file = "botocore-1.31.9.tar.gz", hash = "sha256:bd849d3ac95f1781385ed831d753a04a3ec870a59d6598175aaedd71dc2baf5f"}, + {file = "botocore-1.31.13-py3-none-any.whl", hash = "sha256:78b96afbd88b8bd4c0967611a4cedddd9ea33d8601309dc351f81cbb5479d976"}, + {file = "botocore-1.31.13.tar.gz", hash = "sha256:9a5080ea2a444f0447a7a1a79f64252ae2a1417b6c13a54656ee991cb610dd4e"}, ] [package.dependencies] @@ -204,35 +204,6 @@ files = [ {file = "charset_normalizer-3.2.0-py3-none-any.whl", hash = "sha256:8e098148dd37b4ce3baca71fb394c81dc5d9c7728c95df695d2dca218edf40e6"}, ] -[[package]] -name = "cmake" -version = "3.27.0" -description = "CMake is an open-source, cross-platform family of tools designed to build, test and package software" -optional = false -python-versions = "*" -files = [ - {file = "cmake-3.27.0-py2.py3-none-macosx_10_10_universal2.macosx_10_10_x86_64.macosx_11_0_arm64.macosx_11_0_universal2.whl", hash = "sha256:9ccab4cd93578d3c2df32e66b44b313b75a7484032645040431dc06a583ca4aa"}, - {file = "cmake-3.27.0-py2.py3-none-manylinux2010_i686.manylinux_2_12_i686.whl", hash = "sha256:199bfaefb752e82d8067aeee5d6a6e0414fe0d60e9a3fd08e95d537a97e0db16"}, - {file = "cmake-3.27.0-py2.py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:8745eff805f36762d3e8e904698b853cb4a9da8b4b07d1c12bcd1e1a6c4a1709"}, - {file = "cmake-3.27.0-py2.py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:58a3f39d3d1bc897f05e531bfa676246a2b25d424c6a47e4b6bbc193fb560db7"}, - {file = "cmake-3.27.0-py2.py3-none-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:b470ccd3f86cf19a63f6b221c9cceebcc58e32d3787d0d5f9f43d1d91a095090"}, - {file = "cmake-3.27.0-py2.py3-none-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:35a8d397ce883e93b5e6561e2803ce9470df52283862264093c1078530f98189"}, - {file = "cmake-3.27.0-py2.py3-none-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:1f38d87b2c65763a0113f4a6c652e6f4b5adf90b384c1e1d69e4f8a3104a57d6"}, - {file = "cmake-3.27.0-py2.py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b9d5811954dcedcaa6c915c4a9bb6d64b55ac189e9cbc74be726307d9d084804"}, - {file = "cmake-3.27.0-py2.py3-none-musllinux_1_1_aarch64.whl", hash = "sha256:073e4f196d0888216e6794c08cd984ddabc108c0e4e66f48fbd7610d1e6d726d"}, - {file = "cmake-3.27.0-py2.py3-none-musllinux_1_1_i686.whl", hash = "sha256:e58e48643903e6fad76274337f9a4d3c575b8e21cd05c6214780b2c98bb0c706"}, - {file = "cmake-3.27.0-py2.py3-none-musllinux_1_1_ppc64le.whl", hash = "sha256:9740ed9f61a3bd8708a41cadd5c057c04f38e5b89bd773e369df2e210a1c55a3"}, - {file = "cmake-3.27.0-py2.py3-none-musllinux_1_1_s390x.whl", hash = "sha256:1b3189171665f5c8d748ae7fe10a29fff1ebeedeaef57b16f1ea54b1ec0fe514"}, - {file = "cmake-3.27.0-py2.py3-none-musllinux_1_1_x86_64.whl", hash = "sha256:c4c968c188e7518deb463a14e64f3a19f242c9dcf7f24e1dbcc1419690cd54e0"}, - {file = "cmake-3.27.0-py2.py3-none-win32.whl", hash = "sha256:5561aca62b65aac844f3931e74cfeb696e4534de145e3307bf942e735736541e"}, - {file = "cmake-3.27.0-py2.py3-none-win_amd64.whl", hash = "sha256:48be3afe62c9513a49be007896a4058fafec512cb1f269a50126da30aacad97f"}, - {file = "cmake-3.27.0-py2.py3-none-win_arm64.whl", hash = "sha256:6f46a170b0c9c552d52da4346534570f818195dfc4f1d0c03264e24cc348fc60"}, - {file = "cmake-3.27.0.tar.gz", hash = "sha256:d03f0a76a2b96805044ad1178b92aeeb5f695caa6776a32522bb5c430a55b4e8"}, -] - -[package.extras] -test = ["coverage (>=4.2)", "flake8 (>=3.0.4)", "path.py (>=11.5.0)", "pytest (>=3.0.3)", "pytest-cov (>=2.4.0)", "pytest-runner (>=2.9)", "pytest-virtualenv (>=1.7.0)", "scikit-build (>=0.10.0)", "setuptools (>=28.0.0)", "virtualenv (>=15.0.3)", "wheel"] - [[package]] name = "coverage" version = "7.2.7" @@ -336,80 +307,80 @@ six = "*" [[package]] name = "ddtrace" -version = "1.17.1" +version = "1.15.2" description = "Datadog APM client library" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ - {file = "ddtrace-1.17.1-cp27-cp27m-macosx_11_0_x86_64.whl", hash = "sha256:c03f33ada5853507fc500e2232c4ec6b5bc17d0f9300ac383a816a937b31c4ae"}, - {file = "ddtrace-1.17.1-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:4da15eb2508d87bfe8d426f94e6835168e8554ddf651053efebaa4b1aff31506"}, - {file = "ddtrace-1.17.1-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:8f0472afa42185b033ba31e423fb0d35a851252eb790757547f032450d80e313"}, - {file = "ddtrace-1.17.1-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:7d563b9712fcfa659f5e2f6b93fd1ac3e9f4ecaa3e00127f05efe2553d446515"}, - {file = "ddtrace-1.17.1-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:2964efad960a8aae2169b1b8654ec2ea71a633c6649a0dc1249a972eb1b2991b"}, - {file = "ddtrace-1.17.1-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:ffc707f2be400d5ad68ec321eec79393f0da40a84e30792084aa39b2d764510e"}, - {file = "ddtrace-1.17.1-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:d93337e941a408b6027dbe781efb1576cbb04802af5b88dd70f3905d5c3efb16"}, - {file = "ddtrace-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ecedb514e610027a918e749d98d37a42f60bcbba8bee3d24a4b98c453bc50b8f"}, - {file = "ddtrace-1.17.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:63b493934e6e942151400b0bd904554ce0f5b83c46b21dfb7822551a38d4a80d"}, - {file = "ddtrace-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c3a1519cddaae319a3060c8a60c08dace6d1b7903adc9ee85daa5967d04348ce"}, - {file = "ddtrace-1.17.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:dbe105ebbf7e6a1ea7c0f367b129019925bef69be8797c7f21d6ca798e4f72ec"}, - {file = "ddtrace-1.17.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:fe3543f05175617ac03254409a207110e8c598cbc5cf9d3366dfa3b5f245b6af"}, - {file = "ddtrace-1.17.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f95187c1016fe83d177caa69cfef5a6c503dc7d3fbed98071b9254944fcb99c2"}, - {file = "ddtrace-1.17.1-cp310-cp310-win32.whl", hash = "sha256:1cfd31b42445d74afcd2b4ea8ae5263e83b1463c9e720d954ca6ee7b016c29d4"}, - {file = "ddtrace-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:7264e83e9ec88a3306e3deb8f75377b60391e27a6fad473d8398fde2cfb089d6"}, - {file = "ddtrace-1.17.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:45d299e36a01b0bfe6e8f4dbcc72d6392c1bb9c37a3c90ff6e446ab6987334fa"}, - {file = "ddtrace-1.17.1-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:69aaca3e2fa60bf6227b9efc178df95624a05766b0c01669989eb26c2a371441"}, - {file = "ddtrace-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9e147b355ebfa5db7f69e9419a6ca36569de2497b7f96323690044f3882a6b2e"}, - {file = "ddtrace-1.17.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:da4422526d2b904dc0e6a284ab1b4137db23f9e87b73afe7faeccb9f7bc7f38e"}, - {file = "ddtrace-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2b8b5674f900e67234d64403d93af599944e1b55c59ca2c911c608743bc32d9"}, - {file = "ddtrace-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ad1488feeead393123cab86c31214902f687810878f03ace6952f8b9ad7802f3"}, - {file = "ddtrace-1.17.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:d2aaf7ac883fd736e7ac2e25e3a46686d77e829da31d93e73b7c25cfc8844289"}, - {file = "ddtrace-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:897a26b37ce1d9e33d386831707c0fc5e707170ddf8061500a3d23dcb01670cb"}, - {file = "ddtrace-1.17.1-cp311-cp311-win32.whl", hash = "sha256:45ee0b553bcb28f4c314bd4e172deb7cddb0f3ce1e02e8db7eb7115479002f38"}, - {file = "ddtrace-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:c826f9e4eedb92d58239e0f89eb33282e938dd6532604c77691966b18c53ced8"}, - {file = "ddtrace-1.17.1-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:525f3dcf98e92c18559035bdec8db67c4868b5c4aea8e28173fc2412fb298986"}, - {file = "ddtrace-1.17.1-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:3919586b6bade3f55f45df86b4bf3625047fb814952b6b959d634cd046c38346"}, - {file = "ddtrace-1.17.1-cp35-cp35m-manylinux2014_aarch64.whl", hash = "sha256:3547e4510dc6e6678ca8d69798a55dd30eda32ec04075d74437b957f6018aa47"}, - {file = "ddtrace-1.17.1-cp35-cp35m-win32.whl", hash = "sha256:336e7f51996e27bed4325afa26bcc9159987bb65a2a0313b7966d9cf51329ab8"}, - {file = "ddtrace-1.17.1-cp35-cp35m-win_amd64.whl", hash = "sha256:cd31b7fef4541583e86e98a32a9bb258b571367e453f682c020a0357e34382f2"}, - {file = "ddtrace-1.17.1-cp36-cp36m-macosx_11_0_x86_64.whl", hash = "sha256:01cf264fa1b87c57a2f468bc1e778cfd85172253060243d380ef808cb4fe508b"}, - {file = "ddtrace-1.17.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e59fd650f0b80ee4f6a6c0859f60968ec494a39621def7498aff2e01ea2786d"}, - {file = "ddtrace-1.17.1-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:828fe6f4ba7ab33d849ab4430860ffe6b97645b922eb4a48485f66a4f750368c"}, - {file = "ddtrace-1.17.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8ee7a6a00c6ea226b753e996be31aa63fb4046e38dbe705e33d5b6479dad3e5e"}, - {file = "ddtrace-1.17.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:9aac5e9dc01638c54ed7475d430f6367bcbf84ba0085e93bc817c97d322fa708"}, - {file = "ddtrace-1.17.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:20148f79134e7d1624d06b48459f5bdbb653393d48041833be056da4e0468005"}, - {file = "ddtrace-1.17.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:5851034a6cd10712f89cce08100fd6c18e8f003dd44e95020f8d0c3defd677eb"}, - {file = "ddtrace-1.17.1-cp36-cp36m-win32.whl", hash = "sha256:b2672821bcd0e6d05b3717b35b23ad2c498e6ffa2d409cb4f02675acda841ced"}, - {file = "ddtrace-1.17.1-cp36-cp36m-win_amd64.whl", hash = "sha256:23f3a663c7c4b5970996cd8d02490339781db186da691d9a636d0c6efd74f44c"}, - {file = "ddtrace-1.17.1-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:b83770ce0a3e9cc755d206d7c444b8baca564bed888f36f93f7f832cae45f2db"}, - {file = "ddtrace-1.17.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d2cfa5ab6e12565358de637c6e7471d9ccb953308962ebe9f269213ac15963e5"}, - {file = "ddtrace-1.17.1-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6148358ea8c263219d34bf685949977dd53410bbe4ad0bab312590c73e053c1f"}, - {file = "ddtrace-1.17.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ec1d7477d27368422f5e3a6849205e6072a9ce22e6729bac289ceddb8e90c94"}, - {file = "ddtrace-1.17.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:44a3f465fd14a0fb4a1afd75d569853d58ccf8a5a098832c6feb30973447c347"}, - {file = "ddtrace-1.17.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:5014019b9e05715affdbfc9aef58fad70d5e3577f9ee26806db010429e5f918d"}, - {file = "ddtrace-1.17.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:59d3d25f901e601cb90165a4447806d1b94dfcff4ad51bf525479f4f7cae8da2"}, - {file = "ddtrace-1.17.1-cp37-cp37m-win32.whl", hash = "sha256:5dde643c651a8e96dec6c3ebb2e1b3e56fa3dff82988eaee206eb0010c56036d"}, - {file = "ddtrace-1.17.1-cp37-cp37m-win_amd64.whl", hash = "sha256:a25b20f830630f3dc45ab8af2be811ff3f0f4f9430688c20003fb6fdedd857e9"}, - {file = "ddtrace-1.17.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:878a0dfa195029f0fe8ae1d9788caada72ba326c90137f3df78a19062ade5836"}, - {file = "ddtrace-1.17.1-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:9587a247fd2c5d02ce64fef5d0317beb0455f94525ef53e7fa8d5268d93e8271"}, - {file = "ddtrace-1.17.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ae0e740e7cf76ae475fa4bf36df1458b82e2fcf6d90731894afe5c92c42a203"}, - {file = "ddtrace-1.17.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:96afa2aaf627caee4afd65b919bf8e1fb17d5aa69ea32b345e8076a39327558e"}, - {file = "ddtrace-1.17.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b14677d9b8db4d58deae8c5128df61f4148d40d0967e5f33cbbebdcf1e94500f"}, - {file = "ddtrace-1.17.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:891df3133de285e08af4fe1c0b22d322bca49554ef63864187115acec9b7455e"}, - {file = "ddtrace-1.17.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:51e26935bdf779723646eea1b651d429eb49ca8cb7ec1cd5a17e9d8252cd8579"}, - {file = "ddtrace-1.17.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:25aa1c136af010ae435751ba917e7fca4bee5d14e7cfcd95a5488abf46e6eb14"}, - {file = "ddtrace-1.17.1-cp38-cp38-win32.whl", hash = "sha256:52558471cb5a33f1e256388d15a1ac41d2e00e07c3db1abf9dd88c76936b0089"}, - {file = "ddtrace-1.17.1-cp38-cp38-win_amd64.whl", hash = "sha256:88b1e205bab48b101d5c0a162a834bc6d40f55ba5a26a8ce5a90baeb5dd630b8"}, - {file = "ddtrace-1.17.1-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:4701394b010609ea49ea1da184b0427da361089d670fc13eeb516f806d201a4c"}, - {file = "ddtrace-1.17.1-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:1adbd17fd4d4492819737775c9f2ed70b667ad6f866ed123eeda2ef127939f9d"}, - {file = "ddtrace-1.17.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0044149ccb10fd732c34385500afb3be41c835a136b2734a1e90bb7b4b81bd41"}, - {file = "ddtrace-1.17.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8e669a67541f353ffb95ae165d77d43842e7d909a1ab47ffeeb1564eadcd9c6f"}, - {file = "ddtrace-1.17.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:09cb358184c250d2ebef2535d9c037099f9f5e6e1bb74c0c3f10e31224026956"}, - {file = "ddtrace-1.17.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:98e49005001acecdec2616ea063e743bde782f88b1a8c616349ee29a72d44f7e"}, - {file = "ddtrace-1.17.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:c8a204e83d6422521d233c18213b6e7e266422d93ef1d0c7d0e7802887688e23"}, - {file = "ddtrace-1.17.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:2668f87347b364c6ec8f8c3a5c3da82a2219621756e887eb2873fdcf3793c78d"}, - {file = "ddtrace-1.17.1-cp39-cp39-win32.whl", hash = "sha256:2c2ebebb4704d89714f9c9681acc07d3b84aa29bb719c2bc93c4b9e187f5e113"}, - {file = "ddtrace-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:293f0a50891fc79f477b0a268adf42bca8b9b4944475a6018225ffc1e322afb6"}, - {file = "ddtrace-1.17.1.tar.gz", hash = "sha256:7e1639ccfbf00e6fd610798bf6095c068a4648378e0a2e05571604442b33abb0"}, + {file = "ddtrace-1.15.2-cp27-cp27m-macosx_11_0_x86_64.whl", hash = "sha256:ca0411333fbdb0fafa06d412bbd76ab8d2647cc9dcb8a7833952ce4fe09eb421"}, + {file = "ddtrace-1.15.2-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:e2603749f97a5191b32f710c8ec5248bb58f4f9a1cb337559f93c5f0f8cea33b"}, + {file = "ddtrace-1.15.2-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:8392087809e047f701e38ecc4f2990bcfe399a22c516a1dbcbdff50fb7382a79"}, + {file = "ddtrace-1.15.2-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:2f7649c24a7463be9b86d5f11ac6eaa2014896eaf409e67f3dc813a6bb0ed8b6"}, + {file = "ddtrace-1.15.2-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:dbdbc5bf3b2b56b8e61b241ee372d897b295344e269475f38e837c9bfe03ae2c"}, + {file = "ddtrace-1.15.2-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:23d39c72ad1844977a80d79206d773c3ec1f1346816b9e45427c25ef88597b4e"}, + {file = "ddtrace-1.15.2-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:da458bbbc4de14dd8e8f60aefe42a66c551a9f50c69c6e361acc7edab579a3e4"}, + {file = "ddtrace-1.15.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d07bb0c50d2df7ff9281bea83534db5127cee8ac2f94111c9544d03d49f60613"}, + {file = "ddtrace-1.15.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:499b3e3d0359e492792ecf8ab6efcf4b1991fbaa523338774333e9a2a66d9d37"}, + {file = "ddtrace-1.15.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eedd0937f83e0d7b261960365fec5771f39ced599c90f589548a1738a586799d"}, + {file = "ddtrace-1.15.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7643d20991cd7e1c21e65d8b5c292a9dca8d124f69f9e96cc2b5fb8d47802c3a"}, + {file = "ddtrace-1.15.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:3f6bb76fe33c2e4842236036f78b1bbdd4da0f2b846627ca7d72b01ac49b3076"}, + {file = "ddtrace-1.15.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ebc9b89501c8a557dab43170e4a12e90358130413a87a0276ccaa0038b0636a4"}, + {file = "ddtrace-1.15.2-cp310-cp310-win32.whl", hash = "sha256:c10ca0e3a63310d314ec7fa55d53f4b4434f06c4d321d64d757814679161bf5d"}, + {file = "ddtrace-1.15.2-cp310-cp310-win_amd64.whl", hash = "sha256:6208635442ea52ff3f97b9fc64ac25772cda8f105a607a385e55bf524bceefc5"}, + {file = "ddtrace-1.15.2-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:8524f460be02b402f63b11ad3b1177955c8608f814e1758b87f53f15bf9a7599"}, + {file = "ddtrace-1.15.2-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:5a2dd127a65e12189055818ab72d44d80587acaaf450c65624e0482d63ff9970"}, + {file = "ddtrace-1.15.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b3350c647120fbc3355eb35ce054c88e63bc073d71949f377d59b1152a2ed0f4"}, + {file = "ddtrace-1.15.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:adb76713207f0ef688f68a539f9cb63e19cd149d48d36befb835f67f49395ed7"}, + {file = "ddtrace-1.15.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f8ff5c250c5abfbbbd76a7d3167308a2373ad7e55ecf3c7c26a62fcd2be8a57"}, + {file = "ddtrace-1.15.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:264bed998870b63f548b96f57dd771014cd02ef0b21bb382e745900a7b72ef28"}, + {file = "ddtrace-1.15.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:20bfd8db155167d2ccfddc25b50649338534b12cb00f7ed08514af1eb6a4956e"}, + {file = "ddtrace-1.15.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:72479172bd10f5998188a05b0b4a109ccb2a93467a0aa1e6656d5396c83fb253"}, + {file = "ddtrace-1.15.2-cp311-cp311-win32.whl", hash = "sha256:23bee3d0eb971cc1565caa429620b82f2d69ef648e9c792046b9481188dba9ab"}, + {file = "ddtrace-1.15.2-cp311-cp311-win_amd64.whl", hash = "sha256:65a29d23ecfbc7cc4ca1069a5586aa836ae3978e64251414933432078bc29bc2"}, + {file = "ddtrace-1.15.2-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:3a2852da4a76503211ca8b77a50fc86df36ba15fab04b45a6a17faa386f53839"}, + {file = "ddtrace-1.15.2-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:244180c6decb244c7fda929dc5969b3a510e5a4857239063de1fae139fac9837"}, + {file = "ddtrace-1.15.2-cp35-cp35m-manylinux2014_aarch64.whl", hash = "sha256:46f9ba0c282a62953f03d1add8eae8c80613244bb93a1ff997dad71d07ce6c72"}, + {file = "ddtrace-1.15.2-cp35-cp35m-win32.whl", hash = "sha256:a39dbf1ca657cc3a876143301e5d775e2f9bcf2ed1e9b4366fb3cf9d6a345a82"}, + {file = "ddtrace-1.15.2-cp35-cp35m-win_amd64.whl", hash = "sha256:7cfd9514e82871321e86897fe567c7548fc45da523df591f3e5adc6633a5781c"}, + {file = "ddtrace-1.15.2-cp36-cp36m-macosx_11_0_x86_64.whl", hash = "sha256:3a2978b07d19d4ebf936fde1e455c61b3d88f103f1f9e360b9269fe1a1dc608a"}, + {file = "ddtrace-1.15.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6e7795a7f65a6e844ab57a0b31d400e79c4a1f69d174fab8edc69e6d2db56962"}, + {file = "ddtrace-1.15.2-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aae5306b3b0ec48cb8ade3362629c31bd25999244addff0f4a2f6f3934509894"}, + {file = "ddtrace-1.15.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:14fb33bd6d9fa70638d43de7b5170e1c9961d3fbc277314609941e108c45716d"}, + {file = "ddtrace-1.15.2-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:745ce3c9559fa331ef30208ff1ccaafe3ab3c02f2e01177c560c94acd6f4de27"}, + {file = "ddtrace-1.15.2-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:7706d35215d2cca0a89581ec11da56e25742914ae0865b928034ee9ad7278cf3"}, + {file = "ddtrace-1.15.2-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:0bc18e900d1495deb61093f1af38d94af6a1ca66dd541fd47bd093c3f3b80b4a"}, + {file = "ddtrace-1.15.2-cp36-cp36m-win32.whl", hash = "sha256:b13f4042ef3f391714aca5ca1f03ff3c24c1d201ab5af02f0405335aa5602ff5"}, + {file = "ddtrace-1.15.2-cp36-cp36m-win_amd64.whl", hash = "sha256:eb32e3b3d0f472447b3d427a075007135b3c39488c1fe0f1e097863f326a439b"}, + {file = "ddtrace-1.15.2-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:0953fd9a2555801d68674bb4905f64805efe1e02b3f11def21eb7655be046717"}, + {file = "ddtrace-1.15.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9436ec9cc00b70730d2c1777f11aca7f4863a49ddd27d0b1478e84c1a7667b6f"}, + {file = "ddtrace-1.15.2-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f7215b21c1eaf56b38bf46c66193db3736ecadeb9ae1b9ca780a91addbaa9853"}, + {file = "ddtrace-1.15.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15a5f7155b99fe9393bfa4f0e4ef2610ddf59e70aefcf99a95acae8b31e29cc4"}, + {file = "ddtrace-1.15.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:df103a600c2901dc54929ef58dee41887a0bb558efbf7e41a7489bd6264fcf44"}, + {file = "ddtrace-1.15.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:d51a73238ad8ceff4232ffa94b860d61187b325e7fab746044dafa312d6bc415"}, + {file = "ddtrace-1.15.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:bfc5777204c0c34465fc4ce38d8d1268d9f95ffcbf7e4025e9a5d3e87d3e17c3"}, + {file = "ddtrace-1.15.2-cp37-cp37m-win32.whl", hash = "sha256:9516dbfc974af9632d75e9c32b38e695b88ea18ebfa4580dd0f768bc05272fba"}, + {file = "ddtrace-1.15.2-cp37-cp37m-win_amd64.whl", hash = "sha256:a510252a3d5be6c29db2c69cbd2535268532e8d568fae06b295a06041e1b969d"}, + {file = "ddtrace-1.15.2-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:82995243719c87aefc85d7df0e1ae61bba8ae1f805d48cbaf2132beb215f1968"}, + {file = "ddtrace-1.15.2-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:ca5dd51910a81451d236fccdbf5d3ca8e284aa3be56f08db92644f85ef88c56e"}, + {file = "ddtrace-1.15.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d76f485769c035df3ede4ad9830bac06aa8b69ac4617f2eb1251b1094468009"}, + {file = "ddtrace-1.15.2-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4dd5f5e477021b8810b2b685e1e16ba5a99f31239e22abc71794688b7f3e6e4d"}, + {file = "ddtrace-1.15.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4ec73676c60cc3cf08430f19a59daccbbb5770edc74ad15a99bf4237a40d0fb"}, + {file = "ddtrace-1.15.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6b140f11b89d902174df05e8b9c1eb1b522a63e6c60c5d68ccac8913bb371bbb"}, + {file = "ddtrace-1.15.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:c7c8a0e140d28e49cf8cd96cdec8e17232c5525ed5c154729b8afb6cb93a8e2b"}, + {file = "ddtrace-1.15.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:0112d258c3a681a63e5f057b9e3ee8504b60d773d95baf195462d9ff4096caa9"}, + {file = "ddtrace-1.15.2-cp38-cp38-win32.whl", hash = "sha256:6ea7b80eb8019a70c999ef8cfd34fd6078a2ae154007d124d5e642531bf1a9d6"}, + {file = "ddtrace-1.15.2-cp38-cp38-win_amd64.whl", hash = "sha256:282b8c9b46d7a8450325299cf348a0f1d8f9f34d174a0ea402bc1a1df4ad7cf3"}, + {file = "ddtrace-1.15.2-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:53b171404b59c1e030ea614e194d1483fb42437a02ffdd7f4a45175613dd7cb4"}, + {file = "ddtrace-1.15.2-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:9ba06236dd8bd64776b7b734dd9421709670fef090857448e75c97acb30cdce7"}, + {file = "ddtrace-1.15.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e6abe5ba4396c9f7633cab68d0e81c5fd94f7c77b046b3ee969eded068a522d7"}, + {file = "ddtrace-1.15.2-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:61a1b48f97a07e2f422ec01bb23861716300cebe4afd917ab36bb4db68904da4"}, + {file = "ddtrace-1.15.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:86e186dc66802e2d71b94330c1635fd4c3f881a1bb71747be162a57b7602daaa"}, + {file = "ddtrace-1.15.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:762b5a0777454299c4ac62177578969ed551c973063f87a8825d9d073e5250ce"}, + {file = "ddtrace-1.15.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:889d359f4382fde41893ba5c00b412cbea8502e1b6bb6c83bf87fa6e63cbfabe"}, + {file = "ddtrace-1.15.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c4d3c9ce3456181e535b9da42bde7c850dc7224039fd083e95b05010c2ff9748"}, + {file = "ddtrace-1.15.2-cp39-cp39-win32.whl", hash = "sha256:69e47d28327a7afb263c16cc6bf1227e1b2bf1fdb2d559dce913a138a3f36807"}, + {file = "ddtrace-1.15.2-cp39-cp39-win_amd64.whl", hash = "sha256:da780fbfe6dd749ee571a468b8e86f1fd4f51626d35626c2356f8a440efe0dfa"}, + {file = "ddtrace-1.15.2.tar.gz", hash = "sha256:e5c1a5965ea8d8260586769102d79522bc7d9758a271252bb58ee05d6c5cd9a8"}, ] [package.dependencies] @@ -419,7 +390,6 @@ bytecode = [ {version = "*", markers = "python_version >= \"3.8\""}, ] cattrs = {version = "*", markers = "python_version >= \"3.7\""} -cmake = {version = ">=3.24.2", markers = "python_version >= \"3.6\""} ddsketch = ">=2.0.1" envier = "*" importlib-metadata = {version = "*", markers = "python_version < \"3.8\""} @@ -844,4 +814,4 @@ dev = ["boto3", "flake8", "httpretty", "nose2", "requests"] [metadata] lock-version = "2.0" python-versions = ">=3.7.0,<4" -content-hash = "eca28227b90c7b8efbec239508900cd72c220e0b43431552f45db99bc12b617d" +content-hash = "e65f36c4d06687bde43b04ec23d980e60dd755362e54032b4293a3bf0d5c2054" diff --git a/pyproject.toml b/pyproject.toml index 8e4a3bd9..cab0abe7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -26,7 +26,7 @@ classifiers = [ python = ">=3.7.0,<4" datadog = ">=0.41.0,<1.0.0" wrapt = "^1.11.2" -ddtrace = "^1.15.0" +ddtrace = "1.15.2" urllib3 = "<2.0.0" importlib_metadata = {version = "*", python = "<3.8"} boto3 = { version = "^1.10.33", optional = true } diff --git a/tests/integration/snapshots/logs/async-metrics_python310.log b/tests/integration/snapshots/logs/async-metrics_python310.log index 5fc4c660..d746aba4 100644 --- a/tests/integration/snapshots/logs/async-metrics_python310.log +++ b/tests/integration/snapshots/logs/async-metrics_python310.log @@ -68,8 +68,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -128,7 +127,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -154,7 +152,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -235,8 +232,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -291,7 +287,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -317,7 +312,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -392,8 +386,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -447,7 +440,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -473,7 +465,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -558,8 +549,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -618,7 +608,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -644,7 +633,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -725,8 +713,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -781,7 +768,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -807,7 +793,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -885,8 +870,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -941,7 +925,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -967,7 +950,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1046,8 +1028,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -1102,7 +1083,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1128,7 +1108,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1206,8 +1185,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -1262,7 +1240,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1288,7 +1265,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1372,8 +1348,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -1430,7 +1405,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1456,7 +1430,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python37.log b/tests/integration/snapshots/logs/async-metrics_python37.log index 10fcca4c..e28bb9b3 100644 --- a/tests/integration/snapshots/logs/async-metrics_python37.log +++ b/tests/integration/snapshots/logs/async-metrics_python37.log @@ -68,8 +68,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -128,7 +127,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -154,7 +152,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -235,8 +232,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -291,7 +287,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -317,7 +312,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -392,8 +386,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -447,7 +440,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -473,7 +465,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -558,8 +549,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -618,7 +608,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -644,7 +633,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -725,8 +713,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -781,7 +768,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -807,7 +793,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -885,8 +870,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -941,7 +925,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -967,7 +950,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1046,8 +1028,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -1102,7 +1083,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1128,7 +1108,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1206,8 +1185,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -1262,7 +1240,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1288,7 +1265,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1372,8 +1348,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -1430,7 +1405,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1456,7 +1430,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python38.log b/tests/integration/snapshots/logs/async-metrics_python38.log index eb7b9d8b..c146ef0f 100644 --- a/tests/integration/snapshots/logs/async-metrics_python38.log +++ b/tests/integration/snapshots/logs/async-metrics_python38.log @@ -68,8 +68,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -128,7 +127,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -154,7 +152,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -235,8 +232,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -291,7 +287,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -317,7 +312,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -392,8 +386,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -447,7 +440,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -473,7 +465,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -558,8 +549,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -618,7 +608,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -644,7 +633,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -725,8 +713,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -781,7 +768,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -807,7 +793,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -885,8 +870,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -941,7 +925,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -967,7 +950,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1046,8 +1028,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -1102,7 +1083,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1128,7 +1108,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1206,8 +1185,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -1262,7 +1240,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1288,7 +1265,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1372,8 +1348,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -1430,7 +1405,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1456,7 +1430,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python39.log b/tests/integration/snapshots/logs/async-metrics_python39.log index af584ad1..bc0fb4e8 100644 --- a/tests/integration/snapshots/logs/async-metrics_python39.log +++ b/tests/integration/snapshots/logs/async-metrics_python39.log @@ -68,8 +68,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -128,7 +127,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -154,7 +152,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -235,8 +232,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -291,7 +287,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -317,7 +312,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -392,8 +386,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -447,7 +440,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -473,7 +465,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -558,8 +549,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -618,7 +608,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -644,7 +633,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -725,8 +713,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -781,7 +768,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -807,7 +793,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -885,8 +870,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -941,7 +925,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -967,7 +950,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1046,8 +1028,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -1102,7 +1083,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1128,7 +1108,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1206,8 +1185,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -1262,7 +1240,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1288,7 +1265,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1372,8 +1348,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -1430,7 +1405,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1456,7 +1430,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, diff --git a/tests/integration/snapshots/logs/sync-metrics_python310.log b/tests/integration/snapshots/logs/sync-metrics_python310.log index a3b7f553..fc71ef6d 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python310.log +++ b/tests/integration/snapshots/logs/sync-metrics_python310.log @@ -48,8 +48,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -108,7 +107,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -134,7 +132,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -167,7 +164,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -234,8 +230,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -290,7 +285,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -316,7 +310,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -349,7 +342,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -410,8 +402,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -465,7 +456,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -491,7 +481,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -524,7 +513,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -595,8 +583,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -655,7 +642,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -681,7 +667,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -714,7 +699,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -781,8 +765,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -837,7 +820,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -863,7 +845,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -896,7 +877,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -960,8 +940,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -1016,7 +995,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1042,7 +1020,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1075,7 +1052,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1140,8 +1116,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -1196,7 +1171,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1222,7 +1196,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1255,7 +1228,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1319,8 +1291,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -1375,7 +1346,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1401,7 +1371,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1434,7 +1403,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1504,8 +1472,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -1562,7 +1529,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1588,7 +1554,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1621,7 +1586,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", diff --git a/tests/integration/snapshots/logs/sync-metrics_python37.log b/tests/integration/snapshots/logs/sync-metrics_python37.log index df14e89e..5bc76a99 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python37.log +++ b/tests/integration/snapshots/logs/sync-metrics_python37.log @@ -48,8 +48,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -108,7 +107,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -134,7 +132,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -167,7 +164,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -234,8 +230,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -290,7 +285,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -316,7 +310,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -349,7 +342,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -410,8 +402,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -465,7 +456,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -491,7 +481,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -524,7 +513,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -595,8 +583,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -655,7 +642,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -681,7 +667,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -714,7 +699,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -781,8 +765,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -837,7 +820,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -863,7 +845,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -896,7 +877,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -960,8 +940,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -1016,7 +995,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1042,7 +1020,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1075,7 +1052,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1140,8 +1116,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -1196,7 +1171,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1222,7 +1196,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1255,7 +1228,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1319,8 +1291,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -1375,7 +1346,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1401,7 +1371,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1434,7 +1403,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1504,8 +1472,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -1562,7 +1529,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1588,7 +1554,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1621,7 +1586,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", diff --git a/tests/integration/snapshots/logs/sync-metrics_python38.log b/tests/integration/snapshots/logs/sync-metrics_python38.log index d800af7a..213e64aa 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python38.log +++ b/tests/integration/snapshots/logs/sync-metrics_python38.log @@ -48,8 +48,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -108,7 +107,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -134,7 +132,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -167,7 +164,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -234,8 +230,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -290,7 +285,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -316,7 +310,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -349,7 +342,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -410,8 +402,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -465,7 +456,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -491,7 +481,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -524,7 +513,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -595,8 +583,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -655,7 +642,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -681,7 +667,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -714,7 +699,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -781,8 +765,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -837,7 +820,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -863,7 +845,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -896,7 +877,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -960,8 +940,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -1016,7 +995,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1042,7 +1020,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1075,7 +1052,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1140,8 +1116,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -1196,7 +1171,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1222,7 +1196,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1255,7 +1228,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1319,8 +1291,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -1375,7 +1346,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1401,7 +1371,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1434,7 +1403,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1504,8 +1472,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -1562,7 +1529,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1588,7 +1554,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1621,7 +1586,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", diff --git a/tests/integration/snapshots/logs/sync-metrics_python39.log b/tests/integration/snapshots/logs/sync-metrics_python39.log index 66dd2a4b..54ab2bad 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python39.log +++ b/tests/integration/snapshots/logs/sync-metrics_python39.log @@ -48,8 +48,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -108,7 +107,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -134,7 +132,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -167,7 +164,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -234,8 +230,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -290,7 +285,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -316,7 +310,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -349,7 +342,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -410,8 +402,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -465,7 +456,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -491,7 +481,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -524,7 +513,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -595,8 +583,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -655,7 +642,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -681,7 +667,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -694,7 +679,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] } HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}]} -END Duration: XXXX ms Memory Used: XXXX MB { "traces": [ [ @@ -715,7 +699,6 @@ END Duration: XXXX ms Memory Used: XXXX MB "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -733,6 +716,7 @@ END Duration: XXXX ms Memory Used: XXXX MB ] ] } +END Duration: XXXX ms Memory Used: XXXX MB START { "m": "aws.lambda.enhanced.invocations", @@ -781,8 +765,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -837,7 +820,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -863,7 +845,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -896,7 +877,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -960,8 +940,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -1016,7 +995,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1042,7 +1020,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1075,7 +1052,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1140,8 +1116,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -1196,7 +1171,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1222,7 +1196,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1255,7 +1228,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1319,8 +1291,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -1375,7 +1346,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1401,7 +1371,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1434,7 +1403,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1504,8 +1472,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -1562,7 +1529,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1588,7 +1554,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1621,7 +1586,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", From 5951821ecd72480f5482f791f7465ec43a112c46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?jordan=20gonz=C3=A1lez?= <30836115+duncanista@users.noreply.github.com> Date: Thu, 27 Jul 2023 23:15:31 -0400 Subject: [PATCH 033/268] feat: support Python 3.11 (#355) * update scripts * update gh actions * update `pyproject.toml` * update `README.md` * add snapshots * fix: ints * fix the potential circular import --------- Co-authored-by: AJ Stuyvenberg Co-authored-by: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> --- .github/workflows/build.yml | 4 +- README.md | 2 +- pyproject.toml | 1 + scripts/add_new_region.sh | 4 +- scripts/build_layers.sh | 2 +- scripts/check_layer_size.sh | 2 +- scripts/list_layers.sh | 2 +- scripts/publish_layers.sh | 8 +- scripts/run_integration_tests.sh | 5 +- scripts/run_tests.sh | 2 +- scripts/sign_layers.sh | 2 + .../logs/async-metrics_python311.log | 1444 +++++++++++++++ .../snapshots/logs/sync-metrics_python311.log | 1606 +++++++++++++++++ tests/test_tracing.py | 2 +- 14 files changed, 3070 insertions(+), 16 deletions(-) create mode 100644 tests/integration/snapshots/logs/async-metrics_python311.log create mode 100644 tests/integration/snapshots/logs/sync-metrics_python311.log diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index bc76a699..97a4fbbe 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -41,7 +41,7 @@ jobs: strategy: max-parallel: 4 matrix: - python-version: ['3.7', '3.8', '3.9', '3.10'] + python-version: ['3.7', '3.8', '3.9', '3.10', '3.11'] steps: - name: Checkout @@ -68,7 +68,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - runtime-param: ['3.7', '3.8', '3.9', '3.10'] + runtime-param: ['3.7', '3.8', '3.9', '3.10', '3.11'] steps: - name: Checkout uses: actions/checkout@v3 diff --git a/README.md b/README.md index 87ec805c..757c929d 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ [![Slack](https://chat.datadoghq.com/badge.svg?bg=632CA6)](https://chat.datadoghq.com/) [![License](https://img.shields.io/badge/license-Apache--2.0-blue)](https://github.com/DataDog/datadog-lambda-python/blob/main/LICENSE) -Datadog Lambda Library for Python (3.7, 3.8, 3.9, and 3.10) enables [enhanced Lambda metrics](https://docs.datadoghq.com/serverless/enhanced_lambda_metrics), [distributed tracing](https://docs.datadoghq.com/serverless/distributed_tracing), and [custom metric submission](https://docs.datadoghq.com/serverless/custom_metrics) from AWS Lambda functions. +Datadog Lambda Library for Python (3.7, 3.8, 3.9, 3.10, and 3.11) enables [enhanced Lambda metrics](https://docs.datadoghq.com/serverless/enhanced_lambda_metrics), [distributed tracing](https://docs.datadoghq.com/serverless/distributed_tracing), and [custom metric submission](https://docs.datadoghq.com/serverless/custom_metrics) from AWS Lambda functions. ## Installation diff --git a/pyproject.toml b/pyproject.toml index cab0abe7..edcc020a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -20,6 +20,7 @@ classifiers = [ "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", ] [tool.poetry.dependencies] diff --git a/scripts/add_new_region.sh b/scripts/add_new_region.sh index 12a27b69..1b1753cf 100755 --- a/scripts/add_new_region.sh +++ b/scripts/add_new_region.sh @@ -12,8 +12,8 @@ set -e OLD_REGION='us-east-1' -LAYER_NAMES=("Datadog-Python37" "Datadog-Python38" "Datadog-Python38-ARM" "Datadog-Python39" "Datadog-Python39-ARM" "Datadog-Python310" "Datadog-Python310-ARM") -PYTHON_VERSIONS_FOR_AWS_CLI=("python3.7" "python3.8" "python3.8" "python3.9" "python3.9" "python3.10" "python3.10") +LAYER_NAMES=("Datadog-Python37" "Datadog-Python38" "Datadog-Python38-ARM" "Datadog-Python39" "Datadog-Python39-ARM" "Datadog-Python310" "Datadog-Python310-ARM" "Datadog-Python311" "Datadog-Python311-ARM") +PYTHON_VERSIONS_FOR_AWS_CLI=("python3.7" "python3.8" "python3.8" "python3.9" "python3.9" "python3.10" "python3.10" "python3.11" "python3.11") NEW_REGION=$1 publish_layer() { diff --git a/scripts/build_layers.sh b/scripts/build_layers.sh index 1a35a595..0312ff08 100755 --- a/scripts/build_layers.sh +++ b/scripts/build_layers.sh @@ -14,7 +14,7 @@ set -e LAYER_DIR=".layers" LAYER_FILES_PREFIX="datadog_lambda_py" -AVAILABLE_PYTHON_VERSIONS=("3.7" "3.8" "3.9" "3.10") +AVAILABLE_PYTHON_VERSIONS=("3.7" "3.8" "3.9" "3.10" "3.11") # Determine which Python versions to build layers for if [ -z "$PYTHON_VERSION" ]; then diff --git a/scripts/check_layer_size.sh b/scripts/check_layer_size.sh index e3da8ed5..5d839908 100755 --- a/scripts/check_layer_size.sh +++ b/scripts/check_layer_size.sh @@ -14,7 +14,7 @@ MAX_LAYER_UNCOMPRESSED_SIZE_KB=$(expr 24 \* 1024) LAYER_FILES_PREFIX="datadog_lambda_py" LAYER_DIR=".layers" -VERSIONS=("3.7" "3.8" "3.9" "3.10") +VERSIONS=("3.7" "3.8" "3.9" "3.10" "3.11") for version in "${VERSIONS[@]}" do diff --git a/scripts/list_layers.sh b/scripts/list_layers.sh index 2039f31e..c0b541af 100755 --- a/scripts/list_layers.sh +++ b/scripts/list_layers.sh @@ -10,7 +10,7 @@ set -e -LAYER_NAMES=("Datadog-Python37" "Datadog-Python38" "Datadog-Python38-ARM" "Datadog-Python39" "Datadog-Python39-ARM" "Datadog-Python310" "Datadog-Python310-ARM") +LAYER_NAMES=("Datadog-Python37" "Datadog-Python38" "Datadog-Python38-ARM" "Datadog-Python39" "Datadog-Python39-ARM" "Datadog-Python310" "Datadog-Python310-ARM" "Datadog-Python311" "Datadog-Python311-ARM") AVAILABLE_REGIONS=$(aws ec2 describe-regions | jq -r '.[] | .[] | .RegionName') LAYERS_MISSING_REGIONS=() diff --git a/scripts/publish_layers.sh b/scripts/publish_layers.sh index 88b2741f..d379cb67 100755 --- a/scripts/publish_layers.sh +++ b/scripts/publish_layers.sh @@ -13,10 +13,10 @@ set -e # Makes sure any subprocesses will be terminated with this process trap "pkill -P $$; exit 1;" INT -PYTHON_VERSIONS_FOR_AWS_CLI=("python3.7" "python3.8" "python3.8" "python3.9" "python3.9" "python3.10" "python3.10") -LAYER_PATHS=(".layers/datadog_lambda_py-amd64-3.7.zip" ".layers/datadog_lambda_py-amd64-3.8.zip" ".layers/datadog_lambda_py-arm64-3.8.zip" ".layers/datadog_lambda_py-amd64-3.9.zip" ".layers/datadog_lambda_py-arm64-3.9.zip" ".layers/datadog_lambda_py-amd64-3.10.zip" ".layers/datadog_lambda_py-arm64-3.10.zip") -AVAILABLE_LAYERS=("Datadog-Python37" "Datadog-Python38" "Datadog-Python38-ARM" "Datadog-Python39" "Datadog-Python39-ARM" "Datadog-Python310" "Datadog-Python310-ARM") -ARCHS=("amd64" "amd64" "amd64""amd64" "amd64" "arm64" "amd64" "arm64") +PYTHON_VERSIONS_FOR_AWS_CLI=("python3.7" "python3.8" "python3.8" "python3.9" "python3.9" "python3.10" "python3.10" "python3.11" "python3.11") +LAYER_PATHS=(".layers/datadog_lambda_py-amd64-3.7.zip" ".layers/datadog_lambda_py-amd64-3.8.zip" ".layers/datadog_lambda_py-arm64-3.8.zip" ".layers/datadog_lambda_py-amd64-3.9.zip" ".layers/datadog_lambda_py-arm64-3.9.zip" ".layers/datadog_lambda_py-amd64-3.10.zip" ".layers/datadog_lambda_py-arm64-3.10.zip" ".layers/datadog_lambda_py-amd64-3.11.zip" ".layers/datadog_lambda_py-arm64-3.11.zip") +AVAILABLE_LAYERS=("Datadog-Python37" "Datadog-Python38" "Datadog-Python38-ARM" "Datadog-Python39" "Datadog-Python39-ARM" "Datadog-Python310" "Datadog-Python310-ARM" "Datadog-Python311" "Datadog-Python311-ARM") +ARCHS=("amd64" "amd64" "amd64""amd64" "amd64" "arm64" "amd64" "arm64" "amd64" "arm64") AVAILABLE_REGIONS=$(aws ec2 describe-regions | jq -r '.[] | .[] | .RegionName') # Check that the layer files exist diff --git a/scripts/run_integration_tests.sh b/scripts/run_integration_tests.sh index 85a3dd2f..f3ee5f36 100755 --- a/scripts/run_integration_tests.sh +++ b/scripts/run_integration_tests.sh @@ -11,7 +11,7 @@ set -e # These values need to be in sync with serverless.yml, where there needs to be a function # defined for every handler_runtime combination LAMBDA_HANDLERS=("async-metrics" "sync-metrics") -RUNTIMES=("python37" "python38" "python39" "python310") +RUNTIMES=("python37" "python38" "python39" "python310" "python311") LOGS_WAIT_SECONDS=20 @@ -32,8 +32,9 @@ python37=("python3.7" "3.7" $(xxd -l 4 -c 4 -p < /dev/random)) python38=("python3.8" "3.8" $(xxd -l 4 -c 4 -p < /dev/random)) python39=("python3.9" "3.9" $(xxd -l 4 -c 4 -p < /dev/random)) python310=("python3.10" "3.10" $(xxd -l 4 -c 4 -p < /dev/random)) +python311=("python3.11" "3.11" $(xxd -l 4 -c 4 -p < /dev/random)) -PARAMETERS_SETS=("python37" "python38" "python39" "python310") +PARAMETERS_SETS=("python37" "python38" "python39" "python310" "python311") if [ -z "$RUNTIME_PARAM" ]; then echo "Python version not specified, running for all python versions." diff --git a/scripts/run_tests.sh b/scripts/run_tests.sh index a5bf09b7..193a6d00 100755 --- a/scripts/run_tests.sh +++ b/scripts/run_tests.sh @@ -8,7 +8,7 @@ # Run unit tests in Docker set -e -PYTHON_VERSIONS=("3.7" "3.8" "3.9" "3.10") +PYTHON_VERSIONS=("3.7" "3.8" "3.9" "3.10" "3.11") for python_version in "${PYTHON_VERSIONS[@]}" do diff --git a/scripts/sign_layers.sh b/scripts/sign_layers.sh index 166093a4..3c9aa662 100755 --- a/scripts/sign_layers.sh +++ b/scripts/sign_layers.sh @@ -16,6 +16,8 @@ LAYER_FILES=( "datadog_lambda_py-arm64-3.9.zip" "datadog_lambda_py-amd64-3.10.zip" "datadog_lambda_py-arm64-3.10.zip" + "datadog_lambda_py-amd64-3.11.zip" + "datadog_lambda_py-arm64-3.11.zip" ) SIGNING_PROFILE_NAME="DatadogLambdaSigningProfile" diff --git a/tests/integration/snapshots/logs/async-metrics_python311.log b/tests/integration/snapshots/logs/async-metrics_python311.log new file mode 100644 index 00000000..ff437d8e --- /dev/null +++ b/tests/integration/snapshots/logs/async-metrics_python311.log @@ -0,0 +1,1444 @@ +INIT_START Runtime Version: python:3.11.vX Runtime Version ARN: arn:aws:lambda:eu-west-1:XXXX:eu-west-1 +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python311", + "resource:integration-tests-python-XXXX-async-metrics_python311", + "cold_start:true", + "memorysize:1024", + "runtime:python3.11", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "XXXX.execute-api.us-east-2.amazonaws.com", + "resource": "GET /", + "name": "aws.apigateway", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.apigateway.rest", + "http.url": "XXXX.execute-api.us-east-2.amazonaws.com/", + "endpoint": "/", + "http.method": "GET", + "resource_names": "GET /", + "apiid": "XXXX", + "apiname": "XXXX", + "stage": "Prod", + "request_id": "XXXX", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "http.status_code": "200", + "peer.service": "integration-tests-python", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python311", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "true", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python311", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python311", + "functionname": "integration-tests-python-XXXX-async-metrics_python311", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "api-gateway", + "function_trigger.event_source_arn": "XXXX", + "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", + "http.url_details.path": "/Prod/", + "http.method": "GET", + "http.status_code": "200" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms (init: XXXX ms) Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python311", + "resource:integration-tests-python-XXXX-async-metrics_python311", + "cold_start:false", + "memorysize:1024", + "runtime:python3.11", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "dynamodb", + "resource": "ExampleTableWithStream", + "name": "aws.dynamodb", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.dynamodb", + "resource_names": "ExampleTableWithStream", + "tablename": "ExampleTableWithStream", + "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", + "event_id": "XXXX", + "event_name": "INSERT", + "event_version": "1.1", + "stream_view_type": "NEW_AND_OLD_IMAGES", + "size_bytes": "26", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python311", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python311", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python311", + "functionname": "integration-tests-python-XXXX-async-metrics_python311", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "dynamodb", + "function_trigger.event_source_arn": "XXXX" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python311", + "resource:integration-tests-python-XXXX-async-metrics_python311", + "cold_start:false", + "memorysize:1024", + "runtime:python3.11", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "eventbridge", + "resource": "eventbridge.custom.event.sender", + "name": "aws.eventbridge", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.eventbridge", + "resource_names": "eventbridge.custom.event.sender", + "detail_type": "testdetail", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python311", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python311", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python311", + "functionname": "integration-tests-python-XXXX-async-metrics_python311", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "eventbridge" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python311", + "resource:integration-tests-python-XXXX-async-metrics_python311", + "cold_start:false", + "memorysize:1024", + "runtime:python3.11", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", + "resource": "GET /httpapi/get", + "name": "aws.httpapi", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.httpapi", + "endpoint": "/httpapi/get", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "http.method": "GET", + "http.protocol": "HTTP/1.1", + "http.source_ip": "XXXX", + "http.user_agent": "XXXX/7.64.1", + "resource_names": "GET /httpapi/get", + "request_id": "XXXX", + "apiid": "XXXX", + "apiname": "XXXX", + "stage": "$default", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "http.status_code": "200", + "peer.service": "integration-tests-python", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python311", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python311", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python311", + "functionname": "integration-tests-python-XXXX-async-metrics_python311", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "api-gateway", + "function_trigger.event_source_arn": "XXXX$default", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.url_details.path": "/httpapi/get", + "http.method": "GET", + "http.status_code": "200" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python311", + "resource:integration-tests-python-XXXX-async-metrics_python311", + "cold_start:false", + "memorysize:1024", + "runtime:python3.11", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "kinesis", + "resource": "EXAMPLE", + "name": "aws.kinesis", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.kinesis", + "resource_names": "EXAMPLE", + "streamname": "EXAMPLE", + "shardid": "shardId-XXXX", + "event_source_arn": "arn:aws:kinesis:EXAMPLE", + "event_id": "XXXX", + "event_name": "aws:kinesis:record", + "event_version": "1.0", + "partition_key": "XXXX", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python311", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python311", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python311", + "functionname": "integration-tests-python-XXXX-async-metrics_python311", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "kinesis", + "function_trigger.event_source_arn": "XXXX" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python311", + "resource:integration-tests-python-XXXX-async-metrics_python311", + "cold_start:false", + "memorysize:1024", + "runtime:python3.11", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "s3", + "resource": "example-bucket", + "name": "aws.s3", + "error": 0, + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.s3", + "resource_names": "example-bucket", + "event_name": "ObjectCreated:Put", + "bucketname": "example-bucket", + "bucket_arn": "arn:aws:s3:::example-bucket", + "object_key": "test/key", + "object_size": "1024", + "object_etag": "XXXX", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python311", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python311", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python311", + "functionname": "integration-tests-python-XXXX-async-metrics_python311", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "s3", + "function_trigger.event_source_arn": "XXXX" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python311", + "resource:integration-tests-python-XXXX-async-metrics_python311", + "cold_start:false", + "memorysize:1024", + "runtime:python3.11", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "sns", + "resource": "sns-lambda", + "name": "aws.sns", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.sns", + "resource_names": "sns-lambda", + "topicname": "sns-lambda", + "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", + "message_id": "XXXX", + "type": "Notification", + "subject": "TestInvoke", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python311", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python311", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python311", + "functionname": "integration-tests-python-XXXX-async-metrics_python311", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "sns", + "function_trigger.event_source_arn": "XXXX" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python311", + "resource:integration-tests-python-XXXX-async-metrics_python311", + "cold_start:false", + "memorysize:1024", + "runtime:python3.11", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "sqs", + "resource": "my-queue", + "name": "aws.sqs", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.sqs", + "resource_names": "my-queue", + "queuename": "my-queue", + "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", + "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", + "sender_id": "AIDAIENQZJOLO23YVJ4VO", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python311", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python311", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python311", + "functionname": "integration-tests-python-XXXX-async-metrics_python311", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "sqs", + "function_trigger.event_source_arn": "XXXX" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python311", + "resource:integration-tests-python-XXXX-async-metrics_python311", + "cold_start:false", + "memorysize:1024", + "runtime:python3.11", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", + "resource": "$default", + "name": "aws.apigateway.websocket", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.apigateway.websocket", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com$default", + "endpoint": "$default", + "resource_names": "$default", + "apiid": "XXXX", + "apiname": "XXXX", + "stage": "dev", + "request_id": "XXXX", + "connection_id": "XXXX=", + "event_type": "MESSAGE", + "message_direction": "IN", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "http.status_code": "200", + "peer.service": "integration-tests-python", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python311", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python311", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python311", + "functionname": "integration-tests-python-XXXX-async-metrics_python311", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "api-gateway", + "function_trigger.event_source_arn": "XXXX", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.status_code": "200" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB diff --git a/tests/integration/snapshots/logs/sync-metrics_python311.log b/tests/integration/snapshots/logs/sync-metrics_python311.log new file mode 100644 index 00000000..b83c9920 --- /dev/null +++ b/tests/integration/snapshots/logs/sync-metrics_python311.log @@ -0,0 +1,1606 @@ +INIT_START Runtime Version: python:3.11.vX Runtime Version ARN: arn:aws:lambda:eu-west-1:XXXX:eu-west-1 +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python311", + "resource:integration-tests-python-XXXX-sync-metrics_python311", + "cold_start:true", + "memorysize:1024", + "runtime:python3.11", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "XXXX.execute-api.us-east-2.amazonaws.com", + "resource": "GET /", + "name": "aws.apigateway", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.apigateway.rest", + "http.url": "XXXX.execute-api.us-east-2.amazonaws.com/", + "endpoint": "/", + "http.method": "GET", + "resource_names": "GET /", + "apiid": "XXXX", + "apiname": "XXXX", + "stage": "Prod", + "request_id": "XXXX", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "http.status_code": "200", + "peer.service": "integration-tests-python", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python311", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "true", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python311", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python311", + "functionname": "integration-tests-python-XXXX-sync-metrics_python311", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "api-gateway", + "function_trigger.event_source_arn": "XXXX", + "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", + "http.url_details.path": "/Prod/", + "http.method": "GET", + "http.status_code": "200" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X", "service:integration-tests-python"], "interval": 10}]} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms (init: XXXX ms) Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python311", + "resource:integration-tests-python-XXXX-sync-metrics_python311", + "cold_start:false", + "memorysize:1024", + "runtime:python3.11", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "dynamodb", + "resource": "ExampleTableWithStream", + "name": "aws.dynamodb", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.dynamodb", + "resource_names": "ExampleTableWithStream", + "tablename": "ExampleTableWithStream", + "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", + "event_id": "XXXX", + "event_name": "INSERT", + "event_version": "1.1", + "stream_view_type": "NEW_AND_OLD_IMAGES", + "size_bytes": "26", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python311", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python311", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python311", + "functionname": "integration-tests-python-XXXX-sync-metrics_python311", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "dynamodb", + "function_trigger.event_source_arn": "XXXX" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X", "service:integration-tests-python"], "interval": 10}]} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python311", + "resource:integration-tests-python-XXXX-sync-metrics_python311", + "cold_start:false", + "memorysize:1024", + "runtime:python3.11", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "eventbridge", + "resource": "eventbridge.custom.event.sender", + "name": "aws.eventbridge", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.eventbridge", + "resource_names": "eventbridge.custom.event.sender", + "detail_type": "testdetail", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python311", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python311", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python311", + "functionname": "integration-tests-python-XXXX-sync-metrics_python311", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "eventbridge" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X", "service:integration-tests-python"], "interval": 10}]} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python311", + "resource:integration-tests-python-XXXX-sync-metrics_python311", + "cold_start:false", + "memorysize:1024", + "runtime:python3.11", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", + "resource": "GET /httpapi/get", + "name": "aws.httpapi", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.httpapi", + "endpoint": "/httpapi/get", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "http.method": "GET", + "http.protocol": "HTTP/1.1", + "http.source_ip": "XXXX", + "http.user_agent": "XXXX/7.64.1", + "resource_names": "GET /httpapi/get", + "request_id": "XXXX", + "apiid": "XXXX", + "apiname": "XXXX", + "stage": "$default", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "http.status_code": "200", + "peer.service": "integration-tests-python", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python311", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python311", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python311", + "functionname": "integration-tests-python-XXXX-sync-metrics_python311", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "api-gateway", + "function_trigger.event_source_arn": "XXXX$default", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.url_details.path": "/httpapi/get", + "http.method": "GET", + "http.status_code": "200" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X", "service:integration-tests-python"], "interval": 10}]} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python311", + "resource:integration-tests-python-XXXX-sync-metrics_python311", + "cold_start:false", + "memorysize:1024", + "runtime:python3.11", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "kinesis", + "resource": "EXAMPLE", + "name": "aws.kinesis", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.kinesis", + "resource_names": "EXAMPLE", + "streamname": "EXAMPLE", + "shardid": "shardId-XXXX", + "event_source_arn": "arn:aws:kinesis:EXAMPLE", + "event_id": "XXXX", + "event_name": "aws:kinesis:record", + "event_version": "1.0", + "partition_key": "XXXX", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python311", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python311", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python311", + "functionname": "integration-tests-python-XXXX-sync-metrics_python311", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "kinesis", + "function_trigger.event_source_arn": "XXXX" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X", "service:integration-tests-python"], "interval": 10}]} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python311", + "resource:integration-tests-python-XXXX-sync-metrics_python311", + "cold_start:false", + "memorysize:1024", + "runtime:python3.11", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "s3", + "resource": "example-bucket", + "name": "aws.s3", + "error": 0, + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.s3", + "resource_names": "example-bucket", + "event_name": "ObjectCreated:Put", + "bucketname": "example-bucket", + "bucket_arn": "arn:aws:s3:::example-bucket", + "object_key": "test/key", + "object_size": "1024", + "object_etag": "XXXX", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python311", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python311", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python311", + "functionname": "integration-tests-python-XXXX-sync-metrics_python311", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "s3", + "function_trigger.event_source_arn": "XXXX" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X", "service:integration-tests-python"], "interval": 10}]} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python311", + "resource:integration-tests-python-XXXX-sync-metrics_python311", + "cold_start:false", + "memorysize:1024", + "runtime:python3.11", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "sns", + "resource": "sns-lambda", + "name": "aws.sns", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.sns", + "resource_names": "sns-lambda", + "topicname": "sns-lambda", + "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", + "message_id": "XXXX", + "type": "Notification", + "subject": "TestInvoke", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python311", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python311", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python311", + "functionname": "integration-tests-python-XXXX-sync-metrics_python311", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "sns", + "function_trigger.event_source_arn": "XXXX" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X", "service:integration-tests-python"], "interval": 10}]} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python311", + "resource:integration-tests-python-XXXX-sync-metrics_python311", + "cold_start:false", + "memorysize:1024", + "runtime:python3.11", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "sqs", + "resource": "my-queue", + "name": "aws.sqs", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.sqs", + "resource_names": "my-queue", + "queuename": "my-queue", + "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", + "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", + "sender_id": "AIDAIENQZJOLO23YVJ4VO", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python311", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python311", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python311", + "functionname": "integration-tests-python-XXXX-sync-metrics_python311", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "sqs", + "function_trigger.event_source_arn": "XXXX" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X", "service:integration-tests-python"], "interval": 10}]} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python311", + "resource:integration-tests-python-XXXX-sync-metrics_python311", + "cold_start:false", + "memorysize:1024", + "runtime:python3.11", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", + "resource": "$default", + "name": "aws.apigateway.websocket", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.apigateway.websocket", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com$default", + "endpoint": "$default", + "resource_names": "$default", + "apiid": "XXXX", + "apiname": "XXXX", + "stage": "dev", + "request_id": "XXXX", + "connection_id": "XXXX=", + "event_type": "MESSAGE", + "message_direction": "IN", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "http.status_code": "200", + "peer.service": "integration-tests-python", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python311", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python311", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python311", + "functionname": "integration-tests-python-XXXX-sync-metrics_python311", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "api-gateway", + "function_trigger.event_source_arn": "XXXX", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.status_code": "200" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X", "service:integration-tests-python"], "interval": 10}]} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB diff --git a/tests/test_tracing.py b/tests/test_tracing.py index f5f41f94..978c0f1f 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -589,7 +589,7 @@ def setUp(self): self.mock_is_lambda_context = patcher.start() self.mock_is_lambda_context.return_value = True self.addCleanup(patcher.stop) - patcher = patch("ddtrace.tracer.context_provider.activate") + patcher = patch("datadog_lambda.tracing.tracer.context_provider.activate") self.mock_activate = patcher.start() self.mock_activate.return_value = True self.addCleanup(patcher.stop) From faf5b6b648cacadc0b027962dcd022837861f04d Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Mon, 31 Jul 2023 10:14:30 -0400 Subject: [PATCH 034/268] Bump version to 4.77.0 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index edcc020a..cf14f7c4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "4.75.0" +version = "4.77.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 63f708208965730c4e51bf03bd8e0e1edfcaa507 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?jordan=20gonz=C3=A1lez?= <30836115+duncanista@users.noreply.github.com> Date: Mon, 7 Aug 2023 10:57:29 -0400 Subject: [PATCH 035/268] feat: EventBridge to SQS support (#358) * add eventbridge to sqs inferred span support also allowed to properly extract trace context * add unit tests * lint and fix event * lint * fix unpacking * lint * update docs --- datadog_lambda/tracing.py | 71 +++++++++++++++++++++--- tests/event_samples/eventbridge-sqs.json | 21 +++++++ tests/test_tracing.py | 50 +++++++++++++++++ 3 files changed, 134 insertions(+), 8 deletions(-) create mode 100644 tests/event_samples/eventbridge-sqs.json diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 198332a3..92c3e01c 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -229,10 +229,29 @@ def create_sns_event(message): def extract_context_from_sqs_or_sns_event_or_context(event, lambda_context): """ - Extract Datadog trace context from the first SQS message attributes. + Extract Datadog trace context from an SQS event. + + The extraction chain goes as follows: + EB => SQS (First records body contains EB context), or + SNS => SQS (First records body contains SNS context), or + SQS or SNS (`messageAttributes` for SQS context, + `MessageAttributes` for SNS context), else + Lambda Context. Falls back to lambda context if no trace data is found in the SQS message attributes. """ + + # EventBridge => SQS + try: + ( + trace_id, + parent_id, + sampling_priority, + ) = _extract_context_from_eventbridge_sqs_event(event) + return trace_id, parent_id, sampling_priority + except Exception: + logger.debug("Failed extracting context as EventBridge to SQS.") + try: first_record = event.get("Records")[0] @@ -283,6 +302,30 @@ def extract_context_from_sqs_or_sns_event_or_context(event, lambda_context): return extract_context_from_lambda_context(lambda_context) +def _extract_context_from_eventbridge_sqs_event(event): + """ + Extracts Datadog trace context from an SQS event triggered by + EventBridge. + + This is only possible if first record in `Records` contains a + `body` field which contains the EventBridge `detail` as a JSON string. + """ + try: + first_record = event.get("Records")[0] + if "body" in first_record: + body_str = first_record.get("body", {}) + body = json.loads(body_str) + + detail = body.get("detail") + dd_context = detail.get("_datadog") + trace_id = dd_context.get(TraceHeader.TRACE_ID) + parent_id = dd_context.get(TraceHeader.PARENT_ID) + sampling_priority = dd_context.get(TraceHeader.SAMPLING_PRIORITY) + return trace_id, parent_id, sampling_priority + except Exception: + raise + + def extract_context_from_eventbridge_event(event, lambda_context): """ Extract datadog trace context from an EventBridge message's Details. @@ -995,21 +1038,33 @@ def create_inferred_span_from_sqs_event(event, context): } start_time = int(request_time_epoch) / 1000 - # logic to deal with SNS => SQS event - sns_span = None + upstream_span = None if "body" in event_record: body_str = event_record.get("body", {}) try: body = json.loads(body_str) + + # logic to deal with SNS => SQS event if body.get("Type", "") == "Notification" and "TopicArn" in body: logger.debug("Found SNS message inside SQS event") - sns_span = create_inferred_span_from_sns_event( + upstream_span = create_inferred_span_from_sns_event( create_sns_event(body), context ) - sns_span.finish(finish_time=start_time) + upstream_span.finish(finish_time=start_time) + + # EventBridge => SQS + elif body.get("detail"): + detail = body.get("detail") + if detail.get("_datadog"): + logger.debug("Found an EventBridge message inside SQS event") + upstream_span = create_inferred_span_from_eventbridge_event( + body, context + ) + upstream_span.finish(finish_time=start_time) + except Exception as e: logger.debug( - "Unable to create SNS span from SQS message, with error %s" % e + "Unable to create upstream span from SQS message, with error %s" % e ) pass @@ -1021,8 +1076,8 @@ def create_inferred_span_from_sqs_event(event, context): if span: span.set_tags(tags) span.start = start_time - if sns_span: - span.parent_id = sns_span.span_id + if upstream_span: + span.parent_id = upstream_span.span_id return span diff --git a/tests/event_samples/eventbridge-sqs.json b/tests/event_samples/eventbridge-sqs.json new file mode 100644 index 00000000..606abc09 --- /dev/null +++ b/tests/event_samples/eventbridge-sqs.json @@ -0,0 +1,21 @@ +{ + "Records": [ + { + "messageId": "e995e54f-1724-41fa-82c0-8b81821f854e", + "receiptHandle": "AQEB4mIfRcyqtzn1X5Ss+ConhTejVGc+qnAcmu3/Z9ZvbNkaPcpuDLX/bzvPD/ZkAXJUXZcemGSJmd7L3snZHKMP2Ck8runZiyl4mubiLb444pZvdiNPuGRJ6a3FvgS/GQPzho/9nNMyOi66m8Viwh70v4EUCPGO4JmD3TTDAUrrcAnqU4WSObjfC/NAp9bI6wH2CEyAYEfex6Nxplbl/jBf9ZUG0I3m3vQd0Q4l4gd4jIR4oxQUglU2Tldl4Kx5fMUAhTRLAENri6HsY81avBkKd9FAuxONlsITB5uj02kOkvLlRGEcalqsKyPJ7AFaDLrOLaL3U+yReroPEJ5R5nwhLOEbeN5HROlZRXeaAwZOIN8BjqdeooYTIOrtvMEVb7a6OPLMdH1XB+ddevtKAH8K9Tm2ZjpaA7dtBGh1zFVHzBk=", + "body": "{\"version\":\"0\",\"id\":\"af718b2a-b987-e8c0-7a2b-a188fad2661a\",\"detail-type\":\"my.Detail\",\"source\":\"my.Source\",\"account\":\"425362996713\",\"time\":\"2023-08-03T22:49:03Z\",\"region\":\"us-east-1\",\"resources\":[],\"detail\":{\"text\":\"Hello, world!\",\"_datadog\":{\"x-datadog-trace-id\":\"7379586022458917877\",\"x-datadog-parent-id\":\"2644033662113726488\",\"x-datadog-sampling-priority\":\"1\",\"x-datadog-tags\":\"_dd.p.dm=-0\",\"traceparent\":\"00-000000000000000066698e63821a03f5-24b17e9b6476c018-01\",\"tracestate\":\"dd=t.dm:-0;s:1\"}}}", + "attributes": { + "ApproximateReceiveCount": "1", + "AWSTraceHeader": "Root=1-64cc2edd-112fbf1701d1355973a11d57;Parent=7d5a9776024b2d42;Sampled=0", + "SentTimestamp": "1691102943638", + "SenderId": "AIDAJXNJGGKNS7OSV23OI", + "ApproximateFirstReceiveTimestamp": "1691102943647" + }, + "messageAttributes": {}, + "md5OfBody": "93d9f0cd8886d1e000a1a0b7007bffc4", + "eventSource": "aws:sqs", + "eventSourceARN": "arn:aws:sqs:us-east-1:425362996713:eventbridge-sqs-queue", + "awsRegion": "us-east-1" + } + ] +} diff --git a/tests/test_tracing.py b/tests/test_tracing.py index 978c0f1f..24e6dcdd 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -1785,6 +1785,44 @@ def test_create_inferred_span_from_eventbridge_event(self): self.assertEqual(span.get_tag(InferredSpanInfo.TAG_SOURCE), "self") self.assertEqual(span.get_tag(InferredSpanInfo.SYNCHRONICITY), "async") + def test_create_inferred_span_from_eventbridge_sqs_event(self): + event_sample_name = "eventbridge-sqs" + test_file = event_samples + event_sample_name + ".json" + with open(test_file, "r") as event: + event = json.load(event) + ctx = get_mock_context() + ctx.aws_request_id = "123" + span = create_inferred_span(event, ctx) + self.assertEqual(span.get_tag("operation_name"), "aws.sqs") + self.assertEqual( + span.service, + "sqs", + ) + self.assertEqual( + span.get_tag("http.url"), + None, + ) + self.assertEqual(span.get_tag("endpoint"), None) + self.assertEqual(span.get_tag("http.method"), None) + self.assertEqual( + span.get_tag("resource_names"), + "eventbridge-sqs-queue", + ) + self.assertEqual(span.get_tag("request_id"), None) + self.assertEqual(span.get_tag("queuename"), "eventbridge-sqs-queue") + self.assertEqual( + span.get_tag("event_source_arn"), + "arn:aws:sqs:us-east-1:425362996713:eventbridge-sqs-queue", + ) + self.assertEqual( + span.get_tag("sender_id"), + "AIDAJXNJGGKNS7OSV23OI", + ) + self.assertEqual(span.start, 1691102943.638) + self.assertEqual(span.span_type, "web") + self.assertEqual(span.get_tag(InferredSpanInfo.TAG_SOURCE), "self") + self.assertEqual(span.get_tag(InferredSpanInfo.SYNCHRONICITY), "async") + def test_extract_context_from_eventbridge_event(self): event_sample_source = "eventbridge-custom" test_file = event_samples + event_sample_source + ".json" @@ -1806,6 +1844,18 @@ def test_extract_dd_trace_context_for_eventbridge(self): self.assertEqual(context["trace-id"], "12345") self.assertEqual(context["parent-id"], "67890") + def test_extract_context_from_eventbridge_sqs_event(self): + event_sample_source = "eventbridge-sqs" + test_file = event_samples + event_sample_source + ".json" + with open(test_file, "r") as event: + event = json.load(event) + + ctx = get_mock_context() + context, source, event_type = extract_dd_trace_context(event, ctx) + self.assertEqual(context["trace-id"], "7379586022458917877") + self.assertEqual(context["parent-id"], "2644033662113726488") + self.assertEqual(context["sampling-priority"], "1") + def test_extract_context_from_sqs_event_with_string_msg_attr(self): event_sample_source = "sqs-string-msg-attribute" test_file = event_samples + event_sample_source + ".json" From 8cd7e0dc83bad1359a6c11a1229edd1c6e3d935d Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Mon, 7 Aug 2023 12:26:51 -0400 Subject: [PATCH 036/268] Bump version to 4.78.0 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index cf14f7c4..70e81997 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "4.77.0" +version = "4.78.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 1ddb8e83a21a669c3e7e27af564fe5714da23046 Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Tue, 22 Aug 2023 07:58:28 -0400 Subject: [PATCH 037/268] feat: Support DD_TRACE_OTEL_ENABLED env var (#361) * feat: Support DD_TRACE_OTEL_ENABLED env var * fix: lint * fix: black * fix: Seems that only the ENV var must be set for ddtrace to care * fix: remove space --- datadog_lambda/tracing.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 92c3e01c..a9c223e3 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -41,6 +41,16 @@ EventSubtypes, ) +dd_trace_otel_enabled = ( + os.environ.get("DD_TRACE_OTEL_ENABLED", "false").lower() == "true" +) +if dd_trace_otel_enabled: + from opentelemetry.trace import set_tracer_provider + from ddtrace.opentelemetry import TracerProvider + + set_tracer_provider(TracerProvider()) + + logger = logging.getLogger(__name__) dd_trace_context = {} From 75d785822c44451dbd51c593de005f62756c02f7 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Tue, 22 Aug 2023 11:44:19 -0400 Subject: [PATCH 038/268] change the traceback format to print in one line (#362) * change the traceback format to print in one line --- datadog_lambda/wrapper.py | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index 7b9e87f9..f9675c68 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -125,8 +125,8 @@ def __new__(cls, func): else: logger.debug("datadog_lambda_wrapper already wrapped") return _NoopDecorator(func) - except Exception: - traceback.print_exc() + except Exception as e: + logger.error(format_err_with_traceback(e)) return func def __init__(self, func): @@ -204,8 +204,8 @@ def __init__(self, func): patch_all() logger.debug("datadog_lambda_wrapper initialized") - except Exception: - traceback.print_exc() + except Exception as e: + logger.error(format_err_with_traceback(e)) def __call__(self, event, context, **kwargs): """Executes when the wrapped function gets called""" @@ -291,8 +291,8 @@ def _before(self, event, context): if profiling_env_var and is_new_sandbox(): self.prof.start(stop_on_exit=False, profile_children=True) logger.debug("datadog_lambda_wrapper _before() done") - except Exception: - traceback.print_exc() + except Exception as e: + logger.error(format_err_with_traceback(e)) def _after(self, event, context): try: @@ -358,8 +358,14 @@ def _after(self, event, context): event.get("requestContext", {}).get("requestId") ) logger.debug("datadog_lambda_wrapper _after() done") - except Exception: - traceback.print_exc() + except Exception as e: + logger.error(format_err_with_traceback(e)) + + +def format_err_with_traceback(e): + return "Error {}. Traceback: {}".format( + e, traceback.format_exc().replace("\n", "\r") + ) datadog_lambda_wrapper = _LambdaDecorator From 8f2686cdcbc8d25b122e3ba24bdec3e5dd3a8f7d Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Thu, 31 Aug 2023 15:07:16 -0400 Subject: [PATCH 039/268] use docker-cp when building layers (#366) --- scripts/build_layers.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/build_layers.sh b/scripts/build_layers.sh index 0312ff08..976ba5d1 100755 --- a/scripts/build_layers.sh +++ b/scripts/build_layers.sh @@ -51,9 +51,9 @@ function docker_build_zip { --platform linux/${arch} \ --load - # Run the image by runtime tag, tar its generatd `python` directory to sdout, - # then extract it to a temp directory. - docker run datadog-lambda-python-${arch}:$1 tar cf - python | tar -xf - -C $temp_dir + # Run the image by runtime tag and copy the output /build/python to the temp dir + dockerId=$(docker create datadog-lambda-python-${arch}:$1) + docker cp $dockerId:/build/python $temp_dir/python # Zip to destination, and keep directory structure as based in $temp_dir From 1bb4cdafd0cca8d9873c30a38fcdeffb6393f2e6 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Thu, 31 Aug 2023 16:59:31 -0400 Subject: [PATCH 040/268] Update aws-vault usage to sso (#365) --- scripts/publish_prod.sh | 6 +++--- scripts/publish_sandbox.sh | 4 ++-- scripts/run_integration_tests.sh | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/scripts/publish_prod.sh b/scripts/publish_prod.sh index a6ea0dee..e8838c5a 100755 --- a/scripts/publish_prod.sh +++ b/scripts/publish_prod.sh @@ -34,7 +34,7 @@ fi # Ensure AWS access before proceeding ddsaml2aws login -a govcloud-us1-fed-human-engineering AWS_PROFILE=govcloud-us1-fed-human-engineering aws sts get-caller-identity -aws-vault exec prod-engineering -- aws sts get-caller-identity +aws-vault exec sso-prod-engineering -- aws sts get-caller-identity # Ensure pypi registry access read -p "Do you have access to PyPI (y/n)?" CONT @@ -64,11 +64,11 @@ echo "Building layers..." echo echo "Signing layers for commercial AWS regions" -aws-vault exec prod-engineering -- ./scripts/sign_layers.sh prod +aws-vault exec sso-prod-engineering -- ./scripts/sign_layers.sh prod echo echo "Publishing layers to commercial AWS regions" -VERSION=$LAYER_VERSION aws-vault exec prod-engineering -- ./scripts/publish_layers.sh +VERSION=$LAYER_VERSION aws-vault exec sso-prod-engineering -- ./scripts/publish_layers.sh echo "Publishing layers to GovCloud AWS regions" ddsaml2aws login -a govcloud-us1-fed-human-engineering diff --git a/scripts/publish_sandbox.sh b/scripts/publish_sandbox.sh index 4dec5889..8f7d1de5 100755 --- a/scripts/publish_sandbox.sh +++ b/scripts/publish_sandbox.sh @@ -4,8 +4,8 @@ set -e ./scripts/build_layers.sh -aws-vault exec serverless-sandbox-account-admin -- ./scripts/sign_layers.sh sandbox -aws-vault exec serverless-sandbox-account-admin -- ./scripts/publish_layers.sh +aws-vault exec sso-serverless-sandbox-account-admin -- ./scripts/sign_layers.sh sandbox +aws-vault exec sso-serverless-sandbox-account-admin -- ./scripts/publish_layers.sh # Automatically create PR against github.com/DataDog/documentation # If you'd like to test, please uncomment the below line diff --git a/scripts/run_integration_tests.sh b/scripts/run_integration_tests.sh index f3ee5f36..beb91921 100755 --- a/scripts/run_integration_tests.sh +++ b/scripts/run_integration_tests.sh @@ -2,9 +2,9 @@ # Usage - run commands from repo root: # To check if new changes to the layer cause changes to any snapshots: -# BUILD_LAYERS=true DD_API_KEY=XXXX aws-vault exec serverless-sandbox-account-admin -- ./scripts/run_integration_tests +# BUILD_LAYERS=true DD_API_KEY=XXXX aws-vault exec sso-serverless-sandbox-account-admin -- ./scripts/run_integration_tests # To regenerate snapshots: -# UPDATE_SNAPSHOTS=true DD_API_KEY=XXXX aws-vault exec serverless-sandbox-account-admin -- ./scripts/run_integration_tests +# UPDATE_SNAPSHOTS=true DD_API_KEY=XXXX aws-vault exec sso-serverless-sandbox-account-admin -- ./scripts/run_integration_tests set -e From 5958375cbe042d8d0aa78c22a1a0187610616c1e Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Thu, 31 Aug 2023 17:32:35 -0400 Subject: [PATCH 041/268] Bump version to 4.79.0 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 70e81997..e5c2b09a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "4.78.0" +version = "4.79.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 080274d830f6c04fbbbde883e9be2b1f0e84c2e9 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Mon, 11 Sep 2023 11:11:40 -0400 Subject: [PATCH 042/268] enhancing tag_object (#367) * enhancing tag_object * format --- datadog_lambda/tag_object.py | 17 +++++++--- tests/test_tag_object.py | 61 ++++++++++++++++++++++++++++++------ 2 files changed, 64 insertions(+), 14 deletions(-) diff --git a/datadog_lambda/tag_object.py b/datadog_lambda/tag_object.py index 02dc3ebe..151801f6 100644 --- a/datadog_lambda/tag_object.py +++ b/datadog_lambda/tag_object.py @@ -28,18 +28,27 @@ def tag_object(span, key, obj, depth=0): redacted = _redact_val(key, obj[0:5000]) return span.set_tag(key, redacted) if isinstance(obj, int) or isinstance(obj, float) or isinstance(obj, Decimal): - return span.set_tag(key, obj) + return span.set_tag(key, str(obj)) if isinstance(obj, list): for k, v in enumerate(obj): formatted_key = "{}.{}".format(key, k) tag_object(span, formatted_key, v, depth) return - if isinstance(obj, object): - for k in obj: - v = obj.get(k) + if hasattr(obj, "items"): + for k, v in obj.items(): formatted_key = "{}.{}".format(key, k) tag_object(span, formatted_key, v, depth) return + if hasattr(obj, "to_dict"): + for k, v in obj.to_dict().items(): + formatted_key = "{}.{}".format(key, k) + tag_object(span, formatted_key, v, depth) + return + try: + value_as_str = str(obj) + except Exception: + value_as_str = "UNKNOWN" + return span.set_tag(key, value_as_str) def _should_try_string(obj): diff --git a/tests/test_tag_object.py b/tests/test_tag_object.py index 67622afe..8e5ac3aa 100644 --- a/tests/test_tag_object.py +++ b/tests/test_tag_object.py @@ -19,12 +19,12 @@ def test_tag_object(self): tag_object(spanMock, "function.request", payload) spanMock.set_tag.assert_has_calls( [ - call("function.request.vals.0.thingOne", 1), - call("function.request.vals.1.thingTwo", 2), + call("function.request.vals.0.thingOne", "1"), + call("function.request.vals.1.thingTwo", "2"), call("function.request.hello", "world"), call("function.request.anotherThing.blah", None), call("function.request.anotherThing.foo", "bar"), - call("function.request.anotherThing.nice", True), + call("function.request.anotherThing.nice", "True"), ], True, ) @@ -40,12 +40,12 @@ def test_redacted_tag_object(self): tag_object(spanMock, "function.request", payload) spanMock.set_tag.assert_has_calls( [ - call("function.request.vals.0.thingOne", 1), - call("function.request.vals.1.thingTwo", 2), + call("function.request.vals.0.thingOne", "1"), + call("function.request.vals.1.thingTwo", "2"), call("function.request.authorization", "redacted"), call("function.request.anotherThing.blah", None), call("function.request.anotherThing.password", "redacted"), - call("function.request.anotherThing.nice", True), + call("function.request.anotherThing.nice", "True"), ], True, ) @@ -62,7 +62,7 @@ def test_json_tag_object(self): call("function.request.token", "redacted"), call("function.request.jsonString.stringifyThisJson.0.here", "is"), call("function.request.jsonString.stringifyThisJson.0.an", "object"), - call("function.request.jsonString.stringifyThisJson.0.number", 1), + call("function.request.jsonString.stringifyThisJson.0.number", "1"), ], True, ) @@ -79,18 +79,59 @@ def test_unicode_tag_object(self): call("function.request.token", "redacted"), call("function.request.jsonString.stringifyThisJson.0.here", "is"), call("function.request.jsonString.stringifyThisJson.0.an", "object"), - call("function.request.jsonString.stringifyThisJson.0.number", 1), + call("function.request.jsonString.stringifyThisJson.0.number", "1"), ], True, ) def test_decimal_tag_object(self): - payload = {"myValue": Decimal(500.50)} + payload = {"myValue": Decimal(500.5)} spanMock = MagicMock() tag_object(spanMock, "function.request", payload) spanMock.set_tag.assert_has_calls( [ - call("function.request.myValue", Decimal(500.50)), + call("function.request.myValue", "500.5"), + ], + True, + ) + + class CustomResponse(object): + """ + For example, chalice.app.Response class + """ + + def __init__(self, body, headers=None, status_code: int = 200): + self.body = body + if headers is None: + headers = {} + self.headers = headers + self.status_code = status_code + + def __str__(self): + return str(self.body) + + class ResponseHasToDict(CustomResponse): + def to_dict(self): + return self.headers + + def test_custom_response(self): + payload = self.CustomResponse({"hello": "world"}, {"key1": "val1"}, 200) + spanMock = MagicMock() + tag_object(spanMock, "function.response", payload) + spanMock.set_tag.assert_has_calls( + [ + call("function.response", "{'hello': 'world'}"), + ], + True, + ) + + def test_custom_response_to_dict(self): + payload = self.ResponseHasToDict({"hello": "world"}, {"key1": "val1"}, 200) + spanMock = MagicMock() + tag_object(spanMock, "function.response", payload) + spanMock.set_tag.assert_has_calls( + [ + call("function.response.key1", "val1"), ], True, ) From 962813a53c812b9ca8e56c0f48fb0734bdbdbcfe Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Mon, 11 Sep 2023 16:30:26 -0400 Subject: [PATCH 043/268] Bump version to 4.80.0 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index e5c2b09a..6227fdf0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "4.79.0" +version = "4.80.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 29535481f0a3026cc93de68231added6ba7025c9 Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Mon, 16 Oct 2023 13:09:05 -0400 Subject: [PATCH 044/268] feat: Pin dd trace below 2 (#374) * feat: Pin dd trace below 2 * feat: poetry install * feat: Fix call to MagicMock which causes ddtrace to fail msgpacking. Replace with a real span. * feat: Update snapshots * feat: strip binaries * feat: whitespace to appease editor lint --- Dockerfile | 2 + poetry.lock | 398 +++++++++--------- pyproject.toml | 2 +- .../logs/async-metrics_python310.log | 90 ++-- .../logs/async-metrics_python311.log | 90 ++-- .../snapshots/logs/async-metrics_python37.log | 90 ++-- .../snapshots/logs/async-metrics_python38.log | 90 ++-- .../snapshots/logs/async-metrics_python39.log | 90 ++-- .../snapshots/logs/sync-metrics_python310.log | 108 +++-- .../snapshots/logs/sync-metrics_python311.log | 108 +++-- .../snapshots/logs/sync-metrics_python37.log | 108 +++-- .../snapshots/logs/sync-metrics_python38.log | 108 +++-- .../snapshots/logs/sync-metrics_python39.log | 108 +++-- tests/test_wrapper.py | 5 +- 14 files changed, 888 insertions(+), 509 deletions(-) diff --git a/Dockerfile b/Dockerfile index 656b109f..7bd1f6cf 100644 --- a/Dockerfile +++ b/Dockerfile @@ -16,6 +16,8 @@ RUN find ./python/lib/$runtime/site-packages -name \*.pyc -delete # Remove botocore (40MB) to reduce package size. aws-xray-sdk # installs it, while it's already provided by the Lambda Runtime. +RUN find . -name '*.so' -exec strip -g {} \; + RUN rm -rf ./python/lib/$runtime/site-packages/botocore* RUN rm -rf ./python/lib/$runtime/site-packages/setuptools RUN rm -rf ./python/lib/$runtime/site-packages/jsonschema/tests diff --git a/poetry.lock b/poetry.lock index 5b473ed9..a8197fea 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.5.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.6.1 and should not be changed by hand. [[package]] name = "attrs" @@ -23,38 +23,41 @@ tests-no-zope = ["cloudpickle", "hypothesis", "mypy (>=1.1.1)", "pympler", "pyte [[package]] name = "boto3" -version = "1.28.13" +version = "1.28.62" description = "The AWS SDK for Python" optional = true python-versions = ">= 3.7" files = [ - {file = "boto3-1.28.13-py3-none-any.whl", hash = "sha256:b2d178c8a56fe3e4c9b123dccdff20e9555d12a597b72627fa659aa6295e238a"}, - {file = "boto3-1.28.13.tar.gz", hash = "sha256:db6443fd2c65d9f35f671b03bacb0592b62d06884395ed65d75922ccddc34c2e"}, + {file = "boto3-1.28.62-py3-none-any.whl", hash = "sha256:0dfa2fc96ccafce4feb23044d6cba8b25075ad428a0c450d369d099c6a1059d2"}, + {file = "boto3-1.28.62.tar.gz", hash = "sha256:148eeba0f1867b3db5b3e5ae2997d75a94d03fad46171374a0819168c36f7ed0"}, ] [package.dependencies] -botocore = ">=1.31.13,<1.32.0" +botocore = ">=1.31.62,<1.32.0" jmespath = ">=0.7.1,<2.0.0" -s3transfer = ">=0.6.0,<0.7.0" +s3transfer = ">=0.7.0,<0.8.0" [package.extras] crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] [[package]] name = "botocore" -version = "1.31.13" +version = "1.31.62" description = "Low-level, data-driven core of boto 3." optional = true python-versions = ">= 3.7" files = [ - {file = "botocore-1.31.13-py3-none-any.whl", hash = "sha256:78b96afbd88b8bd4c0967611a4cedddd9ea33d8601309dc351f81cbb5479d976"}, - {file = "botocore-1.31.13.tar.gz", hash = "sha256:9a5080ea2a444f0447a7a1a79f64252ae2a1417b6c13a54656ee991cb610dd4e"}, + {file = "botocore-1.31.62-py3-none-any.whl", hash = "sha256:be792d806afc064694a2d0b9b25779f3ca0c1584b29a35ac32e67f0064ddb8b7"}, + {file = "botocore-1.31.62.tar.gz", hash = "sha256:272b78ac65256b6294cb9cdb0ac484d447ad3a85642e33cb6a3b1b8afee15a4c"}, ] [package.dependencies] jmespath = ">=0.7.1,<2.0.0" python-dateutil = ">=2.1,<3.0.0" -urllib3 = ">=1.25.4,<1.27" +urllib3 = [ + {version = ">=1.25.4,<1.27", markers = "python_version < \"3.10\""}, + {version = ">=1.25.4,<2.1", markers = "python_version >= \"3.10\""}, +] [package.extras] crt = ["awscrt (==0.16.26)"] @@ -72,13 +75,13 @@ files = [ [[package]] name = "bytecode" -version = "0.14.2" +version = "0.15.0" description = "Python module to generate and modify bytecode" optional = false python-versions = ">=3.8" files = [ - {file = "bytecode-0.14.2-py3-none-any.whl", hash = "sha256:e368a2b9bbd7c986133c951250db94fb32f774cfc49752a9db9073bcf9899762"}, - {file = "bytecode-0.14.2.tar.gz", hash = "sha256:386378d9025d68ddb144870ae74330a492717b11b8c9164c4034e88add808f0c"}, + {file = "bytecode-0.15.0-py3-none-any.whl", hash = "sha256:a66718dc1d246b4fec52b5850c15592344a56c8bdb28fd243c895ccf00f8371f"}, + {file = "bytecode-0.15.0.tar.gz", hash = "sha256:0908a8348cabf366b5c1865daabcdc0d650cb0cbdeb1750cc90564852f81945c"}, ] [package.dependencies] @@ -122,86 +125,101 @@ files = [ [[package]] name = "charset-normalizer" -version = "3.2.0" +version = "3.3.0" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." optional = false python-versions = ">=3.7.0" files = [ - {file = "charset-normalizer-3.2.0.tar.gz", hash = "sha256:3bb3d25a8e6c0aedd251753a79ae98a093c7e7b471faa3aa9a93a81431987ace"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0b87549028f680ca955556e3bd57013ab47474c3124dc069faa0b6545b6c9710"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7c70087bfee18a42b4040bb9ec1ca15a08242cf5867c58726530bdf3945672ed"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a103b3a7069b62f5d4890ae1b8f0597618f628b286b03d4bc9195230b154bfa9"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94aea8eff76ee6d1cdacb07dd2123a68283cb5569e0250feab1240058f53b623"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:db901e2ac34c931d73054d9797383d0f8009991e723dab15109740a63e7f902a"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b0dac0ff919ba34d4df1b6131f59ce95b08b9065233446be7e459f95554c0dc8"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:193cbc708ea3aca45e7221ae58f0fd63f933753a9bfb498a3b474878f12caaad"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:09393e1b2a9461950b1c9a45d5fd251dc7c6f228acab64da1c9c0165d9c7765c"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:baacc6aee0b2ef6f3d308e197b5d7a81c0e70b06beae1f1fcacffdbd124fe0e3"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:bf420121d4c8dce6b889f0e8e4ec0ca34b7f40186203f06a946fa0276ba54029"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:c04a46716adde8d927adb9457bbe39cf473e1e2c2f5d0a16ceb837e5d841ad4f"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:aaf63899c94de41fe3cf934601b0f7ccb6b428c6e4eeb80da72c58eab077b19a"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d62e51710986674142526ab9f78663ca2b0726066ae26b78b22e0f5e571238dd"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-win32.whl", hash = "sha256:04e57ab9fbf9607b77f7d057974694b4f6b142da9ed4a199859d9d4d5c63fe96"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:48021783bdf96e3d6de03a6e39a1171ed5bd7e8bb93fc84cc649d11490f87cea"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:4957669ef390f0e6719db3613ab3a7631e68424604a7b448f079bee145da6e09"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:46fb8c61d794b78ec7134a715a3e564aafc8f6b5e338417cb19fe9f57a5a9bf2"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f779d3ad205f108d14e99bb3859aa7dd8e9c68874617c72354d7ecaec2a054ac"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f25c229a6ba38a35ae6e25ca1264621cc25d4d38dca2942a7fce0b67a4efe918"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2efb1bd13885392adfda4614c33d3b68dee4921fd0ac1d3988f8cbb7d589e72a"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f30b48dd7fa1474554b0b0f3fdfdd4c13b5c737a3c6284d3cdc424ec0ffff3a"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:246de67b99b6851627d945db38147d1b209a899311b1305dd84916f2b88526c6"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9bd9b3b31adcb054116447ea22caa61a285d92e94d710aa5ec97992ff5eb7cf3"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:8c2f5e83493748286002f9369f3e6607c565a6a90425a3a1fef5ae32a36d749d"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:3170c9399da12c9dc66366e9d14da8bf7147e1e9d9ea566067bbce7bb74bd9c2"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:7a4826ad2bd6b07ca615c74ab91f32f6c96d08f6fcc3902ceeedaec8cdc3bcd6"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:3b1613dd5aee995ec6d4c69f00378bbd07614702a315a2cf6c1d21461fe17c23"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9e608aafdb55eb9f255034709e20d5a83b6d60c054df0802fa9c9883d0a937aa"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-win32.whl", hash = "sha256:f2a1d0fd4242bd8643ce6f98927cf9c04540af6efa92323e9d3124f57727bfc1"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:681eb3d7e02e3c3655d1b16059fbfb605ac464c834a0c629048a30fad2b27489"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c57921cda3a80d0f2b8aec7e25c8aa14479ea92b5b51b6876d975d925a2ea346"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41b25eaa7d15909cf3ac4c96088c1f266a9a93ec44f87f1d13d4a0e86c81b982"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f058f6963fd82eb143c692cecdc89e075fa0828db2e5b291070485390b2f1c9c"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a7647ebdfb9682b7bb97e2a5e7cb6ae735b1c25008a70b906aecca294ee96cf4"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eef9df1eefada2c09a5e7a40991b9fc6ac6ef20b1372abd48d2794a316dc0449"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e03b8895a6990c9ab2cdcd0f2fe44088ca1c65ae592b8f795c3294af00a461c3"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:ee4006268ed33370957f55bf2e6f4d263eaf4dc3cfc473d1d90baff6ed36ce4a"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c4983bf937209c57240cff65906b18bb35e64ae872da6a0db937d7b4af845dd7"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:3bb7fda7260735efe66d5107fb7e6af6a7c04c7fce9b2514e04b7a74b06bf5dd"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:72814c01533f51d68702802d74f77ea026b5ec52793c791e2da806a3844a46c3"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:70c610f6cbe4b9fce272c407dd9d07e33e6bf7b4aa1b7ffb6f6ded8e634e3592"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-win32.whl", hash = "sha256:a401b4598e5d3f4a9a811f3daf42ee2291790c7f9d74b18d75d6e21dda98a1a1"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:c0b21078a4b56965e2b12f247467b234734491897e99c1d51cee628da9786959"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:95eb302ff792e12aba9a8b8f8474ab229a83c103d74a750ec0bd1c1eea32e669"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1a100c6d595a7f316f1b6f01d20815d916e75ff98c27a01ae817439ea7726329"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:6339d047dab2780cc6220f46306628e04d9750f02f983ddb37439ca47ced7149"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4b749b9cc6ee664a3300bb3a273c1ca8068c46be705b6c31cf5d276f8628a94"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a38856a971c602f98472050165cea2cdc97709240373041b69030be15047691f"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f87f746ee241d30d6ed93969de31e5ffd09a2961a051e60ae6bddde9ec3583aa"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89f1b185a01fe560bc8ae5f619e924407efca2191b56ce749ec84982fc59a32a"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e1c8a2f4c69e08e89632defbfabec2feb8a8d99edc9f89ce33c4b9e36ab63037"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2f4ac36d8e2b4cc1aa71df3dd84ff8efbe3bfb97ac41242fbcfc053c67434f46"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a386ebe437176aab38c041de1260cd3ea459c6ce5263594399880bbc398225b2"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:ccd16eb18a849fd8dcb23e23380e2f0a354e8daa0c984b8a732d9cfaba3a776d"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:e6a5bf2cba5ae1bb80b154ed68a3cfa2fa00fde979a7f50d6598d3e17d9ac20c"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:45de3f87179c1823e6d9e32156fb14c1927fcc9aba21433f088fdfb555b77c10"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-win32.whl", hash = "sha256:1000fba1057b92a65daec275aec30586c3de2401ccdcd41f8a5c1e2c87078706"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:8b2c760cfc7042b27ebdb4a43a4453bd829a5742503599144d54a032c5dc7e9e"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:855eafa5d5a2034b4621c74925d89c5efef61418570e5ef9b37717d9c796419c"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:203f0c8871d5a7987be20c72442488a0b8cfd0f43b7973771640fc593f56321f"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e857a2232ba53ae940d3456f7533ce6ca98b81917d47adc3c7fd55dad8fab858"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e86d77b090dbddbe78867a0275cb4df08ea195e660f1f7f13435a4649e954e5"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c4fb39a81950ec280984b3a44f5bd12819953dc5fa3a7e6fa7a80db5ee853952"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2dee8e57f052ef5353cf608e0b4c871aee320dd1b87d351c28764fc0ca55f9f4"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8700f06d0ce6f128de3ccdbc1acaea1ee264d2caa9ca05daaf492fde7c2a7200"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1920d4ff15ce893210c1f0c0e9d19bfbecb7983c76b33f046c13a8ffbd570252"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:c1c76a1743432b4b60ab3358c937a3fe1341c828ae6194108a94c69028247f22"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f7560358a6811e52e9c4d142d497f1a6e10103d3a6881f18d04dbce3729c0e2c"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:c8063cf17b19661471ecbdb3df1c84f24ad2e389e326ccaf89e3fb2484d8dd7e"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:cd6dbe0238f7743d0efe563ab46294f54f9bc8f4b9bcf57c3c666cc5bc9d1299"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:1249cbbf3d3b04902ff081ffbb33ce3377fa6e4c7356f759f3cd076cc138d020"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-win32.whl", hash = "sha256:6c409c0deba34f147f77efaa67b8e4bb83d2f11c8806405f76397ae5b8c0d1c9"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:7095f6fbfaa55defb6b733cfeb14efaae7a29f0b59d8cf213be4e7ca0b857b80"}, - {file = "charset_normalizer-3.2.0-py3-none-any.whl", hash = "sha256:8e098148dd37b4ce3baca71fb394c81dc5d9c7728c95df695d2dca218edf40e6"}, + {file = "charset-normalizer-3.3.0.tar.gz", hash = "sha256:63563193aec44bce707e0c5ca64ff69fa72ed7cf34ce6e11d5127555756fd2f6"}, + {file = "charset_normalizer-3.3.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:effe5406c9bd748a871dbcaf3ac69167c38d72db8c9baf3ff954c344f31c4cbe"}, + {file = "charset_normalizer-3.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4162918ef3098851fcd8a628bf9b6a98d10c380725df9e04caf5ca6dd48c847a"}, + {file = "charset_normalizer-3.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0570d21da019941634a531444364f2482e8db0b3425fcd5ac0c36565a64142c8"}, + {file = "charset_normalizer-3.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5707a746c6083a3a74b46b3a631d78d129edab06195a92a8ece755aac25a3f3d"}, + {file = "charset_normalizer-3.3.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:278c296c6f96fa686d74eb449ea1697f3c03dc28b75f873b65b5201806346a69"}, + {file = "charset_normalizer-3.3.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a4b71f4d1765639372a3b32d2638197f5cd5221b19531f9245fcc9ee62d38f56"}, + {file = "charset_normalizer-3.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5969baeaea61c97efa706b9b107dcba02784b1601c74ac84f2a532ea079403e"}, + {file = "charset_normalizer-3.3.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a3f93dab657839dfa61025056606600a11d0b696d79386f974e459a3fbc568ec"}, + {file = "charset_normalizer-3.3.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:db756e48f9c5c607b5e33dd36b1d5872d0422e960145b08ab0ec7fd420e9d649"}, + {file = "charset_normalizer-3.3.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:232ac332403e37e4a03d209a3f92ed9071f7d3dbda70e2a5e9cff1c4ba9f0678"}, + {file = "charset_normalizer-3.3.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:e5c1502d4ace69a179305abb3f0bb6141cbe4714bc9b31d427329a95acfc8bdd"}, + {file = "charset_normalizer-3.3.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:2502dd2a736c879c0f0d3e2161e74d9907231e25d35794584b1ca5284e43f596"}, + {file = "charset_normalizer-3.3.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23e8565ab7ff33218530bc817922fae827420f143479b753104ab801145b1d5b"}, + {file = "charset_normalizer-3.3.0-cp310-cp310-win32.whl", hash = "sha256:1872d01ac8c618a8da634e232f24793883d6e456a66593135aeafe3784b0848d"}, + {file = "charset_normalizer-3.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:557b21a44ceac6c6b9773bc65aa1b4cc3e248a5ad2f5b914b91579a32e22204d"}, + {file = "charset_normalizer-3.3.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:d7eff0f27edc5afa9e405f7165f85a6d782d308f3b6b9d96016c010597958e63"}, + {file = "charset_normalizer-3.3.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6a685067d05e46641d5d1623d7c7fdf15a357546cbb2f71b0ebde91b175ffc3e"}, + {file = "charset_normalizer-3.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0d3d5b7db9ed8a2b11a774db2bbea7ba1884430a205dbd54a32d61d7c2a190fa"}, + {file = "charset_normalizer-3.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2935ffc78db9645cb2086c2f8f4cfd23d9b73cc0dc80334bc30aac6f03f68f8c"}, + {file = "charset_normalizer-3.3.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9fe359b2e3a7729010060fbca442ca225280c16e923b37db0e955ac2a2b72a05"}, + {file = "charset_normalizer-3.3.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:380c4bde80bce25c6e4f77b19386f5ec9db230df9f2f2ac1e5ad7af2caa70459"}, + {file = "charset_normalizer-3.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0d1e3732768fecb052d90d62b220af62ead5748ac51ef61e7b32c266cac9293"}, + {file = "charset_normalizer-3.3.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1b2919306936ac6efb3aed1fbf81039f7087ddadb3160882a57ee2ff74fd2382"}, + {file = "charset_normalizer-3.3.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:f8888e31e3a85943743f8fc15e71536bda1c81d5aa36d014a3c0c44481d7db6e"}, + {file = "charset_normalizer-3.3.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:82eb849f085624f6a607538ee7b83a6d8126df6d2f7d3b319cb837b289123078"}, + {file = "charset_normalizer-3.3.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:7b8b8bf1189b3ba9b8de5c8db4d541b406611a71a955bbbd7385bbc45fcb786c"}, + {file = "charset_normalizer-3.3.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:5adf257bd58c1b8632046bbe43ee38c04e1038e9d37de9c57a94d6bd6ce5da34"}, + {file = "charset_normalizer-3.3.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c350354efb159b8767a6244c166f66e67506e06c8924ed74669b2c70bc8735b1"}, + {file = "charset_normalizer-3.3.0-cp311-cp311-win32.whl", hash = "sha256:02af06682e3590ab952599fbadac535ede5d60d78848e555aa58d0c0abbde786"}, + {file = "charset_normalizer-3.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:86d1f65ac145e2c9ed71d8ffb1905e9bba3a91ae29ba55b4c46ae6fc31d7c0d4"}, + {file = "charset_normalizer-3.3.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:3b447982ad46348c02cb90d230b75ac34e9886273df3a93eec0539308a6296d7"}, + {file = "charset_normalizer-3.3.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:abf0d9f45ea5fb95051c8bfe43cb40cda383772f7e5023a83cc481ca2604d74e"}, + {file = "charset_normalizer-3.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b09719a17a2301178fac4470d54b1680b18a5048b481cb8890e1ef820cb80455"}, + {file = "charset_normalizer-3.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b3d9b48ee6e3967b7901c052b670c7dda6deb812c309439adaffdec55c6d7b78"}, + {file = "charset_normalizer-3.3.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:edfe077ab09442d4ef3c52cb1f9dab89bff02f4524afc0acf2d46be17dc479f5"}, + {file = "charset_normalizer-3.3.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3debd1150027933210c2fc321527c2299118aa929c2f5a0a80ab6953e3bd1908"}, + {file = "charset_normalizer-3.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:86f63face3a527284f7bb8a9d4f78988e3c06823f7bea2bd6f0e0e9298ca0403"}, + {file = "charset_normalizer-3.3.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:24817cb02cbef7cd499f7c9a2735286b4782bd47a5b3516a0e84c50eab44b98e"}, + {file = "charset_normalizer-3.3.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:c71f16da1ed8949774ef79f4a0260d28b83b3a50c6576f8f4f0288d109777989"}, + {file = "charset_normalizer-3.3.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:9cf3126b85822c4e53aa28c7ec9869b924d6fcfb76e77a45c44b83d91afd74f9"}, + {file = "charset_normalizer-3.3.0-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:b3b2316b25644b23b54a6f6401074cebcecd1244c0b8e80111c9a3f1c8e83d65"}, + {file = "charset_normalizer-3.3.0-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:03680bb39035fbcffe828eae9c3f8afc0428c91d38e7d61aa992ef7a59fb120e"}, + {file = "charset_normalizer-3.3.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4cc152c5dd831641e995764f9f0b6589519f6f5123258ccaca8c6d34572fefa8"}, + {file = "charset_normalizer-3.3.0-cp312-cp312-win32.whl", hash = "sha256:b8f3307af845803fb0b060ab76cf6dd3a13adc15b6b451f54281d25911eb92df"}, + {file = "charset_normalizer-3.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:8eaf82f0eccd1505cf39a45a6bd0a8cf1c70dcfc30dba338207a969d91b965c0"}, + {file = "charset_normalizer-3.3.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:dc45229747b67ffc441b3de2f3ae5e62877a282ea828a5bdb67883c4ee4a8810"}, + {file = "charset_normalizer-3.3.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f4a0033ce9a76e391542c182f0d48d084855b5fcba5010f707c8e8c34663d77"}, + {file = "charset_normalizer-3.3.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ada214c6fa40f8d800e575de6b91a40d0548139e5dc457d2ebb61470abf50186"}, + {file = "charset_normalizer-3.3.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b1121de0e9d6e6ca08289583d7491e7fcb18a439305b34a30b20d8215922d43c"}, + {file = "charset_normalizer-3.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1063da2c85b95f2d1a430f1c33b55c9c17ffaf5e612e10aeaad641c55a9e2b9d"}, + {file = "charset_normalizer-3.3.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:70f1d09c0d7748b73290b29219e854b3207aea922f839437870d8cc2168e31cc"}, + {file = "charset_normalizer-3.3.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:250c9eb0f4600361dd80d46112213dff2286231d92d3e52af1e5a6083d10cad9"}, + {file = "charset_normalizer-3.3.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:750b446b2ffce1739e8578576092179160f6d26bd5e23eb1789c4d64d5af7dc7"}, + {file = "charset_normalizer-3.3.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:fc52b79d83a3fe3a360902d3f5d79073a993597d48114c29485e9431092905d8"}, + {file = "charset_normalizer-3.3.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:588245972aca710b5b68802c8cad9edaa98589b1b42ad2b53accd6910dad3545"}, + {file = "charset_normalizer-3.3.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e39c7eb31e3f5b1f88caff88bcff1b7f8334975b46f6ac6e9fc725d829bc35d4"}, + {file = "charset_normalizer-3.3.0-cp37-cp37m-win32.whl", hash = "sha256:abecce40dfebbfa6abf8e324e1860092eeca6f7375c8c4e655a8afb61af58f2c"}, + {file = "charset_normalizer-3.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:24a91a981f185721542a0b7c92e9054b7ab4fea0508a795846bc5b0abf8118d4"}, + {file = "charset_normalizer-3.3.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:67b8cc9574bb518ec76dc8e705d4c39ae78bb96237cb533edac149352c1f39fe"}, + {file = "charset_normalizer-3.3.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ac71b2977fb90c35d41c9453116e283fac47bb9096ad917b8819ca8b943abecd"}, + {file = "charset_normalizer-3.3.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:3ae38d325b512f63f8da31f826e6cb6c367336f95e418137286ba362925c877e"}, + {file = "charset_normalizer-3.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:542da1178c1c6af8873e143910e2269add130a299c9106eef2594e15dae5e482"}, + {file = "charset_normalizer-3.3.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:30a85aed0b864ac88309b7d94be09f6046c834ef60762a8833b660139cfbad13"}, + {file = "charset_normalizer-3.3.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aae32c93e0f64469f74ccc730a7cb21c7610af3a775157e50bbd38f816536b38"}, + {file = "charset_normalizer-3.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15b26ddf78d57f1d143bdf32e820fd8935d36abe8a25eb9ec0b5a71c82eb3895"}, + {file = "charset_normalizer-3.3.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7f5d10bae5d78e4551b7be7a9b29643a95aded9d0f602aa2ba584f0388e7a557"}, + {file = "charset_normalizer-3.3.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:249c6470a2b60935bafd1d1d13cd613f8cd8388d53461c67397ee6a0f5dce741"}, + {file = "charset_normalizer-3.3.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:c5a74c359b2d47d26cdbbc7845e9662d6b08a1e915eb015d044729e92e7050b7"}, + {file = "charset_normalizer-3.3.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:b5bcf60a228acae568e9911f410f9d9e0d43197d030ae5799e20dca8df588287"}, + {file = "charset_normalizer-3.3.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:187d18082694a29005ba2944c882344b6748d5be69e3a89bf3cc9d878e548d5a"}, + {file = "charset_normalizer-3.3.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:81bf654678e575403736b85ba3a7867e31c2c30a69bc57fe88e3ace52fb17b89"}, + {file = "charset_normalizer-3.3.0-cp38-cp38-win32.whl", hash = "sha256:85a32721ddde63c9df9ebb0d2045b9691d9750cb139c161c80e500d210f5e26e"}, + {file = "charset_normalizer-3.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:468d2a840567b13a590e67dd276c570f8de00ed767ecc611994c301d0f8c014f"}, + {file = "charset_normalizer-3.3.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e0fc42822278451bc13a2e8626cf2218ba570f27856b536e00cfa53099724828"}, + {file = "charset_normalizer-3.3.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:09c77f964f351a7369cc343911e0df63e762e42bac24cd7d18525961c81754f4"}, + {file = "charset_normalizer-3.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:12ebea541c44fdc88ccb794a13fe861cc5e35d64ed689513a5c03d05b53b7c82"}, + {file = "charset_normalizer-3.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:805dfea4ca10411a5296bcc75638017215a93ffb584c9e344731eef0dcfb026a"}, + {file = "charset_normalizer-3.3.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:96c2b49eb6a72c0e4991d62406e365d87067ca14c1a729a870d22354e6f68115"}, + {file = "charset_normalizer-3.3.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aaf7b34c5bc56b38c931a54f7952f1ff0ae77a2e82496583b247f7c969eb1479"}, + {file = "charset_normalizer-3.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:619d1c96099be5823db34fe89e2582b336b5b074a7f47f819d6b3a57ff7bdb86"}, + {file = "charset_normalizer-3.3.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a0ac5e7015a5920cfce654c06618ec40c33e12801711da6b4258af59a8eff00a"}, + {file = "charset_normalizer-3.3.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:93aa7eef6ee71c629b51ef873991d6911b906d7312c6e8e99790c0f33c576f89"}, + {file = "charset_normalizer-3.3.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7966951325782121e67c81299a031f4c115615e68046f79b85856b86ebffc4cd"}, + {file = "charset_normalizer-3.3.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:02673e456dc5ab13659f85196c534dc596d4ef260e4d86e856c3b2773ce09843"}, + {file = "charset_normalizer-3.3.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:c2af80fb58f0f24b3f3adcb9148e6203fa67dd3f61c4af146ecad033024dde43"}, + {file = "charset_normalizer-3.3.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:153e7b6e724761741e0974fc4dcd406d35ba70b92bfe3fedcb497226c93b9da7"}, + {file = "charset_normalizer-3.3.0-cp39-cp39-win32.whl", hash = "sha256:d47ecf253780c90ee181d4d871cd655a789da937454045b17b5798da9393901a"}, + {file = "charset_normalizer-3.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:d97d85fa63f315a8bdaba2af9a6a686e0eceab77b3089af45133252618e70884"}, + {file = "charset_normalizer-3.3.0-py3-none-any.whl", hash = "sha256:e46cd37076971c1040fc8c41273a8b3e2c624ce4f2be3f5dfcb7a430c1d3acc2"}, ] [[package]] @@ -278,13 +296,13 @@ toml = ["tomli"] [[package]] name = "datadog" -version = "0.46.0" +version = "0.47.0" description = "The Datadog Python library" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ - {file = "datadog-0.46.0-py2.py3-none-any.whl", hash = "sha256:3d7bcda6177b43be4cdb52e16b4bdd4f9005716c0dd7cfea009e018c36bb7a3d"}, - {file = "datadog-0.46.0.tar.gz", hash = "sha256:e4fbc92a85e2b0919a226896ae45fc5e4b356c0c57f1c2659659dfbe0789c674"}, + {file = "datadog-0.47.0-py2.py3-none-any.whl", hash = "sha256:a45ec997ab554208837e8c44d81d0e1456539dc14da5743687250e028bc809b7"}, + {file = "datadog-0.47.0.tar.gz", hash = "sha256:47be3b2c3d709a7f5b709eb126ed4fe6cc7977d618fe5c158dd89c2a9f7d9916"}, ] [package.dependencies] @@ -307,80 +325,80 @@ six = "*" [[package]] name = "ddtrace" -version = "1.15.2" +version = "1.20.3" description = "Datadog APM client library" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ - {file = "ddtrace-1.15.2-cp27-cp27m-macosx_11_0_x86_64.whl", hash = "sha256:ca0411333fbdb0fafa06d412bbd76ab8d2647cc9dcb8a7833952ce4fe09eb421"}, - {file = "ddtrace-1.15.2-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:e2603749f97a5191b32f710c8ec5248bb58f4f9a1cb337559f93c5f0f8cea33b"}, - {file = "ddtrace-1.15.2-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:8392087809e047f701e38ecc4f2990bcfe399a22c516a1dbcbdff50fb7382a79"}, - {file = "ddtrace-1.15.2-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:2f7649c24a7463be9b86d5f11ac6eaa2014896eaf409e67f3dc813a6bb0ed8b6"}, - {file = "ddtrace-1.15.2-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:dbdbc5bf3b2b56b8e61b241ee372d897b295344e269475f38e837c9bfe03ae2c"}, - {file = "ddtrace-1.15.2-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:23d39c72ad1844977a80d79206d773c3ec1f1346816b9e45427c25ef88597b4e"}, - {file = "ddtrace-1.15.2-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:da458bbbc4de14dd8e8f60aefe42a66c551a9f50c69c6e361acc7edab579a3e4"}, - {file = "ddtrace-1.15.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d07bb0c50d2df7ff9281bea83534db5127cee8ac2f94111c9544d03d49f60613"}, - {file = "ddtrace-1.15.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:499b3e3d0359e492792ecf8ab6efcf4b1991fbaa523338774333e9a2a66d9d37"}, - {file = "ddtrace-1.15.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eedd0937f83e0d7b261960365fec5771f39ced599c90f589548a1738a586799d"}, - {file = "ddtrace-1.15.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7643d20991cd7e1c21e65d8b5c292a9dca8d124f69f9e96cc2b5fb8d47802c3a"}, - {file = "ddtrace-1.15.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:3f6bb76fe33c2e4842236036f78b1bbdd4da0f2b846627ca7d72b01ac49b3076"}, - {file = "ddtrace-1.15.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ebc9b89501c8a557dab43170e4a12e90358130413a87a0276ccaa0038b0636a4"}, - {file = "ddtrace-1.15.2-cp310-cp310-win32.whl", hash = "sha256:c10ca0e3a63310d314ec7fa55d53f4b4434f06c4d321d64d757814679161bf5d"}, - {file = "ddtrace-1.15.2-cp310-cp310-win_amd64.whl", hash = "sha256:6208635442ea52ff3f97b9fc64ac25772cda8f105a607a385e55bf524bceefc5"}, - {file = "ddtrace-1.15.2-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:8524f460be02b402f63b11ad3b1177955c8608f814e1758b87f53f15bf9a7599"}, - {file = "ddtrace-1.15.2-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:5a2dd127a65e12189055818ab72d44d80587acaaf450c65624e0482d63ff9970"}, - {file = "ddtrace-1.15.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b3350c647120fbc3355eb35ce054c88e63bc073d71949f377d59b1152a2ed0f4"}, - {file = "ddtrace-1.15.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:adb76713207f0ef688f68a539f9cb63e19cd149d48d36befb835f67f49395ed7"}, - {file = "ddtrace-1.15.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f8ff5c250c5abfbbbd76a7d3167308a2373ad7e55ecf3c7c26a62fcd2be8a57"}, - {file = "ddtrace-1.15.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:264bed998870b63f548b96f57dd771014cd02ef0b21bb382e745900a7b72ef28"}, - {file = "ddtrace-1.15.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:20bfd8db155167d2ccfddc25b50649338534b12cb00f7ed08514af1eb6a4956e"}, - {file = "ddtrace-1.15.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:72479172bd10f5998188a05b0b4a109ccb2a93467a0aa1e6656d5396c83fb253"}, - {file = "ddtrace-1.15.2-cp311-cp311-win32.whl", hash = "sha256:23bee3d0eb971cc1565caa429620b82f2d69ef648e9c792046b9481188dba9ab"}, - {file = "ddtrace-1.15.2-cp311-cp311-win_amd64.whl", hash = "sha256:65a29d23ecfbc7cc4ca1069a5586aa836ae3978e64251414933432078bc29bc2"}, - {file = "ddtrace-1.15.2-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:3a2852da4a76503211ca8b77a50fc86df36ba15fab04b45a6a17faa386f53839"}, - {file = "ddtrace-1.15.2-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:244180c6decb244c7fda929dc5969b3a510e5a4857239063de1fae139fac9837"}, - {file = "ddtrace-1.15.2-cp35-cp35m-manylinux2014_aarch64.whl", hash = "sha256:46f9ba0c282a62953f03d1add8eae8c80613244bb93a1ff997dad71d07ce6c72"}, - {file = "ddtrace-1.15.2-cp35-cp35m-win32.whl", hash = "sha256:a39dbf1ca657cc3a876143301e5d775e2f9bcf2ed1e9b4366fb3cf9d6a345a82"}, - {file = "ddtrace-1.15.2-cp35-cp35m-win_amd64.whl", hash = "sha256:7cfd9514e82871321e86897fe567c7548fc45da523df591f3e5adc6633a5781c"}, - {file = "ddtrace-1.15.2-cp36-cp36m-macosx_11_0_x86_64.whl", hash = "sha256:3a2978b07d19d4ebf936fde1e455c61b3d88f103f1f9e360b9269fe1a1dc608a"}, - {file = "ddtrace-1.15.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6e7795a7f65a6e844ab57a0b31d400e79c4a1f69d174fab8edc69e6d2db56962"}, - {file = "ddtrace-1.15.2-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aae5306b3b0ec48cb8ade3362629c31bd25999244addff0f4a2f6f3934509894"}, - {file = "ddtrace-1.15.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:14fb33bd6d9fa70638d43de7b5170e1c9961d3fbc277314609941e108c45716d"}, - {file = "ddtrace-1.15.2-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:745ce3c9559fa331ef30208ff1ccaafe3ab3c02f2e01177c560c94acd6f4de27"}, - {file = "ddtrace-1.15.2-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:7706d35215d2cca0a89581ec11da56e25742914ae0865b928034ee9ad7278cf3"}, - {file = "ddtrace-1.15.2-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:0bc18e900d1495deb61093f1af38d94af6a1ca66dd541fd47bd093c3f3b80b4a"}, - {file = "ddtrace-1.15.2-cp36-cp36m-win32.whl", hash = "sha256:b13f4042ef3f391714aca5ca1f03ff3c24c1d201ab5af02f0405335aa5602ff5"}, - {file = "ddtrace-1.15.2-cp36-cp36m-win_amd64.whl", hash = "sha256:eb32e3b3d0f472447b3d427a075007135b3c39488c1fe0f1e097863f326a439b"}, - {file = "ddtrace-1.15.2-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:0953fd9a2555801d68674bb4905f64805efe1e02b3f11def21eb7655be046717"}, - {file = "ddtrace-1.15.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9436ec9cc00b70730d2c1777f11aca7f4863a49ddd27d0b1478e84c1a7667b6f"}, - {file = "ddtrace-1.15.2-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f7215b21c1eaf56b38bf46c66193db3736ecadeb9ae1b9ca780a91addbaa9853"}, - {file = "ddtrace-1.15.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15a5f7155b99fe9393bfa4f0e4ef2610ddf59e70aefcf99a95acae8b31e29cc4"}, - {file = "ddtrace-1.15.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:df103a600c2901dc54929ef58dee41887a0bb558efbf7e41a7489bd6264fcf44"}, - {file = "ddtrace-1.15.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:d51a73238ad8ceff4232ffa94b860d61187b325e7fab746044dafa312d6bc415"}, - {file = "ddtrace-1.15.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:bfc5777204c0c34465fc4ce38d8d1268d9f95ffcbf7e4025e9a5d3e87d3e17c3"}, - {file = "ddtrace-1.15.2-cp37-cp37m-win32.whl", hash = "sha256:9516dbfc974af9632d75e9c32b38e695b88ea18ebfa4580dd0f768bc05272fba"}, - {file = "ddtrace-1.15.2-cp37-cp37m-win_amd64.whl", hash = "sha256:a510252a3d5be6c29db2c69cbd2535268532e8d568fae06b295a06041e1b969d"}, - {file = "ddtrace-1.15.2-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:82995243719c87aefc85d7df0e1ae61bba8ae1f805d48cbaf2132beb215f1968"}, - {file = "ddtrace-1.15.2-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:ca5dd51910a81451d236fccdbf5d3ca8e284aa3be56f08db92644f85ef88c56e"}, - {file = "ddtrace-1.15.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d76f485769c035df3ede4ad9830bac06aa8b69ac4617f2eb1251b1094468009"}, - {file = "ddtrace-1.15.2-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4dd5f5e477021b8810b2b685e1e16ba5a99f31239e22abc71794688b7f3e6e4d"}, - {file = "ddtrace-1.15.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4ec73676c60cc3cf08430f19a59daccbbb5770edc74ad15a99bf4237a40d0fb"}, - {file = "ddtrace-1.15.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6b140f11b89d902174df05e8b9c1eb1b522a63e6c60c5d68ccac8913bb371bbb"}, - {file = "ddtrace-1.15.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:c7c8a0e140d28e49cf8cd96cdec8e17232c5525ed5c154729b8afb6cb93a8e2b"}, - {file = "ddtrace-1.15.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:0112d258c3a681a63e5f057b9e3ee8504b60d773d95baf195462d9ff4096caa9"}, - {file = "ddtrace-1.15.2-cp38-cp38-win32.whl", hash = "sha256:6ea7b80eb8019a70c999ef8cfd34fd6078a2ae154007d124d5e642531bf1a9d6"}, - {file = "ddtrace-1.15.2-cp38-cp38-win_amd64.whl", hash = "sha256:282b8c9b46d7a8450325299cf348a0f1d8f9f34d174a0ea402bc1a1df4ad7cf3"}, - {file = "ddtrace-1.15.2-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:53b171404b59c1e030ea614e194d1483fb42437a02ffdd7f4a45175613dd7cb4"}, - {file = "ddtrace-1.15.2-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:9ba06236dd8bd64776b7b734dd9421709670fef090857448e75c97acb30cdce7"}, - {file = "ddtrace-1.15.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e6abe5ba4396c9f7633cab68d0e81c5fd94f7c77b046b3ee969eded068a522d7"}, - {file = "ddtrace-1.15.2-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:61a1b48f97a07e2f422ec01bb23861716300cebe4afd917ab36bb4db68904da4"}, - {file = "ddtrace-1.15.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:86e186dc66802e2d71b94330c1635fd4c3f881a1bb71747be162a57b7602daaa"}, - {file = "ddtrace-1.15.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:762b5a0777454299c4ac62177578969ed551c973063f87a8825d9d073e5250ce"}, - {file = "ddtrace-1.15.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:889d359f4382fde41893ba5c00b412cbea8502e1b6bb6c83bf87fa6e63cbfabe"}, - {file = "ddtrace-1.15.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c4d3c9ce3456181e535b9da42bde7c850dc7224039fd083e95b05010c2ff9748"}, - {file = "ddtrace-1.15.2-cp39-cp39-win32.whl", hash = "sha256:69e47d28327a7afb263c16cc6bf1227e1b2bf1fdb2d559dce913a138a3f36807"}, - {file = "ddtrace-1.15.2-cp39-cp39-win_amd64.whl", hash = "sha256:da780fbfe6dd749ee571a468b8e86f1fd4f51626d35626c2356f8a440efe0dfa"}, - {file = "ddtrace-1.15.2.tar.gz", hash = "sha256:e5c1a5965ea8d8260586769102d79522bc7d9758a271252bb58ee05d6c5cd9a8"}, + {file = "ddtrace-1.20.3-cp27-cp27m-macosx_11_0_x86_64.whl", hash = "sha256:53e118db3ea289d787e000301160e23015758b9d79c3ae4edf80e0f1c923d535"}, + {file = "ddtrace-1.20.3-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:3da9354b38cc069fd7e5b0d46523a3ca096b6de4c4cae5ede206f267fc80e27b"}, + {file = "ddtrace-1.20.3-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:bcff9ccecdb455f8c1690b49363106e1212de467b23205f1ca83b62162d42414"}, + {file = "ddtrace-1.20.3-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:aee97fb3f5d103f717247937b8dc78bc622adc199caccaaf035d82dc9b67e402"}, + {file = "ddtrace-1.20.3-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:8929726b52c8dc58263f66b726321d87e914fc071b581121c8b275b1b15ccc70"}, + {file = "ddtrace-1.20.3-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:c9185d0ec3f7a2d0c4858a7c26dd9c3282aef7c970584b732b722678c379c117"}, + {file = "ddtrace-1.20.3-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:63e04a878c4b5173ac2f9b0fdcad6428fbef32de5fea6fa0ca27be4d14ba7093"}, + {file = "ddtrace-1.20.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:226f078d6525c1d3bbfca28b497df24de9cd626423ae6a0c82f2cd9d694f9f80"}, + {file = "ddtrace-1.20.3-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f0f0ed5f0c98505addaaee272e450372cdefd552b3806314335b2804e2ba15eb"}, + {file = "ddtrace-1.20.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cbdd7f025fa76c221666948ff200c729408b6362992be664055e01fb20a540d9"}, + {file = "ddtrace-1.20.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:f8dfb9b88fb687f54d429931fa372658ad91221c1bf41f721663024b0d8d1f4e"}, + {file = "ddtrace-1.20.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:2f5f4b6b18988e7085de35f42481171984b420cb210fdb2b5e50605f69ce6049"}, + {file = "ddtrace-1.20.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:3470ee06052f1e25a11e6f710a1344928b80cf95dff0306fa5e05d83de2bca1e"}, + {file = "ddtrace-1.20.3-cp310-cp310-win32.whl", hash = "sha256:1240d2b385d8fa31977ae750a0bd9eb1b9378a708e5704685f57229db115e957"}, + {file = "ddtrace-1.20.3-cp310-cp310-win_amd64.whl", hash = "sha256:ff9c2bfb7602df284161fd51f9d4812ad4e8a29ef08292c689ec8600a5463d91"}, + {file = "ddtrace-1.20.3-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:89325721dd269ae4113aa78c031ffbda556771accc79592446d6e49c836da083"}, + {file = "ddtrace-1.20.3-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:1009b8667ea0ce3f5b46d6b2e98cb073e44e61097711dba9618d81dd03ca1d72"}, + {file = "ddtrace-1.20.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0289559d752edc5b99dbe896835bda5791f707f9f2efb98d48a05b8b1ef7375e"}, + {file = "ddtrace-1.20.3-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:55d960c0af5340518980fc77cb5a0fd22d242f68940607cfa94301fa0cf4067b"}, + {file = "ddtrace-1.20.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b249d6f49f48405a36cee5180c9ac28667d3bfaaeb0e4f82f35fd3f9694f18c"}, + {file = "ddtrace-1.20.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:91e20667802ab00e973f832ecb87853a0c59a56053e5c51f611bc2e2e38dd1e8"}, + {file = "ddtrace-1.20.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:ab008b4af0cef3cf0d02452188dcd7126c0787680325a4f2fa7cd5831df22c88"}, + {file = "ddtrace-1.20.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1e8815684f4487fa707b5312ed9ff4ceeaedd1a5af157f15405d27c266d6e99e"}, + {file = "ddtrace-1.20.3-cp311-cp311-win32.whl", hash = "sha256:5c44a4a5a5274eb2728e6dd05ad333bf9bfafec850e220b43f1171df9ec92c9b"}, + {file = "ddtrace-1.20.3-cp311-cp311-win_amd64.whl", hash = "sha256:293678013c7f060ae0027baf2807625da367656575204438dd53df7dd209cc0f"}, + {file = "ddtrace-1.20.3-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:6afa8a78d6cf998098c0fc6f18975113f8180584889dd91fa8dafe0203f1dc74"}, + {file = "ddtrace-1.20.3-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:272db8a94aef1483f3023d09cfd4cd9fdbe80cc0b8b22c6cbdcb28c9ca3c45da"}, + {file = "ddtrace-1.20.3-cp35-cp35m-manylinux2014_aarch64.whl", hash = "sha256:58f95016c0d364437a9f0986e9fd02714a9215870c1d79e3e3b6ff81fb5d3113"}, + {file = "ddtrace-1.20.3-cp35-cp35m-win32.whl", hash = "sha256:1a0cc4abe979d288eb58aed00895a35e6dc68ebb76d01dfd1cf3d8c80fbd6e72"}, + {file = "ddtrace-1.20.3-cp35-cp35m-win_amd64.whl", hash = "sha256:71e24d61571c0b854f61433c7e4303fb4278b4ed1a76c2cabceb79477e7ca9eb"}, + {file = "ddtrace-1.20.3-cp36-cp36m-macosx_11_0_x86_64.whl", hash = "sha256:f31e162f43cc3ebd570409683976c03b536e561a3c3afd8ca1ed837aa1552e25"}, + {file = "ddtrace-1.20.3-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:64ca09f911444e78fcdefece1140914bdafd7dd1217b848a1b2578d5ac341a4b"}, + {file = "ddtrace-1.20.3-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9cfc459cb52d56150548764dbef763be3945b8e2f522bedf2c7ba47fa23b34bb"}, + {file = "ddtrace-1.20.3-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d0a9c7e87ec009bc856ff252672a278b106a4e7ee8a7c99179e589576263743d"}, + {file = "ddtrace-1.20.3-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:7563d5110d78259cba087f9424cfb36f0666413439a3c4fb384284a3e4e076cf"}, + {file = "ddtrace-1.20.3-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:dc2ca4a6ad3219ad0ff4ad82caf31fd64c9c4d45611e62ae4bca0a5f6b6cff21"}, + {file = "ddtrace-1.20.3-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:818bd589c38d4a7b1689b20b0f235cdf421297257328a192a4dff004e43fed8d"}, + {file = "ddtrace-1.20.3-cp36-cp36m-win32.whl", hash = "sha256:9a1e09211d6030b6e75172c2b7cf4ec600c38013c70fb48f9c11db9ae0354950"}, + {file = "ddtrace-1.20.3-cp36-cp36m-win_amd64.whl", hash = "sha256:999287700d26362e9651becdd07f2ccf856a78016549d31d47da627bdd7e0b39"}, + {file = "ddtrace-1.20.3-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:fa5a174acd453022f925cacbcfd86d8a012bce9f7605cb020a6fe0dc85f0f435"}, + {file = "ddtrace-1.20.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:315d7835d97e9f78f988d7fdf32a98ed59ef509a07a16d3b77f49fd992b9d304"}, + {file = "ddtrace-1.20.3-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7674827d57aeff15fbde7cd730e906d509fd77b6d2cda8ce7b6da7f7dcfa1464"}, + {file = "ddtrace-1.20.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:16fb4d625d233c8719d37e11e2a08ec968a98877b2083140803d5d76a6fc6498"}, + {file = "ddtrace-1.20.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:470381b364d8adaa7e87a3a78cdaaa82a74d4418f9c79c1239eabc5b62ef824f"}, + {file = "ddtrace-1.20.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:8c87f7ea1ea7114950fdbcdad8a1e2bff6c1f4e20232563c3c88ee1224764fee"}, + {file = "ddtrace-1.20.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:84b0acecc372ae9755b0271abc19ac023491e6c84873df4d8af0305ebc7244b8"}, + {file = "ddtrace-1.20.3-cp37-cp37m-win32.whl", hash = "sha256:895a26e595852943203f6d0d04018b6f2fab56592fe6c63e33d862a7a9a4eb64"}, + {file = "ddtrace-1.20.3-cp37-cp37m-win_amd64.whl", hash = "sha256:8dfc439dd3e23bad60e74aab117013d49a9dbce3bd36b66e133206b435384ffa"}, + {file = "ddtrace-1.20.3-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:55b39c09cee3cc25ea3d3ad9dc430a344affbecb017ef4758374b22c050cfaef"}, + {file = "ddtrace-1.20.3-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:1546084f68a6b9218124725be32c42441f3cc44640656fbe6a911c5c92c2f742"}, + {file = "ddtrace-1.20.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a364f1f0942096a4e7d38324d4f5781aefb8581efaa211cdd454dcf2906f00b3"}, + {file = "ddtrace-1.20.3-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:34d5e9bd4f2148a247c4921cb531d247b430eac23c86d188dfbb267f33875365"}, + {file = "ddtrace-1.20.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b5483abd5ee0d40b5c0b46baa57da1df499700e5f2e4672ccaf2b6e7f783781e"}, + {file = "ddtrace-1.20.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2fa3c584e30c628a25978e9e1e884581e98e838b7234b4d66223713cfe7d7ece"}, + {file = "ddtrace-1.20.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:2f38e4a455ceaa05e5933958799506fd3b4682bf1803b50bd1d0fb57fb603eab"}, + {file = "ddtrace-1.20.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:bd3ebc0e9ae1159fd7b66b90bee2613bdf1b2ac59e9b164e34276f29e68ab032"}, + {file = "ddtrace-1.20.3-cp38-cp38-win32.whl", hash = "sha256:8628ca382e728204c18744f220e80c2cc5a54a61b825cd0c269d1017a235feaa"}, + {file = "ddtrace-1.20.3-cp38-cp38-win_amd64.whl", hash = "sha256:8216ee3990c7744e12351d843aec2f08ce0d18c9370ebb5c5dde597b8a188a3b"}, + {file = "ddtrace-1.20.3-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:2c91ca946ae543dee0e75ca2a1380db48291804ad6a740a4670fc5950f826109"}, + {file = "ddtrace-1.20.3-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:34c035588bc41c3e3985f04f7ba8bc79d725ba81d840e36b15355e22bc7545db"}, + {file = "ddtrace-1.20.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:301247561b8ab714aa8d955b9fb93a09dc8ff69898a3255a24126055ac3e6157"}, + {file = "ddtrace-1.20.3-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:73b541160d49c5ef08a652140cf537ef2cb35feb1441ed229c292994af735f80"}, + {file = "ddtrace-1.20.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b79fb270b6daf211454a82577ec27db8a8be0df65c545c7f8ea4878fd53d245c"}, + {file = "ddtrace-1.20.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7b92f57d076318c29c219d30e263727625a2cbce69ff7b72b48adaa248820a9d"}, + {file = "ddtrace-1.20.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:95ecc029e32ecc23ce052bf96b25a18b8165d6f9fe5b638bda99c3d1f958894a"}, + {file = "ddtrace-1.20.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:6d68857b8643330519f3171b0c055cc738a441fb373060d6862755c89ae16874"}, + {file = "ddtrace-1.20.3-cp39-cp39-win32.whl", hash = "sha256:00d6efc0f909442f960b4246a20adf173cb385643686f7fae31f2367226b1858"}, + {file = "ddtrace-1.20.3-cp39-cp39-win_amd64.whl", hash = "sha256:fb06e0e535044570579683d0cf32b28e576bdc460c81aeddfa05bb6da7327a82"}, + {file = "ddtrace-1.20.3.tar.gz", hash = "sha256:c94beafc8ce6d973c054ccceba6437a6a12fcf136e5f94eab6326e1a4ce72310"}, ] [package.dependencies] @@ -435,13 +453,13 @@ mypy = ["mypy"] [[package]] name = "exceptiongroup" -version = "1.1.2" +version = "1.1.3" description = "Backport of PEP 654 (exception groups)" optional = false python-versions = ">=3.7" files = [ - {file = "exceptiongroup-1.1.2-py3-none-any.whl", hash = "sha256:e346e69d186172ca7cf029c8c1d16235aa0e04035e5750b4b95039e65204328f"}, - {file = "exceptiongroup-1.1.2.tar.gz", hash = "sha256:12c3e887d6485d16943a309616de20ae5582633e0a2eda17f4e10fd61c1e8af5"}, + {file = "exceptiongroup-1.1.3-py3-none-any.whl", hash = "sha256:343280667a4585d195ca1cf9cef84a4e178c4b6cf2274caef9859782b567d5e3"}, + {file = "exceptiongroup-1.1.3.tar.gz", hash = "sha256:097acd85d473d75af5bb98e41b61ff7fe35efe6675e4f9370ec6ec5126d160e9"}, ] [package.extras] @@ -551,13 +569,13 @@ doc = ["Sphinx (>=1.6.5)", "mock", "sphinx-rtd-theme"] [[package]] name = "opentelemetry-api" -version = "1.19.0" +version = "1.20.0" description = "OpenTelemetry Python API" optional = false python-versions = ">=3.7" files = [ - {file = "opentelemetry_api-1.19.0-py3-none-any.whl", hash = "sha256:dcd2a0ad34b691964947e1d50f9e8c415c32827a1d87f0459a72deb9afdf5597"}, - {file = "opentelemetry_api-1.19.0.tar.gz", hash = "sha256:db374fb5bea00f3c7aa290f5d94cea50b659e6ea9343384c5f6c2bb5d5e8db65"}, + {file = "opentelemetry_api-1.20.0-py3-none-any.whl", hash = "sha256:982b76036fec0fdaf490ae3dfd9f28c81442a33414f737abc687a32758cdcba5"}, + {file = "opentelemetry_api-1.20.0.tar.gz", hash = "sha256:06abe351db7572f8afdd0fb889ce53f3c992dbf6f6262507b385cc1963e06983"}, ] [package.dependencies] @@ -566,24 +584,24 @@ importlib-metadata = ">=6.0,<7.0" [[package]] name = "protobuf" -version = "4.23.4" +version = "4.24.4" description = "" optional = false python-versions = ">=3.7" files = [ - {file = "protobuf-4.23.4-cp310-abi3-win32.whl", hash = "sha256:5fea3c64d41ea5ecf5697b83e41d09b9589e6f20b677ab3c48e5f242d9b7897b"}, - {file = "protobuf-4.23.4-cp310-abi3-win_amd64.whl", hash = "sha256:7b19b6266d92ca6a2a87effa88ecc4af73ebc5cfde194dc737cf8ef23a9a3b12"}, - {file = "protobuf-4.23.4-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:8547bf44fe8cec3c69e3042f5c4fb3e36eb2a7a013bb0a44c018fc1e427aafbd"}, - {file = "protobuf-4.23.4-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:fee88269a090ada09ca63551bf2f573eb2424035bcf2cb1b121895b01a46594a"}, - {file = "protobuf-4.23.4-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:effeac51ab79332d44fba74660d40ae79985901ac21bca408f8dc335a81aa597"}, - {file = "protobuf-4.23.4-cp37-cp37m-win32.whl", hash = "sha256:c3e0939433c40796ca4cfc0fac08af50b00eb66a40bbbc5dee711998fb0bbc1e"}, - {file = "protobuf-4.23.4-cp37-cp37m-win_amd64.whl", hash = "sha256:9053df6df8e5a76c84339ee4a9f5a2661ceee4a0dab019e8663c50ba324208b0"}, - {file = "protobuf-4.23.4-cp38-cp38-win32.whl", hash = "sha256:e1c915778d8ced71e26fcf43c0866d7499891bca14c4368448a82edc61fdbc70"}, - {file = "protobuf-4.23.4-cp38-cp38-win_amd64.whl", hash = "sha256:351cc90f7d10839c480aeb9b870a211e322bf05f6ab3f55fcb2f51331f80a7d2"}, - {file = "protobuf-4.23.4-cp39-cp39-win32.whl", hash = "sha256:6dd9b9940e3f17077e820b75851126615ee38643c2c5332aa7a359988820c720"}, - {file = "protobuf-4.23.4-cp39-cp39-win_amd64.whl", hash = "sha256:0a5759f5696895de8cc913f084e27fd4125e8fb0914bb729a17816a33819f474"}, - {file = "protobuf-4.23.4-py3-none-any.whl", hash = "sha256:e9d0be5bf34b275b9f87ba7407796556abeeba635455d036c7351f7c183ef8ff"}, - {file = "protobuf-4.23.4.tar.gz", hash = "sha256:ccd9430c0719dce806b93f89c91de7977304729e55377f872a92465d548329a9"}, + {file = "protobuf-4.24.4-cp310-abi3-win32.whl", hash = "sha256:ec9912d5cb6714a5710e28e592ee1093d68c5ebfeda61983b3f40331da0b1ebb"}, + {file = "protobuf-4.24.4-cp310-abi3-win_amd64.whl", hash = "sha256:1badab72aa8a3a2b812eacfede5020472e16c6b2212d737cefd685884c191085"}, + {file = "protobuf-4.24.4-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:8e61a27f362369c2f33248a0ff6896c20dcd47b5d48239cb9720134bef6082e4"}, + {file = "protobuf-4.24.4-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:bffa46ad9612e6779d0e51ae586fde768339b791a50610d85eb162daeb23661e"}, + {file = "protobuf-4.24.4-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:b493cb590960ff863743b9ff1452c413c2ee12b782f48beca77c8da3e2ffe9d9"}, + {file = "protobuf-4.24.4-cp37-cp37m-win32.whl", hash = "sha256:dbbed8a56e56cee8d9d522ce844a1379a72a70f453bde6243e3c86c30c2a3d46"}, + {file = "protobuf-4.24.4-cp37-cp37m-win_amd64.whl", hash = "sha256:6b7d2e1c753715dcfe9d284a25a52d67818dd43c4932574307daf836f0071e37"}, + {file = "protobuf-4.24.4-cp38-cp38-win32.whl", hash = "sha256:02212557a76cd99574775a81fefeba8738d0f668d6abd0c6b1d3adcc75503dbe"}, + {file = "protobuf-4.24.4-cp38-cp38-win_amd64.whl", hash = "sha256:2fa3886dfaae6b4c5ed2730d3bf47c7a38a72b3a1f0acb4d4caf68e6874b947b"}, + {file = "protobuf-4.24.4-cp39-cp39-win32.whl", hash = "sha256:b77272f3e28bb416e2071186cb39efd4abbf696d682cbb5dc731308ad37fa6dd"}, + {file = "protobuf-4.24.4-cp39-cp39-win_amd64.whl", hash = "sha256:9fee5e8aa20ef1b84123bb9232b3f4a5114d9897ed89b4b8142d81924e05d79b"}, + {file = "protobuf-4.24.4-py3-none-any.whl", hash = "sha256:80797ce7424f8c8d2f2547e2d42bfbb6c08230ce5832d6c099a37335c9c90a92"}, + {file = "protobuf-4.24.4.tar.gz", hash = "sha256:5a70731910cd9104762161719c3d883c960151eea077134458503723b60e3667"}, ] [[package]] @@ -645,13 +663,13 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] [[package]] name = "s3transfer" -version = "0.6.1" +version = "0.7.0" description = "An Amazon S3 Transfer Manager" optional = true python-versions = ">= 3.7" files = [ - {file = "s3transfer-0.6.1-py3-none-any.whl", hash = "sha256:3c0da2d074bf35d6870ef157158641178a4204a6e689e82546083e31e0311346"}, - {file = "s3transfer-0.6.1.tar.gz", hash = "sha256:640bb492711f4c0c0905e1f62b6aaeb771881935ad27884852411f8e9cacbca9"}, + {file = "s3transfer-0.7.0-py3-none-any.whl", hash = "sha256:10d6923c6359175f264811ef4bf6161a3156ce8e350e705396a7557d6293c33a"}, + {file = "s3transfer-0.7.0.tar.gz", hash = "sha256:fd3889a66f5fe17299fe75b82eae6cf722554edca744ca5d5fe308b104883d2e"}, ] [package.dependencies] @@ -684,17 +702,17 @@ files = [ [[package]] name = "urllib3" -version = "1.26.16" +version = "1.26.17" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" files = [ - {file = "urllib3-1.26.16-py2.py3-none-any.whl", hash = "sha256:8d36afa7616d8ab714608411b4a3b13e58f463aee519024578e062e141dce20f"}, - {file = "urllib3-1.26.16.tar.gz", hash = "sha256:8f135f6502756bde6b2a9b28989df5fbe87c9970cecaa69041edcce7f0589b14"}, + {file = "urllib3-1.26.17-py2.py3-none-any.whl", hash = "sha256:94a757d178c9be92ef5539b8840d48dc9cf1b2709c9d6b588232a055c524458b"}, + {file = "urllib3-1.26.17.tar.gz", hash = "sha256:24d6a242c28d29af46c3fae832c36db3bbebcc533dd1bb549172cd739c82df21"}, ] [package.extras] -brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)", "brotlipy (>=0.6.0)"] +brotli = ["brotli (==1.0.9)", "brotli (>=1.0.9)", "brotlicffi (>=0.8.0)", "brotlipy (>=0.6.0)"] secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress", "pyOpenSSL (>=0.14)", "urllib3-secure-extra"] socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] @@ -814,4 +832,4 @@ dev = ["boto3", "flake8", "httpretty", "nose2", "requests"] [metadata] lock-version = "2.0" python-versions = ">=3.7.0,<4" -content-hash = "e65f36c4d06687bde43b04ec23d980e60dd755362e54032b4293a3bf0d5c2054" +content-hash = "171dcd184163df36156c63fa97ab16f1f063756aac2181c97b9a5a101735839a" diff --git a/pyproject.toml b/pyproject.toml index 6227fdf0..7e84b19d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -27,7 +27,7 @@ classifiers = [ python = ">=3.7.0,<4" datadog = ">=0.41.0,<1.0.0" wrapt = "^1.11.2" -ddtrace = "1.15.2" +ddtrace = "<2.0.0" urllib3 = "<2.0.0" importlib_metadata = {version = "*", python = "<3.8"} boto3 = { version = "^1.10.33", optional = true } diff --git a/tests/integration/snapshots/logs/async-metrics_python310.log b/tests/integration/snapshots/logs/async-metrics_python310.log index d746aba4..1637612f 100644 --- a/tests/integration/snapshots/logs/async-metrics_python310.log +++ b/tests/integration/snapshots/logs/async-metrics_python310.log @@ -68,11 +68,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -104,7 +105,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", "http.url_details.path": "/Prod/", "http.method": "GET", - "http.status_code": "200" + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -127,6 +129,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -152,6 +155,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -232,11 +236,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -264,7 +269,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -287,6 +293,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -312,6 +319,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -386,11 +394,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -417,7 +426,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "function_trigger.event_source": "eventbridge" + "function_trigger.event_source": "eventbridge", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -440,6 +450,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -465,6 +476,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -549,11 +561,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -585,7 +598,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/httpapi/get", "http.method": "GET", - "http.status_code": "200" + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -608,6 +622,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -633,6 +648,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -713,11 +729,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -745,7 +762,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "kinesis", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -768,6 +786,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -793,6 +812,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -870,11 +890,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -902,7 +923,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "s3", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -925,6 +947,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -950,6 +973,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1028,11 +1052,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1060,7 +1085,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sns", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -1083,6 +1109,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1108,6 +1135,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1185,11 +1213,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1217,7 +1246,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sqs", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -1240,6 +1270,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1265,6 +1296,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1348,11 +1380,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1382,7 +1415,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", - "http.status_code": "200" + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -1405,6 +1439,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1430,6 +1465,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python311.log b/tests/integration/snapshots/logs/async-metrics_python311.log index ff437d8e..7eedbe88 100644 --- a/tests/integration/snapshots/logs/async-metrics_python311.log +++ b/tests/integration/snapshots/logs/async-metrics_python311.log @@ -68,11 +68,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -104,7 +105,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", "http.url_details.path": "/Prod/", "http.method": "GET", - "http.status_code": "200" + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -127,6 +129,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -152,6 +155,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -232,11 +236,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -264,7 +269,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -287,6 +293,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -312,6 +319,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -386,11 +394,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -417,7 +426,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "function_trigger.event_source": "eventbridge" + "function_trigger.event_source": "eventbridge", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -440,6 +450,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -465,6 +476,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -549,11 +561,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -585,7 +598,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/httpapi/get", "http.method": "GET", - "http.status_code": "200" + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -608,6 +622,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -633,6 +648,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -713,11 +729,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -745,7 +762,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "kinesis", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -768,6 +786,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -793,6 +812,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -870,11 +890,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -902,7 +923,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "s3", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -925,6 +947,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -950,6 +973,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1028,11 +1052,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1060,7 +1085,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sns", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -1083,6 +1109,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1108,6 +1135,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1185,11 +1213,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1217,7 +1246,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sqs", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -1240,6 +1270,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1265,6 +1296,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1348,11 +1380,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1382,7 +1415,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", - "http.status_code": "200" + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -1405,6 +1439,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1430,6 +1465,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python37.log b/tests/integration/snapshots/logs/async-metrics_python37.log index e28bb9b3..080113f2 100644 --- a/tests/integration/snapshots/logs/async-metrics_python37.log +++ b/tests/integration/snapshots/logs/async-metrics_python37.log @@ -68,11 +68,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -104,7 +105,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", "http.url_details.path": "/Prod/", "http.method": "GET", - "http.status_code": "200" + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -127,6 +129,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -152,6 +155,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -232,11 +236,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -264,7 +269,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -287,6 +293,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -312,6 +319,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -386,11 +394,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -417,7 +426,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "function_trigger.event_source": "eventbridge" + "function_trigger.event_source": "eventbridge", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -440,6 +450,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -465,6 +476,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -549,11 +561,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -585,7 +598,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/httpapi/get", "http.method": "GET", - "http.status_code": "200" + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -608,6 +622,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -633,6 +648,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -713,11 +729,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -745,7 +762,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "kinesis", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -768,6 +786,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -793,6 +812,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -870,11 +890,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -902,7 +923,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "s3", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -925,6 +947,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -950,6 +973,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1028,11 +1052,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1060,7 +1085,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sns", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -1083,6 +1109,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1108,6 +1135,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1185,11 +1213,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1217,7 +1246,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sqs", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -1240,6 +1270,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1265,6 +1296,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1348,11 +1380,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1382,7 +1415,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", - "http.status_code": "200" + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -1405,6 +1439,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1430,6 +1465,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python38.log b/tests/integration/snapshots/logs/async-metrics_python38.log index c146ef0f..913ef760 100644 --- a/tests/integration/snapshots/logs/async-metrics_python38.log +++ b/tests/integration/snapshots/logs/async-metrics_python38.log @@ -68,11 +68,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -104,7 +105,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", "http.url_details.path": "/Prod/", "http.method": "GET", - "http.status_code": "200" + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -127,6 +129,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -152,6 +155,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -232,11 +236,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -264,7 +269,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -287,6 +293,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -312,6 +319,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -386,11 +394,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -417,7 +426,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "function_trigger.event_source": "eventbridge" + "function_trigger.event_source": "eventbridge", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -440,6 +450,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -465,6 +476,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -549,11 +561,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -585,7 +598,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/httpapi/get", "http.method": "GET", - "http.status_code": "200" + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -608,6 +622,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -633,6 +648,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -713,11 +729,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -745,7 +762,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "kinesis", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -768,6 +786,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -793,6 +812,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -870,11 +890,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -902,7 +923,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "s3", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -925,6 +947,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -950,6 +973,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1028,11 +1052,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1060,7 +1085,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sns", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -1083,6 +1109,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1108,6 +1135,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1185,11 +1213,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1217,7 +1246,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sqs", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -1240,6 +1270,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1265,6 +1296,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1348,11 +1380,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1382,7 +1415,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", - "http.status_code": "200" + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -1405,6 +1439,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1430,6 +1465,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python39.log b/tests/integration/snapshots/logs/async-metrics_python39.log index bc0fb4e8..6708ebb0 100644 --- a/tests/integration/snapshots/logs/async-metrics_python39.log +++ b/tests/integration/snapshots/logs/async-metrics_python39.log @@ -68,11 +68,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -104,7 +105,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", "http.url_details.path": "/Prod/", "http.method": "GET", - "http.status_code": "200" + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -127,6 +129,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -152,6 +155,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -232,11 +236,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -264,7 +269,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -287,6 +293,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -312,6 +319,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -386,11 +394,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -417,7 +426,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "function_trigger.event_source": "eventbridge" + "function_trigger.event_source": "eventbridge", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -440,6 +450,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -465,6 +476,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -549,11 +561,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -585,7 +598,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/httpapi/get", "http.method": "GET", - "http.status_code": "200" + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -608,6 +622,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -633,6 +648,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -713,11 +729,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -745,7 +762,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "kinesis", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -768,6 +786,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -793,6 +812,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -870,11 +890,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -902,7 +923,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "s3", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -925,6 +947,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -950,6 +973,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1028,11 +1052,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1060,7 +1085,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sns", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -1083,6 +1109,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1108,6 +1135,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1185,11 +1213,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1217,7 +1246,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sqs", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -1240,6 +1270,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1265,6 +1296,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1348,11 +1380,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1382,7 +1415,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", - "http.status_code": "200" + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -1405,6 +1439,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1430,6 +1465,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, diff --git a/tests/integration/snapshots/logs/sync-metrics_python310.log b/tests/integration/snapshots/logs/sync-metrics_python310.log index fc71ef6d..01cf8700 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python310.log +++ b/tests/integration/snapshots/logs/sync-metrics_python310.log @@ -48,11 +48,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -84,7 +85,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", "http.url_details.path": "/Prod/", "http.method": "GET", - "http.status_code": "200" + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -107,6 +109,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -132,6 +135,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -164,6 +168,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -171,7 +176,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -230,11 +234,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -262,7 +267,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -285,6 +291,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -310,6 +317,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -342,6 +350,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -349,7 +358,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -402,11 +410,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -433,7 +442,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "function_trigger.event_source": "eventbridge" + "function_trigger.event_source": "eventbridge", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -456,6 +466,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -481,6 +492,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -513,6 +525,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -520,7 +533,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -583,11 +595,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -619,7 +632,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/httpapi/get", "http.method": "GET", - "http.status_code": "200" + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -642,6 +656,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -667,6 +682,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -699,6 +715,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -706,7 +723,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -765,11 +781,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -797,7 +814,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "kinesis", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -820,6 +838,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -845,6 +864,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -877,6 +897,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -884,7 +905,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -940,11 +960,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -972,7 +993,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "s3", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -995,6 +1017,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1020,6 +1043,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1052,6 +1076,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1059,7 +1084,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -1116,11 +1140,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1148,7 +1173,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sns", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -1171,6 +1197,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1196,6 +1223,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1228,6 +1256,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1235,7 +1264,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -1291,11 +1319,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1323,7 +1352,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sqs", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -1346,6 +1376,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1371,6 +1402,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1403,6 +1435,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1410,7 +1443,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -1472,11 +1504,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1506,7 +1539,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", - "http.status_code": "200" + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -1529,6 +1563,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1554,6 +1589,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1586,6 +1622,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1593,7 +1630,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 diff --git a/tests/integration/snapshots/logs/sync-metrics_python311.log b/tests/integration/snapshots/logs/sync-metrics_python311.log index b83c9920..79d3a9a5 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python311.log +++ b/tests/integration/snapshots/logs/sync-metrics_python311.log @@ -48,11 +48,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -84,7 +85,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", "http.url_details.path": "/Prod/", "http.method": "GET", - "http.status_code": "200" + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -107,6 +109,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -132,6 +135,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -164,6 +168,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -171,7 +176,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -230,11 +234,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -262,7 +267,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -285,6 +291,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -310,6 +317,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -342,6 +350,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -349,7 +358,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -402,11 +410,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -433,7 +442,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "function_trigger.event_source": "eventbridge" + "function_trigger.event_source": "eventbridge", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -456,6 +466,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -481,6 +492,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -513,6 +525,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -520,7 +533,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -583,11 +595,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -619,7 +632,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/httpapi/get", "http.method": "GET", - "http.status_code": "200" + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -642,6 +656,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -667,6 +682,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -699,6 +715,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -706,7 +723,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -765,11 +781,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -797,7 +814,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "kinesis", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -820,6 +838,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -845,6 +864,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -877,6 +897,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -884,7 +905,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -940,11 +960,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -972,7 +993,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "s3", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -995,6 +1017,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1020,6 +1043,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1052,6 +1076,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1059,7 +1084,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -1116,11 +1140,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1148,7 +1173,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sns", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -1171,6 +1197,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1196,6 +1223,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1228,6 +1256,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1235,7 +1264,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -1291,11 +1319,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1323,7 +1352,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sqs", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -1346,6 +1376,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1371,6 +1402,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1403,6 +1435,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1410,7 +1443,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -1472,11 +1504,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1506,7 +1539,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", - "http.status_code": "200" + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -1529,6 +1563,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1554,6 +1589,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1586,6 +1622,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1593,7 +1630,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 diff --git a/tests/integration/snapshots/logs/sync-metrics_python37.log b/tests/integration/snapshots/logs/sync-metrics_python37.log index 5bc76a99..31518039 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python37.log +++ b/tests/integration/snapshots/logs/sync-metrics_python37.log @@ -48,11 +48,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -84,7 +85,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", "http.url_details.path": "/Prod/", "http.method": "GET", - "http.status_code": "200" + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -107,6 +109,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -132,6 +135,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -164,6 +168,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -171,7 +176,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -230,11 +234,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -262,7 +267,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -285,6 +291,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -310,6 +317,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -342,6 +350,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -349,7 +358,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -402,11 +410,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -433,7 +442,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "function_trigger.event_source": "eventbridge" + "function_trigger.event_source": "eventbridge", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -456,6 +466,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -481,6 +492,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -513,6 +525,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -520,7 +533,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -583,11 +595,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -619,7 +632,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/httpapi/get", "http.method": "GET", - "http.status_code": "200" + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -642,6 +656,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -667,6 +682,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -699,6 +715,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -706,7 +723,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -765,11 +781,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -797,7 +814,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "kinesis", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -820,6 +838,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -845,6 +864,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -877,6 +897,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -884,7 +905,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -940,11 +960,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -972,7 +993,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "s3", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -995,6 +1017,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1020,6 +1043,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1052,6 +1076,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1059,7 +1084,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -1116,11 +1140,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1148,7 +1173,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sns", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -1171,6 +1197,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1196,6 +1223,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1228,6 +1256,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1235,7 +1264,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -1291,11 +1319,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1323,7 +1352,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sqs", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -1346,6 +1376,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1371,6 +1402,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1403,6 +1435,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1410,7 +1443,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -1472,11 +1504,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1506,7 +1539,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", - "http.status_code": "200" + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -1529,6 +1563,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1554,6 +1589,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1586,6 +1622,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1593,7 +1630,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 diff --git a/tests/integration/snapshots/logs/sync-metrics_python38.log b/tests/integration/snapshots/logs/sync-metrics_python38.log index 213e64aa..dbdb9550 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python38.log +++ b/tests/integration/snapshots/logs/sync-metrics_python38.log @@ -48,11 +48,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -84,7 +85,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", "http.url_details.path": "/Prod/", "http.method": "GET", - "http.status_code": "200" + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -107,6 +109,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -132,6 +135,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -164,6 +168,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -171,7 +176,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -230,11 +234,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -262,7 +267,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -285,6 +291,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -310,6 +317,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -342,6 +350,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -349,7 +358,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -402,11 +410,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -433,7 +442,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "function_trigger.event_source": "eventbridge" + "function_trigger.event_source": "eventbridge", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -456,6 +466,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -481,6 +492,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -513,6 +525,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -520,7 +533,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -583,11 +595,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -619,7 +632,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/httpapi/get", "http.method": "GET", - "http.status_code": "200" + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -642,6 +656,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -667,6 +682,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -699,6 +715,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -706,7 +723,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -765,11 +781,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -797,7 +814,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "kinesis", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -820,6 +838,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -845,6 +864,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -877,6 +897,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -884,7 +905,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -940,11 +960,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -972,7 +993,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "s3", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -995,6 +1017,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1020,6 +1043,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1052,6 +1076,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1059,7 +1084,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -1116,11 +1140,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1148,7 +1173,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sns", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -1171,6 +1197,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1196,6 +1223,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1228,6 +1256,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1235,7 +1264,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -1291,11 +1319,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1323,7 +1352,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sqs", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -1346,6 +1376,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1371,6 +1402,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1403,6 +1435,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1410,7 +1443,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -1472,11 +1504,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1506,7 +1539,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", - "http.status_code": "200" + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -1529,6 +1563,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1554,6 +1589,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1586,6 +1622,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1593,7 +1630,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 diff --git a/tests/integration/snapshots/logs/sync-metrics_python39.log b/tests/integration/snapshots/logs/sync-metrics_python39.log index 54ab2bad..f0def45d 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python39.log +++ b/tests/integration/snapshots/logs/sync-metrics_python39.log @@ -48,11 +48,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -84,7 +85,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", "http.url_details.path": "/Prod/", "http.method": "GET", - "http.status_code": "200" + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -107,6 +109,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -132,6 +135,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -164,6 +168,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -171,7 +176,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -230,11 +234,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -262,7 +267,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -285,6 +291,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -310,6 +317,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -342,6 +350,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -349,7 +358,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -402,11 +410,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -433,7 +442,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "function_trigger.event_source": "eventbridge" + "function_trigger.event_source": "eventbridge", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -456,6 +466,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -481,6 +492,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -513,6 +525,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -520,7 +533,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -583,11 +595,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -619,7 +632,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/httpapi/get", "http.method": "GET", - "http.status_code": "200" + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -642,6 +656,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -667,6 +682,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -699,6 +715,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -706,7 +723,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -765,11 +781,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -797,7 +814,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "kinesis", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -820,6 +838,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -845,6 +864,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -877,6 +897,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -884,7 +905,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -940,11 +960,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -972,7 +993,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "s3", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -995,6 +1017,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1020,6 +1043,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1052,6 +1076,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1059,7 +1084,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -1116,11 +1140,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1148,7 +1173,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sns", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -1171,6 +1197,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1196,6 +1223,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1228,6 +1256,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1235,7 +1264,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -1291,11 +1319,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1323,7 +1352,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sqs", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -1346,6 +1376,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1371,6 +1402,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1403,6 +1435,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1410,7 +1443,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -1472,11 +1504,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1506,7 +1539,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", - "http.status_code": "200" + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -1529,6 +1563,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1554,6 +1589,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1586,6 +1622,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1593,7 +1630,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 diff --git a/tests/test_wrapper.py b/tests/test_wrapper.py index c85d8bb4..57c5de45 100644 --- a/tests/test_wrapper.py +++ b/tests/test_wrapper.py @@ -9,6 +9,7 @@ import datadog_lambda.wrapper as wrapper from datadog_lambda.metric import lambda_metric from datadog_lambda.thread_stats_writer import ThreadStatsWriter +from ddtrace import Span def get_mock_context( @@ -538,9 +539,7 @@ def lambda_handler(event, context): lambda_event = {} lambda_context = get_mock_context() - mock_span = MagicMock() - mock_span.context.span_id = "123" - mock_span.context.trace_id = "456" + mock_span = Span(name="my_inferred_span", span_id=123, trace_id=456) mock_span.context.sampling_priority = "1" mock_span.context.dd_origin = None mock_span.start_ns = 1668127541671386817 From 73e1b3a9ee9747b4dc3646878d74d7e6250177e8 Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Wed, 18 Oct 2023 10:26:47 -0400 Subject: [PATCH 045/268] feat: Support urllib3 <= 2.1 for py 3.11 (#380) --- poetry.lock | 187 +++++++++++++++++++++++++++---------------------- pyproject.toml | 7 +- 2 files changed, 107 insertions(+), 87 deletions(-) diff --git a/poetry.lock b/poetry.lock index a8197fea..ff63c621 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.6.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.5.0 and should not be changed by hand. [[package]] name = "attrs" @@ -23,17 +23,17 @@ tests-no-zope = ["cloudpickle", "hypothesis", "mypy (>=1.1.1)", "pympler", "pyte [[package]] name = "boto3" -version = "1.28.62" +version = "1.28.65" description = "The AWS SDK for Python" optional = true python-versions = ">= 3.7" files = [ - {file = "boto3-1.28.62-py3-none-any.whl", hash = "sha256:0dfa2fc96ccafce4feb23044d6cba8b25075ad428a0c450d369d099c6a1059d2"}, - {file = "boto3-1.28.62.tar.gz", hash = "sha256:148eeba0f1867b3db5b3e5ae2997d75a94d03fad46171374a0819168c36f7ed0"}, + {file = "boto3-1.28.65-py3-none-any.whl", hash = "sha256:ff3d0116e0ca6c096547652390025780eace3a28f6c04c9ffbf38448f1e5a87b"}, + {file = "boto3-1.28.65.tar.gz", hash = "sha256:9d52a1605657aeb5b19b09cfc01d9a92f88a616a5daf5479a59656d6341ea6b3"}, ] [package.dependencies] -botocore = ">=1.31.62,<1.32.0" +botocore = ">=1.31.65,<1.32.0" jmespath = ">=0.7.1,<2.0.0" s3transfer = ">=0.7.0,<0.8.0" @@ -42,13 +42,13 @@ crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] [[package]] name = "botocore" -version = "1.31.62" +version = "1.31.65" description = "Low-level, data-driven core of boto 3." optional = true python-versions = ">= 3.7" files = [ - {file = "botocore-1.31.62-py3-none-any.whl", hash = "sha256:be792d806afc064694a2d0b9b25779f3ca0c1584b29a35ac32e67f0064ddb8b7"}, - {file = "botocore-1.31.62.tar.gz", hash = "sha256:272b78ac65256b6294cb9cdb0ac484d447ad3a85642e33cb6a3b1b8afee15a4c"}, + {file = "botocore-1.31.65-py3-none-any.whl", hash = "sha256:f74e3da98dfcec17bc63ef58f82c643bf5bd7ec6cc11a26ede21cc4cd064917f"}, + {file = "botocore-1.31.65.tar.gz", hash = "sha256:90716c6f1af97e5c2f516e9a3379767ebdddcc6cbed79b026fa5038ce4e5e43e"}, ] [package.dependencies] @@ -75,13 +75,13 @@ files = [ [[package]] name = "bytecode" -version = "0.15.0" +version = "0.15.1" description = "Python module to generate and modify bytecode" optional = false python-versions = ">=3.8" files = [ - {file = "bytecode-0.15.0-py3-none-any.whl", hash = "sha256:a66718dc1d246b4fec52b5850c15592344a56c8bdb28fd243c895ccf00f8371f"}, - {file = "bytecode-0.15.0.tar.gz", hash = "sha256:0908a8348cabf366b5c1865daabcdc0d650cb0cbdeb1750cc90564852f81945c"}, + {file = "bytecode-0.15.1-py3-none-any.whl", hash = "sha256:0a1dc340cac823cff605609b8b214f7f9bf80418c6b9e0fc8c6db1793c27137d"}, + {file = "bytecode-0.15.1.tar.gz", hash = "sha256:7263239a8d3f70fc7c303862b20cd2c6788052e37ce0a26e67309d280e985984"}, ] [package.dependencies] @@ -325,80 +325,80 @@ six = "*" [[package]] name = "ddtrace" -version = "1.20.3" +version = "1.20.5" description = "Datadog APM client library" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ - {file = "ddtrace-1.20.3-cp27-cp27m-macosx_11_0_x86_64.whl", hash = "sha256:53e118db3ea289d787e000301160e23015758b9d79c3ae4edf80e0f1c923d535"}, - {file = "ddtrace-1.20.3-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:3da9354b38cc069fd7e5b0d46523a3ca096b6de4c4cae5ede206f267fc80e27b"}, - {file = "ddtrace-1.20.3-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:bcff9ccecdb455f8c1690b49363106e1212de467b23205f1ca83b62162d42414"}, - {file = "ddtrace-1.20.3-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:aee97fb3f5d103f717247937b8dc78bc622adc199caccaaf035d82dc9b67e402"}, - {file = "ddtrace-1.20.3-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:8929726b52c8dc58263f66b726321d87e914fc071b581121c8b275b1b15ccc70"}, - {file = "ddtrace-1.20.3-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:c9185d0ec3f7a2d0c4858a7c26dd9c3282aef7c970584b732b722678c379c117"}, - {file = "ddtrace-1.20.3-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:63e04a878c4b5173ac2f9b0fdcad6428fbef32de5fea6fa0ca27be4d14ba7093"}, - {file = "ddtrace-1.20.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:226f078d6525c1d3bbfca28b497df24de9cd626423ae6a0c82f2cd9d694f9f80"}, - {file = "ddtrace-1.20.3-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f0f0ed5f0c98505addaaee272e450372cdefd552b3806314335b2804e2ba15eb"}, - {file = "ddtrace-1.20.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cbdd7f025fa76c221666948ff200c729408b6362992be664055e01fb20a540d9"}, - {file = "ddtrace-1.20.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:f8dfb9b88fb687f54d429931fa372658ad91221c1bf41f721663024b0d8d1f4e"}, - {file = "ddtrace-1.20.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:2f5f4b6b18988e7085de35f42481171984b420cb210fdb2b5e50605f69ce6049"}, - {file = "ddtrace-1.20.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:3470ee06052f1e25a11e6f710a1344928b80cf95dff0306fa5e05d83de2bca1e"}, - {file = "ddtrace-1.20.3-cp310-cp310-win32.whl", hash = "sha256:1240d2b385d8fa31977ae750a0bd9eb1b9378a708e5704685f57229db115e957"}, - {file = "ddtrace-1.20.3-cp310-cp310-win_amd64.whl", hash = "sha256:ff9c2bfb7602df284161fd51f9d4812ad4e8a29ef08292c689ec8600a5463d91"}, - {file = "ddtrace-1.20.3-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:89325721dd269ae4113aa78c031ffbda556771accc79592446d6e49c836da083"}, - {file = "ddtrace-1.20.3-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:1009b8667ea0ce3f5b46d6b2e98cb073e44e61097711dba9618d81dd03ca1d72"}, - {file = "ddtrace-1.20.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0289559d752edc5b99dbe896835bda5791f707f9f2efb98d48a05b8b1ef7375e"}, - {file = "ddtrace-1.20.3-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:55d960c0af5340518980fc77cb5a0fd22d242f68940607cfa94301fa0cf4067b"}, - {file = "ddtrace-1.20.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b249d6f49f48405a36cee5180c9ac28667d3bfaaeb0e4f82f35fd3f9694f18c"}, - {file = "ddtrace-1.20.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:91e20667802ab00e973f832ecb87853a0c59a56053e5c51f611bc2e2e38dd1e8"}, - {file = "ddtrace-1.20.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:ab008b4af0cef3cf0d02452188dcd7126c0787680325a4f2fa7cd5831df22c88"}, - {file = "ddtrace-1.20.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1e8815684f4487fa707b5312ed9ff4ceeaedd1a5af157f15405d27c266d6e99e"}, - {file = "ddtrace-1.20.3-cp311-cp311-win32.whl", hash = "sha256:5c44a4a5a5274eb2728e6dd05ad333bf9bfafec850e220b43f1171df9ec92c9b"}, - {file = "ddtrace-1.20.3-cp311-cp311-win_amd64.whl", hash = "sha256:293678013c7f060ae0027baf2807625da367656575204438dd53df7dd209cc0f"}, - {file = "ddtrace-1.20.3-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:6afa8a78d6cf998098c0fc6f18975113f8180584889dd91fa8dafe0203f1dc74"}, - {file = "ddtrace-1.20.3-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:272db8a94aef1483f3023d09cfd4cd9fdbe80cc0b8b22c6cbdcb28c9ca3c45da"}, - {file = "ddtrace-1.20.3-cp35-cp35m-manylinux2014_aarch64.whl", hash = "sha256:58f95016c0d364437a9f0986e9fd02714a9215870c1d79e3e3b6ff81fb5d3113"}, - {file = "ddtrace-1.20.3-cp35-cp35m-win32.whl", hash = "sha256:1a0cc4abe979d288eb58aed00895a35e6dc68ebb76d01dfd1cf3d8c80fbd6e72"}, - {file = "ddtrace-1.20.3-cp35-cp35m-win_amd64.whl", hash = "sha256:71e24d61571c0b854f61433c7e4303fb4278b4ed1a76c2cabceb79477e7ca9eb"}, - {file = "ddtrace-1.20.3-cp36-cp36m-macosx_11_0_x86_64.whl", hash = "sha256:f31e162f43cc3ebd570409683976c03b536e561a3c3afd8ca1ed837aa1552e25"}, - {file = "ddtrace-1.20.3-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:64ca09f911444e78fcdefece1140914bdafd7dd1217b848a1b2578d5ac341a4b"}, - {file = "ddtrace-1.20.3-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9cfc459cb52d56150548764dbef763be3945b8e2f522bedf2c7ba47fa23b34bb"}, - {file = "ddtrace-1.20.3-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d0a9c7e87ec009bc856ff252672a278b106a4e7ee8a7c99179e589576263743d"}, - {file = "ddtrace-1.20.3-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:7563d5110d78259cba087f9424cfb36f0666413439a3c4fb384284a3e4e076cf"}, - {file = "ddtrace-1.20.3-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:dc2ca4a6ad3219ad0ff4ad82caf31fd64c9c4d45611e62ae4bca0a5f6b6cff21"}, - {file = "ddtrace-1.20.3-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:818bd589c38d4a7b1689b20b0f235cdf421297257328a192a4dff004e43fed8d"}, - {file = "ddtrace-1.20.3-cp36-cp36m-win32.whl", hash = "sha256:9a1e09211d6030b6e75172c2b7cf4ec600c38013c70fb48f9c11db9ae0354950"}, - {file = "ddtrace-1.20.3-cp36-cp36m-win_amd64.whl", hash = "sha256:999287700d26362e9651becdd07f2ccf856a78016549d31d47da627bdd7e0b39"}, - {file = "ddtrace-1.20.3-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:fa5a174acd453022f925cacbcfd86d8a012bce9f7605cb020a6fe0dc85f0f435"}, - {file = "ddtrace-1.20.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:315d7835d97e9f78f988d7fdf32a98ed59ef509a07a16d3b77f49fd992b9d304"}, - {file = "ddtrace-1.20.3-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7674827d57aeff15fbde7cd730e906d509fd77b6d2cda8ce7b6da7f7dcfa1464"}, - {file = "ddtrace-1.20.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:16fb4d625d233c8719d37e11e2a08ec968a98877b2083140803d5d76a6fc6498"}, - {file = "ddtrace-1.20.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:470381b364d8adaa7e87a3a78cdaaa82a74d4418f9c79c1239eabc5b62ef824f"}, - {file = "ddtrace-1.20.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:8c87f7ea1ea7114950fdbcdad8a1e2bff6c1f4e20232563c3c88ee1224764fee"}, - {file = "ddtrace-1.20.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:84b0acecc372ae9755b0271abc19ac023491e6c84873df4d8af0305ebc7244b8"}, - {file = "ddtrace-1.20.3-cp37-cp37m-win32.whl", hash = "sha256:895a26e595852943203f6d0d04018b6f2fab56592fe6c63e33d862a7a9a4eb64"}, - {file = "ddtrace-1.20.3-cp37-cp37m-win_amd64.whl", hash = "sha256:8dfc439dd3e23bad60e74aab117013d49a9dbce3bd36b66e133206b435384ffa"}, - {file = "ddtrace-1.20.3-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:55b39c09cee3cc25ea3d3ad9dc430a344affbecb017ef4758374b22c050cfaef"}, - {file = "ddtrace-1.20.3-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:1546084f68a6b9218124725be32c42441f3cc44640656fbe6a911c5c92c2f742"}, - {file = "ddtrace-1.20.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a364f1f0942096a4e7d38324d4f5781aefb8581efaa211cdd454dcf2906f00b3"}, - {file = "ddtrace-1.20.3-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:34d5e9bd4f2148a247c4921cb531d247b430eac23c86d188dfbb267f33875365"}, - {file = "ddtrace-1.20.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b5483abd5ee0d40b5c0b46baa57da1df499700e5f2e4672ccaf2b6e7f783781e"}, - {file = "ddtrace-1.20.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2fa3c584e30c628a25978e9e1e884581e98e838b7234b4d66223713cfe7d7ece"}, - {file = "ddtrace-1.20.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:2f38e4a455ceaa05e5933958799506fd3b4682bf1803b50bd1d0fb57fb603eab"}, - {file = "ddtrace-1.20.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:bd3ebc0e9ae1159fd7b66b90bee2613bdf1b2ac59e9b164e34276f29e68ab032"}, - {file = "ddtrace-1.20.3-cp38-cp38-win32.whl", hash = "sha256:8628ca382e728204c18744f220e80c2cc5a54a61b825cd0c269d1017a235feaa"}, - {file = "ddtrace-1.20.3-cp38-cp38-win_amd64.whl", hash = "sha256:8216ee3990c7744e12351d843aec2f08ce0d18c9370ebb5c5dde597b8a188a3b"}, - {file = "ddtrace-1.20.3-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:2c91ca946ae543dee0e75ca2a1380db48291804ad6a740a4670fc5950f826109"}, - {file = "ddtrace-1.20.3-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:34c035588bc41c3e3985f04f7ba8bc79d725ba81d840e36b15355e22bc7545db"}, - {file = "ddtrace-1.20.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:301247561b8ab714aa8d955b9fb93a09dc8ff69898a3255a24126055ac3e6157"}, - {file = "ddtrace-1.20.3-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:73b541160d49c5ef08a652140cf537ef2cb35feb1441ed229c292994af735f80"}, - {file = "ddtrace-1.20.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b79fb270b6daf211454a82577ec27db8a8be0df65c545c7f8ea4878fd53d245c"}, - {file = "ddtrace-1.20.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7b92f57d076318c29c219d30e263727625a2cbce69ff7b72b48adaa248820a9d"}, - {file = "ddtrace-1.20.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:95ecc029e32ecc23ce052bf96b25a18b8165d6f9fe5b638bda99c3d1f958894a"}, - {file = "ddtrace-1.20.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:6d68857b8643330519f3171b0c055cc738a441fb373060d6862755c89ae16874"}, - {file = "ddtrace-1.20.3-cp39-cp39-win32.whl", hash = "sha256:00d6efc0f909442f960b4246a20adf173cb385643686f7fae31f2367226b1858"}, - {file = "ddtrace-1.20.3-cp39-cp39-win_amd64.whl", hash = "sha256:fb06e0e535044570579683d0cf32b28e576bdc460c81aeddfa05bb6da7327a82"}, - {file = "ddtrace-1.20.3.tar.gz", hash = "sha256:c94beafc8ce6d973c054ccceba6437a6a12fcf136e5f94eab6326e1a4ce72310"}, + {file = "ddtrace-1.20.5-cp27-cp27m-macosx_11_0_x86_64.whl", hash = "sha256:8e848f4d4efd02f887633aa6eca284a820e42b316ebbbd9ed25599f777e8090f"}, + {file = "ddtrace-1.20.5-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:3aff8d055aa57de51a814dc86aaee5602b5ea665e7502d60b8467b07fb5018d2"}, + {file = "ddtrace-1.20.5-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:ec89b97c50b2ccc27ecef9d9d084a412f174002d665140a5710928909a2d592e"}, + {file = "ddtrace-1.20.5-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:8216d010c7206544de46053638ec5a9ed1ac3a56908621a958aaa390d8cffb27"}, + {file = "ddtrace-1.20.5-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:3c16686ed141dc847ed8cd09528649cccd833d896b2d5878f8ee370f15de6de6"}, + {file = "ddtrace-1.20.5-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:834e49122cf1e75c299c0ac54886de7b776f4f292c2679d88c1ea31e866d8514"}, + {file = "ddtrace-1.20.5-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:4f28220ce9cbdd58d02a9851d41b7c2424270ffe3a08fd042299ffc3d92c96f5"}, + {file = "ddtrace-1.20.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7228037265efbd74656e65f8d3f17ea28854c280aa86db1a7adaf642d9ffaa63"}, + {file = "ddtrace-1.20.5-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1f01a2a06974716fb516063369ab973fad38ffb33ca5ca15b3b7b128c06a2490"}, + {file = "ddtrace-1.20.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:be2570b7348eb9b561fe148997af3c11a50904870503a3fe7c2b6348e87dac7f"}, + {file = "ddtrace-1.20.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:6ca5b6ef30a300518e535a8291c9008d68fc1cde8fc4ed476af1b3c9377ab675"}, + {file = "ddtrace-1.20.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:ecd7e3a15e73c1f86cdb6e4c7874e99023f412ba9f63e1b342ecd593313fad2f"}, + {file = "ddtrace-1.20.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:86a052d8fe5cb380702bc4ee49857c2f12b019c7a3f4c78f8b2dfd43c72668ca"}, + {file = "ddtrace-1.20.5-cp310-cp310-win32.whl", hash = "sha256:3fd4d252224a74ff72b27b8371a2ac9500dc0ba08d3e009c3052ea63ad514824"}, + {file = "ddtrace-1.20.5-cp310-cp310-win_amd64.whl", hash = "sha256:90a641673b29521ec73ce572896011653cd222152b92ec744b6f162b4ccdb27f"}, + {file = "ddtrace-1.20.5-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:345c7a2910309547fa9b53d4386912a4cbd9c24c0a9f0b771404c7c2b82f8764"}, + {file = "ddtrace-1.20.5-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:07f97e1d94e3fe3f79d9656baa7283441c5d155adb2a0ca5d2defbdfbb12a28c"}, + {file = "ddtrace-1.20.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6e3718c0804cdd2def4b80f9bd51c55b2f44dca914086f647a21356980022668"}, + {file = "ddtrace-1.20.5-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b0acd401c52bf617474c4cac8bca0aa8cf6253d82b31c4e892b30294b397f10d"}, + {file = "ddtrace-1.20.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b36954f49c82e9e2e42615a5b70ba04dfd12d71011f4c9931effb6957c63fbd"}, + {file = "ddtrace-1.20.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:51523c55618a6b26ecdaab1c4540e3679e96723d0f883e1df7ffaa5010231cb2"}, + {file = "ddtrace-1.20.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:61d538c2c6e7a460cbdc19735093c993a62abc3381def43d5940a8facc4a280f"}, + {file = "ddtrace-1.20.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:59635b9fef2e02fefd46876f93e63eaa857503eb64aced6bcffaa81a199cfa4e"}, + {file = "ddtrace-1.20.5-cp311-cp311-win32.whl", hash = "sha256:7c4b6b121ec72736c9004c83d40d4d64155b935fb1c033390370de78af001fdb"}, + {file = "ddtrace-1.20.5-cp311-cp311-win_amd64.whl", hash = "sha256:cdaff774e88feb6d0229609ecdbaecbf50a220428bb29f863734b167d910a658"}, + {file = "ddtrace-1.20.5-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:ec41eff870ceba145306daab76f003a6977986dd65074b9a74f50cd0a985e431"}, + {file = "ddtrace-1.20.5-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:89dfaf4133ad8dcb6c63db843624e10175e9813a1f867e24d1c2a8e724088119"}, + {file = "ddtrace-1.20.5-cp35-cp35m-manylinux2014_aarch64.whl", hash = "sha256:7b625af8eb772bc242b850a011ba9294721f85d3f965cecdcc430fb73da1a11a"}, + {file = "ddtrace-1.20.5-cp35-cp35m-win32.whl", hash = "sha256:8cd282d38a394417e65b360ff9fb1d982bb3270ab18239f3ad3c70a1ec9cb9a3"}, + {file = "ddtrace-1.20.5-cp35-cp35m-win_amd64.whl", hash = "sha256:2d1086c5178be1763af7f30a18dd5bf6b77de855bbaa1c6c1d10e98fa7ad0931"}, + {file = "ddtrace-1.20.5-cp36-cp36m-macosx_11_0_x86_64.whl", hash = "sha256:af4eac36813863e08cb71f72f86e9c5a060841ce66acdf2a090d831bf6886895"}, + {file = "ddtrace-1.20.5-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7a2a15a3672331ffbdf32f8b8a387979b070510fbc2bc90e2c33c4669cd846bc"}, + {file = "ddtrace-1.20.5-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7c9f8071a9b4ea0be1fe62e39a68e95592742c56e336fbd0e4e99d18c39eca27"}, + {file = "ddtrace-1.20.5-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa49ab583816163b4cc133da234c5c2bc75d37cf459004c8319dc4026ac96c9b"}, + {file = "ddtrace-1.20.5-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:a37cc5871b0dc6a18f19228280927d6b22d04fb30522eebcc48371481e447709"}, + {file = "ddtrace-1.20.5-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:e1f4ad4eab735f092d9a23b80d9ffd7d33f7bb8fecba001f222155a7dc03d6ed"}, + {file = "ddtrace-1.20.5-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:253c75018b412a6f90c26ddfd2f265fc950751dbf76cd8529f8537b4fa4c031d"}, + {file = "ddtrace-1.20.5-cp36-cp36m-win32.whl", hash = "sha256:a61ec2a2874ab9f7228b3cf430a7048803a1ce2db22fde021c1f61ed38a1e5b4"}, + {file = "ddtrace-1.20.5-cp36-cp36m-win_amd64.whl", hash = "sha256:2c6ff4e1118d4530b80fbf9432414e0fad38ef33bc64e39a00648b396c4c44a7"}, + {file = "ddtrace-1.20.5-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:f0eaf682acaed72427c9f05831e44050e6145ca0b227fc25a123c22d1c7d4c89"}, + {file = "ddtrace-1.20.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d952483633e637c9bb6364baf0dd3b805872b121746a7243d9de647c6f2c9417"}, + {file = "ddtrace-1.20.5-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ac292a54a8b3b00d424e8c6451d7c21d247ff7e223ab6280ee541319428cd41a"}, + {file = "ddtrace-1.20.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:07eae27732d63ac4e7370b575e59ff4f8c1396f8e40992feeca45425b4fce4cc"}, + {file = "ddtrace-1.20.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:5678feec55fc77771eae9ff80a34037af14a140b4f6bf68a454cf86204db6401"}, + {file = "ddtrace-1.20.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:1b23c154a3ca0f60b9324be0886655e05db40ea98cd33cb8111091ba9adea8f2"}, + {file = "ddtrace-1.20.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d73cb8a34112d80caadd6b088d02f9c6070264abc71733ecb537b2f9a97d6f10"}, + {file = "ddtrace-1.20.5-cp37-cp37m-win32.whl", hash = "sha256:ca8eabcd59c965086de4067475ba8e70895f81f601ce9660c5080cefd66d655c"}, + {file = "ddtrace-1.20.5-cp37-cp37m-win_amd64.whl", hash = "sha256:7ad29dcea031b6ba03f77de4ad6f85d749294fd9e8ba8af871a73811c47d1e5a"}, + {file = "ddtrace-1.20.5-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:67fea1d08dbca04eff521cc013adba1dd0d80c6e5c75a02cb4a7c42c0e973993"}, + {file = "ddtrace-1.20.5-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:79536cfa68338db9c95e728585e1f5f059e321cfcf145fce6b14e8cd1d12892c"}, + {file = "ddtrace-1.20.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c746d3546f69b7718fb61508826552a197fc981bb26c66408e1a20f7ac0952a3"}, + {file = "ddtrace-1.20.5-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8fb3aaf24760d8e4d23d01e497d15ac1b52be202e82a63140afd0c2b799e8571"}, + {file = "ddtrace-1.20.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d6602c52359dbf009ef762c4110ee1ca7dfb9a163aa7bc43515c920a3ddf545f"}, + {file = "ddtrace-1.20.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:7d1cc510f3a4be3df3282415b045cd85dc83a3a2051d219a24546dfb9fdcb39d"}, + {file = "ddtrace-1.20.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:774d48d7e050fc4fec35317348f04326d8f781348e11ff937e739fd7ad555c6b"}, + {file = "ddtrace-1.20.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:7094dd13bf2e17dac2f555a2a0ec85f89e330e6d9327122a6e16fac2b6765f34"}, + {file = "ddtrace-1.20.5-cp38-cp38-win32.whl", hash = "sha256:264cadc7caf89f45d225b1323a09c73a2706f38b754266660fc93a19b2ccb1d7"}, + {file = "ddtrace-1.20.5-cp38-cp38-win_amd64.whl", hash = "sha256:815a14133c25ed9a6deb0df043c7095107a2a900faaf458af153352bb329ccd5"}, + {file = "ddtrace-1.20.5-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:3faff82c1c0b809faa6b79ecb37a7402ca2e452241607db3ca4f8d79e30d8695"}, + {file = "ddtrace-1.20.5-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:6a94fc30efcf753cb40f37a1c8d440139ac63db6cc346ecaf3a409f12410297b"}, + {file = "ddtrace-1.20.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8a43168df3b30fa228720d7c900a51a4fdaae145efaba6e6f37b678e2714f846"}, + {file = "ddtrace-1.20.5-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dad47a4058ed2b703843f0615411e5bd8edcaad54b0d8bc3de811252d8dd242e"}, + {file = "ddtrace-1.20.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6a415b779b34d4af9880665b25ffcab8463c2e75dc82eed0228756a9fa93ed16"}, + {file = "ddtrace-1.20.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:6750dcf7f84895e136452a5c03ff66d4a9e022994b961b1cf7a983fcfc65afba"}, + {file = "ddtrace-1.20.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:76e8f5f07784c8ec26a7bfd5150c359429a3423179776e075735a2e685148095"}, + {file = "ddtrace-1.20.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c4e56bd317578d34663b399b213d8b22801267b8d4faf7a1b645eb1918feaf1b"}, + {file = "ddtrace-1.20.5-cp39-cp39-win32.whl", hash = "sha256:247d8206686ef6c0b1263ce63e37a99eee5fee20ad1456bcb78edcb77519c6f5"}, + {file = "ddtrace-1.20.5-cp39-cp39-win_amd64.whl", hash = "sha256:bafc1c668b8f32a8e980f75c121c33464188270c01ef87430baa489e55fb1590"}, + {file = "ddtrace-1.20.5.tar.gz", hash = "sha256:3a15940d03a4c35d253d93b6c3acf82e0cd70d72f4ec9d8c3d0ca0d0c398dda3"}, ] [package.dependencies] @@ -702,13 +702,13 @@ files = [ [[package]] name = "urllib3" -version = "1.26.17" +version = "1.26.18" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" files = [ - {file = "urllib3-1.26.17-py2.py3-none-any.whl", hash = "sha256:94a757d178c9be92ef5539b8840d48dc9cf1b2709c9d6b588232a055c524458b"}, - {file = "urllib3-1.26.17.tar.gz", hash = "sha256:24d6a242c28d29af46c3fae832c36db3bbebcc533dd1bb549172cd739c82df21"}, + {file = "urllib3-1.26.18-py2.py3-none-any.whl", hash = "sha256:34b97092d7e0a3a8cf7cd10e386f401b3737364026c45e622aa02903dffe0f07"}, + {file = "urllib3-1.26.18.tar.gz", hash = "sha256:f8ecc1bba5667413457c529ab955bf8c67b45db799d159066261719e328580a0"}, ] [package.extras] @@ -716,6 +716,23 @@ brotli = ["brotli (==1.0.9)", "brotli (>=1.0.9)", "brotlicffi (>=0.8.0)", "brotl secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress", "pyOpenSSL (>=0.14)", "urllib3-secure-extra"] socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] +[[package]] +name = "urllib3" +version = "2.0.7" +description = "HTTP library with thread-safe connection pooling, file post, and more." +optional = false +python-versions = ">=3.7" +files = [ + {file = "urllib3-2.0.7-py3-none-any.whl", hash = "sha256:fdb6d215c776278489906c2f8916e6e7d4f5a9b602ccbcfdf7f016fc8da0596e"}, + {file = "urllib3-2.0.7.tar.gz", hash = "sha256:c97dfde1f7bd43a71c8d2a58e369e9b2bf692d1334ea9f9cae55add7d0dd0f84"}, +] + +[package.extras] +brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] +secure = ["certifi", "cryptography (>=1.9)", "idna (>=2.0.0)", "pyopenssl (>=17.1.0)", "urllib3-secure-extra"] +socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] +zstd = ["zstandard (>=0.18.0)"] + [[package]] name = "wrapt" version = "1.15.0" @@ -832,4 +849,4 @@ dev = ["boto3", "flake8", "httpretty", "nose2", "requests"] [metadata] lock-version = "2.0" python-versions = ">=3.7.0,<4" -content-hash = "171dcd184163df36156c63fa97ab16f1f063756aac2181c97b9a5a101735839a" +content-hash = "49c1c17e09ec0fe82e8f8ba0815078369669dcbedf681c78994173eeed020f05" diff --git a/pyproject.toml b/pyproject.toml index 7e84b19d..a2f840ff 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -28,9 +28,12 @@ python = ">=3.7.0,<4" datadog = ">=0.41.0,<1.0.0" wrapt = "^1.11.2" ddtrace = "<2.0.0" -urllib3 = "<2.0.0" +urllib3 = [ + {version = "<2.0.0", python = "<3.11", optional = true}, + {version = "<2.1.0", python = ">=3.11", optional = true}, +] importlib_metadata = {version = "*", python = "<3.8"} -boto3 = { version = "^1.10.33", optional = true } +boto3 = { version = "^1.28.0", optional = true } typing_extensions = {version = "^4.0", python = "<3.8"} requests = { version ="^2.22.0", optional = true } nose2 = { version= "^0.9.1", optional = true } From 5ffdc80c15dc4e95c417dda72c9c118ed2ecdf70 Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Wed, 18 Oct 2023 11:37:25 -0400 Subject: [PATCH 046/268] Bump version to 4.81.0 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index a2f840ff..d5eac7ca 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "4.80.0" +version = "4.81.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From b32813df3c78d3791402a342a5796be90b274112 Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Thu, 2 Nov 2023 09:26:58 -0400 Subject: [PATCH 047/268] feat: Fix comments in dockerfile (#385) --- Dockerfile | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 7bd1f6cf..2cf569a7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -14,10 +14,12 @@ RUN pip install . -t ./python/lib/$runtime/site-packages # Remove *.pyc files RUN find ./python/lib/$runtime/site-packages -name \*.pyc -delete -# Remove botocore (40MB) to reduce package size. aws-xray-sdk -# installs it, while it's already provided by the Lambda Runtime. +# Strip symbols from ddtrace's binaries. +# TODO (AJ): remove when ddtrace fixes this upstream RUN find . -name '*.so' -exec strip -g {} \; +# Remove botocore (40MB) to reduce package size. aws-xray-sdk +# installs it, while it's already provided by the Lambda Runtime. RUN rm -rf ./python/lib/$runtime/site-packages/botocore* RUN rm -rf ./python/lib/$runtime/site-packages/setuptools RUN rm -rf ./python/lib/$runtime/site-packages/jsonschema/tests From a45283c739f2cb6514658d96bddcf2bfe7bfbea5 Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Tue, 7 Nov 2023 08:39:26 -0500 Subject: [PATCH 048/268] feat: Fix regex for ddtrace version (#389) --- scripts/run_integration_tests.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/run_integration_tests.sh b/scripts/run_integration_tests.sh index beb91921..64a3248b 100755 --- a/scripts/run_integration_tests.sh +++ b/scripts/run_integration_tests.sh @@ -234,7 +234,7 @@ for handler_name in "${LAMBDA_HANDLERS[@]}"; do sed -E "s/(\"datadog_lambda\"\: \")([0-9]+\.[0-9]+\.[0-9])/\1X.X.X/g" | sed -E "s/(\"partition_key\"\:\ \")[a-zA-Z0-9\-]+/\1XXXX/g" | sed -E "s/(\"object_etag\"\:\ \")[a-zA-Z0-9\-]+/\1XXXX/g" | - sed -E "s/(\"dd_trace\"\: \")([0-9]+\.[0-9]+\.[0-9])/\1X.X.X/g" | + sed -E "s/(\"dd_trace\"\: \")([0-9]+\.[0-9]+\.[0-9]+)/\1X.X.X/g" | sed -E "s/(traceparent\:)([A-Za-z0-9\-]+)/\1XXX/g" | # Parse out account ID in ARN sed -E "s/([a-zA-Z0-9]+):([a-zA-Z0-9]+):([a-zA-Z0-9]+):([a-zA-Z0-9\-]+):([a-zA-Z0-9\-\:]+)/\1:\2:\3:\4:XXXX:\4/g" | From 1dc0502818db9e2d0f31f002e891a7d4d3055254 Mon Sep 17 00:00:00 2001 From: Julio Guerra Date: Tue, 7 Nov 2023 14:41:01 +0100 Subject: [PATCH 049/268] feat: opt-in enablement of the instrumentation telemetry client (#386) * feat: opt-in enablement of the instrumentation telemetry client * Update datadog_lambda/tracing.py Co-authored-by: Alberto Vara * Fix linter --------- Co-authored-by: Alberto Vara --- datadog_lambda/tracing.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index a9c223e3..de6e76b4 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -55,6 +55,15 @@ dd_trace_context = {} dd_tracing_enabled = os.environ.get("DD_TRACE_ENABLED", "false").lower() == "true" +if dd_tracing_enabled: + # Enable the telemetry client if the user has opted in + if ( + os.environ.get("DD_INSTRUMENTATION_TELEMETRY_ENABLED", "false").lower() + == "true" + ): + from ddtrace.internal.telemetry import telemetry_writer + + telemetry_writer.enable() propagator = HTTPPropagator() From df70de2d12ed8766e9563e16c8433fe8932dfa3d Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Fri, 10 Nov 2023 10:39:47 -0500 Subject: [PATCH 050/268] expose DD_CAPTURE_LAMBDA_PAYLOAD_MAX_DEPTH [SVLS-3853] (#387) * expose DD_CAPTURE_LAMBDA_PAYLOAD_MAX_DEPTH * Update README.md Co-authored-by: Brett Blue <84536271+brett0000FF@users.noreply.github.com> * improve readme.md --------- Co-authored-by: Brett Blue <84536271+brett0000FF@users.noreply.github.com> --- README.md | 17 +++++++++++ datadog_lambda/tag_object.py | 7 ++--- datadog_lambda/wrapper.py | 48 ++++++++++++++++++++------------ datadog_lambda/xray.py | 1 - scripts/run_integration_tests.sh | 6 ++-- tests/test_tag_object.py | 34 +++++++++++++++++++++- 6 files changed, 86 insertions(+), 27 deletions(-) diff --git a/README.md b/README.md index 757c929d..e3702b1b 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,21 @@ Follow the [installation instructions](https://docs.datadoghq.com/serverless/ins Follow the [configuration instructions](https://docs.datadoghq.com/serverless/configuration) to tag your telemetry, capture request/response payloads, filter or scrub sensitive information from logs or traces, and more. +For additional tracing configuration options, check out the [official documentation for Datadog trace client](https://ddtrace.readthedocs.io/en/stable/configuration.html). + +Besides the environment variables supported by dd-trace-py, the datadog-lambda-python library added following environment variables. + +| Environment Variables | Description | Default Value | +| -------------------- | ------------ | ------------- | +| DD_ENCODE_AUTHORIZER_CONTEXT | When set to `true` for Lambda authorizers, the tracing context will be encoded into the response for propagation. Supported for NodeJS and Python. | `true` | +| DD_DECODE_AUTHORIZER_CONTEXT | When set to `true` for Lambdas that are authorized via Lambda authorizers, it will parse and use the encoded tracing context (if found). Supported for NodeJS and Python. | `true` | +| DD_COLD_START_TRACING | Set to `false` to disable Cold Start Tracing. Used in NodeJS and Python. | `true` | +| DD_MIN_COLD_START_DURATION | Sets the minimum duration (in milliseconds) for a module load event to be traced via Cold Start Tracing. Number. | `3` | +| DD_COLD_START_TRACE_SKIP_LIB | optionally skip creating Cold Start Spans for a comma-separated list of libraries. Useful to limit depth or skip known libraries. | `ddtrace.internal.compat,ddtrace.filters` | +| DD_CAPTURE_LAMBDA_PAYLOAD | [Captures incoming and outgoing AWS Lambda payloads][1] in the Datadog APM spans for Lambda invocations. | `false` | +| DD_CAPTURE_LAMBDA_PAYLOAD_MAX_DEPTH | Determines the level of detail captured from AWS Lambda payloads, which are then assigned as tags for the `aws.lambda` span. It specifies the nesting depth of the JSON payload structure to process. Once the specified maximum depth is reached, the tag's value is set to the stringified value of any nested elements beyond this level.
For example, given the input payload:
{
"lv1" : {
"lv2": {
"lv3": "val"
}
}
}
If the depth is set to `2`, the resulting tag's key is set to `function.request.lv1.lv2` and the value is `{\"lv3\": \"val\"}`.
If the depth is set to `0`, the resulting tag's key is set to `function.request` and value is `{\"lv1\":{\"lv2\":{\"lv3\": \"val\"}}}` | `10` | + + ## Opening Issues If you encounter a bug with this package, we want to hear about it. Before opening a new issue, search the existing issues to avoid duplicates. @@ -51,3 +66,5 @@ For product feedback and questions, join the `#serverless` channel in the [Datad Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0. This product includes software developed at Datadog (https://www.datadoghq.com/). Copyright 2019 Datadog, Inc. + +[1]: https://www.datadoghq.com/blog/troubleshoot-lambda-function-request-response-payloads/ diff --git a/datadog_lambda/tag_object.py b/datadog_lambda/tag_object.py index 151801f6..b8e26934 100644 --- a/datadog_lambda/tag_object.py +++ b/datadog_lambda/tag_object.py @@ -13,12 +13,11 @@ def tag_object(span, key, obj, depth=0): - if depth >= max_depth: - return - else: - depth += 1 if obj is None: return span.set_tag(key, obj) + if depth >= max_depth: + return tag_object(span, key, _redact_val(key, str(obj)[0:5000])) + depth += 1 if _should_try_string(obj): parsed = None try: diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index f9675c68..81118848 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -49,7 +49,6 @@ extract_trigger_tags, extract_http_status_code_tag, ) -from datadog_lambda.tag_object import tag_object profiling_env_var = os.environ.get("DD_PROFILING_ENABLED", "false").lower() == "true" if profiling_env_var: @@ -57,10 +56,6 @@ logger = logging.getLogger(__name__) -dd_capture_lambda_payload_enabled = ( - os.environ.get("DD_CAPTURE_LAMBDA_PAYLOAD", "false").lower() == "true" -) - DD_FLUSH_TO_LOG = "DD_FLUSH_TO_LOG" DD_LOGS_INJECTION = "DD_LOGS_INJECTION" DD_MERGE_XRAY_TRACES = "DD_MERGE_XRAY_TRACES" @@ -72,10 +67,34 @@ DD_COLD_START_TRACING = "DD_COLD_START_TRACING" DD_MIN_COLD_START_DURATION = "DD_MIN_COLD_START_DURATION" DD_COLD_START_TRACE_SKIP_LIB = "DD_COLD_START_TRACE_SKIP_LIB" +DD_CAPTURE_LAMBDA_PAYLOAD = "DD_CAPTURE_LAMBDA_PAYLOAD" +DD_CAPTURE_LAMBDA_PAYLOAD_MAX_DEPTH = "DD_CAPTURE_LAMBDA_PAYLOAD_MAX_DEPTH" DD_REQUESTS_SERVICE_NAME = "DD_REQUESTS_SERVICE_NAME" DD_SERVICE = "DD_SERVICE" DD_ENV = "DD_ENV" + +def get_env_as_int(env_key, default_value: int) -> int: + try: + return int(os.environ.get(env_key, default_value)) + except Exception as e: + logger.warn( + f"Failed to parse {env_key} as int. Using default value: {default_value}. Error: {e}" + ) + return default_value + + +dd_capture_lambda_payload_enabled = ( + os.environ.get(DD_CAPTURE_LAMBDA_PAYLOAD, "false").lower() == "true" +) + +if dd_capture_lambda_payload_enabled: + import datadog_lambda.tag_object as tag_object + + tag_object.max_depth = get_env_as_int( + DD_CAPTURE_LAMBDA_PAYLOAD_MAX_DEPTH, tag_object.max_depth + ) + env_env_var = os.environ.get(DD_ENV, None) init_timestamp_ns = time_ns() @@ -161,14 +180,9 @@ def __init__(self, func): self.cold_start_tracing = depends_on_dd_tracing_enabled( os.environ.get(DD_COLD_START_TRACING, "true").lower() == "true" ) - self.min_cold_start_trace_duration = 3 - if DD_MIN_COLD_START_DURATION in os.environ: - try: - self.min_cold_start_trace_duration = int( - os.environ[DD_MIN_COLD_START_DURATION] - ) - except Exception: - logger.debug(f"Malformatted env {DD_MIN_COLD_START_DURATION}") + self.min_cold_start_trace_duration = get_env_as_int( + DD_MIN_COLD_START_DURATION, 3 + ) self.cold_start_trace_skip_lib = [ "ddtrace.internal.compat", "ddtrace.filters", @@ -307,16 +321,14 @@ def _after(self, event, context): create_dd_dummy_metadata_subsegment( self.trigger_tags, XraySubsegment.LAMBDA_FUNCTION_TAGS_KEY ) - should_trace_cold_start = ( - dd_tracing_enabled and self.cold_start_tracing and is_new_sandbox() - ) + should_trace_cold_start = self.cold_start_tracing and is_new_sandbox() if should_trace_cold_start: trace_ctx = tracer.current_trace_context() if self.span: if dd_capture_lambda_payload_enabled: - tag_object(self.span, "function.request", event) - tag_object(self.span, "function.response", self.response) + tag_object.tag_object(self.span, "function.request", event) + tag_object.tag_object(self.span, "function.response", self.response) if status_code: self.span.set_tag("http.status_code", status_code) diff --git a/datadog_lambda/xray.py b/datadog_lambda/xray.py index bbaecb2e..88d108f5 100644 --- a/datadog_lambda/xray.py +++ b/datadog_lambda/xray.py @@ -75,7 +75,6 @@ def generate_random_id(): def build_segment(context, key, metadata): - segment = json.dumps( { "id": generate_random_id(), diff --git a/scripts/run_integration_tests.sh b/scripts/run_integration_tests.sh index 64a3248b..90382458 100755 --- a/scripts/run_integration_tests.sh +++ b/scripts/run_integration_tests.sh @@ -200,8 +200,8 @@ for handler_name in "${LAMBDA_HANDLERS[@]}"; do sed -E "s/(api_key=|'api_key': '|DD-API-KEY:)[a-z0-9\.\-]+/\1XXXX/g" | # Normalize package version so that these snapshots aren't broken on version bumps sed -E "s/(dd_lambda_layer:datadog-python[0-9]+_)[0-9]+\.[0-9]+\.[0-9]+/\1X\.X\.X/g" | - sed -E "s/(datadog_lambda:v)([0-9]+\.[0-9]+\.[0-9])/\1XX/g" | - sed -E "s/(datadogpy\/)([0-9]+\.[0-9]+\.[0-9])/\1XX/g" | + sed -E "s/(datadog_lambda:v)([0-9]+\.[0-9]+\.[0-9]+)/\1XX/g" | + sed -E "s/(datadogpy\/)([0-9]+\.[0-9]+\.[0-9]+)/\1XX/g" | sed -E "s/(python )([0-9]\.[0-9]+\.[0-9]+)/\1XX/g" | # Strip out run ID (from function name, resource, etc.) sed -E "s/${!run_id}/XXXX/g" | @@ -231,7 +231,7 @@ for handler_name in "${LAMBDA_HANDLERS[@]}"; do sed -E "s/(\"connection_id\"\:\ \")[a-zA-Z0-9\-]+/\1XXXX/g" | sed -E "s/(\"shardId\-)([0-9]+)\:([a-zA-Z0-9]+)[a-zA-Z0-9]/\1XXXX:XXXX/g" | sed -E "s/(\"shardId\-)[0-9a-zA-Z]+/\1XXXX/g" | - sed -E "s/(\"datadog_lambda\"\: \")([0-9]+\.[0-9]+\.[0-9])/\1X.X.X/g" | + sed -E "s/(\"datadog_lambda\"\: \")([0-9]+\.[0-9]+\.[0-9]+)/\1X.X.X/g" | sed -E "s/(\"partition_key\"\:\ \")[a-zA-Z0-9\-]+/\1XXXX/g" | sed -E "s/(\"object_etag\"\:\ \")[a-zA-Z0-9\-]+/\1XXXX/g" | sed -E "s/(\"dd_trace\"\: \")([0-9]+\.[0-9]+\.[0-9]+)/\1X.X.X/g" | diff --git a/tests/test_tag_object.py b/tests/test_tag_object.py index 8e5ac3aa..eac84f7c 100644 --- a/tests/test_tag_object.py +++ b/tests/test_tag_object.py @@ -28,7 +28,39 @@ def test_tag_object(self): ], True, ) - self.assertEqual(1, 1) + + def test_tag_object_max_depth(self): + payload = { + "hello": "world", + "level1": { + "level2_dict": {"level3": 3}, + "level2_list": [None, True, "nice", {"l3": "v3"}], + "level2_bool": True, + "level2_int": 2, + }, + "vals": [{"thingOne": 1}, {"thingTwo": 2}], + } + spanMock = MagicMock() + import datadog_lambda.tag_object as lib_ref + + lib_ref.max_depth = 2 # setting up the test + tag_object(spanMock, "function.request", payload) + lib_ref.max_depth = 10 # revert the setup + spanMock.set_tag.assert_has_calls( + [ + call("function.request.vals.0", "{'thingOne': 1}"), + call("function.request.vals.1", "{'thingTwo': 2}"), + call("function.request.hello", "world"), + call("function.request.level1.level2_dict", "{'level3': 3}"), + call( + "function.request.level1.level2_list", + "[None, True, 'nice', {'l3': 'v3'}]", + ), + call("function.request.level1.level2_bool", "True"), + call("function.request.level1.level2_int", "2"), + ], + True, + ) def test_redacted_tag_object(self): payload = { From 10063a6a1833420ea0af7eb78991dfc1dfee2601 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Fri, 10 Nov 2023 13:52:49 -0500 Subject: [PATCH 051/268] bugfix for tag_object (#390) --- datadog_lambda/tag_object.py | 2 +- tests/test_tag_object.py | 27 +++++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/datadog_lambda/tag_object.py b/datadog_lambda/tag_object.py index b8e26934..ec1c5a66 100644 --- a/datadog_lambda/tag_object.py +++ b/datadog_lambda/tag_object.py @@ -16,7 +16,7 @@ def tag_object(span, key, obj, depth=0): if obj is None: return span.set_tag(key, obj) if depth >= max_depth: - return tag_object(span, key, _redact_val(key, str(obj)[0:5000])) + return span.set_tag(key, _redact_val(key, str(obj)[0:5000])) depth += 1 if _should_try_string(obj): parsed = None diff --git a/tests/test_tag_object.py b/tests/test_tag_object.py index eac84f7c..77512164 100644 --- a/tests/test_tag_object.py +++ b/tests/test_tag_object.py @@ -62,6 +62,33 @@ def test_tag_object_max_depth(self): True, ) + def test_tag_object_max_depth_0(self): + payload = { + "hello": "world", + "level1": { + "level2_dict": {"level3": 3}, + "level2_list": [None, True, "nice", {"l3": "v3"}], + "level2_bool": True, + "level2_int": 2, + }, + "vals": [{"thingOne": 1}, {"thingTwo": 2}], + } + spanMock = MagicMock() + import datadog_lambda.tag_object as lib_ref + + lib_ref.max_depth = 0 # setting up the test + tag_object(spanMock, "function.request", payload) + lib_ref.max_depth = 10 # revert the setup + spanMock.set_tag.assert_has_calls( + [ + call( + "function.request", + "{'hello': 'world', 'level1': {'level2_dict': {'level3': 3}, 'level2_list': [None, True, 'nice', {'l3': 'v3'}], 'level2_bool': True, 'level2_int': 2}, 'vals': [{'thingOne': 1}, {'thingTwo': 2}]}", + ), + ], + True, + ) + def test_redacted_tag_object(self): payload = { "authorization": "world", From aa5a1c9514e98c90d765264f86d814d8c65cb3fb Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Fri, 10 Nov 2023 16:01:53 -0500 Subject: [PATCH 052/268] Bump version to 4.82.0 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index d5eac7ca..de4a780e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "4.81.0" +version = "4.82.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 60ab01c0183b3eeabe1ca779a36aa727f1a74412 Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Tue, 21 Nov 2023 09:55:06 -0800 Subject: [PATCH 053/268] Defer trace context extraction to ddtrace. (#391) * Defer trace context extraction to ddtrace. * Adds testing for w3c traceparent extraction. * Inject headers when patching http requests. --- datadog_lambda/tracing.py | 277 +++++++++-------------- tests/test_tracing.py | 448 ++++++++++++++++++++++++++++---------- 2 files changed, 441 insertions(+), 284 deletions(-) diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index de6e76b4..05882749 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -20,7 +20,6 @@ from datadog_lambda.constants import ( SamplingPriority, - TraceHeader, TraceContextSource, XrayDaemon, Headers, @@ -32,6 +31,7 @@ from ddtrace import tracer, patch, Span from ddtrace import __version__ as ddtrace_version from ddtrace.propagation.http import HTTPPropagator +from ddtrace.context import Context from datadog_lambda import __version__ as datadog_lambda_version from datadog_lambda.trigger import ( _EventSource, @@ -53,7 +53,7 @@ logger = logging.getLogger(__name__) -dd_trace_context = {} +dd_trace_context = None dd_tracing_enabled = os.environ.get("DD_TRACE_ENABLED", "false").lower() == "true" if dd_tracing_enabled: # Enable the telemetry client if the user has opted in @@ -72,25 +72,21 @@ def _convert_xray_trace_id(xray_trace_id): """ Convert X-Ray trace id (hex)'s last 63 bits to a Datadog trace id (int). """ - return str(0x7FFFFFFFFFFFFFFF & int(xray_trace_id[-16:], 16)) + return 0x7FFFFFFFFFFFFFFF & int(xray_trace_id[-16:], 16) def _convert_xray_entity_id(xray_entity_id): """ Convert X-Ray (sub)segement id (hex) to a Datadog span id (int). """ - return str(int(xray_entity_id, 16)) + return int(xray_entity_id, 16) def _convert_xray_sampling(xray_sampled): """ Convert X-Ray sampled (True/False) to its Datadog counterpart. """ - return ( - str(SamplingPriority.USER_KEEP) - if xray_sampled - else str(SamplingPriority.USER_REJECT) - ) + return SamplingPriority.USER_KEEP if xray_sampled else SamplingPriority.USER_REJECT def _get_xray_trace_context(): @@ -102,11 +98,11 @@ def _get_xray_trace_context(): ) if xray_trace_entity is None: return None - trace_context = { - "trace-id": _convert_xray_trace_id(xray_trace_entity.get("trace_id")), - "parent-id": _convert_xray_entity_id(xray_trace_entity.get("parent_id")), - "sampling-priority": _convert_xray_sampling(xray_trace_entity.get("sampled")), - } + trace_context = Context( + trace_id=_convert_xray_trace_id(xray_trace_entity.get("trace_id")), + span_id=_convert_xray_entity_id(xray_trace_entity.get("parent_id")), + sampling_priority=_convert_xray_sampling(xray_trace_entity.get("sampled")), + ) logger.debug( "Converted trace context %s from X-Ray segment %s", trace_context, @@ -124,26 +120,19 @@ def _get_dd_trace_py_context(): if not span: return None - parent_id = span.context.span_id - trace_id = span.context.trace_id - sampling_priority = span.context.sampling_priority logger.debug( "found dd trace context: %s", (span.context.trace_id, span.context.span_id) ) - return { - "parent-id": str(parent_id), - "trace-id": str(trace_id), - "sampling-priority": str(sampling_priority), - "source": TraceContextSource.DDTRACE, - } + return span.context -def _context_obj_to_headers(obj): - return { - TraceHeader.TRACE_ID: str(obj.get("trace-id")), - TraceHeader.PARENT_ID: str(obj.get("parent-id")), - TraceHeader.SAMPLING_PRIORITY: str(obj.get("sampling-priority")), - } +def _is_context_complete(context): + return ( + context + and context.trace_id + and context.span_id + and context.sampling_priority is not None + ) def create_dd_dummy_metadata_subsegment( @@ -164,28 +153,14 @@ def extract_context_from_lambda_context(lambda_context): dd_trace libraries inject this trace context on synchronous invocations """ + dd_data = None client_context = lambda_context.client_context - trace_id = None - parent_id = None - sampling_priority = None if client_context and client_context.custom: + dd_data = client_context.custom if "_datadog" in client_context.custom: # Legacy trace propagation dict - dd_data = client_context.custom.get("_datadog", {}) - trace_id = dd_data.get(TraceHeader.TRACE_ID) - parent_id = dd_data.get(TraceHeader.PARENT_ID) - sampling_priority = dd_data.get(TraceHeader.SAMPLING_PRIORITY) - elif ( - TraceHeader.TRACE_ID in client_context.custom - and TraceHeader.PARENT_ID in client_context.custom - and TraceHeader.SAMPLING_PRIORITY in client_context.custom - ): - # New trace propagation keys - trace_id = client_context.custom.get(TraceHeader.TRACE_ID) - parent_id = client_context.custom.get(TraceHeader.PARENT_ID) - sampling_priority = client_context.custom.get(TraceHeader.SAMPLING_PRIORITY) - - return trace_id, parent_id, sampling_priority + dd_data = client_context.custom.get("_datadog") + return propagator.extract(dd_data) def extract_context_from_http_event_or_context( @@ -205,33 +180,17 @@ def extract_context_from_http_event_or_context( EventTypes.API_GATEWAY, subtype=EventSubtypes.HTTP_API ) injected_authorizer_data = get_injected_authorizer_data(event, is_http_api) - if injected_authorizer_data: - try: - # fail fast on any KeyError here - trace_id = injected_authorizer_data[TraceHeader.TRACE_ID] - parent_id = injected_authorizer_data[TraceHeader.PARENT_ID] - sampling_priority = injected_authorizer_data.get( - TraceHeader.SAMPLING_PRIORITY - ) - return trace_id, parent_id, sampling_priority - except Exception as e: - logger.debug( - "extract_context_from_authorizer_event returned with error. \ - Continue without injecting the authorizer span %s", - e, - ) - - headers = event.get("headers", {}) or {} - lowercase_headers = {k.lower(): v for k, v in headers.items()} + context = propagator.extract(injected_authorizer_data) + if _is_context_complete(context): + return context - trace_id = lowercase_headers.get(TraceHeader.TRACE_ID) - parent_id = lowercase_headers.get(TraceHeader.PARENT_ID) - sampling_priority = lowercase_headers.get(TraceHeader.SAMPLING_PRIORITY) + headers = event.get("headers") + context = propagator.extract(headers) - if not trace_id or not parent_id or not sampling_priority: + if not _is_context_complete(context): return extract_context_from_lambda_context(lambda_context) - return trace_id, parent_id, sampling_priority + return context def create_sns_event(message): @@ -262,12 +221,9 @@ def extract_context_from_sqs_or_sns_event_or_context(event, lambda_context): # EventBridge => SQS try: - ( - trace_id, - parent_id, - sampling_priority, - ) = _extract_context_from_eventbridge_sqs_event(event) - return trace_id, parent_id, sampling_priority + context = _extract_context_from_eventbridge_sqs_event(event) + if _is_context_complete(context): + return context except Exception: logger.debug("Failed extracting context as EventBridge to SQS.") @@ -311,11 +267,7 @@ def extract_context_from_sqs_or_sns_event_or_context(event, lambda_context): "context from String or Binary SQS/SNS message attributes" ) dd_data = json.loads(dd_json_data) - trace_id = dd_data.get(TraceHeader.TRACE_ID) - parent_id = dd_data.get(TraceHeader.PARENT_ID) - sampling_priority = dd_data.get(TraceHeader.SAMPLING_PRIORITY) - - return trace_id, parent_id, sampling_priority + return propagator.extract(dd_data) except Exception as e: logger.debug("The trace extractor returned with error %s", e) return extract_context_from_lambda_context(lambda_context) @@ -329,20 +281,12 @@ def _extract_context_from_eventbridge_sqs_event(event): This is only possible if first record in `Records` contains a `body` field which contains the EventBridge `detail` as a JSON string. """ - try: - first_record = event.get("Records")[0] - if "body" in first_record: - body_str = first_record.get("body", {}) - body = json.loads(body_str) - - detail = body.get("detail") - dd_context = detail.get("_datadog") - trace_id = dd_context.get(TraceHeader.TRACE_ID) - parent_id = dd_context.get(TraceHeader.PARENT_ID) - sampling_priority = dd_context.get(TraceHeader.SAMPLING_PRIORITY) - return trace_id, parent_id, sampling_priority - except Exception: - raise + first_record = event.get("Records")[0] + body_str = first_record.get("body") + body = json.loads(body_str) + detail = body.get("detail") + dd_context = detail.get("_datadog") + return propagator.extract(dd_context) def extract_context_from_eventbridge_event(event, lambda_context): @@ -355,10 +299,7 @@ def extract_context_from_eventbridge_event(event, lambda_context): dd_context = detail.get("_datadog") if not dd_context: return extract_context_from_lambda_context(lambda_context) - trace_id = dd_context.get(TraceHeader.TRACE_ID) - parent_id = dd_context.get(TraceHeader.PARENT_ID) - sampling_priority = dd_context.get(TraceHeader.SAMPLING_PRIORITY) - return trace_id, parent_id, sampling_priority + return propagator.extract(dd_context) except Exception as e: logger.debug("The trace extractor returned with error %s", e) return extract_context_from_lambda_context(lambda_context) @@ -381,25 +322,22 @@ def extract_context_from_kinesis_event(event, lambda_context): if not dd_ctx: return extract_context_from_lambda_context(lambda_context) - trace_id = dd_ctx.get(TraceHeader.TRACE_ID) - parent_id = dd_ctx.get(TraceHeader.PARENT_ID) - sampling_priority = dd_ctx.get(TraceHeader.SAMPLING_PRIORITY) - return trace_id, parent_id, sampling_priority + return propagator.extract(dd_ctx) except Exception as e: logger.debug("The trace extractor returned with error %s", e) return extract_context_from_lambda_context(lambda_context) -def _deterministic_md5_hash(s: str) -> str: +def _deterministic_md5_hash(s: str) -> int: """MD5 here is to generate trace_id, not for any encryption.""" hex_number = hashlib.md5(s.encode("ascii")).hexdigest() binary = bin(int(hex_number, 16)) binary_str = str(binary) binary_str_remove_0b = binary_str[2:].rjust(128, "0") most_significant_64_bits_without_leading_1 = "0" + binary_str_remove_0b[1:-64] - result = str(int(most_significant_64_bits_without_leading_1, 2)) - if result == "0" * 64: - return "1" + result = int(most_significant_64_bits_without_leading_1, 2) + if result == 0: + return 1 return result @@ -417,7 +355,9 @@ def extract_context_from_step_functions(event, lambda_context): execution_id + "#" + state_name + "#" + state_entered_time ) sampling_priority = SamplingPriority.AUTO_KEEP - return trace_id, parent_id, sampling_priority + return Context( + trace_id=trace_id, span_id=parent_id, sampling_priority=sampling_priority + ) except Exception as e: logger.debug("The Step Functions trace extractor returned with error %s", e) return extract_context_from_lambda_context(lambda_context) @@ -433,12 +373,14 @@ def extract_context_custom_extractor(extractor, event, lambda_context): parent_id, sampling_priority, ) = extractor(event, lambda_context) - return trace_id, parent_id, sampling_priority + return Context( + trace_id=int(trace_id), + span_id=int(parent_id), + sampling_priority=int(sampling_priority), + ) except Exception as e: logger.debug("The trace extractor returned with error %s", e) - return None, None, None - def is_authorizer_response(response) -> bool: try: @@ -504,56 +446,27 @@ def extract_dd_trace_context( event_source = parse_event_source(event) if extractor is not None: - ( - trace_id, - parent_id, - sampling_priority, - ) = extract_context_custom_extractor(extractor, event, lambda_context) + context = extract_context_custom_extractor(extractor, event, lambda_context) elif isinstance(event, (set, dict)) and "headers" in event: - ( - trace_id, - parent_id, - sampling_priority, - ) = extract_context_from_http_event_or_context( + context = extract_context_from_http_event_or_context( event, lambda_context, event_source, decode_authorizer_context ) elif event_source.equals(EventTypes.SNS) or event_source.equals(EventTypes.SQS): - ( - trace_id, - parent_id, - sampling_priority, - ) = extract_context_from_sqs_or_sns_event_or_context(event, lambda_context) + context = extract_context_from_sqs_or_sns_event_or_context( + event, lambda_context + ) elif event_source.equals(EventTypes.EVENTBRIDGE): - ( - trace_id, - parent_id, - sampling_priority, - ) = extract_context_from_eventbridge_event(event, lambda_context) + context = extract_context_from_eventbridge_event(event, lambda_context) elif event_source.equals(EventTypes.KINESIS): - ( - trace_id, - parent_id, - sampling_priority, - ) = extract_context_from_kinesis_event(event, lambda_context) + context = extract_context_from_kinesis_event(event, lambda_context) elif event_source.equals(EventTypes.STEPFUNCTIONS): - ( - trace_id, - parent_id, - sampling_priority, - ) = extract_context_from_step_functions(event, lambda_context) + context = extract_context_from_step_functions(event, lambda_context) else: - trace_id, parent_id, sampling_priority = extract_context_from_lambda_context( - lambda_context - ) + context = extract_context_from_lambda_context(lambda_context) - if trace_id and parent_id and sampling_priority: + if _is_context_complete(context): logger.debug("Extracted Datadog trace context from event or context") - metadata = { - "trace-id": trace_id, - "parent-id": parent_id, - "sampling-priority": sampling_priority, - } - dd_trace_context = metadata.copy() + dd_trace_context = context trace_context_source = TraceContextSource.EVENT else: # AWS Lambda runtime caches global variables between invocations, @@ -565,7 +478,7 @@ def extract_dd_trace_context( return dd_trace_context, trace_context_source, event_source -def get_dd_trace_context(): +def get_dd_trace_context_obj(): """ Return the Datadog trace context to be propagated on the outgoing requests. @@ -579,8 +492,8 @@ def get_dd_trace_context(): """ if dd_tracing_enabled: dd_trace_py_context = _get_dd_trace_py_context() - if dd_trace_py_context is not None: - return _context_obj_to_headers(dd_trace_py_context) + if _is_context_complete(dd_trace_py_context): + return dd_trace_py_context global dd_trace_context @@ -592,16 +505,32 @@ def get_dd_trace_context(): % e ) if not xray_context: - return {} + return None + + if not _is_context_complete(dd_trace_context): + return xray_context - if not dd_trace_context: - return _context_obj_to_headers(xray_context) + logger.debug("Set parent id from xray trace context: %s", xray_context.span_id) + return Context( + trace_id=dd_trace_context.trace_id, + span_id=xray_context.span_id, + sampling_priority=dd_trace_context.sampling_priority, + meta=dd_trace_context._meta.copy(), + metrics=dd_trace_context._metrics.copy(), + ) - context = dd_trace_context.copy() - context["parent-id"] = xray_context.get("parent-id") - logger.debug("Set parent id from xray trace context: %s", context.get("parent-id")) - return _context_obj_to_headers(context) +def get_dd_trace_context(): + """ + Return the Datadog trace context to be propagated on the outgoing requests, + as a dict of headers. + """ + headers = {} + context = get_dd_trace_context_obj() + if not _is_context_complete(context): + return headers + propagator.inject(context, headers) + return headers def set_correlation_ids(): @@ -619,14 +548,12 @@ def set_correlation_ids(): logger.debug("using ddtrace implementation for spans") return - context = get_dd_trace_context() - if not context: + context = get_dd_trace_context_obj() + if not _is_context_complete(context): return - span = tracer.trace("dummy.span") - span.trace_id = int(context[TraceHeader.TRACE_ID]) - span.span_id = int(context[TraceHeader.PARENT_ID]) - + tracer.context_provider.activate(context) + tracer.trace("dummy.span") logger.debug("correlation ids set") @@ -669,18 +596,20 @@ def is_lambda_context(): def set_dd_trace_py_root(trace_context_source, merge_xray_traces): if trace_context_source == TraceContextSource.EVENT or merge_xray_traces: - context = dict(dd_trace_context) + context = Context( + trace_id=dd_trace_context.trace_id, + span_id=dd_trace_context.span_id, + sampling_priority=dd_trace_context.sampling_priority, + ) if merge_xray_traces: xray_context = _get_xray_trace_context() - if xray_context is not None: - context["parent-id"] = xray_context.get("parent-id") + if xray_context.span_id: + context.span_id = xray_context.span_id - headers = _context_obj_to_headers(context) - span_context = propagator.extract(headers) - tracer.context_provider.activate(span_context) + tracer.context_provider.activate(context) logger.debug( "Set dd trace root context to: %s", - (span_context.trace_id, span_context.span_id), + (context.trace_id, context.span_id), ) diff --git a/tests/test_tracing.py b/tests/test_tracing.py index 24e6dcdd..745bf5d1 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -1,4 +1,5 @@ import unittest +import functools import json import os import copy @@ -29,7 +30,6 @@ _convert_xray_entity_id, _convert_xray_sampling, InferredSpanInfo, - extract_context_from_eventbridge_event, create_service_mapping, determine_service_name, service_mapping as global_service_mapping, @@ -96,6 +96,29 @@ def get_mock_context( return lambda_context +def with_trace_propagation_style(style): + style_list = list(style.split(",")) + + def _wrapper(fn): + @functools.wraps(fn) + def _wrap(*args, **kwargs): + from ddtrace.propagation.http import config + + orig_extract = config._propagation_style_extract + orig_inject = config._propagation_style_inject + config._propagation_style_extract = style_list + config._propagation_style_inject = style_list + try: + return fn(*args, **kwargs) + finally: + config._propagation_style_extract = orig_extract + config._propagation_style_inject = orig_inject + + return _wrap + + return _wrapper + + class TestExtractAndGetDDTraceContext(unittest.TestCase): def setUp(self): global dd_tracing_enabled @@ -114,17 +137,18 @@ def tearDown(self): dd_tracing_enabled = False del os.environ["_X_AMZN_TRACE_ID"] + @with_trace_propagation_style("datadog") def test_without_datadog_trace_headers(self): lambda_ctx = get_mock_context() ctx, source, event_source = extract_dd_trace_context({}, lambda_ctx) self.assertEqual(source, "xray") - self.assertDictEqual( + self.assertEqual( ctx, - { - "trace-id": fake_xray_header_value_root_decimal, - "parent-id": fake_xray_header_value_parent_decimal, - "sampling-priority": "2", - }, + Context( + trace_id=int(fake_xray_header_value_root_decimal), + span_id=int(fake_xray_header_value_parent_decimal), + sampling_priority=2, + ), ) self.assertDictEqual( get_dd_trace_context(), @@ -136,17 +160,18 @@ def test_without_datadog_trace_headers(self): {}, ) + @with_trace_propagation_style("datadog") def test_with_non_object_event(self): lambda_ctx = get_mock_context() ctx, source, event_source = extract_dd_trace_context(b"", lambda_ctx) self.assertEqual(source, "xray") - self.assertDictEqual( + self.assertEqual( ctx, - { - "trace-id": fake_xray_header_value_root_decimal, - "parent-id": fake_xray_header_value_parent_decimal, - "sampling-priority": "2", - }, + Context( + trace_id=int(fake_xray_header_value_root_decimal), + span_id=int(fake_xray_header_value_parent_decimal), + sampling_priority=2, + ), ) self.assertDictEqual( get_dd_trace_context(), @@ -158,6 +183,7 @@ def test_with_non_object_event(self): {}, ) + @with_trace_propagation_style("datadog") def test_with_incomplete_datadog_trace_headers(self): lambda_ctx = get_mock_context() ctx, source, event_source = extract_dd_trace_context( @@ -165,13 +191,13 @@ def test_with_incomplete_datadog_trace_headers(self): lambda_ctx, ) self.assertEqual(source, "xray") - self.assertDictEqual( + self.assertEqual( ctx, - { - "trace-id": fake_xray_header_value_root_decimal, - "parent-id": fake_xray_header_value_parent_decimal, - "sampling-priority": "2", - }, + Context( + trace_id=int(fake_xray_header_value_root_decimal), + span_id=int(fake_xray_header_value_parent_decimal), + sampling_priority=2, + ), ) self.assertDictEqual( get_dd_trace_context(), @@ -182,6 +208,7 @@ def test_with_incomplete_datadog_trace_headers(self): }, ) + @with_trace_propagation_style("datadog") def test_with_complete_datadog_trace_headers(self): lambda_ctx = get_mock_context() ctx, source, event_source = extract_dd_trace_context( @@ -195,10 +222,8 @@ def test_with_complete_datadog_trace_headers(self): lambda_ctx, ) self.assertEqual(source, "event") - self.assertDictEqual( - ctx, - {"trace-id": "123", "parent-id": "321", "sampling-priority": "1"}, - ) + expected_context = Context(trace_id=123, span_id=321, sampling_priority=1) + self.assertEqual(ctx, expected_context) self.assertDictEqual( get_dd_trace_context(), { @@ -211,9 +236,48 @@ def test_with_complete_datadog_trace_headers(self): self.mock_send_segment.assert_called() self.mock_send_segment.assert_called_with( XraySubsegment.TRACE_KEY, - {"trace-id": "123", "parent-id": "321", "sampling-priority": "1"}, + expected_context, + ) + + @with_trace_propagation_style("tracecontext") + def test_with_w3c_trace_headers(self): + lambda_ctx = get_mock_context() + ctx, source, event_source = extract_dd_trace_context( + { + "headers": { + "traceparent": "00-0000000000000000000000000000007b-0000000000000141-01", + "tracestate": "dd=s:2;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", + } + }, + lambda_ctx, + ) + self.assertEqual(source, "event") + expected_context = Context( + trace_id=123, + span_id=321, + sampling_priority=2, + meta={ + "traceparent": "00-0000000000000000000000000000007b-0000000000000141-01", + "tracestate": "dd=s:2;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", + "_dd.p.dm": "-0", + }, + ) + self.assertEqual(ctx, expected_context) + self.assertDictEqual( + get_dd_trace_context(), + { + "traceparent": "00-0000000000000000000000000000007b-94ae789b969f1cc5-01", + "tracestate": "dd=s:2;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", + }, + ) + create_dd_dummy_metadata_subsegment(ctx, XraySubsegment.TRACE_KEY) + self.mock_send_segment.assert_called() + self.mock_send_segment.assert_called_with( + XraySubsegment.TRACE_KEY, + expected_context, ) + @with_trace_propagation_style("datadog") def test_with_extractor_function(self): def extractor_foo(event, context): foo = event.get("foo", {}) @@ -237,13 +301,13 @@ def extractor_foo(event, context): extractor=extractor_foo, ) self.assertEqual(ctx_source, "event") - self.assertDictEqual( + self.assertEqual( ctx, - { - "trace-id": "123", - "parent-id": "321", - "sampling-priority": "1", - }, + Context( + trace_id=123, + span_id=321, + sampling_priority=1, + ), ) self.assertDictEqual( get_dd_trace_context(), @@ -254,6 +318,7 @@ def extractor_foo(event, context): }, ) + @with_trace_propagation_style("datadog") def test_graceful_fail_of_extractor_function(self): def extractor_raiser(event, context): raise Exception("kreator") @@ -271,13 +336,13 @@ def extractor_raiser(event, context): extractor=extractor_raiser, ) self.assertEqual(ctx_source, "xray") - self.assertDictEqual( + self.assertEqual( ctx, - { - "trace-id": fake_xray_header_value_root_decimal, - "parent-id": fake_xray_header_value_parent_decimal, - "sampling-priority": "2", - }, + Context( + trace_id=int(fake_xray_header_value_root_decimal), + span_id=int(fake_xray_header_value_parent_decimal), + sampling_priority=2, + ), ) self.assertDictEqual( get_dd_trace_context(), @@ -288,6 +353,7 @@ def extractor_raiser(event, context): }, ) + @with_trace_propagation_style("datadog") def test_with_sqs_distributed_datadog_trace_data(self): lambda_ctx = get_mock_context() sqs_event = { @@ -323,14 +389,12 @@ def test_with_sqs_distributed_datadog_trace_data(self): } ctx, source, event_source = extract_dd_trace_context(sqs_event, lambda_ctx) self.assertEqual(source, "event") - self.assertDictEqual( - ctx, - { - "trace-id": "123", - "parent-id": "321", - "sampling-priority": "1", - }, + expected_context = Context( + trace_id=123, + span_id=321, + sampling_priority=1, ) + self.assertEqual(ctx, expected_context) self.assertDictEqual( get_dd_trace_context(), { @@ -342,9 +406,69 @@ def test_with_sqs_distributed_datadog_trace_data(self): create_dd_dummy_metadata_subsegment(ctx, XraySubsegment.TRACE_KEY) self.mock_send_segment.assert_called_with( XraySubsegment.TRACE_KEY, - {"trace-id": "123", "parent-id": "321", "sampling-priority": "1"}, + expected_context, + ) + + @with_trace_propagation_style("tracecontext") + def test_with_sqs_distributed_w3c_trace_data(self): + lambda_ctx = get_mock_context() + sqs_event = { + "Records": [ + { + "messageId": "059f36b4-87a3-44ab-83d2-661975830a7d", + "receiptHandle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", + "body": "Test message.", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "1545082649183", + "SenderId": "AIDAIENQZJOLO23YVJ4VO", + "ApproximateFirstReceiveTimestamp": "1545082649185", + }, + "messageAttributes": { + "_datadog": { + "stringValue": json.dumps( + { + "traceparent": "00-0000000000000000000000000000007b-0000000000000141-01", + "tracestate": "dd=s:2;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", + } + ), + "dataType": "String", + } + }, + "md5OfBody": "e4e68fb7bd0e697a0ae8f1bb342846b3", + "eventSource": "aws:sqs", + "eventSourceARN": "arn:aws:sqs:us-east-2:123456789012:my-queue", + "awsRegion": "us-east-2", + } + ] + } + ctx, source, event_source = extract_dd_trace_context(sqs_event, lambda_ctx) + self.assertEqual(source, "event") + expected_context = Context( + trace_id=123, + span_id=321, + sampling_priority=2, + meta={ + "traceparent": "00-0000000000000000000000000000007b-0000000000000141-01", + "tracestate": "dd=s:2;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", + "_dd.p.dm": "-0", + }, + ) + self.assertEqual(ctx, expected_context) + self.assertDictEqual( + get_dd_trace_context(), + { + "traceparent": "00-0000000000000000000000000000007b-94ae789b969f1cc5-01", + "tracestate": "dd=s:2;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", + }, + ) + create_dd_dummy_metadata_subsegment(ctx, XraySubsegment.TRACE_KEY) + self.mock_send_segment.assert_called_with( + XraySubsegment.TRACE_KEY, + expected_context, ) + @with_trace_propagation_style("datadog") def test_with_legacy_client_context_datadog_trace_data(self): lambda_ctx = get_mock_context( custom={ @@ -357,14 +481,12 @@ def test_with_legacy_client_context_datadog_trace_data(self): ) ctx, source, event_source = extract_dd_trace_context({}, lambda_ctx) self.assertEqual(source, "event") - self.assertDictEqual( - ctx, - { - "trace-id": "666", - "parent-id": "777", - "sampling-priority": "1", - }, + expected_context = Context( + trace_id=666, + span_id=777, + sampling_priority=1, ) + self.assertEqual(ctx, expected_context) self.assertDictEqual( get_dd_trace_context(), { @@ -377,9 +499,47 @@ def test_with_legacy_client_context_datadog_trace_data(self): self.mock_send_segment.assert_called() self.mock_send_segment.assert_called_with( XraySubsegment.TRACE_KEY, - {"trace-id": "666", "parent-id": "777", "sampling-priority": "1"}, + expected_context, + ) + + @with_trace_propagation_style("tracecontext") + def test_with_legacy_client_context_w3c_trace_data(self): + lambda_ctx = get_mock_context( + custom={ + "_datadog": { + "traceparent": "00-0000000000000000000000000000029a-0000000000000309-01", + "tracestate": "dd=s:1;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", + } + } + ) + ctx, source, event_source = extract_dd_trace_context({}, lambda_ctx) + self.assertEqual(source, "event") + expected_context = Context( + trace_id=666, + span_id=777, + sampling_priority=1, + meta={ + "traceparent": "00-0000000000000000000000000000029a-0000000000000309-01", + "tracestate": "dd=s:1;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", + "_dd.p.dm": "-0", + }, + ) + self.assertEqual(ctx, expected_context) + self.assertDictEqual( + get_dd_trace_context(), + { + "traceparent": "00-0000000000000000000000000000029a-94ae789b969f1cc5-01", + "tracestate": "dd=s:1;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", + }, + ) + create_dd_dummy_metadata_subsegment(ctx, XraySubsegment.TRACE_KEY) + self.mock_send_segment.assert_called() + self.mock_send_segment.assert_called_with( + XraySubsegment.TRACE_KEY, + expected_context, ) + @with_trace_propagation_style("datadog") def test_with_new_client_context_datadog_trace_data(self): lambda_ctx = get_mock_context( custom={ @@ -390,14 +550,12 @@ def test_with_new_client_context_datadog_trace_data(self): ) ctx, source, event_source = extract_dd_trace_context({}, lambda_ctx) self.assertEqual(source, "event") - self.assertDictEqual( - ctx, - { - "trace-id": "666", - "parent-id": "777", - "sampling-priority": "1", - }, + expected_context = Context( + trace_id=666, + span_id=777, + sampling_priority=1, ) + self.assertEqual(ctx, expected_context) self.assertDictEqual( get_dd_trace_context(), { @@ -410,9 +568,45 @@ def test_with_new_client_context_datadog_trace_data(self): self.mock_send_segment.assert_called() self.mock_send_segment.assert_called_with( XraySubsegment.TRACE_KEY, - {"trace-id": "666", "parent-id": "777", "sampling-priority": "1"}, + expected_context, ) + @with_trace_propagation_style("tracecontext") + def test_with_new_client_context_w3c_trace_data(self): + lambda_ctx = get_mock_context( + custom={ + "traceparent": "00-0000000000000000000000000000029a-0000000000000309-01", + "tracestate": "dd=s:1;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", + } + ) + ctx, source, event_source = extract_dd_trace_context({}, lambda_ctx) + self.assertEqual(source, "event") + expected_context = Context( + trace_id=666, + span_id=777, + sampling_priority=1, + meta={ + "traceparent": "00-0000000000000000000000000000029a-0000000000000309-01", + "tracestate": "dd=s:1;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", + "_dd.p.dm": "-0", + }, + ) + self.assertEqual(ctx, expected_context) + self.assertDictEqual( + get_dd_trace_context(), + { + "traceparent": "00-0000000000000000000000000000029a-94ae789b969f1cc5-01", + "tracestate": "dd=s:1;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", + }, + ) + create_dd_dummy_metadata_subsegment(ctx, XraySubsegment.TRACE_KEY) + self.mock_send_segment.assert_called() + self.mock_send_segment.assert_called_with( + XraySubsegment.TRACE_KEY, + expected_context, + ) + + @with_trace_propagation_style("datadog") def test_with_complete_datadog_trace_headers_with_mixed_casing(self): lambda_ctx = get_mock_context() extract_dd_trace_context( @@ -455,51 +649,85 @@ def test_with_complete_datadog_trace_headers_with_trigger_tags(self): ] ) + @with_trace_propagation_style("datadog") + def test_step_function_trace_data(self): + lambda_ctx = get_mock_context() + sqs_event = { + "Execution": { + "Id": "665c417c-1237-4742-aaca-8b3becbb9e75", + }, + "StateMachine": {}, + "State": { + "Name": "my-awesome-state", + "EnteredTime": "Mon Nov 13 12:43:33 PST 2023", + }, + } + ctx, source, event_source = extract_dd_trace_context(sqs_event, lambda_ctx) + self.assertEqual(source, "event") + expected_context = Context( + trace_id=1074655265866231755, + span_id=4776286484851030060, + sampling_priority=1, + ) + self.assertEqual(ctx, expected_context) + self.assertEqual( + get_dd_trace_context(), + { + TraceHeader.TRACE_ID: "1074655265866231755", + TraceHeader.PARENT_ID: fake_xray_header_value_parent_decimal, + TraceHeader.SAMPLING_PRIORITY: "1", + }, + ) + create_dd_dummy_metadata_subsegment(ctx, XraySubsegment.TRACE_KEY) + self.mock_send_segment.assert_called_with( + XraySubsegment.TRACE_KEY, + expected_context, + ) + class TestXRayContextConversion(unittest.TestCase): def test_convert_xray_trace_id(self): self.assertEqual( - _convert_xray_trace_id("00000000e1be46a994272793"), "7043144561403045779" + _convert_xray_trace_id("00000000e1be46a994272793"), 7043144561403045779 ) self.assertEqual( - _convert_xray_trace_id("bd862e3fe1be46a994272793"), "7043144561403045779" + _convert_xray_trace_id("bd862e3fe1be46a994272793"), 7043144561403045779 ) self.assertEqual( _convert_xray_trace_id("ffffffffffffffffffffffff"), - "9223372036854775807", # 0x7FFFFFFFFFFFFFFF + 9223372036854775807, # 0x7FFFFFFFFFFFFFFF ) def test_convert_xray_entity_id(self): self.assertEqual( - _convert_xray_entity_id("53995c3f42cd8ad8"), "6023947403358210776" + _convert_xray_entity_id("53995c3f42cd8ad8"), 6023947403358210776 ) self.assertEqual( - _convert_xray_entity_id("1000000000000000"), "1152921504606846976" + _convert_xray_entity_id("1000000000000000"), 1152921504606846976 ) self.assertEqual( - _convert_xray_entity_id("ffffffffffffffff"), "18446744073709551615" + _convert_xray_entity_id("ffffffffffffffff"), 18446744073709551615 ) def test_convert_xray_sampling(self): - self.assertEqual(_convert_xray_sampling(True), str(SamplingPriority.USER_KEEP)) + self.assertEqual(_convert_xray_sampling(True), SamplingPriority.USER_KEEP) - self.assertEqual( - _convert_xray_sampling(False), str(SamplingPriority.USER_REJECT) - ) + self.assertEqual(_convert_xray_sampling(False), SamplingPriority.USER_REJECT) class TestLogsInjection(unittest.TestCase): def setUp(self): - patcher = patch("datadog_lambda.tracing.get_dd_trace_context") + patcher = patch("datadog_lambda.tracing.get_dd_trace_context_obj") self.mock_get_dd_trace_context = patcher.start() - self.mock_get_dd_trace_context.return_value = { - TraceHeader.TRACE_ID: "123", - TraceHeader.PARENT_ID: "456", - } + self.mock_get_dd_trace_context.return_value = Context( + trace_id=int(fake_xray_header_value_root_decimal), + span_id=int(fake_xray_header_value_parent_decimal), + sampling_priority=1, + ) self.addCleanup(patcher.stop) patcher = patch("datadog_lambda.tracing.is_lambda_context") @@ -510,13 +738,13 @@ def setUp(self): def test_set_correlation_ids(self): set_correlation_ids() span = tracer.current_span() - self.assertEqual(span.trace_id, 123) - self.assertEqual(span.span_id, 456) + self.assertEqual(span.trace_id, int(fake_xray_header_value_root_decimal)) + self.assertEqual(span.parent_id, int(fake_xray_header_value_parent_decimal)) span.finish() def test_set_correlation_ids_handle_empty_trace_context(self): # neither x-ray or ddtrace is used. no tracing context at all. - self.mock_get_dd_trace_context.return_value = {} + self.mock_get_dd_trace_context.return_value = Context() # no exception thrown set_correlation_ids() span = tracer.current_span() @@ -1829,10 +2057,10 @@ def test_extract_context_from_eventbridge_event(self): with open(test_file, "r") as event: event = json.load(event) ctx = get_mock_context() - trace, parent, sampling = extract_context_from_eventbridge_event(event, ctx) - self.assertEqual(trace, "12345") - self.assertEqual(parent, "67890"), - self.assertEqual(sampling, "2") + context, source, event_type = extract_dd_trace_context(event, ctx) + self.assertEqual(context.trace_id, 12345) + self.assertEqual(context.span_id, 67890), + self.assertEqual(context.sampling_priority, 2) def test_extract_dd_trace_context_for_eventbridge(self): event_sample_source = "eventbridge-custom" @@ -1841,8 +2069,8 @@ def test_extract_dd_trace_context_for_eventbridge(self): event = json.load(event) ctx = get_mock_context() context, source, event_type = extract_dd_trace_context(event, ctx) - self.assertEqual(context["trace-id"], "12345") - self.assertEqual(context["parent-id"], "67890") + self.assertEqual(context.trace_id, 12345) + self.assertEqual(context.span_id, 67890) def test_extract_context_from_eventbridge_sqs_event(self): event_sample_source = "eventbridge-sqs" @@ -1852,9 +2080,9 @@ def test_extract_context_from_eventbridge_sqs_event(self): ctx = get_mock_context() context, source, event_type = extract_dd_trace_context(event, ctx) - self.assertEqual(context["trace-id"], "7379586022458917877") - self.assertEqual(context["parent-id"], "2644033662113726488") - self.assertEqual(context["sampling-priority"], "1") + self.assertEqual(context.trace_id, 7379586022458917877) + self.assertEqual(context.span_id, 2644033662113726488) + self.assertEqual(context.sampling_priority, 1) def test_extract_context_from_sqs_event_with_string_msg_attr(self): event_sample_source = "sqs-string-msg-attribute" @@ -1863,9 +2091,9 @@ def test_extract_context_from_sqs_event_with_string_msg_attr(self): event = json.load(event) ctx = get_mock_context() context, source, event_type = extract_dd_trace_context(event, ctx) - self.assertEqual(context["trace-id"], "2684756524522091840") - self.assertEqual(context["parent-id"], "7431398482019833808") - self.assertEqual(context["sampling-priority"], "1") + self.assertEqual(context.trace_id, 2684756524522091840) + self.assertEqual(context.span_id, 7431398482019833808) + self.assertEqual(context.sampling_priority, 1) def test_extract_context_from_sqs_batch_event(self): event_sample_source = "sqs-batch" @@ -1874,9 +2102,9 @@ def test_extract_context_from_sqs_batch_event(self): event = json.load(event) ctx = get_mock_context() context, source, event_source = extract_dd_trace_context(event, ctx) - self.assertEqual(context["trace-id"], "2684756524522091840") - self.assertEqual(context["parent-id"], "7431398482019833808") - self.assertEqual(context["sampling-priority"], "1") + self.assertEqual(context.trace_id, 2684756524522091840) + self.assertEqual(context.span_id, 7431398482019833808) + self.assertEqual(context.sampling_priority, 1) def test_extract_context_from_sns_event_with_string_msg_attr(self): event_sample_source = "sns-string-msg-attribute" @@ -1885,9 +2113,9 @@ def test_extract_context_from_sns_event_with_string_msg_attr(self): event = json.load(event) ctx = get_mock_context() context, source, event_source = extract_dd_trace_context(event, ctx) - self.assertEqual(context["trace-id"], "4948377316357291421") - self.assertEqual(context["parent-id"], "6746998015037429512") - self.assertEqual(context["sampling-priority"], "1") + self.assertEqual(context.trace_id, 4948377316357291421) + self.assertEqual(context.span_id, 6746998015037429512) + self.assertEqual(context.sampling_priority, 1) def test_extract_context_from_sns_event_with_b64_msg_attr(self): event_sample_source = "sns-b64-msg-attribute" @@ -1896,9 +2124,9 @@ def test_extract_context_from_sns_event_with_b64_msg_attr(self): event = json.load(event) ctx = get_mock_context() context, source, event_source = extract_dd_trace_context(event, ctx) - self.assertEqual(context["trace-id"], "4948377316357291421") - self.assertEqual(context["parent-id"], "6746998015037429512") - self.assertEqual(context["sampling-priority"], "1") + self.assertEqual(context.trace_id, 4948377316357291421) + self.assertEqual(context.span_id, 6746998015037429512) + self.assertEqual(context.sampling_priority, 1) def test_extract_context_from_sns_batch_event(self): event_sample_source = "sns-batch" @@ -1907,9 +2135,9 @@ def test_extract_context_from_sns_batch_event(self): event = json.load(event) ctx = get_mock_context() context, source, event_source = extract_dd_trace_context(event, ctx) - self.assertEqual(context["trace-id"], "4948377316357291421") - self.assertEqual(context["parent-id"], "6746998015037429512") - self.assertEqual(context["sampling-priority"], "1") + self.assertEqual(context.trace_id, 4948377316357291421) + self.assertEqual(context.span_id, 6746998015037429512) + self.assertEqual(context.sampling_priority, 1) def test_extract_context_from_kinesis_event(self): event_sample_source = "kinesis" @@ -1918,9 +2146,9 @@ def test_extract_context_from_kinesis_event(self): event = json.load(event) ctx = get_mock_context() context, source, event_source = extract_dd_trace_context(event, ctx) - self.assertEqual(context["trace-id"], "4948377316357291421") - self.assertEqual(context["parent-id"], "2876253380018681026") - self.assertEqual(context["sampling-priority"], "1") + self.assertEqual(context.trace_id, 4948377316357291421) + self.assertEqual(context.span_id, 2876253380018681026) + self.assertEqual(context.sampling_priority, 1) def test_extract_context_from_kinesis_batch_event(self): event_sample_source = "kinesis-batch" @@ -1929,9 +2157,9 @@ def test_extract_context_from_kinesis_batch_event(self): event = json.load(event) ctx = get_mock_context() context, source, event_source = extract_dd_trace_context(event, ctx) - self.assertEqual(context["trace-id"], "4948377316357291421") - self.assertEqual(context["parent-id"], "2876253380018681026") - self.assertEqual(context["sampling-priority"], "1") + self.assertEqual(context.trace_id, 4948377316357291421) + self.assertEqual(context.span_id, 2876253380018681026) + self.assertEqual(context.sampling_priority, 1) def test_create_inferred_span_from_api_gateway_event_no_apiid(self): event_sample_source = "api-gateway-no-apiid" @@ -1998,14 +2226,14 @@ def test_no_error_with_nonetype_headers(self): class TestStepFunctionsTraceContext(unittest.TestCase): def test_deterministic_m5_hash(self): result = _deterministic_md5_hash("some_testing_random_string") - self.assertEqual("2251275791555400689", result) + self.assertEqual(2251275791555400689, result) def test_deterministic_m5_hash__result_the_same_as_backend(self): result = _deterministic_md5_hash( "arn:aws:states:sa-east-1:601427271234:express:DatadogStateMachine:acaf1a67-336a-e854-1599-2a627eb2dd8a" ":c8baf081-31f1-464d-971f-70cb17d01111#step-one#2022-12-08T21:08:19.224Z" ) - self.assertEqual("8034507082463708833", result) + self.assertEqual(8034507082463708833, result) def test_deterministic_m5_hash__always_leading_with_zero(self): for i in range(100): From 23ff7fcc9c9917b0406d133864f694998376ca78 Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Tue, 21 Nov 2023 12:57:21 -0500 Subject: [PATCH 054/268] feat: push layers in batches (#393) * feat: push layers in batches * feat: Check latest inside region loop to prevent early return on our backfill processes --- scripts/publish_layers.sh | 60 +++++++++++++++++++++++++++------------ 1 file changed, 42 insertions(+), 18 deletions(-) diff --git a/scripts/publish_layers.sh b/scripts/publish_layers.sh index d379cb67..bd8d3a7e 100755 --- a/scripts/publish_layers.sh +++ b/scripts/publish_layers.sh @@ -19,6 +19,12 @@ AVAILABLE_LAYERS=("Datadog-Python37" "Datadog-Python38" "Datadog-Python38-ARM" " ARCHS=("amd64" "amd64" "amd64""amd64" "amd64" "arm64" "amd64" "arm64" "amd64" "arm64") AVAILABLE_REGIONS=$(aws ec2 describe-regions | jq -r '.[] | .[] | .RegionName') +BATCH_SIZE=60 +PIDS=() + +# Makes sure any subprocesses will be terminated with this process +trap "pkill -P $$; exit 1;" INT + # Check that the layer files exist for layer_file in "${LAYER_PATHS[@]}" do @@ -102,6 +108,35 @@ publish_layer() { echo $version_nbr } +wait_for_processes() { + for pid in "${PIDS[@]}"; do + wait $pid + done + PIDS=() +} + +backfill_layers() { + latest_version=$1 + region=$2 + layer_name=$3 + aws_version_key=$4 + layer_path=$5 + + while [ $latest_version -lt $VERSION ]; do + latest_version=$(publish_layer $region $layer_name $aws_version_key $layer_path) + echo "Published version $latest_version for layer $layer_name in region $region" + + # This shouldn't happen unless someone manually deleted the latest version, say 28, and + # then tries to republish 28 again. The published version would actually be 29, because + # Lambda layers are immutable and AWS will skip deleted version and use the next number. + if [ $latest_version -gt $VERSION ]; then + echo "ERROR: Published version $latest_version is greater than the desired version $VERSION!" + echo "Exiting" + exit 1 + fi + done +} + for region in $REGIONS do echo "Starting publishing layer for region $region..." @@ -112,31 +147,20 @@ do echo "Layer $layer_name version $VERSION already exists in region $region, skipping..." continue elif [ $latest_version -lt $((VERSION-1)) ]; then - read -p "WARNING: The latest version of layer $layer_name in region $region is $latest_version, publish all the missing versions including $VERSION or EXIT the script (y/n)?" CONT - if [ "$CONT" != "y" ]; then - echo "Exiting" - exit 1 - fi + echo "WARNING: The latest version of layer $layer_name in region $region is $latest_version, this will publish all the missing versions including $VERSION" fi index=$(index_of_layer $layer_name) aws_version_key="${PYTHON_VERSIONS_FOR_AWS_CLI[$index]}" layer_path="${LAYER_PATHS[$index]}" - while [ $latest_version -lt $VERSION ]; do - latest_version=$(publish_layer $region $layer_name $aws_version_key $layer_path) - echo "Published version $latest_version for layer $layer_name in region $region" - - # This shouldn't happen unless someone manually deleted the latest version, say 28 - # and then try to republish it again. The published version is actually be 29, because - # Lambda layers are immutable and AWS will skip deleted version and use the next number. - if [ $latest_version -gt $VERSION ]; then - echo "ERROR: Published version $latest_version is greater than the desired version $VERSION!" - echo "Exiting" - exit 1 - fi - done + backfill_layers $latest_version $region $layer_name $aws_version_key $layer_path & + PIDS+=($!) + if [ ${#PIDS[@]} -ge $BATCH_SIZE ]; then + wait_for_processes + fi done done +wait_for_processes echo "Done !" From 7334375d296643f30502f53b76bb743dc7a6e2b5 Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Tue, 21 Nov 2023 12:58:06 -0500 Subject: [PATCH 055/268] feat(breaking): ddtrace 2.3 (#394) * feat(breaking): ddtrace 2.3 * feat: Fix ints --- poetry.lock | 521 +++++++++--------- pyproject.toml | 2 +- scripts/run_integration_tests.sh | 3 + .../logs/async-metrics_python310.log | 54 +- .../logs/async-metrics_python311.log | 54 +- .../snapshots/logs/async-metrics_python37.log | 54 +- .../snapshots/logs/async-metrics_python38.log | 56 +- .../snapshots/logs/async-metrics_python39.log | 54 +- .../snapshots/logs/sync-metrics_python310.log | 81 ++- .../snapshots/logs/sync-metrics_python311.log | 81 ++- .../snapshots/logs/sync-metrics_python37.log | 83 ++- .../snapshots/logs/sync-metrics_python38.log | 83 ++- .../snapshots/logs/sync-metrics_python39.log | 83 ++- 13 files changed, 720 insertions(+), 489 deletions(-) diff --git a/poetry.lock b/poetry.lock index ff63c621..da1c0433 100644 --- a/poetry.lock +++ b/poetry.lock @@ -23,17 +23,17 @@ tests-no-zope = ["cloudpickle", "hypothesis", "mypy (>=1.1.1)", "pympler", "pyte [[package]] name = "boto3" -version = "1.28.65" +version = "1.29.4" description = "The AWS SDK for Python" optional = true python-versions = ">= 3.7" files = [ - {file = "boto3-1.28.65-py3-none-any.whl", hash = "sha256:ff3d0116e0ca6c096547652390025780eace3a28f6c04c9ffbf38448f1e5a87b"}, - {file = "boto3-1.28.65.tar.gz", hash = "sha256:9d52a1605657aeb5b19b09cfc01d9a92f88a616a5daf5479a59656d6341ea6b3"}, + {file = "boto3-1.29.4-py3-none-any.whl", hash = "sha256:d1135647309b89376a014d21407aabfa322998206175f2297def812bf4d824a9"}, + {file = "boto3-1.29.4.tar.gz", hash = "sha256:ca9b04fc2c75990c2be84c43b9d6edecce828960fc27e07ab29036587a1ca635"}, ] [package.dependencies] -botocore = ">=1.31.65,<1.32.0" +botocore = ">=1.32.4,<1.33.0" jmespath = ">=0.7.1,<2.0.0" s3transfer = ">=0.7.0,<0.8.0" @@ -42,13 +42,13 @@ crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] [[package]] name = "botocore" -version = "1.31.65" +version = "1.32.4" description = "Low-level, data-driven core of boto 3." optional = true python-versions = ">= 3.7" files = [ - {file = "botocore-1.31.65-py3-none-any.whl", hash = "sha256:f74e3da98dfcec17bc63ef58f82c643bf5bd7ec6cc11a26ede21cc4cd064917f"}, - {file = "botocore-1.31.65.tar.gz", hash = "sha256:90716c6f1af97e5c2f516e9a3379767ebdddcc6cbed79b026fa5038ce4e5e43e"}, + {file = "botocore-1.32.4-py3-none-any.whl", hash = "sha256:3ee73c0d93bdb944d0c46772f08f09cdcf25ef58bd86962e6f4a24e531198bfa"}, + {file = "botocore-1.32.4.tar.gz", hash = "sha256:6bfa75e28c9ad0321cefefa51b00ff233b16b2416f8b95229796263edba45a39"}, ] [package.dependencies] @@ -60,7 +60,7 @@ urllib3 = [ ] [package.extras] -crt = ["awscrt (==0.16.26)"] +crt = ["awscrt (==0.19.12)"] [[package]] name = "bytecode" @@ -114,112 +114,112 @@ ujson = ["ujson (>=5.4.0,<6.0.0)"] [[package]] name = "certifi" -version = "2023.7.22" +version = "2023.11.17" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2023.7.22-py3-none-any.whl", hash = "sha256:92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9"}, - {file = "certifi-2023.7.22.tar.gz", hash = "sha256:539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082"}, + {file = "certifi-2023.11.17-py3-none-any.whl", hash = "sha256:e036ab49d5b79556f99cfc2d9320b34cfbe5be05c5871b51de9329f0603b0474"}, + {file = "certifi-2023.11.17.tar.gz", hash = "sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1"}, ] [[package]] name = "charset-normalizer" -version = "3.3.0" +version = "3.3.2" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." optional = false python-versions = ">=3.7.0" files = [ - {file = "charset-normalizer-3.3.0.tar.gz", hash = "sha256:63563193aec44bce707e0c5ca64ff69fa72ed7cf34ce6e11d5127555756fd2f6"}, - {file = "charset_normalizer-3.3.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:effe5406c9bd748a871dbcaf3ac69167c38d72db8c9baf3ff954c344f31c4cbe"}, - {file = "charset_normalizer-3.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4162918ef3098851fcd8a628bf9b6a98d10c380725df9e04caf5ca6dd48c847a"}, - {file = "charset_normalizer-3.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0570d21da019941634a531444364f2482e8db0b3425fcd5ac0c36565a64142c8"}, - {file = "charset_normalizer-3.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5707a746c6083a3a74b46b3a631d78d129edab06195a92a8ece755aac25a3f3d"}, - {file = "charset_normalizer-3.3.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:278c296c6f96fa686d74eb449ea1697f3c03dc28b75f873b65b5201806346a69"}, - {file = "charset_normalizer-3.3.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a4b71f4d1765639372a3b32d2638197f5cd5221b19531f9245fcc9ee62d38f56"}, - {file = "charset_normalizer-3.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5969baeaea61c97efa706b9b107dcba02784b1601c74ac84f2a532ea079403e"}, - {file = "charset_normalizer-3.3.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a3f93dab657839dfa61025056606600a11d0b696d79386f974e459a3fbc568ec"}, - {file = "charset_normalizer-3.3.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:db756e48f9c5c607b5e33dd36b1d5872d0422e960145b08ab0ec7fd420e9d649"}, - {file = "charset_normalizer-3.3.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:232ac332403e37e4a03d209a3f92ed9071f7d3dbda70e2a5e9cff1c4ba9f0678"}, - {file = "charset_normalizer-3.3.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:e5c1502d4ace69a179305abb3f0bb6141cbe4714bc9b31d427329a95acfc8bdd"}, - {file = "charset_normalizer-3.3.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:2502dd2a736c879c0f0d3e2161e74d9907231e25d35794584b1ca5284e43f596"}, - {file = "charset_normalizer-3.3.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23e8565ab7ff33218530bc817922fae827420f143479b753104ab801145b1d5b"}, - {file = "charset_normalizer-3.3.0-cp310-cp310-win32.whl", hash = "sha256:1872d01ac8c618a8da634e232f24793883d6e456a66593135aeafe3784b0848d"}, - {file = "charset_normalizer-3.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:557b21a44ceac6c6b9773bc65aa1b4cc3e248a5ad2f5b914b91579a32e22204d"}, - {file = "charset_normalizer-3.3.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:d7eff0f27edc5afa9e405f7165f85a6d782d308f3b6b9d96016c010597958e63"}, - {file = "charset_normalizer-3.3.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6a685067d05e46641d5d1623d7c7fdf15a357546cbb2f71b0ebde91b175ffc3e"}, - {file = "charset_normalizer-3.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0d3d5b7db9ed8a2b11a774db2bbea7ba1884430a205dbd54a32d61d7c2a190fa"}, - {file = "charset_normalizer-3.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2935ffc78db9645cb2086c2f8f4cfd23d9b73cc0dc80334bc30aac6f03f68f8c"}, - {file = "charset_normalizer-3.3.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9fe359b2e3a7729010060fbca442ca225280c16e923b37db0e955ac2a2b72a05"}, - {file = "charset_normalizer-3.3.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:380c4bde80bce25c6e4f77b19386f5ec9db230df9f2f2ac1e5ad7af2caa70459"}, - {file = "charset_normalizer-3.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0d1e3732768fecb052d90d62b220af62ead5748ac51ef61e7b32c266cac9293"}, - {file = "charset_normalizer-3.3.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1b2919306936ac6efb3aed1fbf81039f7087ddadb3160882a57ee2ff74fd2382"}, - {file = "charset_normalizer-3.3.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:f8888e31e3a85943743f8fc15e71536bda1c81d5aa36d014a3c0c44481d7db6e"}, - {file = "charset_normalizer-3.3.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:82eb849f085624f6a607538ee7b83a6d8126df6d2f7d3b319cb837b289123078"}, - {file = "charset_normalizer-3.3.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:7b8b8bf1189b3ba9b8de5c8db4d541b406611a71a955bbbd7385bbc45fcb786c"}, - {file = "charset_normalizer-3.3.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:5adf257bd58c1b8632046bbe43ee38c04e1038e9d37de9c57a94d6bd6ce5da34"}, - {file = "charset_normalizer-3.3.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c350354efb159b8767a6244c166f66e67506e06c8924ed74669b2c70bc8735b1"}, - {file = "charset_normalizer-3.3.0-cp311-cp311-win32.whl", hash = "sha256:02af06682e3590ab952599fbadac535ede5d60d78848e555aa58d0c0abbde786"}, - {file = "charset_normalizer-3.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:86d1f65ac145e2c9ed71d8ffb1905e9bba3a91ae29ba55b4c46ae6fc31d7c0d4"}, - {file = "charset_normalizer-3.3.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:3b447982ad46348c02cb90d230b75ac34e9886273df3a93eec0539308a6296d7"}, - {file = "charset_normalizer-3.3.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:abf0d9f45ea5fb95051c8bfe43cb40cda383772f7e5023a83cc481ca2604d74e"}, - {file = "charset_normalizer-3.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b09719a17a2301178fac4470d54b1680b18a5048b481cb8890e1ef820cb80455"}, - {file = "charset_normalizer-3.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b3d9b48ee6e3967b7901c052b670c7dda6deb812c309439adaffdec55c6d7b78"}, - {file = "charset_normalizer-3.3.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:edfe077ab09442d4ef3c52cb1f9dab89bff02f4524afc0acf2d46be17dc479f5"}, - {file = "charset_normalizer-3.3.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3debd1150027933210c2fc321527c2299118aa929c2f5a0a80ab6953e3bd1908"}, - {file = "charset_normalizer-3.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:86f63face3a527284f7bb8a9d4f78988e3c06823f7bea2bd6f0e0e9298ca0403"}, - {file = "charset_normalizer-3.3.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:24817cb02cbef7cd499f7c9a2735286b4782bd47a5b3516a0e84c50eab44b98e"}, - {file = "charset_normalizer-3.3.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:c71f16da1ed8949774ef79f4a0260d28b83b3a50c6576f8f4f0288d109777989"}, - {file = "charset_normalizer-3.3.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:9cf3126b85822c4e53aa28c7ec9869b924d6fcfb76e77a45c44b83d91afd74f9"}, - {file = "charset_normalizer-3.3.0-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:b3b2316b25644b23b54a6f6401074cebcecd1244c0b8e80111c9a3f1c8e83d65"}, - {file = "charset_normalizer-3.3.0-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:03680bb39035fbcffe828eae9c3f8afc0428c91d38e7d61aa992ef7a59fb120e"}, - {file = "charset_normalizer-3.3.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4cc152c5dd831641e995764f9f0b6589519f6f5123258ccaca8c6d34572fefa8"}, - {file = "charset_normalizer-3.3.0-cp312-cp312-win32.whl", hash = "sha256:b8f3307af845803fb0b060ab76cf6dd3a13adc15b6b451f54281d25911eb92df"}, - {file = "charset_normalizer-3.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:8eaf82f0eccd1505cf39a45a6bd0a8cf1c70dcfc30dba338207a969d91b965c0"}, - {file = "charset_normalizer-3.3.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:dc45229747b67ffc441b3de2f3ae5e62877a282ea828a5bdb67883c4ee4a8810"}, - {file = "charset_normalizer-3.3.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f4a0033ce9a76e391542c182f0d48d084855b5fcba5010f707c8e8c34663d77"}, - {file = "charset_normalizer-3.3.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ada214c6fa40f8d800e575de6b91a40d0548139e5dc457d2ebb61470abf50186"}, - {file = "charset_normalizer-3.3.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b1121de0e9d6e6ca08289583d7491e7fcb18a439305b34a30b20d8215922d43c"}, - {file = "charset_normalizer-3.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1063da2c85b95f2d1a430f1c33b55c9c17ffaf5e612e10aeaad641c55a9e2b9d"}, - {file = "charset_normalizer-3.3.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:70f1d09c0d7748b73290b29219e854b3207aea922f839437870d8cc2168e31cc"}, - {file = "charset_normalizer-3.3.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:250c9eb0f4600361dd80d46112213dff2286231d92d3e52af1e5a6083d10cad9"}, - {file = "charset_normalizer-3.3.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:750b446b2ffce1739e8578576092179160f6d26bd5e23eb1789c4d64d5af7dc7"}, - {file = "charset_normalizer-3.3.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:fc52b79d83a3fe3a360902d3f5d79073a993597d48114c29485e9431092905d8"}, - {file = "charset_normalizer-3.3.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:588245972aca710b5b68802c8cad9edaa98589b1b42ad2b53accd6910dad3545"}, - {file = "charset_normalizer-3.3.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e39c7eb31e3f5b1f88caff88bcff1b7f8334975b46f6ac6e9fc725d829bc35d4"}, - {file = "charset_normalizer-3.3.0-cp37-cp37m-win32.whl", hash = "sha256:abecce40dfebbfa6abf8e324e1860092eeca6f7375c8c4e655a8afb61af58f2c"}, - {file = "charset_normalizer-3.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:24a91a981f185721542a0b7c92e9054b7ab4fea0508a795846bc5b0abf8118d4"}, - {file = "charset_normalizer-3.3.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:67b8cc9574bb518ec76dc8e705d4c39ae78bb96237cb533edac149352c1f39fe"}, - {file = "charset_normalizer-3.3.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ac71b2977fb90c35d41c9453116e283fac47bb9096ad917b8819ca8b943abecd"}, - {file = "charset_normalizer-3.3.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:3ae38d325b512f63f8da31f826e6cb6c367336f95e418137286ba362925c877e"}, - {file = "charset_normalizer-3.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:542da1178c1c6af8873e143910e2269add130a299c9106eef2594e15dae5e482"}, - {file = "charset_normalizer-3.3.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:30a85aed0b864ac88309b7d94be09f6046c834ef60762a8833b660139cfbad13"}, - {file = "charset_normalizer-3.3.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aae32c93e0f64469f74ccc730a7cb21c7610af3a775157e50bbd38f816536b38"}, - {file = "charset_normalizer-3.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15b26ddf78d57f1d143bdf32e820fd8935d36abe8a25eb9ec0b5a71c82eb3895"}, - {file = "charset_normalizer-3.3.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7f5d10bae5d78e4551b7be7a9b29643a95aded9d0f602aa2ba584f0388e7a557"}, - {file = "charset_normalizer-3.3.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:249c6470a2b60935bafd1d1d13cd613f8cd8388d53461c67397ee6a0f5dce741"}, - {file = "charset_normalizer-3.3.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:c5a74c359b2d47d26cdbbc7845e9662d6b08a1e915eb015d044729e92e7050b7"}, - {file = "charset_normalizer-3.3.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:b5bcf60a228acae568e9911f410f9d9e0d43197d030ae5799e20dca8df588287"}, - {file = "charset_normalizer-3.3.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:187d18082694a29005ba2944c882344b6748d5be69e3a89bf3cc9d878e548d5a"}, - {file = "charset_normalizer-3.3.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:81bf654678e575403736b85ba3a7867e31c2c30a69bc57fe88e3ace52fb17b89"}, - {file = "charset_normalizer-3.3.0-cp38-cp38-win32.whl", hash = "sha256:85a32721ddde63c9df9ebb0d2045b9691d9750cb139c161c80e500d210f5e26e"}, - {file = "charset_normalizer-3.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:468d2a840567b13a590e67dd276c570f8de00ed767ecc611994c301d0f8c014f"}, - {file = "charset_normalizer-3.3.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e0fc42822278451bc13a2e8626cf2218ba570f27856b536e00cfa53099724828"}, - {file = "charset_normalizer-3.3.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:09c77f964f351a7369cc343911e0df63e762e42bac24cd7d18525961c81754f4"}, - {file = "charset_normalizer-3.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:12ebea541c44fdc88ccb794a13fe861cc5e35d64ed689513a5c03d05b53b7c82"}, - {file = "charset_normalizer-3.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:805dfea4ca10411a5296bcc75638017215a93ffb584c9e344731eef0dcfb026a"}, - {file = "charset_normalizer-3.3.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:96c2b49eb6a72c0e4991d62406e365d87067ca14c1a729a870d22354e6f68115"}, - {file = "charset_normalizer-3.3.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aaf7b34c5bc56b38c931a54f7952f1ff0ae77a2e82496583b247f7c969eb1479"}, - {file = "charset_normalizer-3.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:619d1c96099be5823db34fe89e2582b336b5b074a7f47f819d6b3a57ff7bdb86"}, - {file = "charset_normalizer-3.3.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a0ac5e7015a5920cfce654c06618ec40c33e12801711da6b4258af59a8eff00a"}, - {file = "charset_normalizer-3.3.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:93aa7eef6ee71c629b51ef873991d6911b906d7312c6e8e99790c0f33c576f89"}, - {file = "charset_normalizer-3.3.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7966951325782121e67c81299a031f4c115615e68046f79b85856b86ebffc4cd"}, - {file = "charset_normalizer-3.3.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:02673e456dc5ab13659f85196c534dc596d4ef260e4d86e856c3b2773ce09843"}, - {file = "charset_normalizer-3.3.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:c2af80fb58f0f24b3f3adcb9148e6203fa67dd3f61c4af146ecad033024dde43"}, - {file = "charset_normalizer-3.3.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:153e7b6e724761741e0974fc4dcd406d35ba70b92bfe3fedcb497226c93b9da7"}, - {file = "charset_normalizer-3.3.0-cp39-cp39-win32.whl", hash = "sha256:d47ecf253780c90ee181d4d871cd655a789da937454045b17b5798da9393901a"}, - {file = "charset_normalizer-3.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:d97d85fa63f315a8bdaba2af9a6a686e0eceab77b3089af45133252618e70884"}, - {file = "charset_normalizer-3.3.0-py3-none-any.whl", hash = "sha256:e46cd37076971c1040fc8c41273a8b3e2c624ce4f2be3f5dfcb7a430c1d3acc2"}, + {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"}, + {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, ] [[package]] @@ -325,94 +325,86 @@ six = "*" [[package]] name = "ddtrace" -version = "1.20.5" +version = "2.3.0" description = "Datadog APM client library" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -files = [ - {file = "ddtrace-1.20.5-cp27-cp27m-macosx_11_0_x86_64.whl", hash = "sha256:8e848f4d4efd02f887633aa6eca284a820e42b316ebbbd9ed25599f777e8090f"}, - {file = "ddtrace-1.20.5-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:3aff8d055aa57de51a814dc86aaee5602b5ea665e7502d60b8467b07fb5018d2"}, - {file = "ddtrace-1.20.5-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:ec89b97c50b2ccc27ecef9d9d084a412f174002d665140a5710928909a2d592e"}, - {file = "ddtrace-1.20.5-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:8216d010c7206544de46053638ec5a9ed1ac3a56908621a958aaa390d8cffb27"}, - {file = "ddtrace-1.20.5-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:3c16686ed141dc847ed8cd09528649cccd833d896b2d5878f8ee370f15de6de6"}, - {file = "ddtrace-1.20.5-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:834e49122cf1e75c299c0ac54886de7b776f4f292c2679d88c1ea31e866d8514"}, - {file = "ddtrace-1.20.5-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:4f28220ce9cbdd58d02a9851d41b7c2424270ffe3a08fd042299ffc3d92c96f5"}, - {file = "ddtrace-1.20.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7228037265efbd74656e65f8d3f17ea28854c280aa86db1a7adaf642d9ffaa63"}, - {file = "ddtrace-1.20.5-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1f01a2a06974716fb516063369ab973fad38ffb33ca5ca15b3b7b128c06a2490"}, - {file = "ddtrace-1.20.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:be2570b7348eb9b561fe148997af3c11a50904870503a3fe7c2b6348e87dac7f"}, - {file = "ddtrace-1.20.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:6ca5b6ef30a300518e535a8291c9008d68fc1cde8fc4ed476af1b3c9377ab675"}, - {file = "ddtrace-1.20.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:ecd7e3a15e73c1f86cdb6e4c7874e99023f412ba9f63e1b342ecd593313fad2f"}, - {file = "ddtrace-1.20.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:86a052d8fe5cb380702bc4ee49857c2f12b019c7a3f4c78f8b2dfd43c72668ca"}, - {file = "ddtrace-1.20.5-cp310-cp310-win32.whl", hash = "sha256:3fd4d252224a74ff72b27b8371a2ac9500dc0ba08d3e009c3052ea63ad514824"}, - {file = "ddtrace-1.20.5-cp310-cp310-win_amd64.whl", hash = "sha256:90a641673b29521ec73ce572896011653cd222152b92ec744b6f162b4ccdb27f"}, - {file = "ddtrace-1.20.5-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:345c7a2910309547fa9b53d4386912a4cbd9c24c0a9f0b771404c7c2b82f8764"}, - {file = "ddtrace-1.20.5-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:07f97e1d94e3fe3f79d9656baa7283441c5d155adb2a0ca5d2defbdfbb12a28c"}, - {file = "ddtrace-1.20.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6e3718c0804cdd2def4b80f9bd51c55b2f44dca914086f647a21356980022668"}, - {file = "ddtrace-1.20.5-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b0acd401c52bf617474c4cac8bca0aa8cf6253d82b31c4e892b30294b397f10d"}, - {file = "ddtrace-1.20.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b36954f49c82e9e2e42615a5b70ba04dfd12d71011f4c9931effb6957c63fbd"}, - {file = "ddtrace-1.20.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:51523c55618a6b26ecdaab1c4540e3679e96723d0f883e1df7ffaa5010231cb2"}, - {file = "ddtrace-1.20.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:61d538c2c6e7a460cbdc19735093c993a62abc3381def43d5940a8facc4a280f"}, - {file = "ddtrace-1.20.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:59635b9fef2e02fefd46876f93e63eaa857503eb64aced6bcffaa81a199cfa4e"}, - {file = "ddtrace-1.20.5-cp311-cp311-win32.whl", hash = "sha256:7c4b6b121ec72736c9004c83d40d4d64155b935fb1c033390370de78af001fdb"}, - {file = "ddtrace-1.20.5-cp311-cp311-win_amd64.whl", hash = "sha256:cdaff774e88feb6d0229609ecdbaecbf50a220428bb29f863734b167d910a658"}, - {file = "ddtrace-1.20.5-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:ec41eff870ceba145306daab76f003a6977986dd65074b9a74f50cd0a985e431"}, - {file = "ddtrace-1.20.5-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:89dfaf4133ad8dcb6c63db843624e10175e9813a1f867e24d1c2a8e724088119"}, - {file = "ddtrace-1.20.5-cp35-cp35m-manylinux2014_aarch64.whl", hash = "sha256:7b625af8eb772bc242b850a011ba9294721f85d3f965cecdcc430fb73da1a11a"}, - {file = "ddtrace-1.20.5-cp35-cp35m-win32.whl", hash = "sha256:8cd282d38a394417e65b360ff9fb1d982bb3270ab18239f3ad3c70a1ec9cb9a3"}, - {file = "ddtrace-1.20.5-cp35-cp35m-win_amd64.whl", hash = "sha256:2d1086c5178be1763af7f30a18dd5bf6b77de855bbaa1c6c1d10e98fa7ad0931"}, - {file = "ddtrace-1.20.5-cp36-cp36m-macosx_11_0_x86_64.whl", hash = "sha256:af4eac36813863e08cb71f72f86e9c5a060841ce66acdf2a090d831bf6886895"}, - {file = "ddtrace-1.20.5-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7a2a15a3672331ffbdf32f8b8a387979b070510fbc2bc90e2c33c4669cd846bc"}, - {file = "ddtrace-1.20.5-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7c9f8071a9b4ea0be1fe62e39a68e95592742c56e336fbd0e4e99d18c39eca27"}, - {file = "ddtrace-1.20.5-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa49ab583816163b4cc133da234c5c2bc75d37cf459004c8319dc4026ac96c9b"}, - {file = "ddtrace-1.20.5-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:a37cc5871b0dc6a18f19228280927d6b22d04fb30522eebcc48371481e447709"}, - {file = "ddtrace-1.20.5-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:e1f4ad4eab735f092d9a23b80d9ffd7d33f7bb8fecba001f222155a7dc03d6ed"}, - {file = "ddtrace-1.20.5-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:253c75018b412a6f90c26ddfd2f265fc950751dbf76cd8529f8537b4fa4c031d"}, - {file = "ddtrace-1.20.5-cp36-cp36m-win32.whl", hash = "sha256:a61ec2a2874ab9f7228b3cf430a7048803a1ce2db22fde021c1f61ed38a1e5b4"}, - {file = "ddtrace-1.20.5-cp36-cp36m-win_amd64.whl", hash = "sha256:2c6ff4e1118d4530b80fbf9432414e0fad38ef33bc64e39a00648b396c4c44a7"}, - {file = "ddtrace-1.20.5-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:f0eaf682acaed72427c9f05831e44050e6145ca0b227fc25a123c22d1c7d4c89"}, - {file = "ddtrace-1.20.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d952483633e637c9bb6364baf0dd3b805872b121746a7243d9de647c6f2c9417"}, - {file = "ddtrace-1.20.5-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ac292a54a8b3b00d424e8c6451d7c21d247ff7e223ab6280ee541319428cd41a"}, - {file = "ddtrace-1.20.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:07eae27732d63ac4e7370b575e59ff4f8c1396f8e40992feeca45425b4fce4cc"}, - {file = "ddtrace-1.20.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:5678feec55fc77771eae9ff80a34037af14a140b4f6bf68a454cf86204db6401"}, - {file = "ddtrace-1.20.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:1b23c154a3ca0f60b9324be0886655e05db40ea98cd33cb8111091ba9adea8f2"}, - {file = "ddtrace-1.20.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d73cb8a34112d80caadd6b088d02f9c6070264abc71733ecb537b2f9a97d6f10"}, - {file = "ddtrace-1.20.5-cp37-cp37m-win32.whl", hash = "sha256:ca8eabcd59c965086de4067475ba8e70895f81f601ce9660c5080cefd66d655c"}, - {file = "ddtrace-1.20.5-cp37-cp37m-win_amd64.whl", hash = "sha256:7ad29dcea031b6ba03f77de4ad6f85d749294fd9e8ba8af871a73811c47d1e5a"}, - {file = "ddtrace-1.20.5-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:67fea1d08dbca04eff521cc013adba1dd0d80c6e5c75a02cb4a7c42c0e973993"}, - {file = "ddtrace-1.20.5-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:79536cfa68338db9c95e728585e1f5f059e321cfcf145fce6b14e8cd1d12892c"}, - {file = "ddtrace-1.20.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c746d3546f69b7718fb61508826552a197fc981bb26c66408e1a20f7ac0952a3"}, - {file = "ddtrace-1.20.5-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8fb3aaf24760d8e4d23d01e497d15ac1b52be202e82a63140afd0c2b799e8571"}, - {file = "ddtrace-1.20.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d6602c52359dbf009ef762c4110ee1ca7dfb9a163aa7bc43515c920a3ddf545f"}, - {file = "ddtrace-1.20.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:7d1cc510f3a4be3df3282415b045cd85dc83a3a2051d219a24546dfb9fdcb39d"}, - {file = "ddtrace-1.20.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:774d48d7e050fc4fec35317348f04326d8f781348e11ff937e739fd7ad555c6b"}, - {file = "ddtrace-1.20.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:7094dd13bf2e17dac2f555a2a0ec85f89e330e6d9327122a6e16fac2b6765f34"}, - {file = "ddtrace-1.20.5-cp38-cp38-win32.whl", hash = "sha256:264cadc7caf89f45d225b1323a09c73a2706f38b754266660fc93a19b2ccb1d7"}, - {file = "ddtrace-1.20.5-cp38-cp38-win_amd64.whl", hash = "sha256:815a14133c25ed9a6deb0df043c7095107a2a900faaf458af153352bb329ccd5"}, - {file = "ddtrace-1.20.5-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:3faff82c1c0b809faa6b79ecb37a7402ca2e452241607db3ca4f8d79e30d8695"}, - {file = "ddtrace-1.20.5-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:6a94fc30efcf753cb40f37a1c8d440139ac63db6cc346ecaf3a409f12410297b"}, - {file = "ddtrace-1.20.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8a43168df3b30fa228720d7c900a51a4fdaae145efaba6e6f37b678e2714f846"}, - {file = "ddtrace-1.20.5-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dad47a4058ed2b703843f0615411e5bd8edcaad54b0d8bc3de811252d8dd242e"}, - {file = "ddtrace-1.20.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6a415b779b34d4af9880665b25ffcab8463c2e75dc82eed0228756a9fa93ed16"}, - {file = "ddtrace-1.20.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:6750dcf7f84895e136452a5c03ff66d4a9e022994b961b1cf7a983fcfc65afba"}, - {file = "ddtrace-1.20.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:76e8f5f07784c8ec26a7bfd5150c359429a3423179776e075735a2e685148095"}, - {file = "ddtrace-1.20.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c4e56bd317578d34663b399b213d8b22801267b8d4faf7a1b645eb1918feaf1b"}, - {file = "ddtrace-1.20.5-cp39-cp39-win32.whl", hash = "sha256:247d8206686ef6c0b1263ce63e37a99eee5fee20ad1456bcb78edcb77519c6f5"}, - {file = "ddtrace-1.20.5-cp39-cp39-win_amd64.whl", hash = "sha256:bafc1c668b8f32a8e980f75c121c33464188270c01ef87430baa489e55fb1590"}, - {file = "ddtrace-1.20.5.tar.gz", hash = "sha256:3a15940d03a4c35d253d93b6c3acf82e0cd70d72f4ec9d8c3d0ca0d0c398dda3"}, +python-versions = ">=3.7" +files = [ + {file = "ddtrace-2.3.0-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:2fb6d9e58bda842acd8aa5b1abd9942c24d1c1d75fe9501a0927fab8625975d2"}, + {file = "ddtrace-2.3.0-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:efaeedba42770a330f66ffd1629f6a254925ee88dc50dfc6e51ece5e056e9f02"}, + {file = "ddtrace-2.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:107d310ccc131a4825e03551545d19b146d74f7844bf35791a6197a827051454"}, + {file = "ddtrace-2.3.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:97f07cf948c6e648c0b1c0614dbd7727976b3bdf009ade2c1e643dd7402076aa"}, + {file = "ddtrace-2.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:192687af1316629b843b4a5e62ce49c9eb9871387cac2ffd5aab34a56c7b7576"}, + {file = "ddtrace-2.3.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:343c8fb5a03424ff4cb4ec229dcfca373a690bb2452960d2e8d1433eebeedab5"}, + {file = "ddtrace-2.3.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:27f9a8247a0b688422224df25d6594e041068b311c76509a89048deabdd83bfe"}, + {file = "ddtrace-2.3.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:3899bc34aa788becad6ff93671dc7ba8f74cc935dbb174a8307a905bec824007"}, + {file = "ddtrace-2.3.0-cp310-cp310-win32.whl", hash = "sha256:06a7aae6e8c5de7f2c4853b0fa20f3676d9411f9d5b7c70f6be8bb6f5ca3d21c"}, + {file = "ddtrace-2.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:f6f7e7f9bad7185238c4c852e413a1433b2084bcff8b662ec2008e3a913cd30a"}, + {file = "ddtrace-2.3.0-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:4d9838f1cf9962445c33d7a034158863bcd963635d87f9ff763913f8070485ef"}, + {file = "ddtrace-2.3.0-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:51fc88e6cd2695158f4bbf7bb5ba6584d1908ffb148277b92089473ed0797096"}, + {file = "ddtrace-2.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:377e852f83f0e10b4c4f5fc592f0844c5e493839f4123ca40a13e4801c5086fb"}, + {file = "ddtrace-2.3.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:91e08fb6d1448e2e224ec79ce03a4cb69df348f2bd2184e4e7643e3321decd60"}, + {file = "ddtrace-2.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ee120c1372b46f3323b037f7af996e982f2be22c345c063ead4ed2339adac53a"}, + {file = "ddtrace-2.3.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:87d35ef21a5db84b2047b2e83fa86e4caa8510adb610ab8bb6302ff6a50650ad"}, + {file = "ddtrace-2.3.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:6838fe077f4e0d10636355a3a84ee33153bf86b3445de4ad571826dc230dfa49"}, + {file = "ddtrace-2.3.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:87899d4bdbdeaccb6751878a38752803ccb294677e07e63296d4af90c227bf2b"}, + {file = "ddtrace-2.3.0-cp311-cp311-win32.whl", hash = "sha256:2865e515ecfdfd49fa60d324ae807b2c7a5ab80cead720b2ccfa57e9f4a81ea7"}, + {file = "ddtrace-2.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:0093eb628e44eee977173c0c6b2cacb5b2c59cef2e2f2466d2ca37023fe99f9c"}, + {file = "ddtrace-2.3.0-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:da2e6a0c9d7c504e995da366d186e359aef5d10f99a34d60deb88ed411a38e8c"}, + {file = "ddtrace-2.3.0-cp312-cp312-macosx_11_0_x86_64.whl", hash = "sha256:663cc830db0fdeba507b0441fb460c15a7d03736f4e8d77709c374c5e2a47717"}, + {file = "ddtrace-2.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7d39d9b4ed7735c90c76839c7a0cc93c4180160b17659d39669fb15a684d5e5b"}, + {file = "ddtrace-2.3.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:81a3fc905b7e4979f4a3797ba1b10dd9fbe2a7905def094a304f0e62db7578be"}, + {file = "ddtrace-2.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c436a1f869229935f4dd6a9632009806c96ba356272536b54a7c8a55c8c9c0f"}, + {file = "ddtrace-2.3.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3a86d415e614750f0b3d5f0e50265e0be13fb736b029ebc66f9c90b311b73f04"}, + {file = "ddtrace-2.3.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:5b4302b1878e576e8b1ae0ca4a380ac5912d7367e4219f152d5f49aac30cc20e"}, + {file = "ddtrace-2.3.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:fd630addda7fff8980c361c8e70683bcb43fabb603e6ec4d41960724e5287da5"}, + {file = "ddtrace-2.3.0-cp312-cp312-win32.whl", hash = "sha256:32f6e6afd60d2c3d33d11af660076014905cbd20a2f2babeee908116b2b87c42"}, + {file = "ddtrace-2.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:dd2dc96c323e265d08eca87eb6da2de4e101e419c9a20bde692e88233765d923"}, + {file = "ddtrace-2.3.0-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:06a60b3a5efdce794cc1dda674a316df3530d3bc5baaed98851d2b5164883fc3"}, + {file = "ddtrace-2.3.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3c951ec9e4f11a084b884c54e9710086cc50508bf589dd67adb67bfa4c97378b"}, + {file = "ddtrace-2.3.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:069f669eeebd3327a4cf734b54b53723bfb9f8829581f2a2522dffee81c3bdc9"}, + {file = "ddtrace-2.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47665eedf23428ceefda593923eac1d52353e5b8376afcfa861021bac2db4df0"}, + {file = "ddtrace-2.3.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:88b69c1bf3ecea5dc4a9d6007077fe86cbf8e989787ff4efe3ed1ef04c49ab2e"}, + {file = "ddtrace-2.3.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:6912f5146c82576e249bc7c24258851c268f023320007f54abfa903c76cac5d2"}, + {file = "ddtrace-2.3.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:7829bb5eb5ee3414b400f8f05513520d95e210ee656c6ccb3da44e2f2f2d90bc"}, + {file = "ddtrace-2.3.0-cp37-cp37m-win32.whl", hash = "sha256:4db5ba6f3fe99394304e5d04a5c1788608017304cb57f2953f17a38ae5111a18"}, + {file = "ddtrace-2.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:8c42c5b438b1409c8da0fe78db086bdb26367a88b594f91c59ded27e2278f17b"}, + {file = "ddtrace-2.3.0-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:1efeb6979ef458b95afee4ce6035d8606a1a60ddf7ae949a053a6e6316363baa"}, + {file = "ddtrace-2.3.0-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:89b2c3d7076c6cf93b21c9cf17d89d82ce9b6cc6c410bfaa5b8bf940fbdb39ac"}, + {file = "ddtrace-2.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec6c471894e229fe2ec417255b6ca86a1e77ac3d0a370dec0cacabc845d70da"}, + {file = "ddtrace-2.3.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0dbb2988b883322753e9194e8cfd3e4f82f76dfdc5eafed872032431ef7a4211"}, + {file = "ddtrace-2.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:edd4ebb73a2f6aa298a674064e137aeaba2c05e58f26abde489cc4542266b4f9"}, + {file = "ddtrace-2.3.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b54933cf3c0420883b650aee540e8736b89ab429398be9735814e12f826c98d4"}, + {file = "ddtrace-2.3.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:cc53d0fe9d83a6f41d0a1b2eca6b7ec854f36d52afeed7fde80acf86bbe3688f"}, + {file = "ddtrace-2.3.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:0f5b22b994bcacf6f730baf61758f483e7fade7fe748996e40382b047d07ce4f"}, + {file = "ddtrace-2.3.0-cp38-cp38-win32.whl", hash = "sha256:9a3347ad2f88a24fb2a5c8cd047cb428f3a72170371e63d67da5ebad0f3929c7"}, + {file = "ddtrace-2.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:d8905aa489404720ab3d80c4c4073a8a876abe9def0b4d46c755bc6001237a88"}, + {file = "ddtrace-2.3.0-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:2dd3e321d9b0e0c95c9dd482c0545d2ea7265df355bce3776f99f58c6a7c89bc"}, + {file = "ddtrace-2.3.0-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:ee664b5c874694c1f9bf1dc12a955a4142034178823d3f23cc0e27bc3fe3e05b"}, + {file = "ddtrace-2.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:484d43d8e193f229463c2730893a61f29408cd95456f786961d5095a8cad6b8d"}, + {file = "ddtrace-2.3.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:df32d7cae069ea37390aed3472beb545b7f1dcdb6d40e53ca00fbd6075b6a16f"}, + {file = "ddtrace-2.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc83363092016e32c669917e363c4fc1e4c8893bd74467132cfb3e0c74d44762"}, + {file = "ddtrace-2.3.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a5f6ea72778365ba5a36dcdedd91c6f0421a9ab20bd9ba996a8f7fb55b4d45e0"}, + {file = "ddtrace-2.3.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bbb5cfba15e1f2ce9f7263598e2a2e00d459b7ab6a7337d829764e4cc861f7a2"}, + {file = "ddtrace-2.3.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9f4e0e7f2a9a08ea5b9106e4f5db363f1e32e7d7854f318d5cde316597baeac7"}, + {file = "ddtrace-2.3.0-cp39-cp39-win32.whl", hash = "sha256:80da90d0cc7b91b5735aace6c7cc1a4e74d44be25add786b537ad9f2aa381955"}, + {file = "ddtrace-2.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:ce0d07d07ba6ac751d00a2904ec69947f1077c90b029d4f409908b5d2f0dd33f"}, + {file = "ddtrace-2.3.0.tar.gz", hash = "sha256:66325456c275ea9a2ec8118a73a2ed0f0c877bc1ce2e002612ea4780ffbdc610"}, ] [package.dependencies] -attrs = {version = ">=20", markers = "python_version > \"2.7\""} +attrs = ">=20" bytecode = [ {version = ">=0.13.0,<0.14.0", markers = "python_version == \"3.7\""}, {version = "*", markers = "python_version >= \"3.8\""}, ] -cattrs = {version = "*", markers = "python_version >= \"3.7\""} +cattrs = "*" ddsketch = ">=2.0.1" envier = "*" importlib-metadata = {version = "*", markers = "python_version < \"3.8\""} -opentelemetry-api = {version = ">=1", markers = "python_version >= \"3.7\""} -protobuf = {version = ">=3", markers = "python_version >= \"3.7\""} +opentelemetry-api = ">=1" +protobuf = ">=3" +setuptools = {version = "*", markers = "python_version >= \"3.12\""} six = ">=1.12.0" typing-extensions = "*" xmltodict = ">=0.12" @@ -569,13 +561,13 @@ doc = ["Sphinx (>=1.6.5)", "mock", "sphinx-rtd-theme"] [[package]] name = "opentelemetry-api" -version = "1.20.0" +version = "1.21.0" description = "OpenTelemetry Python API" optional = false python-versions = ">=3.7" files = [ - {file = "opentelemetry_api-1.20.0-py3-none-any.whl", hash = "sha256:982b76036fec0fdaf490ae3dfd9f28c81442a33414f737abc687a32758cdcba5"}, - {file = "opentelemetry_api-1.20.0.tar.gz", hash = "sha256:06abe351db7572f8afdd0fb889ce53f3c992dbf6f6262507b385cc1963e06983"}, + {file = "opentelemetry_api-1.21.0-py3-none-any.whl", hash = "sha256:4bb86b28627b7e41098f0e93280fe4892a1abed1b79a19aec6f928f39b17dffb"}, + {file = "opentelemetry_api-1.21.0.tar.gz", hash = "sha256:d6185fd5043e000075d921822fd2d26b953eba8ca21b1e2fa360dd46a7686316"}, ] [package.dependencies] @@ -678,6 +670,22 @@ botocore = ">=1.12.36,<2.0a.0" [package.extras] crt = ["botocore[crt] (>=1.20.29,<2.0a.0)"] +[[package]] +name = "setuptools" +version = "69.0.0" +description = "Easily download, build, install, upgrade, and uninstall Python packages" +optional = false +python-versions = ">=3.8" +files = [ + {file = "setuptools-69.0.0-py3-none-any.whl", hash = "sha256:eb03b43f23910c5fd0909cb677ad017cd9531f493d27f8b3f5316ff1fb07390e"}, + {file = "setuptools-69.0.0.tar.gz", hash = "sha256:4c65d4f7891e5b046e9146913b87098144de2ca2128fbc10135b8556a6ddd946"}, +] + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] +testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] +testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.1)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] + [[package]] name = "six" version = "1.16.0" @@ -735,86 +743,81 @@ zstd = ["zstandard (>=0.18.0)"] [[package]] name = "wrapt" -version = "1.15.0" +version = "1.16.0" description = "Module for decorators, wrappers and monkey patching." optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" +python-versions = ">=3.6" files = [ - {file = "wrapt-1.15.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:ca1cccf838cd28d5a0883b342474c630ac48cac5df0ee6eacc9c7290f76b11c1"}, - {file = "wrapt-1.15.0-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:e826aadda3cae59295b95343db8f3d965fb31059da7de01ee8d1c40a60398b29"}, - {file = "wrapt-1.15.0-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:5fc8e02f5984a55d2c653f5fea93531e9836abbd84342c1d1e17abc4a15084c2"}, - {file = "wrapt-1.15.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:96e25c8603a155559231c19c0349245eeb4ac0096fe3c1d0be5c47e075bd4f46"}, - {file = "wrapt-1.15.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:40737a081d7497efea35ab9304b829b857f21558acfc7b3272f908d33b0d9d4c"}, - {file = "wrapt-1.15.0-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:f87ec75864c37c4c6cb908d282e1969e79763e0d9becdfe9fe5473b7bb1e5f09"}, - {file = "wrapt-1.15.0-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:1286eb30261894e4c70d124d44b7fd07825340869945c79d05bda53a40caa079"}, - {file = "wrapt-1.15.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:493d389a2b63c88ad56cdc35d0fa5752daac56ca755805b1b0c530f785767d5e"}, - {file = "wrapt-1.15.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:58d7a75d731e8c63614222bcb21dd992b4ab01a399f1f09dd82af17bbfc2368a"}, - {file = "wrapt-1.15.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:21f6d9a0d5b3a207cdf7acf8e58d7d13d463e639f0c7e01d82cdb671e6cb7923"}, - {file = "wrapt-1.15.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ce42618f67741d4697684e501ef02f29e758a123aa2d669e2d964ff734ee00ee"}, - {file = "wrapt-1.15.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41d07d029dd4157ae27beab04d22b8e261eddfc6ecd64ff7000b10dc8b3a5727"}, - {file = "wrapt-1.15.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:54accd4b8bc202966bafafd16e69da9d5640ff92389d33d28555c5fd4f25ccb7"}, - {file = "wrapt-1.15.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fbfbca668dd15b744418265a9607baa970c347eefd0db6a518aaf0cfbd153c0"}, - {file = "wrapt-1.15.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:76e9c727a874b4856d11a32fb0b389afc61ce8aaf281ada613713ddeadd1cfec"}, - {file = "wrapt-1.15.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e20076a211cd6f9b44a6be58f7eeafa7ab5720eb796975d0c03f05b47d89eb90"}, - {file = "wrapt-1.15.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a74d56552ddbde46c246b5b89199cb3fd182f9c346c784e1a93e4dc3f5ec9975"}, - {file = "wrapt-1.15.0-cp310-cp310-win32.whl", hash = "sha256:26458da5653aa5b3d8dc8b24192f574a58984c749401f98fff994d41d3f08da1"}, - {file = "wrapt-1.15.0-cp310-cp310-win_amd64.whl", hash = "sha256:75760a47c06b5974aa5e01949bf7e66d2af4d08cb8c1d6516af5e39595397f5e"}, - {file = "wrapt-1.15.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ba1711cda2d30634a7e452fc79eabcadaffedf241ff206db2ee93dd2c89a60e7"}, - {file = "wrapt-1.15.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:56374914b132c702aa9aa9959c550004b8847148f95e1b824772d453ac204a72"}, - {file = "wrapt-1.15.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a89ce3fd220ff144bd9d54da333ec0de0399b52c9ac3d2ce34b569cf1a5748fb"}, - {file = "wrapt-1.15.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3bbe623731d03b186b3d6b0d6f51865bf598587c38d6f7b0be2e27414f7f214e"}, - {file = "wrapt-1.15.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3abbe948c3cbde2689370a262a8d04e32ec2dd4f27103669a45c6929bcdbfe7c"}, - {file = "wrapt-1.15.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:b67b819628e3b748fd3c2192c15fb951f549d0f47c0449af0764d7647302fda3"}, - {file = "wrapt-1.15.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:7eebcdbe3677e58dd4c0e03b4f2cfa346ed4049687d839adad68cc38bb559c92"}, - {file = "wrapt-1.15.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:74934ebd71950e3db69960a7da29204f89624dde411afbfb3b4858c1409b1e98"}, - {file = "wrapt-1.15.0-cp311-cp311-win32.whl", hash = "sha256:bd84395aab8e4d36263cd1b9308cd504f6cf713b7d6d3ce25ea55670baec5416"}, - {file = "wrapt-1.15.0-cp311-cp311-win_amd64.whl", hash = "sha256:a487f72a25904e2b4bbc0817ce7a8de94363bd7e79890510174da9d901c38705"}, - {file = "wrapt-1.15.0-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:4ff0d20f2e670800d3ed2b220d40984162089a6e2c9646fdb09b85e6f9a8fc29"}, - {file = "wrapt-1.15.0-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:9ed6aa0726b9b60911f4aed8ec5b8dd7bf3491476015819f56473ffaef8959bd"}, - {file = "wrapt-1.15.0-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:896689fddba4f23ef7c718279e42f8834041a21342d95e56922e1c10c0cc7afb"}, - {file = "wrapt-1.15.0-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:75669d77bb2c071333417617a235324a1618dba66f82a750362eccbe5b61d248"}, - {file = "wrapt-1.15.0-cp35-cp35m-win32.whl", hash = "sha256:fbec11614dba0424ca72f4e8ba3c420dba07b4a7c206c8c8e4e73f2e98f4c559"}, - {file = "wrapt-1.15.0-cp35-cp35m-win_amd64.whl", hash = "sha256:fd69666217b62fa5d7c6aa88e507493a34dec4fa20c5bd925e4bc12fce586639"}, - {file = "wrapt-1.15.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:b0724f05c396b0a4c36a3226c31648385deb6a65d8992644c12a4963c70326ba"}, - {file = "wrapt-1.15.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bbeccb1aa40ab88cd29e6c7d8585582c99548f55f9b2581dfc5ba68c59a85752"}, - {file = "wrapt-1.15.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:38adf7198f8f154502883242f9fe7333ab05a5b02de7d83aa2d88ea621f13364"}, - {file = "wrapt-1.15.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:578383d740457fa790fdf85e6d346fda1416a40549fe8db08e5e9bd281c6a475"}, - {file = "wrapt-1.15.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:a4cbb9ff5795cd66f0066bdf5947f170f5d63a9274f99bdbca02fd973adcf2a8"}, - {file = "wrapt-1.15.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:af5bd9ccb188f6a5fdda9f1f09d9f4c86cc8a539bd48a0bfdc97723970348418"}, - {file = "wrapt-1.15.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:b56d5519e470d3f2fe4aa7585f0632b060d532d0696c5bdfb5e8319e1d0f69a2"}, - {file = "wrapt-1.15.0-cp36-cp36m-win32.whl", hash = "sha256:77d4c1b881076c3ba173484dfa53d3582c1c8ff1f914c6461ab70c8428b796c1"}, - {file = "wrapt-1.15.0-cp36-cp36m-win_amd64.whl", hash = "sha256:077ff0d1f9d9e4ce6476c1a924a3332452c1406e59d90a2cf24aeb29eeac9420"}, - {file = "wrapt-1.15.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:5c5aa28df055697d7c37d2099a7bc09f559d5053c3349b1ad0c39000e611d317"}, - {file = "wrapt-1.15.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3a8564f283394634a7a7054b7983e47dbf39c07712d7b177b37e03f2467a024e"}, - {file = "wrapt-1.15.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:780c82a41dc493b62fc5884fb1d3a3b81106642c5c5c78d6a0d4cbe96d62ba7e"}, - {file = "wrapt-1.15.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e169e957c33576f47e21864cf3fc9ff47c223a4ebca8960079b8bd36cb014fd0"}, - {file = "wrapt-1.15.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:b02f21c1e2074943312d03d243ac4388319f2456576b2c6023041c4d57cd7019"}, - {file = "wrapt-1.15.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:f2e69b3ed24544b0d3dbe2c5c0ba5153ce50dcebb576fdc4696d52aa22db6034"}, - {file = "wrapt-1.15.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d787272ed958a05b2c86311d3a4135d3c2aeea4fc655705f074130aa57d71653"}, - {file = "wrapt-1.15.0-cp37-cp37m-win32.whl", hash = "sha256:02fce1852f755f44f95af51f69d22e45080102e9d00258053b79367d07af39c0"}, - {file = "wrapt-1.15.0-cp37-cp37m-win_amd64.whl", hash = "sha256:abd52a09d03adf9c763d706df707c343293d5d106aea53483e0ec8d9e310ad5e"}, - {file = "wrapt-1.15.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cdb4f085756c96a3af04e6eca7f08b1345e94b53af8921b25c72f096e704e145"}, - {file = "wrapt-1.15.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:230ae493696a371f1dbffaad3dafbb742a4d27a0afd2b1aecebe52b740167e7f"}, - {file = "wrapt-1.15.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63424c681923b9f3bfbc5e3205aafe790904053d42ddcc08542181a30a7a51bd"}, - {file = "wrapt-1.15.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d6bcbfc99f55655c3d93feb7ef3800bd5bbe963a755687cbf1f490a71fb7794b"}, - {file = "wrapt-1.15.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c99f4309f5145b93eca6e35ac1a988f0dc0a7ccf9ccdcd78d3c0adf57224e62f"}, - {file = "wrapt-1.15.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b130fe77361d6771ecf5a219d8e0817d61b236b7d8b37cc045172e574ed219e6"}, - {file = "wrapt-1.15.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:96177eb5645b1c6985f5c11d03fc2dbda9ad24ec0f3a46dcce91445747e15094"}, - {file = "wrapt-1.15.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5fe3e099cf07d0fb5a1e23d399e5d4d1ca3e6dfcbe5c8570ccff3e9208274f7"}, - {file = "wrapt-1.15.0-cp38-cp38-win32.whl", hash = "sha256:abd8f36c99512755b8456047b7be10372fca271bf1467a1caa88db991e7c421b"}, - {file = "wrapt-1.15.0-cp38-cp38-win_amd64.whl", hash = "sha256:b06fa97478a5f478fb05e1980980a7cdf2712015493b44d0c87606c1513ed5b1"}, - {file = "wrapt-1.15.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2e51de54d4fb8fb50d6ee8327f9828306a959ae394d3e01a1ba8b2f937747d86"}, - {file = "wrapt-1.15.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0970ddb69bba00670e58955f8019bec4a42d1785db3faa043c33d81de2bf843c"}, - {file = "wrapt-1.15.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76407ab327158c510f44ded207e2f76b657303e17cb7a572ffe2f5a8a48aa04d"}, - {file = "wrapt-1.15.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cd525e0e52a5ff16653a3fc9e3dd827981917d34996600bbc34c05d048ca35cc"}, - {file = "wrapt-1.15.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d37ac69edc5614b90516807de32d08cb8e7b12260a285ee330955604ed9dd29"}, - {file = "wrapt-1.15.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:078e2a1a86544e644a68422f881c48b84fef6d18f8c7a957ffd3f2e0a74a0d4a"}, - {file = "wrapt-1.15.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:2cf56d0e237280baed46f0b5316661da892565ff58309d4d2ed7dba763d984b8"}, - {file = "wrapt-1.15.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:7dc0713bf81287a00516ef43137273b23ee414fe41a3c14be10dd95ed98a2df9"}, - {file = "wrapt-1.15.0-cp39-cp39-win32.whl", hash = "sha256:46ed616d5fb42f98630ed70c3529541408166c22cdfd4540b88d5f21006b0eff"}, - {file = "wrapt-1.15.0-cp39-cp39-win_amd64.whl", hash = "sha256:eef4d64c650f33347c1f9266fa5ae001440b232ad9b98f1f43dfe7a79435c0a6"}, - {file = "wrapt-1.15.0-py3-none-any.whl", hash = "sha256:64b1df0f83706b4ef4cfb4fb0e4c2669100fd7ecacfb59e091fad300d4e04640"}, - {file = "wrapt-1.15.0.tar.gz", hash = "sha256:d06730c6aed78cee4126234cf2d071e01b44b915e725a6cb439a879ec9754a3a"}, + {file = "wrapt-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4"}, + {file = "wrapt-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e4fdb9275308292e880dcbeb12546df7f3e0f96c6b41197e0cf37d2826359020"}, + {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb2dee3874a500de01c93d5c71415fcaef1d858370d405824783e7a8ef5db440"}, + {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2a88e6010048489cda82b1326889ec075a8c856c2e6a256072b28eaee3ccf487"}, + {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac83a914ebaf589b69f7d0a1277602ff494e21f4c2f743313414378f8f50a4cf"}, + {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:73aa7d98215d39b8455f103de64391cb79dfcad601701a3aa0dddacf74911d72"}, + {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:807cc8543a477ab7422f1120a217054f958a66ef7314f76dd9e77d3f02cdccd0"}, + {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bf5703fdeb350e36885f2875d853ce13172ae281c56e509f4e6eca049bdfb136"}, + {file = "wrapt-1.16.0-cp310-cp310-win32.whl", hash = "sha256:f6b2d0c6703c988d334f297aa5df18c45e97b0af3679bb75059e0e0bd8b1069d"}, + {file = "wrapt-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:decbfa2f618fa8ed81c95ee18a387ff973143c656ef800c9f24fb7e9c16054e2"}, + {file = "wrapt-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1a5db485fe2de4403f13fafdc231b0dbae5eca4359232d2efc79025527375b09"}, + {file = "wrapt-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:75ea7d0ee2a15733684badb16de6794894ed9c55aa5e9903260922f0482e687d"}, + {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a452f9ca3e3267cd4d0fcf2edd0d035b1934ac2bd7e0e57ac91ad6b95c0c6389"}, + {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43aa59eadec7890d9958748db829df269f0368521ba6dc68cc172d5d03ed8060"}, + {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72554a23c78a8e7aa02abbd699d129eead8b147a23c56e08d08dfc29cfdddca1"}, + {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d2efee35b4b0a347e0d99d28e884dfd82797852d62fcd7ebdeee26f3ceb72cf3"}, + {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:6dcfcffe73710be01d90cae08c3e548d90932d37b39ef83969ae135d36ef3956"}, + {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:eb6e651000a19c96f452c85132811d25e9264d836951022d6e81df2fff38337d"}, + {file = "wrapt-1.16.0-cp311-cp311-win32.whl", hash = "sha256:66027d667efe95cc4fa945af59f92c5a02c6f5bb6012bff9e60542c74c75c362"}, + {file = "wrapt-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:aefbc4cb0a54f91af643660a0a150ce2c090d3652cf4052a5397fb2de549cd89"}, + {file = "wrapt-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5eb404d89131ec9b4f748fa5cfb5346802e5ee8836f57d516576e61f304f3b7b"}, + {file = "wrapt-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9090c9e676d5236a6948330e83cb89969f433b1943a558968f659ead07cb3b36"}, + {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94265b00870aa407bd0cbcfd536f17ecde43b94fb8d228560a1e9d3041462d73"}, + {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2058f813d4f2b5e3a9eb2eb3faf8f1d99b81c3e51aeda4b168406443e8ba809"}, + {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98b5e1f498a8ca1858a1cdbffb023bfd954da4e3fa2c0cb5853d40014557248b"}, + {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:14d7dc606219cdd7405133c713f2c218d4252f2a469003f8c46bb92d5d095d81"}, + {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:49aac49dc4782cb04f58986e81ea0b4768e4ff197b57324dcbd7699c5dfb40b9"}, + {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:418abb18146475c310d7a6dc71143d6f7adec5b004ac9ce08dc7a34e2babdc5c"}, + {file = "wrapt-1.16.0-cp312-cp312-win32.whl", hash = "sha256:685f568fa5e627e93f3b52fda002c7ed2fa1800b50ce51f6ed1d572d8ab3e7fc"}, + {file = "wrapt-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:dcdba5c86e368442528f7060039eda390cc4091bfd1dca41e8046af7c910dda8"}, + {file = "wrapt-1.16.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d462f28826f4657968ae51d2181a074dfe03c200d6131690b7d65d55b0f360f8"}, + {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a33a747400b94b6d6b8a165e4480264a64a78c8a4c734b62136062e9a248dd39"}, + {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3646eefa23daeba62643a58aac816945cadc0afaf21800a1421eeba5f6cfb9c"}, + {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ebf019be5c09d400cf7b024aa52b1f3aeebeff51550d007e92c3c1c4afc2a40"}, + {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:0d2691979e93d06a95a26257adb7bfd0c93818e89b1406f5a28f36e0d8c1e1fc"}, + {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:1acd723ee2a8826f3d53910255643e33673e1d11db84ce5880675954183ec47e"}, + {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:bc57efac2da352a51cc4658878a68d2b1b67dbe9d33c36cb826ca449d80a8465"}, + {file = "wrapt-1.16.0-cp36-cp36m-win32.whl", hash = "sha256:da4813f751142436b075ed7aa012a8778aa43a99f7b36afe9b742d3ed8bdc95e"}, + {file = "wrapt-1.16.0-cp36-cp36m-win_amd64.whl", hash = "sha256:6f6eac2360f2d543cc875a0e5efd413b6cbd483cb3ad7ebf888884a6e0d2e966"}, + {file = "wrapt-1.16.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a0ea261ce52b5952bf669684a251a66df239ec6d441ccb59ec7afa882265d593"}, + {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bd2d7ff69a2cac767fbf7a2b206add2e9a210e57947dd7ce03e25d03d2de292"}, + {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9159485323798c8dc530a224bd3ffcf76659319ccc7bbd52e01e73bd0241a0c5"}, + {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a86373cf37cd7764f2201b76496aba58a52e76dedfaa698ef9e9688bfd9e41cf"}, + {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:73870c364c11f03ed072dda68ff7aea6d2a3a5c3fe250d917a429c7432e15228"}, + {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b935ae30c6e7400022b50f8d359c03ed233d45b725cfdd299462f41ee5ffba6f"}, + {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:db98ad84a55eb09b3c32a96c576476777e87c520a34e2519d3e59c44710c002c"}, + {file = "wrapt-1.16.0-cp37-cp37m-win32.whl", hash = "sha256:9153ed35fc5e4fa3b2fe97bddaa7cbec0ed22412b85bcdaf54aeba92ea37428c"}, + {file = "wrapt-1.16.0-cp37-cp37m-win_amd64.whl", hash = "sha256:66dfbaa7cfa3eb707bbfcd46dab2bc6207b005cbc9caa2199bcbc81d95071a00"}, + {file = "wrapt-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1dd50a2696ff89f57bd8847647a1c363b687d3d796dc30d4dd4a9d1689a706f0"}, + {file = "wrapt-1.16.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:44a2754372e32ab315734c6c73b24351d06e77ffff6ae27d2ecf14cf3d229202"}, + {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e9723528b9f787dc59168369e42ae1c3b0d3fadb2f1a71de14531d321ee05b0"}, + {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbed418ba5c3dce92619656802cc5355cb679e58d0d89b50f116e4a9d5a9603e"}, + {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:941988b89b4fd6b41c3f0bfb20e92bd23746579736b7343283297c4c8cbae68f"}, + {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6a42cd0cfa8ffc1915aef79cb4284f6383d8a3e9dcca70c445dcfdd639d51267"}, + {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1ca9b6085e4f866bd584fb135a041bfc32cab916e69f714a7d1d397f8c4891ca"}, + {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5e49454f19ef621089e204f862388d29e6e8d8b162efce05208913dde5b9ad6"}, + {file = "wrapt-1.16.0-cp38-cp38-win32.whl", hash = "sha256:c31f72b1b6624c9d863fc095da460802f43a7c6868c5dda140f51da24fd47d7b"}, + {file = "wrapt-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:490b0ee15c1a55be9c1bd8609b8cecd60e325f0575fc98f50058eae366e01f41"}, + {file = "wrapt-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9b201ae332c3637a42f02d1045e1d0cccfdc41f1f2f801dafbaa7e9b4797bfc2"}, + {file = "wrapt-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2076fad65c6736184e77d7d4729b63a6d1ae0b70da4868adeec40989858eb3fb"}, + {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5cd603b575ebceca7da5a3a251e69561bec509e0b46e4993e1cac402b7247b8"}, + {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b47cfad9e9bbbed2339081f4e346c93ecd7ab504299403320bf85f7f85c7d46c"}, + {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8212564d49c50eb4565e502814f694e240c55551a5f1bc841d4fcaabb0a9b8a"}, + {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5f15814a33e42b04e3de432e573aa557f9f0f56458745c2074952f564c50e664"}, + {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:db2e408d983b0e61e238cf579c09ef7020560441906ca990fe8412153e3b291f"}, + {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:edfad1d29c73f9b863ebe7082ae9321374ccb10879eeabc84ba3b69f2579d537"}, + {file = "wrapt-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed867c42c268f876097248e05b6117a65bcd1e63b779e916fe2e33cd6fd0d3c3"}, + {file = "wrapt-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:eb1b046be06b0fce7249f1d025cd359b4b80fc1c3e24ad9eca33e0dcdb2e4a35"}, + {file = "wrapt-1.16.0-py3-none-any.whl", hash = "sha256:6906c4100a8fcbf2fa735f6059214bb13b97f75b1a61777fcf6432121ef12ef1"}, + {file = "wrapt-1.16.0.tar.gz", hash = "sha256:5f370f952971e7d17c7d1ead40e49f32345a7f7a5373571ef44d800d06b1899d"}, ] [[package]] @@ -849,4 +852,4 @@ dev = ["boto3", "flake8", "httpretty", "nose2", "requests"] [metadata] lock-version = "2.0" python-versions = ">=3.7.0,<4" -content-hash = "49c1c17e09ec0fe82e8f8ba0815078369669dcbedf681c78994173eeed020f05" +content-hash = "0d5100932fcbf8aef16e44c49c8a8d6894f91ed9838bee831d6b248ad2e71e7b" diff --git a/pyproject.toml b/pyproject.toml index de4a780e..de179b02 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -27,7 +27,7 @@ classifiers = [ python = ">=3.7.0,<4" datadog = ">=0.41.0,<1.0.0" wrapt = "^1.11.2" -ddtrace = "<2.0.0" +ddtrace = ">=2.3.0" urllib3 = [ {version = "<2.0.0", python = "<3.11", optional = true}, {version = "<2.1.0", python = ">=3.11", optional = true}, diff --git a/scripts/run_integration_tests.sh b/scripts/run_integration_tests.sh index 90382458..ebda6fde 100755 --- a/scripts/run_integration_tests.sh +++ b/scripts/run_integration_tests.sh @@ -236,6 +236,9 @@ for handler_name in "${LAMBDA_HANDLERS[@]}"; do sed -E "s/(\"object_etag\"\:\ \")[a-zA-Z0-9\-]+/\1XXXX/g" | sed -E "s/(\"dd_trace\"\: \")([0-9]+\.[0-9]+\.[0-9]+)/\1X.X.X/g" | sed -E "s/(traceparent\:)([A-Za-z0-9\-]+)/\1XXX/g" | + sed -E "s/(tracestate\:)([A-Za-z0-9\-\=\:\;].+)/\1XXX/g" | + sed -E "s/(\"_dd.p.tid\"\: \")[a-z0-9\.\-]+/\1XXXX/g" | + sed -E "s/(_dd.p.tid=)[a-z0-9\.\-]+/\1XXXX/g" | # Parse out account ID in ARN sed -E "s/([a-zA-Z0-9]+):([a-zA-Z0-9]+):([a-zA-Z0-9]+):([a-zA-Z0-9\-]+):([a-zA-Z0-9\-\:]+)/\1:\2:\3:\4:XXXX:\4/g" | sed -E "/init complete at epoch/d" | diff --git a/tests/integration/snapshots/logs/async-metrics_python310.log b/tests/integration/snapshots/logs/async-metrics_python310.log index 1637612f..81d2351e 100644 --- a/tests/integration/snapshots/logs/async-metrics_python310.log +++ b/tests/integration/snapshots/logs/async-metrics_python310.log @@ -36,8 +36,8 @@ START "dd_lambda_layer:datadog-python310_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -68,6 +68,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -150,6 +151,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -205,8 +207,8 @@ START "dd_lambda_layer:datadog-python310_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -236,6 +238,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -314,6 +317,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -369,8 +373,8 @@ START "dd_lambda_layer:datadog-python310_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -394,6 +398,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -471,6 +476,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -526,8 +532,8 @@ START "dd_lambda_layer:datadog-python310_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -561,6 +567,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -643,6 +650,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -698,8 +706,8 @@ START "dd_lambda_layer:datadog-python310_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -729,6 +737,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -807,6 +816,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -862,8 +872,8 @@ START "dd_lambda_layer:datadog-python310_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -890,6 +900,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -968,6 +979,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -1023,8 +1035,8 @@ START "dd_lambda_layer:datadog-python310_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1052,6 +1064,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -1130,6 +1143,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -1185,8 +1199,8 @@ START "dd_lambda_layer:datadog-python310_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1213,6 +1227,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -1291,6 +1306,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -1346,8 +1362,8 @@ START "dd_lambda_layer:datadog-python310_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1380,6 +1396,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -1460,6 +1477,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", diff --git a/tests/integration/snapshots/logs/async-metrics_python311.log b/tests/integration/snapshots/logs/async-metrics_python311.log index 7eedbe88..ebecb139 100644 --- a/tests/integration/snapshots/logs/async-metrics_python311.log +++ b/tests/integration/snapshots/logs/async-metrics_python311.log @@ -36,8 +36,8 @@ START "dd_lambda_layer:datadog-python311_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -68,6 +68,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -150,6 +151,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -205,8 +207,8 @@ START "dd_lambda_layer:datadog-python311_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -236,6 +238,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -314,6 +317,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -369,8 +373,8 @@ START "dd_lambda_layer:datadog-python311_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -394,6 +398,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -471,6 +476,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -526,8 +532,8 @@ START "dd_lambda_layer:datadog-python311_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -561,6 +567,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -643,6 +650,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -698,8 +706,8 @@ START "dd_lambda_layer:datadog-python311_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -729,6 +737,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -807,6 +816,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -862,8 +872,8 @@ START "dd_lambda_layer:datadog-python311_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -890,6 +900,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -968,6 +979,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -1023,8 +1035,8 @@ START "dd_lambda_layer:datadog-python311_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1052,6 +1064,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -1130,6 +1143,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -1185,8 +1199,8 @@ START "dd_lambda_layer:datadog-python311_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1213,6 +1227,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -1291,6 +1306,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -1346,8 +1362,8 @@ START "dd_lambda_layer:datadog-python311_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1380,6 +1396,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -1460,6 +1477,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", diff --git a/tests/integration/snapshots/logs/async-metrics_python37.log b/tests/integration/snapshots/logs/async-metrics_python37.log index 080113f2..bdde3f9e 100644 --- a/tests/integration/snapshots/logs/async-metrics_python37.log +++ b/tests/integration/snapshots/logs/async-metrics_python37.log @@ -36,8 +36,8 @@ START "dd_lambda_layer:datadog-python37_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -68,6 +68,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -150,6 +151,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -205,8 +207,8 @@ START "dd_lambda_layer:datadog-python37_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -236,6 +238,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -314,6 +317,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -369,8 +373,8 @@ START "dd_lambda_layer:datadog-python37_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -394,6 +398,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -471,6 +476,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -526,8 +532,8 @@ START "dd_lambda_layer:datadog-python37_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -561,6 +567,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -643,6 +650,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -698,8 +706,8 @@ START "dd_lambda_layer:datadog-python37_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -729,6 +737,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -807,6 +816,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -862,8 +872,8 @@ START "dd_lambda_layer:datadog-python37_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -890,6 +900,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -968,6 +979,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -1023,8 +1035,8 @@ START "dd_lambda_layer:datadog-python37_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1052,6 +1064,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -1130,6 +1143,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -1185,8 +1199,8 @@ START "dd_lambda_layer:datadog-python37_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1213,6 +1227,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -1291,6 +1306,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -1346,8 +1362,8 @@ START "dd_lambda_layer:datadog-python37_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1380,6 +1396,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -1460,6 +1477,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", diff --git a/tests/integration/snapshots/logs/async-metrics_python38.log b/tests/integration/snapshots/logs/async-metrics_python38.log index 913ef760..ae5b719f 100644 --- a/tests/integration/snapshots/logs/async-metrics_python38.log +++ b/tests/integration/snapshots/logs/async-metrics_python38.log @@ -36,8 +36,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -68,6 +68,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -150,6 +151,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -205,8 +207,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -236,6 +238,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -314,6 +317,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -369,8 +373,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -394,6 +398,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -471,6 +476,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -526,8 +532,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -561,6 +567,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -643,6 +650,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -698,8 +706,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -729,6 +737,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -807,6 +816,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -862,8 +872,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -890,6 +900,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -968,6 +979,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -1023,8 +1035,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1052,6 +1064,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -1130,6 +1143,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -1185,8 +1199,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1213,6 +1227,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -1291,6 +1306,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -1346,8 +1362,9 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +END Duration: XXXX ms Memory Used: XXXX MB { "traces": [ [ @@ -1380,6 +1397,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -1460,6 +1478,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -1477,4 +1496,3 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -END Duration: XXXX ms Memory Used: XXXX MB diff --git a/tests/integration/snapshots/logs/async-metrics_python39.log b/tests/integration/snapshots/logs/async-metrics_python39.log index 6708ebb0..53ef3d2f 100644 --- a/tests/integration/snapshots/logs/async-metrics_python39.log +++ b/tests/integration/snapshots/logs/async-metrics_python39.log @@ -36,8 +36,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -68,6 +68,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -150,6 +151,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -205,8 +207,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -236,6 +238,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -314,6 +317,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -369,8 +373,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -394,6 +398,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -471,6 +476,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -526,8 +532,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -561,6 +567,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -643,6 +650,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -698,8 +706,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -729,6 +737,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -807,6 +816,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -862,8 +872,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -890,6 +900,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -968,6 +979,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -1023,8 +1035,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1052,6 +1064,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -1130,6 +1143,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -1185,8 +1199,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1213,6 +1227,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -1291,6 +1306,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -1346,8 +1362,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1380,6 +1396,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -1460,6 +1477,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", diff --git a/tests/integration/snapshots/logs/sync-metrics_python310.log b/tests/integration/snapshots/logs/sync-metrics_python310.log index 01cf8700..07d37c40 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python310.log +++ b/tests/integration/snapshots/logs/sync-metrics_python310.log @@ -16,8 +16,8 @@ START "dd_lambda_layer:datadog-python310_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -48,6 +48,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -130,6 +131,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -147,7 +149,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -172,6 +174,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -203,8 +206,8 @@ START "dd_lambda_layer:datadog-python310_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -234,6 +237,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -312,6 +316,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -329,7 +334,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -354,6 +359,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -385,8 +391,8 @@ START "dd_lambda_layer:datadog-python310_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -410,6 +416,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -487,6 +494,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -504,7 +512,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -529,6 +537,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -560,8 +569,8 @@ START "dd_lambda_layer:datadog-python310_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -595,6 +604,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -677,6 +687,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -694,7 +705,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -719,6 +730,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -750,8 +762,8 @@ START "dd_lambda_layer:datadog-python310_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -781,6 +793,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -859,6 +872,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -876,7 +890,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -901,6 +915,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -932,8 +947,8 @@ START "dd_lambda_layer:datadog-python310_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -960,6 +975,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -1038,6 +1054,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -1055,7 +1072,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1080,6 +1097,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -1111,8 +1129,8 @@ START "dd_lambda_layer:datadog-python310_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1140,6 +1158,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -1218,6 +1237,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -1235,7 +1255,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1260,6 +1280,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -1291,8 +1312,8 @@ START "dd_lambda_layer:datadog-python310_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1319,6 +1340,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -1397,6 +1419,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -1414,7 +1437,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1439,6 +1462,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -1470,8 +1494,8 @@ START "dd_lambda_layer:datadog-python310_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1504,6 +1528,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -1584,6 +1609,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -1601,7 +1627,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1626,6 +1652,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { diff --git a/tests/integration/snapshots/logs/sync-metrics_python311.log b/tests/integration/snapshots/logs/sync-metrics_python311.log index 79d3a9a5..c2a3e5cd 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python311.log +++ b/tests/integration/snapshots/logs/sync-metrics_python311.log @@ -16,8 +16,8 @@ START "dd_lambda_layer:datadog-python311_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -48,6 +48,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -130,6 +131,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -147,7 +149,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -172,6 +174,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -203,8 +206,8 @@ START "dd_lambda_layer:datadog-python311_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -234,6 +237,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -312,6 +316,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -329,7 +334,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -354,6 +359,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -385,8 +391,8 @@ START "dd_lambda_layer:datadog-python311_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -410,6 +416,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -487,6 +494,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -504,7 +512,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -529,6 +537,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -560,8 +569,8 @@ START "dd_lambda_layer:datadog-python311_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -595,6 +604,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -677,6 +687,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -694,7 +705,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -719,6 +730,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -750,8 +762,8 @@ START "dd_lambda_layer:datadog-python311_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -781,6 +793,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -859,6 +872,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -876,7 +890,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -901,6 +915,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -932,8 +947,8 @@ START "dd_lambda_layer:datadog-python311_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -960,6 +975,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -1038,6 +1054,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -1055,7 +1072,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1080,6 +1097,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -1111,8 +1129,8 @@ START "dd_lambda_layer:datadog-python311_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1140,6 +1158,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -1218,6 +1237,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -1235,7 +1255,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1260,6 +1280,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -1291,8 +1312,8 @@ START "dd_lambda_layer:datadog-python311_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1319,6 +1340,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -1397,6 +1419,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -1414,7 +1437,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1439,6 +1462,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -1470,8 +1494,8 @@ START "dd_lambda_layer:datadog-python311_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1504,6 +1528,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -1584,6 +1609,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -1601,7 +1627,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1626,6 +1652,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { diff --git a/tests/integration/snapshots/logs/sync-metrics_python37.log b/tests/integration/snapshots/logs/sync-metrics_python37.log index 31518039..fb7b879b 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python37.log +++ b/tests/integration/snapshots/logs/sync-metrics_python37.log @@ -16,8 +16,8 @@ START "dd_lambda_layer:datadog-python37_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -48,6 +48,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -130,6 +131,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -147,7 +149,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -172,6 +174,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -203,8 +206,8 @@ START "dd_lambda_layer:datadog-python37_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -234,6 +237,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -312,6 +316,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -329,7 +334,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -354,6 +359,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -385,8 +391,8 @@ START "dd_lambda_layer:datadog-python37_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -410,6 +416,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -487,6 +494,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -504,7 +512,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -529,6 +537,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -560,8 +569,8 @@ START "dd_lambda_layer:datadog-python37_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -595,6 +604,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -677,6 +687,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -694,7 +705,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +END Duration: XXXX ms Memory Used: XXXX MB { "traces": [ [ @@ -719,6 +731,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -732,7 +745,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept ] ] } -END Duration: XXXX ms Memory Used: XXXX MB START { "m": "aws.lambda.enhanced.invocations", @@ -750,8 +762,8 @@ START "dd_lambda_layer:datadog-python37_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -781,6 +793,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -859,6 +872,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -876,7 +890,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -901,6 +915,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -932,8 +947,8 @@ START "dd_lambda_layer:datadog-python37_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -960,6 +975,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -1038,6 +1054,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -1055,7 +1072,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1080,6 +1097,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -1111,8 +1129,8 @@ START "dd_lambda_layer:datadog-python37_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1140,6 +1158,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -1218,6 +1237,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -1235,7 +1255,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1260,6 +1280,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -1291,8 +1312,8 @@ START "dd_lambda_layer:datadog-python37_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1319,6 +1340,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -1397,6 +1419,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -1414,7 +1437,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1439,6 +1462,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -1470,8 +1494,8 @@ START "dd_lambda_layer:datadog-python37_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1504,6 +1528,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -1584,6 +1609,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -1601,7 +1627,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1626,6 +1652,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { diff --git a/tests/integration/snapshots/logs/sync-metrics_python38.log b/tests/integration/snapshots/logs/sync-metrics_python38.log index dbdb9550..81e776e1 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python38.log +++ b/tests/integration/snapshots/logs/sync-metrics_python38.log @@ -16,8 +16,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -48,6 +48,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -130,6 +131,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -147,7 +149,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -172,6 +174,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -203,8 +206,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -234,6 +237,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -312,6 +316,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -329,7 +334,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -354,6 +359,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -385,8 +391,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -410,6 +416,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -487,6 +494,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -504,7 +512,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -529,6 +537,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -560,8 +569,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -595,6 +604,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -677,6 +687,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -694,7 +705,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -719,6 +730,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -750,8 +762,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -781,6 +793,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -859,6 +872,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -876,7 +890,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -901,6 +915,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -932,8 +947,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -960,6 +975,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -1038,6 +1054,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -1055,7 +1072,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1080,6 +1097,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -1111,8 +1129,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1140,6 +1158,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -1218,6 +1237,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -1235,7 +1255,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +END Duration: XXXX ms Memory Used: XXXX MB { "traces": [ [ @@ -1260,6 +1281,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -1273,7 +1295,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept ] ] } -END Duration: XXXX ms Memory Used: XXXX MB START { "m": "aws.lambda.enhanced.invocations", @@ -1291,8 +1312,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1319,6 +1340,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -1397,6 +1419,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -1414,7 +1437,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1439,6 +1462,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -1470,8 +1494,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1504,6 +1528,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -1584,6 +1609,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -1601,7 +1627,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1626,6 +1652,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { diff --git a/tests/integration/snapshots/logs/sync-metrics_python39.log b/tests/integration/snapshots/logs/sync-metrics_python39.log index f0def45d..0c7f5682 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python39.log +++ b/tests/integration/snapshots/logs/sync-metrics_python39.log @@ -16,8 +16,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -48,6 +48,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -130,6 +131,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -147,7 +149,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -172,6 +174,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -203,8 +206,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -234,6 +237,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -312,6 +316,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -329,7 +334,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +END Duration: XXXX ms Memory Used: XXXX MB { "traces": [ [ @@ -354,6 +360,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -367,7 +374,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept ] ] } -END Duration: XXXX ms Memory Used: XXXX MB START { "m": "aws.lambda.enhanced.invocations", @@ -385,8 +391,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -410,6 +416,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -487,6 +494,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -504,7 +512,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -529,6 +537,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -560,8 +569,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -595,6 +604,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -677,6 +687,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -694,7 +705,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -719,6 +730,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -750,8 +762,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -781,6 +793,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -859,6 +872,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -876,7 +890,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -901,6 +915,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -932,8 +947,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -960,6 +975,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -1038,6 +1054,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -1055,7 +1072,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1080,6 +1097,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -1111,8 +1129,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1140,6 +1158,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -1218,6 +1237,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -1235,7 +1255,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1260,6 +1280,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -1291,8 +1312,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1319,6 +1340,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -1397,6 +1419,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -1414,7 +1437,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1439,6 +1462,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -1470,8 +1494,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1504,6 +1528,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -1584,6 +1609,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -1601,7 +1627,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1626,6 +1652,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { From 9968bbcf3a2b6d26979311f6ce1532941ffda6ac Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Tue, 21 Nov 2023 12:28:21 -0800 Subject: [PATCH 056/268] Improve error log message when no sns->sqs context found. (#396) --- datadog_lambda/tracing.py | 1 + 1 file changed, 1 insertion(+) diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 05882749..252a4717 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -266,6 +266,7 @@ def extract_context_from_sqs_or_sns_event_or_context(event, lambda_context): "Datadog Lambda Python only supports extracting trace" "context from String or Binary SQS/SNS message attributes" ) + return extract_context_from_lambda_context(lambda_context) dd_data = json.loads(dd_json_data) return propagator.extract(dd_data) except Exception as e: From ec61771b118838be13a2649cfc65ec092fa15113 Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Tue, 21 Nov 2023 18:20:51 -0500 Subject: [PATCH 057/268] Bump version to 5.83.0 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index de179b02..0ebf1755 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "4.82.0" +version = "5.83.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From f5812d5c3561dcf3364f25c5c1694a9d23757d08 Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Tue, 28 Nov 2023 17:01:40 -0500 Subject: [PATCH 058/268] feat: Bump ddtrace to 2.3.1 (#397) --- poetry.lock | 150 ++++++++++++++++++++++++------------------------- pyproject.toml | 2 +- 2 files changed, 76 insertions(+), 76 deletions(-) diff --git a/poetry.lock b/poetry.lock index da1c0433..c32c4c69 100644 --- a/poetry.lock +++ b/poetry.lock @@ -23,17 +23,17 @@ tests-no-zope = ["cloudpickle", "hypothesis", "mypy (>=1.1.1)", "pympler", "pyte [[package]] name = "boto3" -version = "1.29.4" +version = "1.29.5" description = "The AWS SDK for Python" optional = true python-versions = ">= 3.7" files = [ - {file = "boto3-1.29.4-py3-none-any.whl", hash = "sha256:d1135647309b89376a014d21407aabfa322998206175f2297def812bf4d824a9"}, - {file = "boto3-1.29.4.tar.gz", hash = "sha256:ca9b04fc2c75990c2be84c43b9d6edecce828960fc27e07ab29036587a1ca635"}, + {file = "boto3-1.29.5-py3-none-any.whl", hash = "sha256:030b0f0faf8d44f97e67a5411644243482f33ebf1c45338bb40662239a16dda4"}, + {file = "boto3-1.29.5.tar.gz", hash = "sha256:76fc6a17781c27558c526e899579ccf530df10eb279261fe7800540f0043917e"}, ] [package.dependencies] -botocore = ">=1.32.4,<1.33.0" +botocore = ">=1.32.5,<1.33.0" jmespath = ">=0.7.1,<2.0.0" s3transfer = ">=0.7.0,<0.8.0" @@ -42,13 +42,13 @@ crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] [[package]] name = "botocore" -version = "1.32.4" +version = "1.32.5" description = "Low-level, data-driven core of boto 3." optional = true python-versions = ">= 3.7" files = [ - {file = "botocore-1.32.4-py3-none-any.whl", hash = "sha256:3ee73c0d93bdb944d0c46772f08f09cdcf25ef58bd86962e6f4a24e531198bfa"}, - {file = "botocore-1.32.4.tar.gz", hash = "sha256:6bfa75e28c9ad0321cefefa51b00ff233b16b2416f8b95229796263edba45a39"}, + {file = "botocore-1.32.5-py3-none-any.whl", hash = "sha256:b8960c955ba275915bf022c54c896c2dac1038289d8a5ace92d1431257c0a439"}, + {file = "botocore-1.32.5.tar.gz", hash = "sha256:75a68f942cd87baff83b3a20dfda11b3aeda48aad32e4dcd6fe8992c0cb0e7db"}, ] [package.dependencies] @@ -325,71 +325,71 @@ six = "*" [[package]] name = "ddtrace" -version = "2.3.0" +version = "2.3.1" description = "Datadog APM client library" optional = false python-versions = ">=3.7" files = [ - {file = "ddtrace-2.3.0-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:2fb6d9e58bda842acd8aa5b1abd9942c24d1c1d75fe9501a0927fab8625975d2"}, - {file = "ddtrace-2.3.0-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:efaeedba42770a330f66ffd1629f6a254925ee88dc50dfc6e51ece5e056e9f02"}, - {file = "ddtrace-2.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:107d310ccc131a4825e03551545d19b146d74f7844bf35791a6197a827051454"}, - {file = "ddtrace-2.3.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:97f07cf948c6e648c0b1c0614dbd7727976b3bdf009ade2c1e643dd7402076aa"}, - {file = "ddtrace-2.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:192687af1316629b843b4a5e62ce49c9eb9871387cac2ffd5aab34a56c7b7576"}, - {file = "ddtrace-2.3.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:343c8fb5a03424ff4cb4ec229dcfca373a690bb2452960d2e8d1433eebeedab5"}, - {file = "ddtrace-2.3.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:27f9a8247a0b688422224df25d6594e041068b311c76509a89048deabdd83bfe"}, - {file = "ddtrace-2.3.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:3899bc34aa788becad6ff93671dc7ba8f74cc935dbb174a8307a905bec824007"}, - {file = "ddtrace-2.3.0-cp310-cp310-win32.whl", hash = "sha256:06a7aae6e8c5de7f2c4853b0fa20f3676d9411f9d5b7c70f6be8bb6f5ca3d21c"}, - {file = "ddtrace-2.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:f6f7e7f9bad7185238c4c852e413a1433b2084bcff8b662ec2008e3a913cd30a"}, - {file = "ddtrace-2.3.0-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:4d9838f1cf9962445c33d7a034158863bcd963635d87f9ff763913f8070485ef"}, - {file = "ddtrace-2.3.0-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:51fc88e6cd2695158f4bbf7bb5ba6584d1908ffb148277b92089473ed0797096"}, - {file = "ddtrace-2.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:377e852f83f0e10b4c4f5fc592f0844c5e493839f4123ca40a13e4801c5086fb"}, - {file = "ddtrace-2.3.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:91e08fb6d1448e2e224ec79ce03a4cb69df348f2bd2184e4e7643e3321decd60"}, - {file = "ddtrace-2.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ee120c1372b46f3323b037f7af996e982f2be22c345c063ead4ed2339adac53a"}, - {file = "ddtrace-2.3.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:87d35ef21a5db84b2047b2e83fa86e4caa8510adb610ab8bb6302ff6a50650ad"}, - {file = "ddtrace-2.3.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:6838fe077f4e0d10636355a3a84ee33153bf86b3445de4ad571826dc230dfa49"}, - {file = "ddtrace-2.3.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:87899d4bdbdeaccb6751878a38752803ccb294677e07e63296d4af90c227bf2b"}, - {file = "ddtrace-2.3.0-cp311-cp311-win32.whl", hash = "sha256:2865e515ecfdfd49fa60d324ae807b2c7a5ab80cead720b2ccfa57e9f4a81ea7"}, - {file = "ddtrace-2.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:0093eb628e44eee977173c0c6b2cacb5b2c59cef2e2f2466d2ca37023fe99f9c"}, - {file = "ddtrace-2.3.0-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:da2e6a0c9d7c504e995da366d186e359aef5d10f99a34d60deb88ed411a38e8c"}, - {file = "ddtrace-2.3.0-cp312-cp312-macosx_11_0_x86_64.whl", hash = "sha256:663cc830db0fdeba507b0441fb460c15a7d03736f4e8d77709c374c5e2a47717"}, - {file = "ddtrace-2.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7d39d9b4ed7735c90c76839c7a0cc93c4180160b17659d39669fb15a684d5e5b"}, - {file = "ddtrace-2.3.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:81a3fc905b7e4979f4a3797ba1b10dd9fbe2a7905def094a304f0e62db7578be"}, - {file = "ddtrace-2.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c436a1f869229935f4dd6a9632009806c96ba356272536b54a7c8a55c8c9c0f"}, - {file = "ddtrace-2.3.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3a86d415e614750f0b3d5f0e50265e0be13fb736b029ebc66f9c90b311b73f04"}, - {file = "ddtrace-2.3.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:5b4302b1878e576e8b1ae0ca4a380ac5912d7367e4219f152d5f49aac30cc20e"}, - {file = "ddtrace-2.3.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:fd630addda7fff8980c361c8e70683bcb43fabb603e6ec4d41960724e5287da5"}, - {file = "ddtrace-2.3.0-cp312-cp312-win32.whl", hash = "sha256:32f6e6afd60d2c3d33d11af660076014905cbd20a2f2babeee908116b2b87c42"}, - {file = "ddtrace-2.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:dd2dc96c323e265d08eca87eb6da2de4e101e419c9a20bde692e88233765d923"}, - {file = "ddtrace-2.3.0-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:06a60b3a5efdce794cc1dda674a316df3530d3bc5baaed98851d2b5164883fc3"}, - {file = "ddtrace-2.3.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3c951ec9e4f11a084b884c54e9710086cc50508bf589dd67adb67bfa4c97378b"}, - {file = "ddtrace-2.3.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:069f669eeebd3327a4cf734b54b53723bfb9f8829581f2a2522dffee81c3bdc9"}, - {file = "ddtrace-2.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47665eedf23428ceefda593923eac1d52353e5b8376afcfa861021bac2db4df0"}, - {file = "ddtrace-2.3.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:88b69c1bf3ecea5dc4a9d6007077fe86cbf8e989787ff4efe3ed1ef04c49ab2e"}, - {file = "ddtrace-2.3.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:6912f5146c82576e249bc7c24258851c268f023320007f54abfa903c76cac5d2"}, - {file = "ddtrace-2.3.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:7829bb5eb5ee3414b400f8f05513520d95e210ee656c6ccb3da44e2f2f2d90bc"}, - {file = "ddtrace-2.3.0-cp37-cp37m-win32.whl", hash = "sha256:4db5ba6f3fe99394304e5d04a5c1788608017304cb57f2953f17a38ae5111a18"}, - {file = "ddtrace-2.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:8c42c5b438b1409c8da0fe78db086bdb26367a88b594f91c59ded27e2278f17b"}, - {file = "ddtrace-2.3.0-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:1efeb6979ef458b95afee4ce6035d8606a1a60ddf7ae949a053a6e6316363baa"}, - {file = "ddtrace-2.3.0-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:89b2c3d7076c6cf93b21c9cf17d89d82ce9b6cc6c410bfaa5b8bf940fbdb39ac"}, - {file = "ddtrace-2.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec6c471894e229fe2ec417255b6ca86a1e77ac3d0a370dec0cacabc845d70da"}, - {file = "ddtrace-2.3.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0dbb2988b883322753e9194e8cfd3e4f82f76dfdc5eafed872032431ef7a4211"}, - {file = "ddtrace-2.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:edd4ebb73a2f6aa298a674064e137aeaba2c05e58f26abde489cc4542266b4f9"}, - {file = "ddtrace-2.3.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b54933cf3c0420883b650aee540e8736b89ab429398be9735814e12f826c98d4"}, - {file = "ddtrace-2.3.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:cc53d0fe9d83a6f41d0a1b2eca6b7ec854f36d52afeed7fde80acf86bbe3688f"}, - {file = "ddtrace-2.3.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:0f5b22b994bcacf6f730baf61758f483e7fade7fe748996e40382b047d07ce4f"}, - {file = "ddtrace-2.3.0-cp38-cp38-win32.whl", hash = "sha256:9a3347ad2f88a24fb2a5c8cd047cb428f3a72170371e63d67da5ebad0f3929c7"}, - {file = "ddtrace-2.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:d8905aa489404720ab3d80c4c4073a8a876abe9def0b4d46c755bc6001237a88"}, - {file = "ddtrace-2.3.0-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:2dd3e321d9b0e0c95c9dd482c0545d2ea7265df355bce3776f99f58c6a7c89bc"}, - {file = "ddtrace-2.3.0-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:ee664b5c874694c1f9bf1dc12a955a4142034178823d3f23cc0e27bc3fe3e05b"}, - {file = "ddtrace-2.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:484d43d8e193f229463c2730893a61f29408cd95456f786961d5095a8cad6b8d"}, - {file = "ddtrace-2.3.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:df32d7cae069ea37390aed3472beb545b7f1dcdb6d40e53ca00fbd6075b6a16f"}, - {file = "ddtrace-2.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc83363092016e32c669917e363c4fc1e4c8893bd74467132cfb3e0c74d44762"}, - {file = "ddtrace-2.3.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a5f6ea72778365ba5a36dcdedd91c6f0421a9ab20bd9ba996a8f7fb55b4d45e0"}, - {file = "ddtrace-2.3.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bbb5cfba15e1f2ce9f7263598e2a2e00d459b7ab6a7337d829764e4cc861f7a2"}, - {file = "ddtrace-2.3.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9f4e0e7f2a9a08ea5b9106e4f5db363f1e32e7d7854f318d5cde316597baeac7"}, - {file = "ddtrace-2.3.0-cp39-cp39-win32.whl", hash = "sha256:80da90d0cc7b91b5735aace6c7cc1a4e74d44be25add786b537ad9f2aa381955"}, - {file = "ddtrace-2.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:ce0d07d07ba6ac751d00a2904ec69947f1077c90b029d4f409908b5d2f0dd33f"}, - {file = "ddtrace-2.3.0.tar.gz", hash = "sha256:66325456c275ea9a2ec8118a73a2ed0f0c877bc1ce2e002612ea4780ffbdc610"}, + {file = "ddtrace-2.3.1-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:556a046413024cf53ebb0256bbf957692a5e417599e04dac5793e659d08c398c"}, + {file = "ddtrace-2.3.1-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:6066f1deddb454b8e098e5a0eb53ab36d81344209fdf6bec94767358da190294"}, + {file = "ddtrace-2.3.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb2b950901845b966a7805ff49a9ad58dcd5e9c27b5b804079977a1309c5b4fb"}, + {file = "ddtrace-2.3.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:05b0da47bc98a9802faa2557e83c096868c4ef249c3d9a43f8e5daf91d1c8e4f"}, + {file = "ddtrace-2.3.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0183c5178112604eb012653fd17d0947e6e2f17325f93b1e32cc6af05ceffd0"}, + {file = "ddtrace-2.3.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:462eb671cd78780af6e42b43f2bc451537a0d283db054c175348e9b3a1fcaff4"}, + {file = "ddtrace-2.3.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:9b5284786a0912a9739665a33760f561423524e2d250c0b0bb2dedf6edba2da5"}, + {file = "ddtrace-2.3.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:dbfb1ade5725a63f21945ab8234e64e46645e98a7deb4342eddf6e86d0f9145c"}, + {file = "ddtrace-2.3.1-cp310-cp310-win32.whl", hash = "sha256:1f51732c4181e5b671a5ae3c6c786ce3b9fd2abacad2d4249d53a55564906902"}, + {file = "ddtrace-2.3.1-cp310-cp310-win_amd64.whl", hash = "sha256:0f0ae5814fbb51b4aba4d4f4b5c1fd2110790b04d4141cf4a03291566d1d5b0f"}, + {file = "ddtrace-2.3.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:24f4df55fd952182efe6815748db4675540f6fb674d9838dfa680dec1fdd176f"}, + {file = "ddtrace-2.3.1-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:04b4e476f78389021b50b3ae5c4d494bbbd033a300e93253fe1f873a67611436"}, + {file = "ddtrace-2.3.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:711978dd14c0aca7eaf90587b8608c891b82e1767fc6f2be7d82b67d56c8d580"}, + {file = "ddtrace-2.3.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bfa6b1b2698029b7b1f8cc351869397c33bff996159660a00ca254d9fcc5b78d"}, + {file = "ddtrace-2.3.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0dd7295921009ccc61f5325cc3d30fc6182396fc8e598975b372bdf94fd16077"}, + {file = "ddtrace-2.3.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:94aa6a2e16d05cbb2d7a9a7553ca9b638e5b200e0d80fd027179e6af0faf59a2"}, + {file = "ddtrace-2.3.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:62f67040ef16149a46c8506d92a2824d7ded39427a51947a3651d572bb7a379f"}, + {file = "ddtrace-2.3.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:02622c4b8d5497f6367d9ccad38ac8c59d46fc3373034be114474fb01b1a28e6"}, + {file = "ddtrace-2.3.1-cp311-cp311-win32.whl", hash = "sha256:1d13ec5393802a619f922fb37a9f534911f44554bd0434dfd2d8db4e8897649e"}, + {file = "ddtrace-2.3.1-cp311-cp311-win_amd64.whl", hash = "sha256:36b3427136f61d499f3fd307f97ae168a4d2728887e1922204e509a5aa72a4a3"}, + {file = "ddtrace-2.3.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:ac47d141e03c8bea3953fc5f51ac284de9ff4e6325faf2554b003ac906bc4da8"}, + {file = "ddtrace-2.3.1-cp312-cp312-macosx_11_0_x86_64.whl", hash = "sha256:dd23e10b4cac1cf26e64d4d1ec1d6e173e609a207f5520469326f5cff6c7e462"}, + {file = "ddtrace-2.3.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a31cddf750d7a28c886c194624c6be5a4475de064489002df898731f27f3d16"}, + {file = "ddtrace-2.3.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3dedd8097e58519f47f8908fe684f37c8f9722ce4b0614de78d9f39b83621dc7"}, + {file = "ddtrace-2.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:367aed800b78fb4d2af332c44d07d7126b1dbf758af422299f9a177811ec723d"}, + {file = "ddtrace-2.3.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ca4dea67facdeba44040d9af8eeff96fb9a35a2b1cff93255e33a4d7250881b9"}, + {file = "ddtrace-2.3.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:a661e133d451416741c6c2ad96baa417a1267204975bfb0d247cab748ecc3ed1"}, + {file = "ddtrace-2.3.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:556f60d6c9bbfc2da6d7f6751625fa3ae597c26bb8bbe74953db0d2d74f93b04"}, + {file = "ddtrace-2.3.1-cp312-cp312-win32.whl", hash = "sha256:261e20b9e9a363ec2dc728f8a009a2b1d3c9de4fbe07438b5600902a285bb179"}, + {file = "ddtrace-2.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:119be400024efff2f0eb66216b2aa3d2a700cd9b4a07605f7f9c94eb5e4b4cb5"}, + {file = "ddtrace-2.3.1-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:a66d0e0cccfa2fb207fc9a4d9ca6ab235a768f130129d6bb1dd256b7b3d34305"}, + {file = "ddtrace-2.3.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c465e43b96380f09e1e8f2d0f9cb3b78b4ef2bb211f25b57c925bb79f53cb00c"}, + {file = "ddtrace-2.3.1-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c3eaaf8c5b63e07533822425b3402552c75adf091a1f0a6bf949725fa610c779"}, + {file = "ddtrace-2.3.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:600551ecd232df060203714dc1acba4809e9194fc91a7c638b68c548e92af171"}, + {file = "ddtrace-2.3.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:837232d708956a5d595a3618641c188a5844d663e0f77b1461f20c83f74a21c0"}, + {file = "ddtrace-2.3.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:ddf3043581e2424fc3d4271ee00a038651a4ec9d2610eeaa2d6645095c9f4960"}, + {file = "ddtrace-2.3.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:63c6b28096e273431da923a8dfc0f54f7d472c3c78f0a5c4c99ed7e210b9c855"}, + {file = "ddtrace-2.3.1-cp37-cp37m-win32.whl", hash = "sha256:8b09a42cc975f798bfda9b8d8bf5c8c813022bfcf48b9e0e5e90caf4cf33ee8f"}, + {file = "ddtrace-2.3.1-cp37-cp37m-win_amd64.whl", hash = "sha256:66b49153c85423d5e99b1f364cc3b4a3ffedf35be0f3eb840f3bacd7c58100e8"}, + {file = "ddtrace-2.3.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:81f0bd1d50c8fc7d8a96e38f746ca4421fa3b52991f0df44e5e9faeb5a934c2b"}, + {file = "ddtrace-2.3.1-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:37d600d582a5046f82cf77ae9247cf15cf62cf23c15739c5f23c30db2aa092c9"}, + {file = "ddtrace-2.3.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:60a62cfa22695cb1392c617910fb389c7240fa9dae0b5792bd87ff3ae82d2c45"}, + {file = "ddtrace-2.3.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1bdf55fa4a842f9786ca30434b31bf6f877e95af86b6fb7a5a540ce592f566b7"}, + {file = "ddtrace-2.3.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63032c6a76173cab03c021e65c1997a12c0c571263caf00ec18b82c2293c49be"}, + {file = "ddtrace-2.3.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:516b830e52bc8ac2988f11a06a6c6a5296f73b119e99e8ee55a34e531389acea"}, + {file = "ddtrace-2.3.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:86e7764759043439c3f672f998f60bb9118fc4a6d7f603c762b125471b17f549"}, + {file = "ddtrace-2.3.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:87ae203dd8fa3e04f8855786ae4b2f103bc66c9f2368ee2b4e620bccdde9b34d"}, + {file = "ddtrace-2.3.1-cp38-cp38-win32.whl", hash = "sha256:f42fa2fa6f2cd9e3673a3bd7469439f5bea0ee86456706db1b50dc20b10682a6"}, + {file = "ddtrace-2.3.1-cp38-cp38-win_amd64.whl", hash = "sha256:2a3ad8e53c45c3329f939fe921714dfe76f5737e48f5b37a5422b1573a20ce44"}, + {file = "ddtrace-2.3.1-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:5adff6a5d60239e64062ad5efb72631c47c7fb8310ebea6d817f0208a7585074"}, + {file = "ddtrace-2.3.1-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:84012bc7d27dd3c4cd591bbaf0a0cc0413ebc6c838637ca5a76bacb354e2518f"}, + {file = "ddtrace-2.3.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3cc2596b26701c9e3a362195f79ddcf54b491a8ea13277ed16697da9ad943646"}, + {file = "ddtrace-2.3.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:986113f7eb4d8a8e87216b55e6cc40b578f84a5730241822af3f34cc61e42710"}, + {file = "ddtrace-2.3.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd0cdbc6d81e556b6af0875b0bb2ac77d3cf0a0c5da8faa014da1936e1e0adc2"}, + {file = "ddtrace-2.3.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9e8eb17ef8ca2fc9464216290969cff3bbf8df00860ebb219328804125b43bd1"}, + {file = "ddtrace-2.3.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:fc21e46c5e9d077022b7634ae247d15d2318cbb347f6756607dfd64ff5941797"}, + {file = "ddtrace-2.3.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:51bf7e3e5c80ef0daadd22c26e7c24c90fc4b4a7662dec1a3d9d8e0db68f3c09"}, + {file = "ddtrace-2.3.1-cp39-cp39-win32.whl", hash = "sha256:2a5f040c0eb101f82a9cd8b8b0279e8583bb0a62fd39b879197d53b71a5d6dbe"}, + {file = "ddtrace-2.3.1-cp39-cp39-win_amd64.whl", hash = "sha256:ff708683becb18771cb31ae5fb5d1430ac5031a082106e0dabac46a1fd6f832e"}, + {file = "ddtrace-2.3.1.tar.gz", hash = "sha256:273a0e98f93e7231708b30067768d80df9bc93a505de93500f30c6da24b70a7b"}, ] [package.dependencies] @@ -445,13 +445,13 @@ mypy = ["mypy"] [[package]] name = "exceptiongroup" -version = "1.1.3" +version = "1.2.0" description = "Backport of PEP 654 (exception groups)" optional = false python-versions = ">=3.7" files = [ - {file = "exceptiongroup-1.1.3-py3-none-any.whl", hash = "sha256:343280667a4585d195ca1cf9cef84a4e178c4b6cf2274caef9859782b567d5e3"}, - {file = "exceptiongroup-1.1.3.tar.gz", hash = "sha256:097acd85d473d75af5bb98e41b61ff7fe35efe6675e4f9370ec6ec5126d160e9"}, + {file = "exceptiongroup-1.2.0-py3-none-any.whl", hash = "sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14"}, + {file = "exceptiongroup-1.2.0.tar.gz", hash = "sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68"}, ] [package.extras] @@ -672,13 +672,13 @@ crt = ["botocore[crt] (>=1.20.29,<2.0a.0)"] [[package]] name = "setuptools" -version = "69.0.0" +version = "69.0.2" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "setuptools-69.0.0-py3-none-any.whl", hash = "sha256:eb03b43f23910c5fd0909cb677ad017cd9531f493d27f8b3f5316ff1fb07390e"}, - {file = "setuptools-69.0.0.tar.gz", hash = "sha256:4c65d4f7891e5b046e9146913b87098144de2ca2128fbc10135b8556a6ddd946"}, + {file = "setuptools-69.0.2-py3-none-any.whl", hash = "sha256:1e8fdff6797d3865f37397be788a4e3cba233608e9b509382a2777d25ebde7f2"}, + {file = "setuptools-69.0.2.tar.gz", hash = "sha256:735896e78a4742605974de002ac60562d286fa8051a7e2299445e8e8fbb01aa6"}, ] [package.extras] @@ -852,4 +852,4 @@ dev = ["boto3", "flake8", "httpretty", "nose2", "requests"] [metadata] lock-version = "2.0" python-versions = ">=3.7.0,<4" -content-hash = "0d5100932fcbf8aef16e44c49c8a8d6894f91ed9838bee831d6b248ad2e71e7b" +content-hash = "6687f40495eae4686955981f339f7eb3bcfbc71c7cfba272620b7aca4c45ad1b" diff --git a/pyproject.toml b/pyproject.toml index 0ebf1755..713c497d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -27,7 +27,7 @@ classifiers = [ python = ">=3.7.0,<4" datadog = ">=0.41.0,<1.0.0" wrapt = "^1.11.2" -ddtrace = ">=2.3.0" +ddtrace = ">=2.3.1" urllib3 = [ {version = "<2.0.0", python = "<3.11", optional = true}, {version = "<2.1.0", python = ">=3.11", optional = true}, From 9161c2801fea7f709941cbf4ebe49b4fd87b4eb7 Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Wed, 29 Nov 2023 15:23:16 -0800 Subject: [PATCH 059/268] Bump version to 5.84.0 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 713c497d..3829ffc7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "5.83.0" +version = "5.84.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 122e616cb6ebf141c8a62a548ea33af643cb5cf7 Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Thu, 30 Nov 2023 13:25:01 -0800 Subject: [PATCH 060/268] Use xray context span id when it exists (#401) * Extract xray context span id when it exists * Add test for no Parent in _X_AMZN_TRACE_ID. --------- Co-authored-by: Daniel Ebrahimian --- datadog_lambda/tracing.py | 2 +- tests/test_tracing.py | 25 +++++++++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 252a4717..6adf5d00 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -604,7 +604,7 @@ def set_dd_trace_py_root(trace_context_source, merge_xray_traces): ) if merge_xray_traces: xray_context = _get_xray_trace_context() - if xray_context.span_id: + if xray_context and xray_context.span_id: context.span_id = xray_context.span_id tracer.context_provider.activate(context) diff --git a/tests/test_tracing.py b/tests/test_tracing.py index 745bf5d1..3a28a2a3 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -14,6 +14,7 @@ from datadog_lambda.constants import ( SamplingPriority, TraceHeader, + TraceContextSource, XraySubsegment, ) from datadog_lambda.tracing import ( @@ -854,6 +855,30 @@ def test_mixed_parent_context_when_merging(self): self.mock_activate.assert_called() self.mock_activate.assert_has_calls([call(expected_context)]) + def test_set_dd_trace_py_root_no_span_id(self): + os.environ["_X_AMZN_TRACE_ID"] = "Root=1-5e272390-8c398be037738dc042009320" + + lambda_ctx = get_mock_context() + ctx, source, event_type = extract_dd_trace_context( + { + "headers": { + TraceHeader.TRACE_ID: "123", + TraceHeader.PARENT_ID: "321", + TraceHeader.SAMPLING_PRIORITY: "1", + } + }, + lambda_ctx, + ) + set_dd_trace_py_root(TraceContextSource.EVENT, True) + + expected_context = Context( + trace_id=123, # Trace Id from incomming context + span_id=321, # Span Id from incoming context + sampling_priority=1, # Sampling priority from incomming context + ) + self.mock_activate.assert_called() + self.mock_activate.assert_has_calls([call(expected_context)]) + class TestAuthorizerInferredSpans(unittest.TestCase): def setUp(self): From e8896d110320397f3d6d18b247fbb33d861ba9ae Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Tue, 5 Dec 2023 09:42:05 -0800 Subject: [PATCH 061/268] Ensure dummy metadata segment is json serializable. (#403) Fixes error `TypeError: Object of type Context is not JSON serializable` https://github.com/DataDog/datadog-lambda-python/issues/402 --- datadog_lambda/wrapper.py | 7 +++- tests/test_wrapper.py | 69 ++++++++++++++++++++++++++++++++++++++- 2 files changed, 74 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index 81118848..15dec7f1 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -281,7 +281,12 @@ def _before(self, event, context): # Create a Datadog X-Ray subsegment with the trace context if dd_context and trace_context_source == TraceContextSource.EVENT: create_dd_dummy_metadata_subsegment( - dd_context, XraySubsegment.TRACE_KEY + { + "trace-id": str(dd_context.trace_id), + "parent-id": str(dd_context.span_id), + "sampling-priority": str(dd_context.sampling_priority), + }, + XraySubsegment.TRACE_KEY, ) if dd_tracing_enabled: diff --git a/tests/test_wrapper.py b/tests/test_wrapper.py index 57c5de45..97547a26 100644 --- a/tests/test_wrapper.py +++ b/tests/test_wrapper.py @@ -9,7 +9,7 @@ import datadog_lambda.wrapper as wrapper from datadog_lambda.metric import lambda_metric from datadog_lambda.thread_stats_writer import ThreadStatsWriter -from ddtrace import Span +from ddtrace import Span, tracer def get_mock_context( @@ -580,3 +580,70 @@ def test_some_envs_should_depend_on_dd_tracing_enabled(self): self.assertFalse(decorator.make_inferred_span) self.assertFalse(decorator.encode_authorizer_context) self.assertFalse(decorator.decode_authorizer_context) + + +class TestLambdaWrapperWithTraceContext(unittest.TestCase): + xray_root = "1-5e272390-8c398be037738dc042009320" + xray_parent = "94ae789b969f1cc5" + xray_daemon_envvar = "localhost:1234" + xray_trace_envvar = ( + f"Root={xray_root};Parent={xray_parent};Sampled=1;Lineage=c6c5b1b9:0" + ) + + @patch( + "os.environ", + { + "AWS_XRAY_DAEMON_ADDRESS": xray_daemon_envvar, + "_X_AMZN_TRACE_ID": xray_trace_envvar, + }, + ) + def test_event_bridge_sqs_payload(self): + patcher = patch("datadog_lambda.xray.send") + mock_send = patcher.start() + self.addCleanup(patcher.stop) + + def handler(event, context): + return tracer.current_trace_context() + + wrapper.dd_tracing_enabled = True + wrapped_handler = wrapper.datadog_lambda_wrapper(handler) + + event_trace_id = 3047453991382739997 + event_parent_id = 3047453991382739997 + event = { + "headers": { + "traceparent": ( + f"00-0000000000000000{hex(event_trace_id)[2:]}-{hex(event_parent_id)[2:]}-01" + ), + "tracestate": "dd=s:1;t.dm:-1", + "x-datadog-trace-id": str(event_trace_id), + "x-datadog-parent-id": str(event_parent_id), + "x-datadog-sampling-priority": "1", + }, + } + context = get_mock_context() + + result = wrapped_handler(event, context) + aws_lambda_span = wrapped_handler.span + + self.assertIsNotNone(result) + self.assertEqual(result.trace_id, event_trace_id) + self.assertEqual(result.span_id, aws_lambda_span.span_id) + self.assertEqual(result.sampling_priority, 1) + mock_send.assert_called_once() + (_, raw_payload), _ = mock_send.call_args + payload = json.loads(raw_payload[33:]) # strip formatting prefix + self.assertEqual(self.xray_root, payload["trace_id"]) + self.assertEqual(self.xray_parent, payload["parent_id"]) + self.assertDictEqual( + { + "datadog": { + "trace": { + "trace-id": str(event_trace_id), + "parent-id": str(event_parent_id), + "sampling-priority": "1", + }, + }, + }, + payload["metadata"], + ) From cce5104b398a068d677bd632662f8342e647f53d Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Tue, 5 Dec 2023 15:06:10 -0800 Subject: [PATCH 062/268] Bump version to 5.85.0 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 3829ffc7..ebe7b338 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "5.84.0" +version = "5.85.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 5d90a9a9bb1e2d2e8672e2ac7f64d969f2bc89ad Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Mon, 11 Dec 2023 14:37:56 -0800 Subject: [PATCH 063/268] Support Python 3.12 (#392) * Update tooling and documentation to include Python3.12. * Replace deprecated assertEquals in tests. * Remove httpretty which does not support Python3.12. * Fix new flake8 errors. * Add snapshots for python3.12. --- .github/workflows/build.yml | 4 +- README.md | 2 +- datadog_lambda/tracing.py | 5 +- pyproject.toml | 5 +- scripts/add_new_region.sh | 28 +- scripts/build_layers.sh | 2 +- scripts/check_layer_size.sh | 2 +- scripts/list_layers.sh | 14 +- scripts/publish_layers.sh | 43 +- scripts/run_integration_tests.sh | 4 +- scripts/run_tests.sh | 2 +- scripts/sign_layers.sh | 2 + .../logs/async-metrics_python312.log | 1498 +++++++++++++++ .../snapshots/logs/sync-metrics_python312.log | 1669 +++++++++++++++++ tests/test_extension.py | 88 +- tests/test_wrapper.py | 10 +- 16 files changed, 3309 insertions(+), 69 deletions(-) create mode 100644 tests/integration/snapshots/logs/async-metrics_python312.log create mode 100644 tests/integration/snapshots/logs/sync-metrics_python312.log diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 97a4fbbe..13e2c322 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -41,7 +41,7 @@ jobs: strategy: max-parallel: 4 matrix: - python-version: ['3.7', '3.8', '3.9', '3.10', '3.11'] + python-version: ['3.7', '3.8', '3.9', '3.10', '3.11', '3.12'] steps: - name: Checkout @@ -68,7 +68,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - runtime-param: ['3.7', '3.8', '3.9', '3.10', '3.11'] + runtime-param: ['3.7', '3.8', '3.9', '3.10', '3.11', '3.12'] steps: - name: Checkout uses: actions/checkout@v3 diff --git a/README.md b/README.md index e3702b1b..107020a0 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ [![Slack](https://chat.datadoghq.com/badge.svg?bg=632CA6)](https://chat.datadoghq.com/) [![License](https://img.shields.io/badge/license-Apache--2.0-blue)](https://github.com/DataDog/datadog-lambda-python/blob/main/LICENSE) -Datadog Lambda Library for Python (3.7, 3.8, 3.9, 3.10, and 3.11) enables [enhanced Lambda metrics](https://docs.datadoghq.com/serverless/enhanced_lambda_metrics), [distributed tracing](https://docs.datadoghq.com/serverless/distributed_tracing), and [custom metric submission](https://docs.datadoghq.com/serverless/custom_metrics) from AWS Lambda functions. +Datadog Lambda Library for Python (3.7, 3.8, 3.9, 3.10, 3.11, and 3.12) enables [enhanced Lambda metrics](https://docs.datadoghq.com/serverless/enhanced_lambda_metrics), [distributed tracing](https://docs.datadoghq.com/serverless/distributed_tracing), and [custom metric submission](https://docs.datadoghq.com/serverless/custom_metrics) from AWS Lambda functions. ## Installation diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 6adf5d00..dc7e32b2 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -569,9 +569,8 @@ def inject_correlation_ids(): # Override the log format of the AWS provided LambdaLoggerHandler root_logger = logging.getLogger() for handler in root_logger.handlers: - if ( - handler.__class__.__name__ == "LambdaLoggerHandler" - and type(handler.formatter) == logging.Formatter + if handler.__class__.__name__ == "LambdaLoggerHandler" and isinstance( + handler.formatter, logging.Formatter ): handler.setFormatter( logging.Formatter( diff --git a/pyproject.toml b/pyproject.toml index ebe7b338..056309c1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -21,6 +21,7 @@ classifiers = [ "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", ] [tool.poetry.dependencies] @@ -37,8 +38,7 @@ boto3 = { version = "^1.28.0", optional = true } typing_extensions = {version = "^4.0", python = "<3.8"} requests = { version ="^2.22.0", optional = true } nose2 = { version= "^0.9.1", optional = true } -flake8 = { version = "^3.7.9", optional = true } -httpretty = {version = "^0.9.7", optional = true } +flake8 = { version = "^5.0.4", optional = true } [tool.poetry.extras] @@ -47,7 +47,6 @@ dev = [ "requests", "nose2", "flake8", - "httpretty", ] [build-system] diff --git a/scripts/add_new_region.sh b/scripts/add_new_region.sh index 1b1753cf..7d113446 100755 --- a/scripts/add_new_region.sh +++ b/scripts/add_new_region.sh @@ -12,8 +12,32 @@ set -e OLD_REGION='us-east-1' -LAYER_NAMES=("Datadog-Python37" "Datadog-Python38" "Datadog-Python38-ARM" "Datadog-Python39" "Datadog-Python39-ARM" "Datadog-Python310" "Datadog-Python310-ARM" "Datadog-Python311" "Datadog-Python311-ARM") -PYTHON_VERSIONS_FOR_AWS_CLI=("python3.7" "python3.8" "python3.8" "python3.9" "python3.9" "python3.10" "python3.10" "python3.11" "python3.11") +LAYER_NAMES=( + "Datadog-Python37" + "Datadog-Python38" + "Datadog-Python38-ARM" + "Datadog-Python39" + "Datadog-Python39-ARM" + "Datadog-Python310" + "Datadog-Python310-ARM" + "Datadog-Python311" + "Datadog-Python311-ARM" + "Datadog-Python312" + "Datadog-Python312-ARM" +) +PYTHON_VERSIONS_FOR_AWS_CLI=( + "python3.7" + "python3.8" + "python3.8" + "python3.9" + "python3.9" + "python3.10" + "python3.10" + "python3.11" + "python3.11" + "python3.12" + "python3.12" +) NEW_REGION=$1 publish_layer() { diff --git a/scripts/build_layers.sh b/scripts/build_layers.sh index 976ba5d1..bae435b2 100755 --- a/scripts/build_layers.sh +++ b/scripts/build_layers.sh @@ -14,7 +14,7 @@ set -e LAYER_DIR=".layers" LAYER_FILES_PREFIX="datadog_lambda_py" -AVAILABLE_PYTHON_VERSIONS=("3.7" "3.8" "3.9" "3.10" "3.11") +AVAILABLE_PYTHON_VERSIONS=("3.7" "3.8" "3.9" "3.10" "3.11" "3.12") # Determine which Python versions to build layers for if [ -z "$PYTHON_VERSION" ]; then diff --git a/scripts/check_layer_size.sh b/scripts/check_layer_size.sh index 5d839908..4ef2c10b 100755 --- a/scripts/check_layer_size.sh +++ b/scripts/check_layer_size.sh @@ -14,7 +14,7 @@ MAX_LAYER_UNCOMPRESSED_SIZE_KB=$(expr 24 \* 1024) LAYER_FILES_PREFIX="datadog_lambda_py" LAYER_DIR=".layers" -VERSIONS=("3.7" "3.8" "3.9" "3.10" "3.11") +VERSIONS=("3.7" "3.8" "3.9" "3.10" "3.11" "3.12") for version in "${VERSIONS[@]}" do diff --git a/scripts/list_layers.sh b/scripts/list_layers.sh index c0b541af..25058c5b 100755 --- a/scripts/list_layers.sh +++ b/scripts/list_layers.sh @@ -10,7 +10,19 @@ set -e -LAYER_NAMES=("Datadog-Python37" "Datadog-Python38" "Datadog-Python38-ARM" "Datadog-Python39" "Datadog-Python39-ARM" "Datadog-Python310" "Datadog-Python310-ARM" "Datadog-Python311" "Datadog-Python311-ARM") +LAYER_NAMES=( + "Datadog-Python37" + "Datadog-Python38" + "Datadog-Python38-ARM" + "Datadog-Python39" + "Datadog-Python39-ARM" + "Datadog-Python310" + "Datadog-Python310-ARM" + "Datadog-Python311" + "Datadog-Python311-ARM" + "Datadog-Python312" + "Datadog-Python312-ARM" +) AVAILABLE_REGIONS=$(aws ec2 describe-regions | jq -r '.[] | .[] | .RegionName') LAYERS_MISSING_REGIONS=() diff --git a/scripts/publish_layers.sh b/scripts/publish_layers.sh index bd8d3a7e..7541d47d 100755 --- a/scripts/publish_layers.sh +++ b/scripts/publish_layers.sh @@ -13,10 +13,45 @@ set -e # Makes sure any subprocesses will be terminated with this process trap "pkill -P $$; exit 1;" INT -PYTHON_VERSIONS_FOR_AWS_CLI=("python3.7" "python3.8" "python3.8" "python3.9" "python3.9" "python3.10" "python3.10" "python3.11" "python3.11") -LAYER_PATHS=(".layers/datadog_lambda_py-amd64-3.7.zip" ".layers/datadog_lambda_py-amd64-3.8.zip" ".layers/datadog_lambda_py-arm64-3.8.zip" ".layers/datadog_lambda_py-amd64-3.9.zip" ".layers/datadog_lambda_py-arm64-3.9.zip" ".layers/datadog_lambda_py-amd64-3.10.zip" ".layers/datadog_lambda_py-arm64-3.10.zip" ".layers/datadog_lambda_py-amd64-3.11.zip" ".layers/datadog_lambda_py-arm64-3.11.zip") -AVAILABLE_LAYERS=("Datadog-Python37" "Datadog-Python38" "Datadog-Python38-ARM" "Datadog-Python39" "Datadog-Python39-ARM" "Datadog-Python310" "Datadog-Python310-ARM" "Datadog-Python311" "Datadog-Python311-ARM") -ARCHS=("amd64" "amd64" "amd64""amd64" "amd64" "arm64" "amd64" "arm64" "amd64" "arm64") +PYTHON_VERSIONS_FOR_AWS_CLI=( + "python3.7" + "python3.8" + "python3.8" + "python3.9" + "python3.9" + "python3.10" + "python3.10" + "python3.11" + "python3.11" + "python3.12" + "python3.12" +) +LAYER_PATHS=( + ".layers/datadog_lambda_py-amd64-3.7.zip" + ".layers/datadog_lambda_py-amd64-3.8.zip" + ".layers/datadog_lambda_py-arm64-3.8.zip" + ".layers/datadog_lambda_py-amd64-3.9.zip" + ".layers/datadog_lambda_py-arm64-3.9.zip" + ".layers/datadog_lambda_py-amd64-3.10.zip" + ".layers/datadog_lambda_py-arm64-3.10.zip" + ".layers/datadog_lambda_py-amd64-3.11.zip" + ".layers/datadog_lambda_py-arm64-3.11.zip" + ".layers/datadog_lambda_py-amd64-3.12.zip" + ".layers/datadog_lambda_py-arm64-3.12.zip" +) +AVAILABLE_LAYERS=( + "Datadog-Python37" + "Datadog-Python38" + "Datadog-Python38-ARM" + "Datadog-Python39" + "Datadog-Python39-ARM" + "Datadog-Python310" + "Datadog-Python310-ARM" + "Datadog-Python311" + "Datadog-Python311-ARM" + "Datadog-Python312" + "Datadog-Python312-ARM" +) AVAILABLE_REGIONS=$(aws ec2 describe-regions | jq -r '.[] | .[] | .RegionName') BATCH_SIZE=60 diff --git a/scripts/run_integration_tests.sh b/scripts/run_integration_tests.sh index ebda6fde..beb14706 100755 --- a/scripts/run_integration_tests.sh +++ b/scripts/run_integration_tests.sh @@ -11,7 +11,6 @@ set -e # These values need to be in sync with serverless.yml, where there needs to be a function # defined for every handler_runtime combination LAMBDA_HANDLERS=("async-metrics" "sync-metrics") -RUNTIMES=("python37" "python38" "python39" "python310" "python311") LOGS_WAIT_SECONDS=20 @@ -33,8 +32,9 @@ python38=("python3.8" "3.8" $(xxd -l 4 -c 4 -p < /dev/random)) python39=("python3.9" "3.9" $(xxd -l 4 -c 4 -p < /dev/random)) python310=("python3.10" "3.10" $(xxd -l 4 -c 4 -p < /dev/random)) python311=("python3.11" "3.11" $(xxd -l 4 -c 4 -p < /dev/random)) +python312=("python3.12" "3.12" $(xxd -l 4 -c 4 -p < /dev/random)) -PARAMETERS_SETS=("python37" "python38" "python39" "python310" "python311") +PARAMETERS_SETS=("python37" "python38" "python39" "python310" "python311" "python312") if [ -z "$RUNTIME_PARAM" ]; then echo "Python version not specified, running for all python versions." diff --git a/scripts/run_tests.sh b/scripts/run_tests.sh index 193a6d00..86127f5a 100755 --- a/scripts/run_tests.sh +++ b/scripts/run_tests.sh @@ -8,7 +8,7 @@ # Run unit tests in Docker set -e -PYTHON_VERSIONS=("3.7" "3.8" "3.9" "3.10" "3.11") +PYTHON_VERSIONS=("3.7" "3.8" "3.9" "3.10" "3.11" "3.12") for python_version in "${PYTHON_VERSIONS[@]}" do diff --git a/scripts/sign_layers.sh b/scripts/sign_layers.sh index 3c9aa662..07085a0e 100755 --- a/scripts/sign_layers.sh +++ b/scripts/sign_layers.sh @@ -18,6 +18,8 @@ LAYER_FILES=( "datadog_lambda_py-arm64-3.10.zip" "datadog_lambda_py-amd64-3.11.zip" "datadog_lambda_py-arm64-3.11.zip" + "datadog_lambda_py-amd64-3.12.zip" + "datadog_lambda_py-arm64-3.12.zip" ) SIGNING_PROFILE_NAME="DatadogLambdaSigningProfile" diff --git a/tests/integration/snapshots/logs/async-metrics_python312.log b/tests/integration/snapshots/logs/async-metrics_python312.log new file mode 100644 index 00000000..3bb8ac78 --- /dev/null +++ b/tests/integration/snapshots/logs/async-metrics_python312.log @@ -0,0 +1,1498 @@ +INIT_START Runtime Version: python:3.12.vX Runtime Version ARN: arn:aws:lambda:eu-west-1:XXXX:eu-west-1 +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python312", + "resource:integration-tests-python-XXXX-async-metrics_python312", + "cold_start:true", + "memorysize:1024", + "runtime:python3.12", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "XXXX.execute-api.us-east-2.amazonaws.com", + "resource": "GET /", + "name": "aws.apigateway", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.apigateway.rest", + "http.url": "XXXX.execute-api.us-east-2.amazonaws.com/", + "endpoint": "/", + "http.method": "GET", + "resource_names": "GET /", + "apiid": "XXXX", + "apiname": "XXXX", + "stage": "Prod", + "request_id": "XXXX", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "http.status_code": "200", + "peer.service": "integration-tests-python", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python312", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "true", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python312", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python312", + "functionname": "integration-tests-python-XXXX-async-metrics_python312", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "api-gateway", + "function_trigger.event_source_arn": "XXXX", + "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", + "http.url_details.path": "/Prod/", + "http.method": "GET", + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms (init: XXXX ms) Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python312", + "resource:integration-tests-python-XXXX-async-metrics_python312", + "cold_start:false", + "memorysize:1024", + "runtime:python3.12", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "dynamodb", + "resource": "ExampleTableWithStream", + "name": "aws.dynamodb", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.dynamodb", + "resource_names": "ExampleTableWithStream", + "tablename": "ExampleTableWithStream", + "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", + "event_id": "XXXX", + "event_name": "INSERT", + "event_version": "1.1", + "stream_view_type": "NEW_AND_OLD_IMAGES", + "size_bytes": "26", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python312", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python312", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python312", + "functionname": "integration-tests-python-XXXX-async-metrics_python312", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "dynamodb", + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python312", + "resource:integration-tests-python-XXXX-async-metrics_python312", + "cold_start:false", + "memorysize:1024", + "runtime:python3.12", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "eventbridge", + "resource": "eventbridge.custom.event.sender", + "name": "aws.eventbridge", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.eventbridge", + "resource_names": "eventbridge.custom.event.sender", + "detail_type": "testdetail", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python312", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python312", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python312", + "functionname": "integration-tests-python-XXXX-async-metrics_python312", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "eventbridge", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python312", + "resource:integration-tests-python-XXXX-async-metrics_python312", + "cold_start:false", + "memorysize:1024", + "runtime:python3.12", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", + "resource": "GET /httpapi/get", + "name": "aws.httpapi", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.httpapi", + "endpoint": "/httpapi/get", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "http.method": "GET", + "http.protocol": "HTTP/1.1", + "http.source_ip": "XXXX", + "http.user_agent": "XXXX/7.64.1", + "resource_names": "GET /httpapi/get", + "request_id": "XXXX", + "apiid": "XXXX", + "apiname": "XXXX", + "stage": "$default", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "http.status_code": "200", + "peer.service": "integration-tests-python", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python312", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python312", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python312", + "functionname": "integration-tests-python-XXXX-async-metrics_python312", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "api-gateway", + "function_trigger.event_source_arn": "XXXX$default", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.url_details.path": "/httpapi/get", + "http.method": "GET", + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python312", + "resource:integration-tests-python-XXXX-async-metrics_python312", + "cold_start:false", + "memorysize:1024", + "runtime:python3.12", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "kinesis", + "resource": "EXAMPLE", + "name": "aws.kinesis", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.kinesis", + "resource_names": "EXAMPLE", + "streamname": "EXAMPLE", + "shardid": "shardId-XXXX", + "event_source_arn": "arn:aws:kinesis:EXAMPLE", + "event_id": "XXXX", + "event_name": "aws:kinesis:record", + "event_version": "1.0", + "partition_key": "XXXX", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python312", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python312", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python312", + "functionname": "integration-tests-python-XXXX-async-metrics_python312", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "kinesis", + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python312", + "resource:integration-tests-python-XXXX-async-metrics_python312", + "cold_start:false", + "memorysize:1024", + "runtime:python3.12", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "s3", + "resource": "example-bucket", + "name": "aws.s3", + "error": 0, + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.s3", + "resource_names": "example-bucket", + "event_name": "ObjectCreated:Put", + "bucketname": "example-bucket", + "bucket_arn": "arn:aws:s3:::example-bucket", + "object_key": "test/key", + "object_size": "1024", + "object_etag": "XXXX", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python312", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python312", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python312", + "functionname": "integration-tests-python-XXXX-async-metrics_python312", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "s3", + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python312", + "resource:integration-tests-python-XXXX-async-metrics_python312", + "cold_start:false", + "memorysize:1024", + "runtime:python3.12", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "sns", + "resource": "sns-lambda", + "name": "aws.sns", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.sns", + "resource_names": "sns-lambda", + "topicname": "sns-lambda", + "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", + "message_id": "XXXX", + "type": "Notification", + "subject": "TestInvoke", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python312", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python312", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python312", + "functionname": "integration-tests-python-XXXX-async-metrics_python312", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "sns", + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python312", + "resource:integration-tests-python-XXXX-async-metrics_python312", + "cold_start:false", + "memorysize:1024", + "runtime:python3.12", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "sqs", + "resource": "my-queue", + "name": "aws.sqs", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.sqs", + "resource_names": "my-queue", + "queuename": "my-queue", + "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", + "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", + "sender_id": "AIDAIENQZJOLO23YVJ4VO", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python312", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python312", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python312", + "functionname": "integration-tests-python-XXXX-async-metrics_python312", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "sqs", + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python312", + "resource:integration-tests-python-XXXX-async-metrics_python312", + "cold_start:false", + "memorysize:1024", + "runtime:python3.12", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", + "resource": "$default", + "name": "aws.apigateway.websocket", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.apigateway.websocket", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com$default", + "endpoint": "$default", + "resource_names": "$default", + "apiid": "XXXX", + "apiname": "XXXX", + "stage": "dev", + "request_id": "XXXX", + "connection_id": "XXXX=", + "event_type": "MESSAGE", + "message_direction": "IN", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "http.status_code": "200", + "peer.service": "integration-tests-python", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python312", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python312", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python312", + "functionname": "integration-tests-python-XXXX-async-metrics_python312", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "api-gateway", + "function_trigger.event_source_arn": "XXXX", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB diff --git a/tests/integration/snapshots/logs/sync-metrics_python312.log b/tests/integration/snapshots/logs/sync-metrics_python312.log new file mode 100644 index 00000000..6b33fcb9 --- /dev/null +++ b/tests/integration/snapshots/logs/sync-metrics_python312.log @@ -0,0 +1,1669 @@ +INIT_START Runtime Version: python:3.12.vX Runtime Version ARN: arn:aws:lambda:eu-west-1:XXXX:eu-west-1 +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python312", + "resource:integration-tests-python-XXXX-sync-metrics_python312", + "cold_start:true", + "memorysize:1024", + "runtime:python3.12", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "XXXX.execute-api.us-east-2.amazonaws.com", + "resource": "GET /", + "name": "aws.apigateway", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.apigateway.rest", + "http.url": "XXXX.execute-api.us-east-2.amazonaws.com/", + "endpoint": "/", + "http.method": "GET", + "resource_names": "GET /", + "apiid": "XXXX", + "apiname": "XXXX", + "stage": "Prod", + "request_id": "XXXX", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "http.status_code": "200", + "peer.service": "integration-tests-python", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python312", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "true", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python312", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python312", + "functionname": "integration-tests-python-XXXX-sync-metrics_python312", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "api-gateway", + "function_trigger.event_source_arn": "XXXX", + "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", + "http.url_details.path": "/Prod/", + "http.method": "GET", + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms (init: XXXX ms) Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python312", + "resource:integration-tests-python-XXXX-sync-metrics_python312", + "cold_start:false", + "memorysize:1024", + "runtime:python3.12", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "dynamodb", + "resource": "ExampleTableWithStream", + "name": "aws.dynamodb", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.dynamodb", + "resource_names": "ExampleTableWithStream", + "tablename": "ExampleTableWithStream", + "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", + "event_id": "XXXX", + "event_name": "INSERT", + "event_version": "1.1", + "stream_view_type": "NEW_AND_OLD_IMAGES", + "size_bytes": "26", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python312", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python312", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python312", + "functionname": "integration-tests-python-XXXX-sync-metrics_python312", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "dynamodb", + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python312", + "resource:integration-tests-python-XXXX-sync-metrics_python312", + "cold_start:false", + "memorysize:1024", + "runtime:python3.12", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "eventbridge", + "resource": "eventbridge.custom.event.sender", + "name": "aws.eventbridge", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.eventbridge", + "resource_names": "eventbridge.custom.event.sender", + "detail_type": "testdetail", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python312", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python312", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python312", + "functionname": "integration-tests-python-XXXX-sync-metrics_python312", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "eventbridge", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python312", + "resource:integration-tests-python-XXXX-sync-metrics_python312", + "cold_start:false", + "memorysize:1024", + "runtime:python3.12", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", + "resource": "GET /httpapi/get", + "name": "aws.httpapi", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.httpapi", + "endpoint": "/httpapi/get", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "http.method": "GET", + "http.protocol": "HTTP/1.1", + "http.source_ip": "XXXX", + "http.user_agent": "XXXX/7.64.1", + "resource_names": "GET /httpapi/get", + "request_id": "XXXX", + "apiid": "XXXX", + "apiname": "XXXX", + "stage": "$default", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "http.status_code": "200", + "peer.service": "integration-tests-python", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python312", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python312", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python312", + "functionname": "integration-tests-python-XXXX-sync-metrics_python312", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "api-gateway", + "function_trigger.event_source_arn": "XXXX$default", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.url_details.path": "/httpapi/get", + "http.method": "GET", + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python312", + "resource:integration-tests-python-XXXX-sync-metrics_python312", + "cold_start:false", + "memorysize:1024", + "runtime:python3.12", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "kinesis", + "resource": "EXAMPLE", + "name": "aws.kinesis", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.kinesis", + "resource_names": "EXAMPLE", + "streamname": "EXAMPLE", + "shardid": "shardId-XXXX", + "event_source_arn": "arn:aws:kinesis:EXAMPLE", + "event_id": "XXXX", + "event_name": "aws:kinesis:record", + "event_version": "1.0", + "partition_key": "XXXX", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python312", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python312", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python312", + "functionname": "integration-tests-python-XXXX-sync-metrics_python312", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "kinesis", + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python312", + "resource:integration-tests-python-XXXX-sync-metrics_python312", + "cold_start:false", + "memorysize:1024", + "runtime:python3.12", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "s3", + "resource": "example-bucket", + "name": "aws.s3", + "error": 0, + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.s3", + "resource_names": "example-bucket", + "event_name": "ObjectCreated:Put", + "bucketname": "example-bucket", + "bucket_arn": "arn:aws:s3:::example-bucket", + "object_key": "test/key", + "object_size": "1024", + "object_etag": "XXXX", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python312", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python312", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python312", + "functionname": "integration-tests-python-XXXX-sync-metrics_python312", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "s3", + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python312", + "resource:integration-tests-python-XXXX-sync-metrics_python312", + "cold_start:false", + "memorysize:1024", + "runtime:python3.12", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "sns", + "resource": "sns-lambda", + "name": "aws.sns", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.sns", + "resource_names": "sns-lambda", + "topicname": "sns-lambda", + "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", + "message_id": "XXXX", + "type": "Notification", + "subject": "TestInvoke", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python312", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python312", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python312", + "functionname": "integration-tests-python-XXXX-sync-metrics_python312", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "sns", + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python312", + "resource:integration-tests-python-XXXX-sync-metrics_python312", + "cold_start:false", + "memorysize:1024", + "runtime:python3.12", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "sqs", + "resource": "my-queue", + "name": "aws.sqs", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.sqs", + "resource_names": "my-queue", + "queuename": "my-queue", + "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", + "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", + "sender_id": "AIDAIENQZJOLO23YVJ4VO", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python312", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python312", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python312", + "functionname": "integration-tests-python-XXXX-sync-metrics_python312", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "sqs", + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python312", + "resource:integration-tests-python-XXXX-sync-metrics_python312", + "cold_start:false", + "memorysize:1024", + "runtime:python3.12", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", + "resource": "$default", + "name": "aws.apigateway.websocket", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.apigateway.websocket", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com$default", + "endpoint": "$default", + "resource_names": "$default", + "apiid": "XXXX", + "apiname": "XXXX", + "stage": "dev", + "request_id": "XXXX", + "connection_id": "XXXX=", + "event_type": "MESSAGE", + "message_direction": "IN", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "http.status_code": "200", + "peer.service": "integration-tests-python", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python312", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python312", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python312", + "functionname": "integration-tests-python-XXXX-sync-metrics_python312", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "api-gateway", + "function_trigger.event_source_arn": "XXXX", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB diff --git a/tests/test_extension.py b/tests/test_extension.py index 8882fa8f..5ecb0e36 100644 --- a/tests/test_extension.py +++ b/tests/test_extension.py @@ -1,6 +1,7 @@ +import http.server import os +import threading import unittest -import httpretty from unittest.mock import patch @@ -11,61 +12,62 @@ ) -def exceptionCallback(request, uri, headers): - raise Exception("oopsy!") +class MockServer(threading.Thread): + def __init__(self): + super().__init__() + self.daemon = True + self.raises = False + self.called = False + + class handler(http.server.BaseHTTPRequestHandler): + def do_POST(sf): + self.called = True + sf.send_response(500 if self.raises else 200) + sf.end_headers() + + do_GET = do_POST + + self.server = http.server.HTTPServer(("127.0.0.1", 8124), handler) + + def run(self): + self.server.serve_forever() + + def stop(self): + self.server.shutdown() + self.server.server_close() + self.join(timeout=0) class TestLambdaExtension(unittest.TestCase): + def setUp(self): + self.server = MockServer() + self.server.start() + + def tearDown(self): + self.server.stop() + @patch("datadog_lambda.extension.EXTENSION_PATH", os.path.abspath(__file__)) def test_is_extension_running_true(self): - httpretty.enable() - last_request = httpretty.last_request() - httpretty.register_uri(httpretty.GET, "http://127.0.0.1:8124/lambda/hello") - assert is_extension_running() == True - assert httpretty.last_request() != last_request - httpretty.disable() + assert is_extension_running() + assert self.server.called def test_is_extension_running_file_not_found(self): - httpretty.enable() - last_request = httpretty.last_request() - httpretty.register_uri(httpretty.GET, "http://127.0.0.1:8124/lambda/hello") - assert is_extension_running() == False - assert httpretty.last_request() == last_request - httpretty.disable() + assert not is_extension_running() + assert not self.server.called @patch("datadog_lambda.extension.EXTENSION_PATH", os.path.abspath(__file__)) def test_is_extension_running_http_failure(self): - httpretty.enable() - last_request = httpretty.last_request() - httpretty.register_uri( - httpretty.GET, - "http://127.0.0.1:8124/lambda/hello", - status=503, - body=exceptionCallback, - ) - assert is_extension_running() == False - assert httpretty.last_request() != last_request - httpretty.disable() + self.server.raises = True + assert not is_extension_running() + assert self.server.called @patch("datadog_lambda.extension.EXTENSION_PATH", os.path.abspath(__file__)) def test_flush_ok(self): - httpretty.enable() - last_request = httpretty.last_request() - httpretty.register_uri(httpretty.POST, "http://127.0.0.1:8124/lambda/flush") - assert flush_extension() == True - assert httpretty.last_request() != last_request - httpretty.disable() + assert flush_extension() + assert self.server.called @patch("datadog_lambda.extension.EXTENSION_PATH", os.path.abspath(__file__)) def test_flush_not_ok(self): - httpretty.enable() - last_request = httpretty.last_request() - httpretty.register_uri( - httpretty.POST, - "http://127.0.0.1:8124/lambda/flush", - status=503, - body=exceptionCallback, - ) - assert flush_extension() == False - assert httpretty.last_request() != last_request - httpretty.disable() + self.server.raises = True + assert not flush_extension() + assert self.server.called diff --git a/tests/test_wrapper.py b/tests/test_wrapper.py index 97547a26..29c842d2 100644 --- a/tests/test_wrapper.py +++ b/tests/test_wrapper.py @@ -550,10 +550,10 @@ def lambda_handler(event, context): raw_inject_data = result["context"]["_datadog"] self.assertIsInstance(raw_inject_data, str) inject_data = json.loads(base64.b64decode(raw_inject_data)) - self.assertEquals(inject_data[TraceHeader.PARENT_ID], "123") - self.assertEquals(inject_data[TraceHeader.TRACE_ID], "456") - self.assertEquals(inject_data[TraceHeader.SAMPLING_PRIORITY], "1") - self.assertEquals(result["context"]["scope"], "still here") + self.assertEqual(inject_data[TraceHeader.PARENT_ID], "123") + self.assertEqual(inject_data[TraceHeader.TRACE_ID], "456") + self.assertEqual(inject_data[TraceHeader.SAMPLING_PRIORITY], "1") + self.assertEqual(result["context"]["scope"], "still here") @patch("traceback.print_exc") def test_different_return_type_no_error(self, MockPrintExc): @@ -566,7 +566,7 @@ def return_type_test(event, context): return test_result result = return_type_test({}, mock_context) - self.assertEquals(result, test_result) + self.assertEqual(result, test_result) self.assertFalse(MockPrintExc.called) From 8d38aa90cf724ed5a648b590b852d84160a699f1 Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Tue, 12 Dec 2023 13:49:07 -0500 Subject: [PATCH 064/268] feat: Drop py3.7 (#395) * feat: Drop py3.7 from build script as we stopped publishing it a while ago * feat: more drops * feat: Remove python 3.7 * feat: Remove more 3.7 refs * feat: More 3.7 refs dropped * Feat: Mention deprecation in readme. Remove 3.7 from contributing.md * feat: Remove version_info --- .github/workflows/build.yml | 4 +- .github/workflows/check-size.yml | 2 +- CONTRIBUTING.md | 2 +- README.md | 5 +- datadog_lambda/cold_start.py | 13 +- pyproject.toml | 3 +- scripts/add_new_region.sh | 2 - scripts/build_layers.sh | 10 +- scripts/check_layer_size.sh | 2 +- scripts/list_layers.sh | 1 - scripts/publish_layers.sh | 3 - scripts/run_integration_tests.sh | 3 +- scripts/run_tests.sh | 2 +- scripts/sign_layers.sh | 1 - .../snapshots/logs/async-metrics_python37.log | 1498 --------------- .../snapshots/logs/sync-metrics_python37.log | 1669 ----------------- tests/test_tags.py | 4 +- 17 files changed, 24 insertions(+), 3200 deletions(-) delete mode 100644 tests/integration/snapshots/logs/async-metrics_python37.log delete mode 100644 tests/integration/snapshots/logs/sync-metrics_python37.log diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 13e2c322..7092388b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -41,7 +41,7 @@ jobs: strategy: max-parallel: 4 matrix: - python-version: ['3.7', '3.8', '3.9', '3.10', '3.11', '3.12'] + python-version: ['3.8', '3.9', '3.10', '3.11', '3.12'] steps: - name: Checkout @@ -68,7 +68,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - runtime-param: ['3.7', '3.8', '3.9', '3.10', '3.11', '3.12'] + runtime-param: ['3.8', '3.9', '3.10', '3.11', '3.12'] steps: - name: Checkout uses: actions/checkout@v3 diff --git a/.github/workflows/check-size.yml b/.github/workflows/check-size.yml index c056d09b..9a60bfe9 100644 --- a/.github/workflows/check-size.yml +++ b/.github/workflows/check-size.yml @@ -12,7 +12,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v4 with: - python-version: 3.7 + python-version: 3.12 - name: Install Crossbuild Deps run: | diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index befae3ca..3b57858c 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -24,7 +24,7 @@ We love pull requests. For new features, consider opening an issue to discuss th ./scripts/build_layers.sh # Publish the a testing layer to your own AWS account, and the ARN will be returned - # Example: VERSION=1 REGIONS=us-east-1 LAYERS=Datadog-Python37 ./scripts/publish_layers.sh + # Example: VERSION=1 REGIONS=us-east-1 LAYERS=Datadog-Python312 ./scripts/publish_layers.sh VERSION= REGIONS= LAYERS= ./scripts/publish_layers.sh ``` diff --git a/README.md b/README.md index 107020a0..39bc4ce0 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ [![Slack](https://chat.datadoghq.com/badge.svg?bg=632CA6)](https://chat.datadoghq.com/) [![License](https://img.shields.io/badge/license-Apache--2.0-blue)](https://github.com/DataDog/datadog-lambda-python/blob/main/LICENSE) -Datadog Lambda Library for Python (3.7, 3.8, 3.9, 3.10, 3.11, and 3.12) enables [enhanced Lambda metrics](https://docs.datadoghq.com/serverless/enhanced_lambda_metrics), [distributed tracing](https://docs.datadoghq.com/serverless/distributed_tracing), and [custom metric submission](https://docs.datadoghq.com/serverless/custom_metrics) from AWS Lambda functions. +Datadog Lambda Library for Python (3.8, 3.9, 3.10, 3.11, and 3.12) enables [enhanced Lambda metrics](https://docs.datadoghq.com/serverless/enhanced_lambda_metrics), [distributed tracing](https://docs.datadoghq.com/serverless/distributed_tracing), and [custom metric submission](https://docs.datadoghq.com/serverless/custom_metrics) from AWS Lambda functions. ## Installation @@ -47,6 +47,9 @@ The Continuous Profiler works by spawning a thread which periodically wakes up a ## Major Version Notes +### 5.x / Layer version 86+ +- Python3.7 support has been [deprecated](https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html) by AWS, and support removed from this library. + ### 4.x / Layer version 61+ - Python3.6 support has been [deprecated](https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html) by AWS, and support removed from this library. diff --git a/datadog_lambda/cold_start.py b/datadog_lambda/cold_start.py index 0a3ba34d..9da02e78 100644 --- a/datadog_lambda/cold_start.py +++ b/datadog_lambda/cold_start.py @@ -144,14 +144,13 @@ def initialize_cold_start_tracing(): and os.environ.get("DD_TRACE_ENABLED", "true").lower() == "true" and os.environ.get("DD_COLD_START_TRACING", "true").lower() == "true" ): - from sys import version_info, meta_path + from sys import meta_path - if version_info >= (3, 7): # current implementation only support version > 3.7 - for importer in meta_path: - try: - importer.find_spec = wrap_find_spec(importer.find_spec) - except Exception: - pass + for importer in meta_path: + try: + importer.find_spec = wrap_find_spec(importer.find_spec) + except Exception: + pass class ColdStartTracer(object): diff --git a/pyproject.toml b/pyproject.toml index 056309c1..25bfb337 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -16,7 +16,6 @@ packages = [ { include = "datadog_lambda" } ] classifiers = [ - "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", @@ -25,7 +24,7 @@ classifiers = [ ] [tool.poetry.dependencies] -python = ">=3.7.0,<4" +python = ">=3.8.0,<4" datadog = ">=0.41.0,<1.0.0" wrapt = "^1.11.2" ddtrace = ">=2.3.1" diff --git a/scripts/add_new_region.sh b/scripts/add_new_region.sh index 7d113446..434632d9 100755 --- a/scripts/add_new_region.sh +++ b/scripts/add_new_region.sh @@ -13,7 +13,6 @@ set -e OLD_REGION='us-east-1' LAYER_NAMES=( - "Datadog-Python37" "Datadog-Python38" "Datadog-Python38-ARM" "Datadog-Python39" @@ -26,7 +25,6 @@ LAYER_NAMES=( "Datadog-Python312-ARM" ) PYTHON_VERSIONS_FOR_AWS_CLI=( - "python3.7" "python3.8" "python3.8" "python3.9" diff --git a/scripts/build_layers.sh b/scripts/build_layers.sh index bae435b2..ebd0eed3 100755 --- a/scripts/build_layers.sh +++ b/scripts/build_layers.sh @@ -7,14 +7,14 @@ # Builds datadog-lambda-python layers for Lambda functions -# Usage: PYTHON_VERSION=3.7 ./build_layers.sh +# Usage: PYTHON_VERSION=3.11 ./build_layers.sh # If PYTHON_VERSION is not specified, all versions will be built. set -e LAYER_DIR=".layers" LAYER_FILES_PREFIX="datadog_lambda_py" -AVAILABLE_PYTHON_VERSIONS=("3.7" "3.8" "3.9" "3.10" "3.11" "3.12") +AVAILABLE_PYTHON_VERSIONS=("3.8" "3.9" "3.10" "3.11" "3.12") # Determine which Python versions to build layers for if [ -z "$PYTHON_VERSION" ]; then @@ -68,10 +68,8 @@ mkdir $LAYER_DIR for python_version in "${PYTHON_VERSIONS[@]}" do - if [ "$python_version" != "3.7" ]; then - echo "Building layer for Python ${python_version} arch=arm64" - docker_build_zip ${python_version} $LAYER_DIR/${LAYER_FILES_PREFIX}-arm64-${python_version}.zip arm64 - fi + echo "Building layer for Python ${python_version} arch=arm64" + docker_build_zip ${python_version} $LAYER_DIR/${LAYER_FILES_PREFIX}-arm64-${python_version}.zip arm64 echo "Building layer for Python ${python_version} arch=amd64" docker_build_zip ${python_version} $LAYER_DIR/${LAYER_FILES_PREFIX}-amd64-${python_version}.zip amd64 done diff --git a/scripts/check_layer_size.sh b/scripts/check_layer_size.sh index 4ef2c10b..395f79a4 100755 --- a/scripts/check_layer_size.sh +++ b/scripts/check_layer_size.sh @@ -14,7 +14,7 @@ MAX_LAYER_UNCOMPRESSED_SIZE_KB=$(expr 24 \* 1024) LAYER_FILES_PREFIX="datadog_lambda_py" LAYER_DIR=".layers" -VERSIONS=("3.7" "3.8" "3.9" "3.10" "3.11" "3.12") +VERSIONS=("3.8" "3.9" "3.10" "3.11" "3.12") for version in "${VERSIONS[@]}" do diff --git a/scripts/list_layers.sh b/scripts/list_layers.sh index 25058c5b..8a49cde4 100755 --- a/scripts/list_layers.sh +++ b/scripts/list_layers.sh @@ -11,7 +11,6 @@ set -e LAYER_NAMES=( - "Datadog-Python37" "Datadog-Python38" "Datadog-Python38-ARM" "Datadog-Python39" diff --git a/scripts/publish_layers.sh b/scripts/publish_layers.sh index 7541d47d..3deec0b4 100755 --- a/scripts/publish_layers.sh +++ b/scripts/publish_layers.sh @@ -14,7 +14,6 @@ set -e trap "pkill -P $$; exit 1;" INT PYTHON_VERSIONS_FOR_AWS_CLI=( - "python3.7" "python3.8" "python3.8" "python3.9" @@ -27,7 +26,6 @@ PYTHON_VERSIONS_FOR_AWS_CLI=( "python3.12" ) LAYER_PATHS=( - ".layers/datadog_lambda_py-amd64-3.7.zip" ".layers/datadog_lambda_py-amd64-3.8.zip" ".layers/datadog_lambda_py-arm64-3.8.zip" ".layers/datadog_lambda_py-amd64-3.9.zip" @@ -40,7 +38,6 @@ LAYER_PATHS=( ".layers/datadog_lambda_py-arm64-3.12.zip" ) AVAILABLE_LAYERS=( - "Datadog-Python37" "Datadog-Python38" "Datadog-Python38-ARM" "Datadog-Python39" diff --git a/scripts/run_integration_tests.sh b/scripts/run_integration_tests.sh index beb14706..27dd8ec8 100755 --- a/scripts/run_integration_tests.sh +++ b/scripts/run_integration_tests.sh @@ -27,14 +27,13 @@ mismatch_found=false # [0]: serverless runtime name # [1]: python version # [2]: random 8-character ID to avoid collisions with other runs -python37=("python3.7" "3.7" $(xxd -l 4 -c 4 -p < /dev/random)) python38=("python3.8" "3.8" $(xxd -l 4 -c 4 -p < /dev/random)) python39=("python3.9" "3.9" $(xxd -l 4 -c 4 -p < /dev/random)) python310=("python3.10" "3.10" $(xxd -l 4 -c 4 -p < /dev/random)) python311=("python3.11" "3.11" $(xxd -l 4 -c 4 -p < /dev/random)) python312=("python3.12" "3.12" $(xxd -l 4 -c 4 -p < /dev/random)) -PARAMETERS_SETS=("python37" "python38" "python39" "python310" "python311" "python312") +PARAMETERS_SETS=("python38" "python39" "python310" "python311" "python312") if [ -z "$RUNTIME_PARAM" ]; then echo "Python version not specified, running for all python versions." diff --git a/scripts/run_tests.sh b/scripts/run_tests.sh index 86127f5a..e06e9912 100755 --- a/scripts/run_tests.sh +++ b/scripts/run_tests.sh @@ -8,7 +8,7 @@ # Run unit tests in Docker set -e -PYTHON_VERSIONS=("3.7" "3.8" "3.9" "3.10" "3.11" "3.12") +PYTHON_VERSIONS=("3.8" "3.9" "3.10" "3.11" "3.12") for python_version in "${PYTHON_VERSIONS[@]}" do diff --git a/scripts/sign_layers.sh b/scripts/sign_layers.sh index 07085a0e..7e748f70 100755 --- a/scripts/sign_layers.sh +++ b/scripts/sign_layers.sh @@ -9,7 +9,6 @@ set -e LAYER_DIR=".layers" LAYER_FILES=( - "datadog_lambda_py-amd64-3.7.zip" "datadog_lambda_py-amd64-3.8.zip" "datadog_lambda_py-arm64-3.8.zip" "datadog_lambda_py-amd64-3.9.zip" diff --git a/tests/integration/snapshots/logs/async-metrics_python37.log b/tests/integration/snapshots/logs/async-metrics_python37.log deleted file mode 100644 index bdde3f9e..00000000 --- a/tests/integration/snapshots/logs/async-metrics_python37.log +++ /dev/null @@ -1,1498 +0,0 @@ -INIT_START Runtime Version: python:3.7.vX Runtime Version ARN: arn:aws:lambda:eu-west-1:XXXX:eu-west-1 -START -{ - "m": "aws.lambda.enhanced.invocations", - "v": 1, - "e": XXXX, - "t": [ - "region:eu-west-1", - "account_id:XXXX", - "functionname:integration-tests-python-XXXX-async-metrics_python37", - "resource:integration-tests-python-XXXX-async-metrics_python37", - "cold_start:true", - "memorysize:1024", - "runtime:python3.7", - "datadog_lambda:vXX", - "dd_lambda_layer:datadog-python37_X.X.X" - ] -} -{ - "m": "hello.dog", - "v": 1, - "e": XXXX, - "t": [ - "team:serverless", - "role:hello", - "dd_lambda_layer:datadog-python37_X.X.X" - ] -} -{ - "m": "tests.integration.count", - "v": 21, - "e": XXXX, - "t": [ - "test:integration", - "role:hello", - "dd_lambda_layer:datadog-python37_X.X.X" - ] -} -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "XXXX.execute-api.us-east-2.amazonaws.com", - "resource": "GET /", - "name": "aws.apigateway", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "operation_name": "aws.apigateway.rest", - "http.url": "XXXX.execute-api.us-east-2.amazonaws.com/", - "endpoint": "/", - "http.method": "GET", - "resource_names": "GET /", - "apiid": "XXXX", - "apiname": "XXXX", - "stage": "Prod", - "request_id": "XXXX", - "_inferred_span.synchronicity": "sync", - "_inferred_span.tag_source": "self", - "http.status_code": "200", - "peer.service": "integration-tests-python", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "process_id": XXXX, - "_dd.top_level": 1, - "_sampling_priority_v1": 1 - }, - "type": "http" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-async-metrics_python37", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "true", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python37", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-async-metrics_python37", - "functionname": "integration-tests-python-XXXX-async-metrics_python37", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "api-gateway", - "function_trigger.event_source_arn": "XXXX", - "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", - "http.url_details.path": "/Prod/", - "http.method": "GET", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "GET", - "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" - }, - "metrics": { - "_dd.measured": 1, - "_dd.top_level": 1 - }, - "type": "http" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.p.tid": "XXXX", - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "GET", - "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" - }, - "metrics": { - "_dd.measured": 1 - }, - "type": "http" - } - ] - ] -} -END Duration: XXXX ms (init: XXXX ms) Memory Used: XXXX MB -START -{ - "m": "aws.lambda.enhanced.invocations", - "v": 1, - "e": XXXX, - "t": [ - "region:eu-west-1", - "account_id:XXXX", - "functionname:integration-tests-python-XXXX-async-metrics_python37", - "resource:integration-tests-python-XXXX-async-metrics_python37", - "cold_start:false", - "memorysize:1024", - "runtime:python3.7", - "datadog_lambda:vXX", - "dd_lambda_layer:datadog-python37_X.X.X" - ] -} -{ - "m": "hello.dog", - "v": 1, - "e": XXXX, - "t": [ - "team:serverless", - "role:hello", - "dd_lambda_layer:datadog-python37_X.X.X" - ] -} -{ - "m": "tests.integration.count", - "v": 21, - "e": XXXX, - "t": [ - "test:integration", - "role:hello", - "dd_lambda_layer:datadog-python37_X.X.X" - ] -} -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "dynamodb", - "resource": "ExampleTableWithStream", - "name": "aws.dynamodb", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "operation_name": "aws.dynamodb", - "resource_names": "ExampleTableWithStream", - "tablename": "ExampleTableWithStream", - "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", - "event_id": "XXXX", - "event_name": "INSERT", - "event_version": "1.1", - "stream_view_type": "NEW_AND_OLD_IMAGES", - "size_bytes": "26", - "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self", - "peer.service": "integration-tests-python", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "process_id": XXXX, - "_dd.top_level": 1, - "_sampling_priority_v1": 1 - }, - "type": "web" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-async-metrics_python37", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python37", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-async-metrics_python37", - "functionname": "integration-tests-python-XXXX-async-metrics_python37", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "GET", - "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" - }, - "metrics": { - "_dd.measured": 1, - "_dd.top_level": 1 - }, - "type": "http" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.p.tid": "XXXX", - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "GET", - "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" - }, - "metrics": { - "_dd.measured": 1 - }, - "type": "http" - } - ] - ] -} -END Duration: XXXX ms Memory Used: XXXX MB -START -{ - "m": "aws.lambda.enhanced.invocations", - "v": 1, - "e": XXXX, - "t": [ - "region:eu-west-1", - "account_id:XXXX", - "functionname:integration-tests-python-XXXX-async-metrics_python37", - "resource:integration-tests-python-XXXX-async-metrics_python37", - "cold_start:false", - "memorysize:1024", - "runtime:python3.7", - "datadog_lambda:vXX", - "dd_lambda_layer:datadog-python37_X.X.X" - ] -} -{ - "m": "hello.dog", - "v": 1, - "e": XXXX, - "t": [ - "team:serverless", - "role:hello", - "dd_lambda_layer:datadog-python37_X.X.X" - ] -} -{ - "m": "tests.integration.count", - "v": 21, - "e": XXXX, - "t": [ - "test:integration", - "role:hello", - "dd_lambda_layer:datadog-python37_X.X.X" - ] -} -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "eventbridge", - "resource": "eventbridge.custom.event.sender", - "name": "aws.eventbridge", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "operation_name": "aws.eventbridge", - "resource_names": "eventbridge.custom.event.sender", - "detail_type": "testdetail", - "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self", - "peer.service": "integration-tests-python", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "process_id": XXXX, - "_dd.top_level": 1, - "_sampling_priority_v1": 1 - }, - "type": "web" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-async-metrics_python37", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python37", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-async-metrics_python37", - "functionname": "integration-tests-python-XXXX-async-metrics_python37", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "eventbridge", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "GET", - "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" - }, - "metrics": { - "_dd.measured": 1, - "_dd.top_level": 1 - }, - "type": "http" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.p.tid": "XXXX", - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "GET", - "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" - }, - "metrics": { - "_dd.measured": 1 - }, - "type": "http" - } - ] - ] -} -END Duration: XXXX ms Memory Used: XXXX MB -START -{ - "m": "aws.lambda.enhanced.invocations", - "v": 1, - "e": XXXX, - "t": [ - "region:eu-west-1", - "account_id:XXXX", - "functionname:integration-tests-python-XXXX-async-metrics_python37", - "resource:integration-tests-python-XXXX-async-metrics_python37", - "cold_start:false", - "memorysize:1024", - "runtime:python3.7", - "datadog_lambda:vXX", - "dd_lambda_layer:datadog-python37_X.X.X" - ] -} -{ - "m": "hello.dog", - "v": 1, - "e": XXXX, - "t": [ - "team:serverless", - "role:hello", - "dd_lambda_layer:datadog-python37_X.X.X" - ] -} -{ - "m": "tests.integration.count", - "v": 21, - "e": XXXX, - "t": [ - "test:integration", - "role:hello", - "dd_lambda_layer:datadog-python37_X.X.X" - ] -} -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "XXXX.execute-api.eu-west-1.amazonaws.com", - "resource": "GET /httpapi/get", - "name": "aws.httpapi", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "operation_name": "aws.httpapi", - "endpoint": "/httpapi/get", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", - "http.method": "GET", - "http.protocol": "HTTP/1.1", - "http.source_ip": "XXXX", - "http.user_agent": "XXXX/7.64.1", - "resource_names": "GET /httpapi/get", - "request_id": "XXXX", - "apiid": "XXXX", - "apiname": "XXXX", - "stage": "$default", - "_inferred_span.synchronicity": "sync", - "_inferred_span.tag_source": "self", - "http.status_code": "200", - "peer.service": "integration-tests-python", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "process_id": XXXX, - "_dd.top_level": 1, - "_sampling_priority_v1": 1 - }, - "type": "http" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-async-metrics_python37", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python37", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-async-metrics_python37", - "functionname": "integration-tests-python-XXXX-async-metrics_python37", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "api-gateway", - "function_trigger.event_source_arn": "XXXX$default", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", - "http.url_details.path": "/httpapi/get", - "http.method": "GET", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "GET", - "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" - }, - "metrics": { - "_dd.measured": 1, - "_dd.top_level": 1 - }, - "type": "http" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.p.tid": "XXXX", - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "GET", - "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" - }, - "metrics": { - "_dd.measured": 1 - }, - "type": "http" - } - ] - ] -} -END Duration: XXXX ms Memory Used: XXXX MB -START -{ - "m": "aws.lambda.enhanced.invocations", - "v": 1, - "e": XXXX, - "t": [ - "region:eu-west-1", - "account_id:XXXX", - "functionname:integration-tests-python-XXXX-async-metrics_python37", - "resource:integration-tests-python-XXXX-async-metrics_python37", - "cold_start:false", - "memorysize:1024", - "runtime:python3.7", - "datadog_lambda:vXX", - "dd_lambda_layer:datadog-python37_X.X.X" - ] -} -{ - "m": "hello.dog", - "v": 1, - "e": XXXX, - "t": [ - "team:serverless", - "role:hello", - "dd_lambda_layer:datadog-python37_X.X.X" - ] -} -{ - "m": "tests.integration.count", - "v": 21, - "e": XXXX, - "t": [ - "test:integration", - "role:hello", - "dd_lambda_layer:datadog-python37_X.X.X" - ] -} -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "kinesis", - "resource": "EXAMPLE", - "name": "aws.kinesis", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "operation_name": "aws.kinesis", - "resource_names": "EXAMPLE", - "streamname": "EXAMPLE", - "shardid": "shardId-XXXX", - "event_source_arn": "arn:aws:kinesis:EXAMPLE", - "event_id": "XXXX", - "event_name": "aws:kinesis:record", - "event_version": "1.0", - "partition_key": "XXXX", - "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self", - "peer.service": "integration-tests-python", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "process_id": XXXX, - "_dd.top_level": 1, - "_sampling_priority_v1": 1 - }, - "type": "web" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-async-metrics_python37", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python37", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-async-metrics_python37", - "functionname": "integration-tests-python-XXXX-async-metrics_python37", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "kinesis", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "GET", - "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" - }, - "metrics": { - "_dd.measured": 1, - "_dd.top_level": 1 - }, - "type": "http" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.p.tid": "XXXX", - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "GET", - "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" - }, - "metrics": { - "_dd.measured": 1 - }, - "type": "http" - } - ] - ] -} -END Duration: XXXX ms Memory Used: XXXX MB -START -{ - "m": "aws.lambda.enhanced.invocations", - "v": 1, - "e": XXXX, - "t": [ - "region:eu-west-1", - "account_id:XXXX", - "functionname:integration-tests-python-XXXX-async-metrics_python37", - "resource:integration-tests-python-XXXX-async-metrics_python37", - "cold_start:false", - "memorysize:1024", - "runtime:python3.7", - "datadog_lambda:vXX", - "dd_lambda_layer:datadog-python37_X.X.X" - ] -} -{ - "m": "hello.dog", - "v": 1, - "e": XXXX, - "t": [ - "team:serverless", - "role:hello", - "dd_lambda_layer:datadog-python37_X.X.X" - ] -} -{ - "m": "tests.integration.count", - "v": 21, - "e": XXXX, - "t": [ - "test:integration", - "role:hello", - "dd_lambda_layer:datadog-python37_X.X.X" - ] -} -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "s3", - "resource": "example-bucket", - "name": "aws.s3", - "error": 0, - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "operation_name": "aws.s3", - "resource_names": "example-bucket", - "event_name": "ObjectCreated:Put", - "bucketname": "example-bucket", - "bucket_arn": "arn:aws:s3:::example-bucket", - "object_key": "test/key", - "object_size": "1024", - "object_etag": "XXXX", - "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self", - "peer.service": "integration-tests-python", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "process_id": XXXX, - "_dd.top_level": 1, - "_sampling_priority_v1": 1 - }, - "type": "web" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-async-metrics_python37", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python37", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-async-metrics_python37", - "functionname": "integration-tests-python-XXXX-async-metrics_python37", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "s3", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "GET", - "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" - }, - "metrics": { - "_dd.measured": 1, - "_dd.top_level": 1 - }, - "type": "http" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.p.tid": "XXXX", - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "GET", - "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" - }, - "metrics": { - "_dd.measured": 1 - }, - "type": "http" - } - ] - ] -} -END Duration: XXXX ms Memory Used: XXXX MB -START -{ - "m": "aws.lambda.enhanced.invocations", - "v": 1, - "e": XXXX, - "t": [ - "region:eu-west-1", - "account_id:XXXX", - "functionname:integration-tests-python-XXXX-async-metrics_python37", - "resource:integration-tests-python-XXXX-async-metrics_python37", - "cold_start:false", - "memorysize:1024", - "runtime:python3.7", - "datadog_lambda:vXX", - "dd_lambda_layer:datadog-python37_X.X.X" - ] -} -{ - "m": "hello.dog", - "v": 1, - "e": XXXX, - "t": [ - "team:serverless", - "role:hello", - "dd_lambda_layer:datadog-python37_X.X.X" - ] -} -{ - "m": "tests.integration.count", - "v": 21, - "e": XXXX, - "t": [ - "test:integration", - "role:hello", - "dd_lambda_layer:datadog-python37_X.X.X" - ] -} -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "sns", - "resource": "sns-lambda", - "name": "aws.sns", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "operation_name": "aws.sns", - "resource_names": "sns-lambda", - "topicname": "sns-lambda", - "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", - "message_id": "XXXX", - "type": "Notification", - "subject": "TestInvoke", - "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self", - "peer.service": "integration-tests-python", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "process_id": XXXX, - "_dd.top_level": 1, - "_sampling_priority_v1": 1 - }, - "type": "web" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-async-metrics_python37", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python37", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-async-metrics_python37", - "functionname": "integration-tests-python-XXXX-async-metrics_python37", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "sns", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "GET", - "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" - }, - "metrics": { - "_dd.measured": 1, - "_dd.top_level": 1 - }, - "type": "http" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.p.tid": "XXXX", - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "GET", - "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" - }, - "metrics": { - "_dd.measured": 1 - }, - "type": "http" - } - ] - ] -} -END Duration: XXXX ms Memory Used: XXXX MB -START -{ - "m": "aws.lambda.enhanced.invocations", - "v": 1, - "e": XXXX, - "t": [ - "region:eu-west-1", - "account_id:XXXX", - "functionname:integration-tests-python-XXXX-async-metrics_python37", - "resource:integration-tests-python-XXXX-async-metrics_python37", - "cold_start:false", - "memorysize:1024", - "runtime:python3.7", - "datadog_lambda:vXX", - "dd_lambda_layer:datadog-python37_X.X.X" - ] -} -{ - "m": "hello.dog", - "v": 1, - "e": XXXX, - "t": [ - "team:serverless", - "role:hello", - "dd_lambda_layer:datadog-python37_X.X.X" - ] -} -{ - "m": "tests.integration.count", - "v": 21, - "e": XXXX, - "t": [ - "test:integration", - "role:hello", - "dd_lambda_layer:datadog-python37_X.X.X" - ] -} -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "sqs", - "resource": "my-queue", - "name": "aws.sqs", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "operation_name": "aws.sqs", - "resource_names": "my-queue", - "queuename": "my-queue", - "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", - "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", - "sender_id": "AIDAIENQZJOLO23YVJ4VO", - "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self", - "peer.service": "integration-tests-python", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "process_id": XXXX, - "_dd.top_level": 1, - "_sampling_priority_v1": 1 - }, - "type": "web" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-async-metrics_python37", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python37", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-async-metrics_python37", - "functionname": "integration-tests-python-XXXX-async-metrics_python37", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "sqs", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "GET", - "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" - }, - "metrics": { - "_dd.measured": 1, - "_dd.top_level": 1 - }, - "type": "http" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.p.tid": "XXXX", - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "GET", - "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" - }, - "metrics": { - "_dd.measured": 1 - }, - "type": "http" - } - ] - ] -} -END Duration: XXXX ms Memory Used: XXXX MB -START -{ - "m": "aws.lambda.enhanced.invocations", - "v": 1, - "e": XXXX, - "t": [ - "region:eu-west-1", - "account_id:XXXX", - "functionname:integration-tests-python-XXXX-async-metrics_python37", - "resource:integration-tests-python-XXXX-async-metrics_python37", - "cold_start:false", - "memorysize:1024", - "runtime:python3.7", - "datadog_lambda:vXX", - "dd_lambda_layer:datadog-python37_X.X.X" - ] -} -{ - "m": "hello.dog", - "v": 1, - "e": XXXX, - "t": [ - "team:serverless", - "role:hello", - "dd_lambda_layer:datadog-python37_X.X.X" - ] -} -{ - "m": "tests.integration.count", - "v": 21, - "e": XXXX, - "t": [ - "test:integration", - "role:hello", - "dd_lambda_layer:datadog-python37_X.X.X" - ] -} -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "XXXX.execute-api.eu-west-1.amazonaws.com", - "resource": "$default", - "name": "aws.apigateway.websocket", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "operation_name": "aws.apigateway.websocket", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com$default", - "endpoint": "$default", - "resource_names": "$default", - "apiid": "XXXX", - "apiname": "XXXX", - "stage": "dev", - "request_id": "XXXX", - "connection_id": "XXXX=", - "event_type": "MESSAGE", - "message_direction": "IN", - "_inferred_span.synchronicity": "sync", - "_inferred_span.tag_source": "self", - "http.status_code": "200", - "peer.service": "integration-tests-python", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "process_id": XXXX, - "_dd.top_level": 1, - "_sampling_priority_v1": 1 - }, - "type": "web" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-async-metrics_python37", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python37", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-async-metrics_python37", - "functionname": "integration-tests-python-XXXX-async-metrics_python37", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "api-gateway", - "function_trigger.event_source_arn": "XXXX", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "GET", - "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" - }, - "metrics": { - "_dd.measured": 1, - "_dd.top_level": 1 - }, - "type": "http" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.p.tid": "XXXX", - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "GET", - "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" - }, - "metrics": { - "_dd.measured": 1 - }, - "type": "http" - } - ] - ] -} -END Duration: XXXX ms Memory Used: XXXX MB diff --git a/tests/integration/snapshots/logs/sync-metrics_python37.log b/tests/integration/snapshots/logs/sync-metrics_python37.log deleted file mode 100644 index fb7b879b..00000000 --- a/tests/integration/snapshots/logs/sync-metrics_python37.log +++ /dev/null @@ -1,1669 +0,0 @@ -INIT_START Runtime Version: python:3.7.vX Runtime Version ARN: arn:aws:lambda:eu-west-1:XXXX:eu-west-1 -START -{ - "m": "aws.lambda.enhanced.invocations", - "v": 1, - "e": XXXX, - "t": [ - "region:eu-west-1", - "account_id:XXXX", - "functionname:integration-tests-python-XXXX-sync-metrics_python37", - "resource:integration-tests-python-XXXX-sync-metrics_python37", - "cold_start:true", - "memorysize:1024", - "runtime:python3.7", - "datadog_lambda:vXX", - "dd_lambda_layer:datadog-python37_X.X.X" - ] -} -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "XXXX.execute-api.us-east-2.amazonaws.com", - "resource": "GET /", - "name": "aws.apigateway", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "operation_name": "aws.apigateway.rest", - "http.url": "XXXX.execute-api.us-east-2.amazonaws.com/", - "endpoint": "/", - "http.method": "GET", - "resource_names": "GET /", - "apiid": "XXXX", - "apiname": "XXXX", - "stage": "Prod", - "request_id": "XXXX", - "_inferred_span.synchronicity": "sync", - "_inferred_span.tag_source": "self", - "http.status_code": "200", - "peer.service": "integration-tests-python", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "process_id": XXXX, - "_dd.top_level": 1, - "_sampling_priority_v1": 1 - }, - "type": "http" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-sync-metrics_python37", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "true", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python37", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-sync-metrics_python37", - "functionname": "integration-tests-python-XXXX-sync-metrics_python37", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "api-gateway", - "function_trigger.event_source_arn": "XXXX", - "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", - "http.url_details.path": "/Prod/", - "http.method": "GET", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "GET", - "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" - }, - "metrics": { - "_dd.measured": 1, - "_dd.top_level": 1 - }, - "type": "http" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.p.tid": "XXXX", - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "GET", - "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" - }, - "metrics": { - "_dd.measured": 1 - }, - "type": "http" - } - ] - ] -} -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", - "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python" - }, - "metrics": { - "process_id": XXXX, - "_dd.measured": 1, - "_dd.top_level": 1, - "_sampling_priority_v1": 1 - }, - "type": "http" - } - ] - ] -} -END Duration: XXXX ms (init: XXXX ms) Memory Used: XXXX MB -START -{ - "m": "aws.lambda.enhanced.invocations", - "v": 1, - "e": XXXX, - "t": [ - "region:eu-west-1", - "account_id:XXXX", - "functionname:integration-tests-python-XXXX-sync-metrics_python37", - "resource:integration-tests-python-XXXX-sync-metrics_python37", - "cold_start:false", - "memorysize:1024", - "runtime:python3.7", - "datadog_lambda:vXX", - "dd_lambda_layer:datadog-python37_X.X.X" - ] -} -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "dynamodb", - "resource": "ExampleTableWithStream", - "name": "aws.dynamodb", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "operation_name": "aws.dynamodb", - "resource_names": "ExampleTableWithStream", - "tablename": "ExampleTableWithStream", - "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", - "event_id": "XXXX", - "event_name": "INSERT", - "event_version": "1.1", - "stream_view_type": "NEW_AND_OLD_IMAGES", - "size_bytes": "26", - "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self", - "peer.service": "integration-tests-python", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "process_id": XXXX, - "_dd.top_level": 1, - "_sampling_priority_v1": 1 - }, - "type": "web" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-sync-metrics_python37", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python37", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-sync-metrics_python37", - "functionname": "integration-tests-python-XXXX-sync-metrics_python37", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "GET", - "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" - }, - "metrics": { - "_dd.measured": 1, - "_dd.top_level": 1 - }, - "type": "http" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.p.tid": "XXXX", - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "GET", - "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" - }, - "metrics": { - "_dd.measured": 1 - }, - "type": "http" - } - ] - ] -} -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", - "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python" - }, - "metrics": { - "process_id": XXXX, - "_dd.measured": 1, - "_dd.top_level": 1, - "_sampling_priority_v1": 1 - }, - "type": "http" - } - ] - ] -} -END Duration: XXXX ms Memory Used: XXXX MB -START -{ - "m": "aws.lambda.enhanced.invocations", - "v": 1, - "e": XXXX, - "t": [ - "region:eu-west-1", - "account_id:XXXX", - "functionname:integration-tests-python-XXXX-sync-metrics_python37", - "resource:integration-tests-python-XXXX-sync-metrics_python37", - "cold_start:false", - "memorysize:1024", - "runtime:python3.7", - "datadog_lambda:vXX", - "dd_lambda_layer:datadog-python37_X.X.X" - ] -} -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "eventbridge", - "resource": "eventbridge.custom.event.sender", - "name": "aws.eventbridge", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "operation_name": "aws.eventbridge", - "resource_names": "eventbridge.custom.event.sender", - "detail_type": "testdetail", - "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self", - "peer.service": "integration-tests-python", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "process_id": XXXX, - "_dd.top_level": 1, - "_sampling_priority_v1": 1 - }, - "type": "web" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-sync-metrics_python37", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python37", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-sync-metrics_python37", - "functionname": "integration-tests-python-XXXX-sync-metrics_python37", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "eventbridge", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "GET", - "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" - }, - "metrics": { - "_dd.measured": 1, - "_dd.top_level": 1 - }, - "type": "http" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.p.tid": "XXXX", - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "GET", - "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" - }, - "metrics": { - "_dd.measured": 1 - }, - "type": "http" - } - ] - ] -} -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", - "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python" - }, - "metrics": { - "process_id": XXXX, - "_dd.measured": 1, - "_dd.top_level": 1, - "_sampling_priority_v1": 1 - }, - "type": "http" - } - ] - ] -} -END Duration: XXXX ms Memory Used: XXXX MB -START -{ - "m": "aws.lambda.enhanced.invocations", - "v": 1, - "e": XXXX, - "t": [ - "region:eu-west-1", - "account_id:XXXX", - "functionname:integration-tests-python-XXXX-sync-metrics_python37", - "resource:integration-tests-python-XXXX-sync-metrics_python37", - "cold_start:false", - "memorysize:1024", - "runtime:python3.7", - "datadog_lambda:vXX", - "dd_lambda_layer:datadog-python37_X.X.X" - ] -} -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "XXXX.execute-api.eu-west-1.amazonaws.com", - "resource": "GET /httpapi/get", - "name": "aws.httpapi", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "operation_name": "aws.httpapi", - "endpoint": "/httpapi/get", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", - "http.method": "GET", - "http.protocol": "HTTP/1.1", - "http.source_ip": "XXXX", - "http.user_agent": "XXXX/7.64.1", - "resource_names": "GET /httpapi/get", - "request_id": "XXXX", - "apiid": "XXXX", - "apiname": "XXXX", - "stage": "$default", - "_inferred_span.synchronicity": "sync", - "_inferred_span.tag_source": "self", - "http.status_code": "200", - "peer.service": "integration-tests-python", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "process_id": XXXX, - "_dd.top_level": 1, - "_sampling_priority_v1": 1 - }, - "type": "http" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-sync-metrics_python37", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python37", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-sync-metrics_python37", - "functionname": "integration-tests-python-XXXX-sync-metrics_python37", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "api-gateway", - "function_trigger.event_source_arn": "XXXX$default", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", - "http.url_details.path": "/httpapi/get", - "http.method": "GET", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "GET", - "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" - }, - "metrics": { - "_dd.measured": 1, - "_dd.top_level": 1 - }, - "type": "http" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.p.tid": "XXXX", - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "GET", - "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" - }, - "metrics": { - "_dd.measured": 1 - }, - "type": "http" - } - ] - ] -} -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX -END Duration: XXXX ms Memory Used: XXXX MB -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", - "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python" - }, - "metrics": { - "process_id": XXXX, - "_dd.measured": 1, - "_dd.top_level": 1, - "_sampling_priority_v1": 1 - }, - "type": "http" - } - ] - ] -} -START -{ - "m": "aws.lambda.enhanced.invocations", - "v": 1, - "e": XXXX, - "t": [ - "region:eu-west-1", - "account_id:XXXX", - "functionname:integration-tests-python-XXXX-sync-metrics_python37", - "resource:integration-tests-python-XXXX-sync-metrics_python37", - "cold_start:false", - "memorysize:1024", - "runtime:python3.7", - "datadog_lambda:vXX", - "dd_lambda_layer:datadog-python37_X.X.X" - ] -} -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "kinesis", - "resource": "EXAMPLE", - "name": "aws.kinesis", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "operation_name": "aws.kinesis", - "resource_names": "EXAMPLE", - "streamname": "EXAMPLE", - "shardid": "shardId-XXXX", - "event_source_arn": "arn:aws:kinesis:EXAMPLE", - "event_id": "XXXX", - "event_name": "aws:kinesis:record", - "event_version": "1.0", - "partition_key": "XXXX", - "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self", - "peer.service": "integration-tests-python", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "process_id": XXXX, - "_dd.top_level": 1, - "_sampling_priority_v1": 1 - }, - "type": "web" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-sync-metrics_python37", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python37", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-sync-metrics_python37", - "functionname": "integration-tests-python-XXXX-sync-metrics_python37", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "kinesis", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "GET", - "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" - }, - "metrics": { - "_dd.measured": 1, - "_dd.top_level": 1 - }, - "type": "http" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.p.tid": "XXXX", - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "GET", - "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" - }, - "metrics": { - "_dd.measured": 1 - }, - "type": "http" - } - ] - ] -} -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", - "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python" - }, - "metrics": { - "process_id": XXXX, - "_dd.measured": 1, - "_dd.top_level": 1, - "_sampling_priority_v1": 1 - }, - "type": "http" - } - ] - ] -} -END Duration: XXXX ms Memory Used: XXXX MB -START -{ - "m": "aws.lambda.enhanced.invocations", - "v": 1, - "e": XXXX, - "t": [ - "region:eu-west-1", - "account_id:XXXX", - "functionname:integration-tests-python-XXXX-sync-metrics_python37", - "resource:integration-tests-python-XXXX-sync-metrics_python37", - "cold_start:false", - "memorysize:1024", - "runtime:python3.7", - "datadog_lambda:vXX", - "dd_lambda_layer:datadog-python37_X.X.X" - ] -} -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "s3", - "resource": "example-bucket", - "name": "aws.s3", - "error": 0, - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "operation_name": "aws.s3", - "resource_names": "example-bucket", - "event_name": "ObjectCreated:Put", - "bucketname": "example-bucket", - "bucket_arn": "arn:aws:s3:::example-bucket", - "object_key": "test/key", - "object_size": "1024", - "object_etag": "XXXX", - "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self", - "peer.service": "integration-tests-python", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "process_id": XXXX, - "_dd.top_level": 1, - "_sampling_priority_v1": 1 - }, - "type": "web" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-sync-metrics_python37", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python37", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-sync-metrics_python37", - "functionname": "integration-tests-python-XXXX-sync-metrics_python37", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "s3", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "GET", - "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" - }, - "metrics": { - "_dd.measured": 1, - "_dd.top_level": 1 - }, - "type": "http" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.p.tid": "XXXX", - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "GET", - "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" - }, - "metrics": { - "_dd.measured": 1 - }, - "type": "http" - } - ] - ] -} -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", - "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python" - }, - "metrics": { - "process_id": XXXX, - "_dd.measured": 1, - "_dd.top_level": 1, - "_sampling_priority_v1": 1 - }, - "type": "http" - } - ] - ] -} -END Duration: XXXX ms Memory Used: XXXX MB -START -{ - "m": "aws.lambda.enhanced.invocations", - "v": 1, - "e": XXXX, - "t": [ - "region:eu-west-1", - "account_id:XXXX", - "functionname:integration-tests-python-XXXX-sync-metrics_python37", - "resource:integration-tests-python-XXXX-sync-metrics_python37", - "cold_start:false", - "memorysize:1024", - "runtime:python3.7", - "datadog_lambda:vXX", - "dd_lambda_layer:datadog-python37_X.X.X" - ] -} -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "sns", - "resource": "sns-lambda", - "name": "aws.sns", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "operation_name": "aws.sns", - "resource_names": "sns-lambda", - "topicname": "sns-lambda", - "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", - "message_id": "XXXX", - "type": "Notification", - "subject": "TestInvoke", - "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self", - "peer.service": "integration-tests-python", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "process_id": XXXX, - "_dd.top_level": 1, - "_sampling_priority_v1": 1 - }, - "type": "web" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-sync-metrics_python37", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python37", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-sync-metrics_python37", - "functionname": "integration-tests-python-XXXX-sync-metrics_python37", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "sns", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "GET", - "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" - }, - "metrics": { - "_dd.measured": 1, - "_dd.top_level": 1 - }, - "type": "http" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.p.tid": "XXXX", - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "GET", - "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" - }, - "metrics": { - "_dd.measured": 1 - }, - "type": "http" - } - ] - ] -} -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", - "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python" - }, - "metrics": { - "process_id": XXXX, - "_dd.measured": 1, - "_dd.top_level": 1, - "_sampling_priority_v1": 1 - }, - "type": "http" - } - ] - ] -} -END Duration: XXXX ms Memory Used: XXXX MB -START -{ - "m": "aws.lambda.enhanced.invocations", - "v": 1, - "e": XXXX, - "t": [ - "region:eu-west-1", - "account_id:XXXX", - "functionname:integration-tests-python-XXXX-sync-metrics_python37", - "resource:integration-tests-python-XXXX-sync-metrics_python37", - "cold_start:false", - "memorysize:1024", - "runtime:python3.7", - "datadog_lambda:vXX", - "dd_lambda_layer:datadog-python37_X.X.X" - ] -} -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "sqs", - "resource": "my-queue", - "name": "aws.sqs", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "operation_name": "aws.sqs", - "resource_names": "my-queue", - "queuename": "my-queue", - "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", - "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", - "sender_id": "AIDAIENQZJOLO23YVJ4VO", - "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self", - "peer.service": "integration-tests-python", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "process_id": XXXX, - "_dd.top_level": 1, - "_sampling_priority_v1": 1 - }, - "type": "web" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-sync-metrics_python37", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python37", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-sync-metrics_python37", - "functionname": "integration-tests-python-XXXX-sync-metrics_python37", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "sqs", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "GET", - "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" - }, - "metrics": { - "_dd.measured": 1, - "_dd.top_level": 1 - }, - "type": "http" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.p.tid": "XXXX", - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "GET", - "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" - }, - "metrics": { - "_dd.measured": 1 - }, - "type": "http" - } - ] - ] -} -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", - "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python" - }, - "metrics": { - "process_id": XXXX, - "_dd.measured": 1, - "_dd.top_level": 1, - "_sampling_priority_v1": 1 - }, - "type": "http" - } - ] - ] -} -END Duration: XXXX ms Memory Used: XXXX MB -START -{ - "m": "aws.lambda.enhanced.invocations", - "v": 1, - "e": XXXX, - "t": [ - "region:eu-west-1", - "account_id:XXXX", - "functionname:integration-tests-python-XXXX-sync-metrics_python37", - "resource:integration-tests-python-XXXX-sync-metrics_python37", - "cold_start:false", - "memorysize:1024", - "runtime:python3.7", - "datadog_lambda:vXX", - "dd_lambda_layer:datadog-python37_X.X.X" - ] -} -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "XXXX.execute-api.eu-west-1.amazonaws.com", - "resource": "$default", - "name": "aws.apigateway.websocket", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "operation_name": "aws.apigateway.websocket", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com$default", - "endpoint": "$default", - "resource_names": "$default", - "apiid": "XXXX", - "apiname": "XXXX", - "stage": "dev", - "request_id": "XXXX", - "connection_id": "XXXX=", - "event_type": "MESSAGE", - "message_direction": "IN", - "_inferred_span.synchronicity": "sync", - "_inferred_span.tag_source": "self", - "http.status_code": "200", - "peer.service": "integration-tests-python", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "process_id": XXXX, - "_dd.top_level": 1, - "_sampling_priority_v1": 1 - }, - "type": "web" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-sync-metrics_python37", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python37", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-sync-metrics_python37", - "functionname": "integration-tests-python-XXXX-sync-metrics_python37", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "api-gateway", - "function_trigger.event_source_arn": "XXXX", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "GET", - "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" - }, - "metrics": { - "_dd.measured": 1, - "_dd.top_level": 1 - }, - "type": "http" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.p.tid": "XXXX", - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "GET", - "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" - }, - "metrics": { - "_dd.measured": 1 - }, - "type": "http" - } - ] - ] -} -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", - "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python" - }, - "metrics": { - "process_id": XXXX, - "_dd.measured": 1, - "_dd.top_level": 1, - "_sampling_priority_v1": 1 - }, - "type": "http" - } - ] - ] -} -END Duration: XXXX ms Memory Used: XXXX MB diff --git a/tests/test_tags.py b/tests/test_tags.py index 80b5f86d..66c0c39f 100644 --- a/tests/test_tags.py +++ b/tests/test_tags.py @@ -65,5 +65,5 @@ def test_parse_lambda_tags_from_arn_alias(self): ) def test_get_runtime_tag(self): - self.mock_python_version_tuple.return_value = ("3", "7", "2") - self.assertEqual(get_runtime_tag(), "runtime:python3.7") + self.mock_python_version_tuple.return_value = ("3", "12", "0") + self.assertEqual(get_runtime_tag(), "runtime:python3.12") From 3db46b2575e8e387fafdb79c55fa50c08d28f69d Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Thu, 14 Dec 2023 18:26:22 -0500 Subject: [PATCH 065/268] Bump version to 5.86.0 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 25bfb337..9882b3c3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "5.85.0" +version = "5.86.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 07bad6eb0bfd57d9889a4ef1d24850347c53ebc5 Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Fri, 15 Dec 2023 15:10:16 -0800 Subject: [PATCH 066/268] Do not call flush extension after each invocation. (#406) * Do not call flush extension after each invocation. * Test flushing per invocation. --- datadog_lambda/wrapper.py | 9 ++++++++- tests/test_wrapper.py | 41 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+), 1 deletion(-) diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index 15dec7f1..73d17887 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -60,6 +60,7 @@ DD_LOGS_INJECTION = "DD_LOGS_INJECTION" DD_MERGE_XRAY_TRACES = "DD_MERGE_XRAY_TRACES" AWS_LAMBDA_FUNCTION_NAME = "AWS_LAMBDA_FUNCTION_NAME" +DD_LOCAL_TEST = "DD_LOCAL_TEST" DD_TRACE_EXTRACTOR = "DD_TRACE_EXTRACTOR" DD_TRACE_MANAGED_SERVICES = "DD_TRACE_MANAGED_SERVICES" DD_ENCODE_AUTHORIZER_CONTEXT = "DD_ENCODE_AUTHORIZER_CONTEXT" @@ -183,6 +184,9 @@ def __init__(self, func): self.min_cold_start_trace_duration = get_env_as_int( DD_MIN_COLD_START_DURATION, 3 ) + self.local_testing_mode = os.environ.get( + DD_LOCAL_TEST, "false" + ).lower() in ("true", "1") self.cold_start_trace_skip_lib = [ "ddtrace.internal.compat", "ddtrace.filters", @@ -367,7 +371,10 @@ def _after(self, event, context): if not self.flush_to_log or should_use_extension: flush_stats() - if should_use_extension: + if should_use_extension and self.local_testing_mode: + # when testing locally, the extension does not know when an + # invocation completes because it does not have access to the + # logs api flush_extension() if self.encode_authorizer_context and is_authorizer_response(self.response): diff --git a/tests/test_wrapper.py b/tests/test_wrapper.py index 29c842d2..39998921 100644 --- a/tests/test_wrapper.py +++ b/tests/test_wrapper.py @@ -647,3 +647,44 @@ def handler(event, context): }, payload["metadata"], ) + + +class TestLambdaWrapperFlushExtension(unittest.TestCase): + def setUp(self): + self.orig_environ = os.environ + + def tearDown(self): + os.environ = self.orig_environ + + @patch("datadog_lambda.wrapper.should_use_extension", True) + def test_local_test_envvar_flushing(self): + + flushes = [] + lambda_event = {} + lambda_context = get_mock_context() + + def flush(): + flushes.append(1) + + for environ, flush_called in ( + ({"DD_LOCAL_TEST": "True"}, True), + ({"DD_LOCAL_TEST": "true"}, True), + ({"DD_LOCAL_TEST": "1"}, True), + ({"DD_LOCAL_TEST": "False"}, False), + ({"DD_LOCAL_TEST": "false"}, False), + ({"DD_LOCAL_TEST": "0"}, False), + ({"DD_LOCAL_TEST": ""}, False), + ({}, False), + ): + + os.environ = environ + flushes.clear() + + @patch("datadog_lambda.wrapper.flush_extension", flush) + @wrapper.datadog_lambda_wrapper + def lambda_handler(event, context): + pass + + lambda_handler(lambda_event, lambda_context) + + self.assertEqual(flush_called, len(flushes) == 1) From 977dd87a3b80e3eab4854e2c1ac133a485901cb4 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Wed, 20 Dec 2023 13:03:21 -0500 Subject: [PATCH 067/268] Bump version to 5.87.0 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 9882b3c3..17f91d53 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "5.86.0" +version = "5.87.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 88796883e83a198584eee0a70404d6090c2e3b38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?jordan=20gonz=C3=A1lez?= <30836115+duncanista@users.noreply.github.com> Date: Fri, 26 Jan 2024 14:21:12 -0500 Subject: [PATCH 068/268] update snapshots (#411) --- .../logs/async-metrics_python310.log | 36 ++++++------ .../logs/async-metrics_python311.log | 36 ++++++------ .../logs/async-metrics_python312.log | 36 ++++++------ .../snapshots/logs/async-metrics_python38.log | 38 ++++++------- .../snapshots/logs/async-metrics_python39.log | 36 ++++++------ .../snapshots/logs/sync-metrics_python310.log | 54 +++++++++--------- .../snapshots/logs/sync-metrics_python311.log | 54 +++++++++--------- .../snapshots/logs/sync-metrics_python312.log | 54 +++++++++--------- .../snapshots/logs/sync-metrics_python38.log | 56 +++++++++---------- .../snapshots/logs/sync-metrics_python39.log | 56 +++++++++---------- 10 files changed, 228 insertions(+), 228 deletions(-) diff --git a/tests/integration/snapshots/logs/async-metrics_python310.log b/tests/integration/snapshots/logs/async-metrics_python310.log index 81d2351e..e2101885 100644 --- a/tests/integration/snapshots/logs/async-metrics_python310.log +++ b/tests/integration/snapshots/logs/async-metrics_python310.log @@ -119,7 +119,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -145,7 +145,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -285,7 +285,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -311,7 +311,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -444,7 +444,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -470,7 +470,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -618,7 +618,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -644,7 +644,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -784,7 +784,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -810,7 +810,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -947,7 +947,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -973,7 +973,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1111,7 +1111,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1137,7 +1137,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1274,7 +1274,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1300,7 +1300,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1445,7 +1445,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1471,7 +1471,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", diff --git a/tests/integration/snapshots/logs/async-metrics_python311.log b/tests/integration/snapshots/logs/async-metrics_python311.log index ebecb139..8d5419c1 100644 --- a/tests/integration/snapshots/logs/async-metrics_python311.log +++ b/tests/integration/snapshots/logs/async-metrics_python311.log @@ -119,7 +119,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -145,7 +145,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -285,7 +285,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -311,7 +311,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -444,7 +444,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -470,7 +470,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -618,7 +618,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -644,7 +644,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -784,7 +784,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -810,7 +810,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -947,7 +947,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -973,7 +973,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1111,7 +1111,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1137,7 +1137,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1274,7 +1274,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1300,7 +1300,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1445,7 +1445,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1471,7 +1471,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", diff --git a/tests/integration/snapshots/logs/async-metrics_python312.log b/tests/integration/snapshots/logs/async-metrics_python312.log index 3bb8ac78..0132e54e 100644 --- a/tests/integration/snapshots/logs/async-metrics_python312.log +++ b/tests/integration/snapshots/logs/async-metrics_python312.log @@ -119,7 +119,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -145,7 +145,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -285,7 +285,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -311,7 +311,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -444,7 +444,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -470,7 +470,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -618,7 +618,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -644,7 +644,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -784,7 +784,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -810,7 +810,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -947,7 +947,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -973,7 +973,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1111,7 +1111,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1137,7 +1137,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1274,7 +1274,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1300,7 +1300,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1445,7 +1445,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1471,7 +1471,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", diff --git a/tests/integration/snapshots/logs/async-metrics_python38.log b/tests/integration/snapshots/logs/async-metrics_python38.log index ae5b719f..e5b755ac 100644 --- a/tests/integration/snapshots/logs/async-metrics_python38.log +++ b/tests/integration/snapshots/logs/async-metrics_python38.log @@ -119,7 +119,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -145,7 +145,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -285,7 +285,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -311,7 +311,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -444,7 +444,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -470,7 +470,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -618,7 +618,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -644,7 +644,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -784,7 +784,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -810,7 +810,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -947,7 +947,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -973,7 +973,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1111,7 +1111,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1137,7 +1137,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1274,7 +1274,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1300,7 +1300,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1364,7 +1364,6 @@ START } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -END Duration: XXXX ms Memory Used: XXXX MB { "traces": [ [ @@ -1446,7 +1445,7 @@ END Duration: XXXX ms Memory Used: XXXX MB "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1472,7 +1471,7 @@ END Duration: XXXX ms Memory Used: XXXX MB "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1496,3 +1495,4 @@ END Duration: XXXX ms Memory Used: XXXX MB ] ] } +END Duration: XXXX ms Memory Used: XXXX MB diff --git a/tests/integration/snapshots/logs/async-metrics_python39.log b/tests/integration/snapshots/logs/async-metrics_python39.log index 53ef3d2f..d02e097d 100644 --- a/tests/integration/snapshots/logs/async-metrics_python39.log +++ b/tests/integration/snapshots/logs/async-metrics_python39.log @@ -119,7 +119,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -145,7 +145,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -285,7 +285,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -311,7 +311,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -444,7 +444,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -470,7 +470,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -618,7 +618,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -644,7 +644,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -784,7 +784,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -810,7 +810,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -947,7 +947,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -973,7 +973,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1111,7 +1111,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1137,7 +1137,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1274,7 +1274,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1300,7 +1300,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1445,7 +1445,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1471,7 +1471,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", diff --git a/tests/integration/snapshots/logs/sync-metrics_python310.log b/tests/integration/snapshots/logs/sync-metrics_python310.log index 07d37c40..ac833bf0 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python310.log +++ b/tests/integration/snapshots/logs/sync-metrics_python310.log @@ -99,7 +99,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -125,7 +125,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -158,7 +158,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -284,7 +284,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -310,7 +310,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -343,7 +343,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -462,7 +462,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -488,7 +488,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -521,7 +521,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -655,7 +655,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -681,7 +681,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -714,7 +714,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -840,7 +840,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -866,7 +866,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -899,7 +899,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1022,7 +1022,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1048,7 +1048,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1081,7 +1081,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1205,7 +1205,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1231,7 +1231,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1264,7 +1264,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1387,7 +1387,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1413,7 +1413,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1446,7 +1446,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1577,7 +1577,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1603,7 +1603,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1636,7 +1636,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", diff --git a/tests/integration/snapshots/logs/sync-metrics_python311.log b/tests/integration/snapshots/logs/sync-metrics_python311.log index c2a3e5cd..0e252e0f 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python311.log +++ b/tests/integration/snapshots/logs/sync-metrics_python311.log @@ -99,7 +99,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -125,7 +125,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -158,7 +158,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -284,7 +284,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -310,7 +310,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -343,7 +343,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -462,7 +462,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -488,7 +488,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -521,7 +521,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -655,7 +655,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -681,7 +681,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -714,7 +714,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -840,7 +840,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -866,7 +866,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -899,7 +899,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1022,7 +1022,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1048,7 +1048,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1081,7 +1081,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1205,7 +1205,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1231,7 +1231,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1264,7 +1264,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1387,7 +1387,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1413,7 +1413,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1446,7 +1446,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1577,7 +1577,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1603,7 +1603,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1636,7 +1636,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", diff --git a/tests/integration/snapshots/logs/sync-metrics_python312.log b/tests/integration/snapshots/logs/sync-metrics_python312.log index 6b33fcb9..74ebff99 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python312.log +++ b/tests/integration/snapshots/logs/sync-metrics_python312.log @@ -99,7 +99,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -125,7 +125,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -158,7 +158,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -284,7 +284,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -310,7 +310,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -343,7 +343,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -462,7 +462,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -488,7 +488,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -521,7 +521,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -655,7 +655,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -681,7 +681,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -714,7 +714,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -840,7 +840,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -866,7 +866,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -899,7 +899,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1022,7 +1022,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1048,7 +1048,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1081,7 +1081,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1205,7 +1205,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1231,7 +1231,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1264,7 +1264,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1387,7 +1387,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1413,7 +1413,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1446,7 +1446,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1577,7 +1577,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1603,7 +1603,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1636,7 +1636,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", diff --git a/tests/integration/snapshots/logs/sync-metrics_python38.log b/tests/integration/snapshots/logs/sync-metrics_python38.log index 81e776e1..bd52bc1e 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python38.log +++ b/tests/integration/snapshots/logs/sync-metrics_python38.log @@ -99,7 +99,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -125,7 +125,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -158,7 +158,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -284,7 +284,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -310,7 +310,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -343,7 +343,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -462,7 +462,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -488,7 +488,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -521,7 +521,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -655,7 +655,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -681,7 +681,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -714,7 +714,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -840,7 +840,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -866,7 +866,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -899,7 +899,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1022,7 +1022,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1048,7 +1048,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1081,7 +1081,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1205,7 +1205,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1231,7 +1231,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1256,7 +1256,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] } HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX -END Duration: XXXX ms Memory Used: XXXX MB { "traces": [ [ @@ -1265,7 +1264,7 @@ END Duration: XXXX ms Memory Used: XXXX MB "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1295,6 +1294,7 @@ END Duration: XXXX ms Memory Used: XXXX MB ] ] } +END Duration: XXXX ms Memory Used: XXXX MB START { "m": "aws.lambda.enhanced.invocations", @@ -1387,7 +1387,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1413,7 +1413,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1446,7 +1446,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1577,7 +1577,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1603,7 +1603,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1636,7 +1636,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", diff --git a/tests/integration/snapshots/logs/sync-metrics_python39.log b/tests/integration/snapshots/logs/sync-metrics_python39.log index 0c7f5682..92a7cd33 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python39.log +++ b/tests/integration/snapshots/logs/sync-metrics_python39.log @@ -99,7 +99,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -125,7 +125,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -158,7 +158,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -284,7 +284,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -310,7 +310,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -335,7 +335,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] } HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX -END Duration: XXXX ms Memory Used: XXXX MB { "traces": [ [ @@ -344,7 +343,7 @@ END Duration: XXXX ms Memory Used: XXXX MB "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -374,6 +373,7 @@ END Duration: XXXX ms Memory Used: XXXX MB ] ] } +END Duration: XXXX ms Memory Used: XXXX MB START { "m": "aws.lambda.enhanced.invocations", @@ -462,7 +462,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -488,7 +488,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -521,7 +521,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -655,7 +655,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -681,7 +681,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -714,7 +714,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -840,7 +840,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -866,7 +866,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -899,7 +899,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1022,7 +1022,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1048,7 +1048,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1081,7 +1081,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1205,7 +1205,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1231,7 +1231,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1264,7 +1264,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1387,7 +1387,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1413,7 +1413,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1446,7 +1446,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1577,7 +1577,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1603,7 +1603,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1636,7 +1636,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", From 740087421b00aa900b8eec363c59c6066268b1b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?jordan=20gonz=C3=A1lez?= <30836115+duncanista@users.noreply.github.com> Date: Fri, 26 Jan 2024 14:32:40 -0500 Subject: [PATCH 069/268] chore: update build to output directly to path (#410) * update `Dockerfile` and `build_layers.sh` updated script to output directly on build, allowing me to run this locally and in a gitlab job * uncomment needed changes --- Dockerfile | 5 ++++- scripts/build_layers.sh | 8 ++------ 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/Dockerfile b/Dockerfile index 2cf569a7..a2da16f9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ ARG image -FROM $image +FROM $image as builder ARG runtime @@ -23,3 +23,6 @@ RUN find . -name '*.so' -exec strip -g {} \; RUN rm -rf ./python/lib/$runtime/site-packages/botocore* RUN rm -rf ./python/lib/$runtime/site-packages/setuptools RUN rm -rf ./python/lib/$runtime/site-packages/jsonschema/tests + +FROM scratch +COPY --from=builder /build/python / diff --git a/scripts/build_layers.sh b/scripts/build_layers.sh index ebd0eed3..9794f2bf 100755 --- a/scripts/build_layers.sh +++ b/scripts/build_layers.sh @@ -49,12 +49,8 @@ function docker_build_zip { --build-arg image=python:$1 \ --build-arg runtime=python$1 \ --platform linux/${arch} \ - --load - - # Run the image by runtime tag and copy the output /build/python to the temp dir - dockerId=$(docker create datadog-lambda-python-${arch}:$1) - docker cp $dockerId:/build/python $temp_dir/python - + --progress=plain \ + -o $temp_dir/python # Zip to destination, and keep directory structure as based in $temp_dir (cd $temp_dir && zip -q -r $destination ./) From 10bcb729b9013a07034bc771e78d2206d55a1f2b Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Fri, 26 Jan 2024 14:34:25 -0500 Subject: [PATCH 070/268] feat: Bump ddtrace to 2.5.1 (#412) * feat: Bump ddtrace to 2.5.0 * feat: actually use 2.5.1 --- poetry.lock | 521 ++++++++++++++++++++++++------------------------- pyproject.toml | 2 +- 2 files changed, 258 insertions(+), 265 deletions(-) diff --git a/poetry.lock b/poetry.lock index c32c4c69..52515d21 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,54 +1,55 @@ -# This file is automatically @generated by Poetry 1.5.0 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.4.2 and should not be changed by hand. [[package]] name = "attrs" -version = "23.1.0" +version = "23.2.0" description = "Classes Without Boilerplate" +category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "attrs-23.1.0-py3-none-any.whl", hash = "sha256:1f28b4522cdc2fb4256ac1a020c78acf9cba2c6b461ccd2c126f3aa8e8335d04"}, - {file = "attrs-23.1.0.tar.gz", hash = "sha256:6279836d581513a26f1bf235f9acd333bc9115683f14f7e8fae46c98fc50e015"}, + {file = "attrs-23.2.0-py3-none-any.whl", hash = "sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1"}, + {file = "attrs-23.2.0.tar.gz", hash = "sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30"}, ] -[package.dependencies] -importlib-metadata = {version = "*", markers = "python_version < \"3.8\""} - [package.extras] cov = ["attrs[tests]", "coverage[toml] (>=5.3)"] -dev = ["attrs[docs,tests]", "pre-commit"] +dev = ["attrs[tests]", "pre-commit"] docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope-interface"] tests = ["attrs[tests-no-zope]", "zope-interface"] -tests-no-zope = ["cloudpickle", "hypothesis", "mypy (>=1.1.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +tests-mypy = ["mypy (>=1.6)", "pytest-mypy-plugins"] +tests-no-zope = ["attrs[tests-mypy]", "cloudpickle", "hypothesis", "pympler", "pytest (>=4.3.0)", "pytest-xdist[psutil]"] [[package]] name = "boto3" -version = "1.29.5" +version = "1.34.28" description = "The AWS SDK for Python" +category = "main" optional = true -python-versions = ">= 3.7" +python-versions = ">= 3.8" files = [ - {file = "boto3-1.29.5-py3-none-any.whl", hash = "sha256:030b0f0faf8d44f97e67a5411644243482f33ebf1c45338bb40662239a16dda4"}, - {file = "boto3-1.29.5.tar.gz", hash = "sha256:76fc6a17781c27558c526e899579ccf530df10eb279261fe7800540f0043917e"}, + {file = "boto3-1.34.28-py3-none-any.whl", hash = "sha256:fb56622ce195c06ae0d15ae9472d44529362a869ad52862a5a28b891530969f9"}, + {file = "boto3-1.34.28.tar.gz", hash = "sha256:9e0dcca7bb0567f7b4b84d1d26c19b217abfe149d19106af7f120f09142688cf"}, ] [package.dependencies] -botocore = ">=1.32.5,<1.33.0" +botocore = ">=1.34.28,<1.35.0" jmespath = ">=0.7.1,<2.0.0" -s3transfer = ">=0.7.0,<0.8.0" +s3transfer = ">=0.10.0,<0.11.0" [package.extras] crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] [[package]] name = "botocore" -version = "1.32.5" +version = "1.34.28" description = "Low-level, data-driven core of boto 3." +category = "main" optional = true -python-versions = ">= 3.7" +python-versions = ">= 3.8" files = [ - {file = "botocore-1.32.5-py3-none-any.whl", hash = "sha256:b8960c955ba275915bf022c54c896c2dac1038289d8a5ace92d1431257c0a439"}, - {file = "botocore-1.32.5.tar.gz", hash = "sha256:75a68f942cd87baff83b3a20dfda11b3aeda48aad32e4dcd6fe8992c0cb0e7db"}, + {file = "botocore-1.34.28-py3-none-any.whl", hash = "sha256:03be8209257ab65f3c8be7377cf8d38bff6a6afbe3d36c72924e48959bb694dc"}, + {file = "botocore-1.34.28.tar.gz", hash = "sha256:45c99ccc6389ab1a87e996a7cc8797c7e41d5ecd9a5757d567ba3a57cb7655e7"}, ] [package.dependencies] @@ -60,23 +61,13 @@ urllib3 = [ ] [package.extras] -crt = ["awscrt (==0.19.12)"] - -[[package]] -name = "bytecode" -version = "0.13.0" -description = "Python module to generate and modify bytecode" -optional = false -python-versions = ">=3.6" -files = [ - {file = "bytecode-0.13.0-py3-none-any.whl", hash = "sha256:e69f92e7d27f99d5d7d76e6a824bd3d9ff857c72b59927aaf87e1a620f67fe50"}, - {file = "bytecode-0.13.0.tar.gz", hash = "sha256:6af3c2f0a31ce05dce41f7eea5cc380e33f5e8fbb7dcee3b52467a00acd52fcd"}, -] +crt = ["awscrt (==0.19.19)"] [[package]] name = "bytecode" version = "0.15.1" description = "Python module to generate and modify bytecode" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -89,33 +80,35 @@ typing-extensions = {version = "*", markers = "python_version < \"3.10\""} [[package]] name = "cattrs" -version = "23.1.2" +version = "23.2.3" description = "Composable complex class support for attrs and dataclasses." +category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "cattrs-23.1.2-py3-none-any.whl", hash = "sha256:b2bb14311ac17bed0d58785e5a60f022e5431aca3932e3fc5cc8ed8639de50a4"}, - {file = "cattrs-23.1.2.tar.gz", hash = "sha256:db1c821b8c537382b2c7c66678c3790091ca0275ac486c76f3c8f3920e83c657"}, + {file = "cattrs-23.2.3-py3-none-any.whl", hash = "sha256:0341994d94971052e9ee70662542699a3162ea1e0c62f7ce1b4a57f563685108"}, + {file = "cattrs-23.2.3.tar.gz", hash = "sha256:a934090d95abaa9e911dac357e3a8699e0b4b14f8529bcc7d2b1ad9d51672b9f"}, ] [package.dependencies] -attrs = ">=20" -exceptiongroup = {version = "*", markers = "python_version < \"3.11\""} -typing_extensions = {version = ">=4.1.0", markers = "python_version < \"3.11\""} +attrs = ">=23.1.0" +exceptiongroup = {version = ">=1.1.1", markers = "python_version < \"3.11\""} +typing-extensions = {version = ">=4.1.0,<4.6.3 || >4.6.3", markers = "python_version < \"3.11\""} [package.extras] -bson = ["pymongo (>=4.2.0,<5.0.0)"] -cbor2 = ["cbor2 (>=5.4.6,<6.0.0)"] -msgpack = ["msgpack (>=1.0.2,<2.0.0)"] -orjson = ["orjson (>=3.5.2,<4.0.0)"] -pyyaml = ["PyYAML (>=6.0,<7.0)"] -tomlkit = ["tomlkit (>=0.11.4,<0.12.0)"] -ujson = ["ujson (>=5.4.0,<6.0.0)"] +bson = ["pymongo (>=4.4.0)"] +cbor2 = ["cbor2 (>=5.4.6)"] +msgpack = ["msgpack (>=1.0.5)"] +orjson = ["orjson (>=3.9.2)"] +pyyaml = ["pyyaml (>=6.0)"] +tomlkit = ["tomlkit (>=0.11.8)"] +ujson = ["ujson (>=5.7.0)"] [[package]] name = "certifi" version = "2023.11.17" description = "Python package for providing Mozilla's CA Bundle." +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -127,6 +120,7 @@ files = [ name = "charset-normalizer" version = "3.3.2" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." +category = "main" optional = false python-versions = ">=3.7.0" files = [ @@ -224,71 +218,64 @@ files = [ [[package]] name = "coverage" -version = "7.2.7" +version = "7.4.1" description = "Code coverage measurement for Python" +category = "main" optional = true -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "coverage-7.2.7-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d39b5b4f2a66ccae8b7263ac3c8170994b65266797fb96cbbfd3fb5b23921db8"}, - {file = "coverage-7.2.7-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6d040ef7c9859bb11dfeb056ff5b3872436e3b5e401817d87a31e1750b9ae2fb"}, - {file = "coverage-7.2.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ba90a9563ba44a72fda2e85302c3abc71c5589cea608ca16c22b9804262aaeb6"}, - {file = "coverage-7.2.7-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e7d9405291c6928619403db1d10bd07888888ec1abcbd9748fdaa971d7d661b2"}, - {file = "coverage-7.2.7-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:31563e97dae5598556600466ad9beea39fb04e0229e61c12eaa206e0aa202063"}, - {file = "coverage-7.2.7-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:ebba1cd308ef115925421d3e6a586e655ca5a77b5bf41e02eb0e4562a111f2d1"}, - {file = "coverage-7.2.7-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:cb017fd1b2603ef59e374ba2063f593abe0fc45f2ad9abdde5b4d83bd922a353"}, - {file = "coverage-7.2.7-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d62a5c7dad11015c66fbb9d881bc4caa5b12f16292f857842d9d1871595f4495"}, - {file = "coverage-7.2.7-cp310-cp310-win32.whl", hash = "sha256:ee57190f24fba796e36bb6d3aa8a8783c643d8fa9760c89f7a98ab5455fbf818"}, - {file = "coverage-7.2.7-cp310-cp310-win_amd64.whl", hash = "sha256:f75f7168ab25dd93110c8a8117a22450c19976afbc44234cbf71481094c1b850"}, - {file = "coverage-7.2.7-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:06a9a2be0b5b576c3f18f1a241f0473575c4a26021b52b2a85263a00f034d51f"}, - {file = "coverage-7.2.7-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5baa06420f837184130752b7c5ea0808762083bf3487b5038d68b012e5937dbe"}, - {file = "coverage-7.2.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fdec9e8cbf13a5bf63290fc6013d216a4c7232efb51548594ca3631a7f13c3a3"}, - {file = "coverage-7.2.7-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:52edc1a60c0d34afa421c9c37078817b2e67a392cab17d97283b64c5833f427f"}, - {file = "coverage-7.2.7-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63426706118b7f5cf6bb6c895dc215d8a418d5952544042c8a2d9fe87fcf09cb"}, - {file = "coverage-7.2.7-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:afb17f84d56068a7c29f5fa37bfd38d5aba69e3304af08ee94da8ed5b0865833"}, - {file = "coverage-7.2.7-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:48c19d2159d433ccc99e729ceae7d5293fbffa0bdb94952d3579983d1c8c9d97"}, - {file = "coverage-7.2.7-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0e1f928eaf5469c11e886fe0885ad2bf1ec606434e79842a879277895a50942a"}, - {file = "coverage-7.2.7-cp311-cp311-win32.whl", hash = "sha256:33d6d3ea29d5b3a1a632b3c4e4f4ecae24ef170b0b9ee493883f2df10039959a"}, - {file = "coverage-7.2.7-cp311-cp311-win_amd64.whl", hash = "sha256:5b7540161790b2f28143191f5f8ec02fb132660ff175b7747b95dcb77ac26562"}, - {file = "coverage-7.2.7-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f2f67fe12b22cd130d34d0ef79206061bfb5eda52feb6ce0dba0644e20a03cf4"}, - {file = "coverage-7.2.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a342242fe22407f3c17f4b499276a02b01e80f861f1682ad1d95b04018e0c0d4"}, - {file = "coverage-7.2.7-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:171717c7cb6b453aebac9a2ef603699da237f341b38eebfee9be75d27dc38e01"}, - {file = "coverage-7.2.7-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49969a9f7ffa086d973d91cec8d2e31080436ef0fb4a359cae927e742abfaaa6"}, - {file = "coverage-7.2.7-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b46517c02ccd08092f4fa99f24c3b83d8f92f739b4657b0f146246a0ca6a831d"}, - {file = "coverage-7.2.7-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:a3d33a6b3eae87ceaefa91ffdc130b5e8536182cd6dfdbfc1aa56b46ff8c86de"}, - {file = "coverage-7.2.7-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:976b9c42fb2a43ebf304fa7d4a310e5f16cc99992f33eced91ef6f908bd8f33d"}, - {file = "coverage-7.2.7-cp312-cp312-win32.whl", hash = "sha256:8de8bb0e5ad103888d65abef8bca41ab93721647590a3f740100cd65c3b00511"}, - {file = "coverage-7.2.7-cp312-cp312-win_amd64.whl", hash = "sha256:9e31cb64d7de6b6f09702bb27c02d1904b3aebfca610c12772452c4e6c21a0d3"}, - {file = "coverage-7.2.7-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:58c2ccc2f00ecb51253cbe5d8d7122a34590fac9646a960d1430d5b15321d95f"}, - {file = "coverage-7.2.7-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d22656368f0e6189e24722214ed8d66b8022db19d182927b9a248a2a8a2f67eb"}, - {file = "coverage-7.2.7-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a895fcc7b15c3fc72beb43cdcbdf0ddb7d2ebc959edac9cef390b0d14f39f8a9"}, - {file = "coverage-7.2.7-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e84606b74eb7de6ff581a7915e2dab7a28a0517fbe1c9239eb227e1354064dcd"}, - {file = "coverage-7.2.7-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:0a5f9e1dbd7fbe30196578ca36f3fba75376fb99888c395c5880b355e2875f8a"}, - {file = "coverage-7.2.7-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:419bfd2caae268623dd469eff96d510a920c90928b60f2073d79f8fe2bbc5959"}, - {file = "coverage-7.2.7-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:2aee274c46590717f38ae5e4650988d1af340fe06167546cc32fe2f58ed05b02"}, - {file = "coverage-7.2.7-cp37-cp37m-win32.whl", hash = "sha256:61b9a528fb348373c433e8966535074b802c7a5d7f23c4f421e6c6e2f1697a6f"}, - {file = "coverage-7.2.7-cp37-cp37m-win_amd64.whl", hash = "sha256:b1c546aca0ca4d028901d825015dc8e4d56aac4b541877690eb76490f1dc8ed0"}, - {file = "coverage-7.2.7-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:54b896376ab563bd38453cecb813c295cf347cf5906e8b41d340b0321a5433e5"}, - {file = "coverage-7.2.7-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:3d376df58cc111dc8e21e3b6e24606b5bb5dee6024f46a5abca99124b2229ef5"}, - {file = "coverage-7.2.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e330fc79bd7207e46c7d7fd2bb4af2963f5f635703925543a70b99574b0fea9"}, - {file = "coverage-7.2.7-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e9d683426464e4a252bf70c3498756055016f99ddaec3774bf368e76bbe02b6"}, - {file = "coverage-7.2.7-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d13c64ee2d33eccf7437961b6ea7ad8673e2be040b4f7fd4fd4d4d28d9ccb1e"}, - {file = "coverage-7.2.7-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b7aa5f8a41217360e600da646004f878250a0d6738bcdc11a0a39928d7dc2050"}, - {file = "coverage-7.2.7-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:8fa03bce9bfbeeef9f3b160a8bed39a221d82308b4152b27d82d8daa7041fee5"}, - {file = "coverage-7.2.7-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:245167dd26180ab4c91d5e1496a30be4cd721a5cf2abf52974f965f10f11419f"}, - {file = "coverage-7.2.7-cp38-cp38-win32.whl", hash = "sha256:d2c2db7fd82e9b72937969bceac4d6ca89660db0a0967614ce2481e81a0b771e"}, - {file = "coverage-7.2.7-cp38-cp38-win_amd64.whl", hash = "sha256:2e07b54284e381531c87f785f613b833569c14ecacdcb85d56b25c4622c16c3c"}, - {file = "coverage-7.2.7-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:537891ae8ce59ef63d0123f7ac9e2ae0fc8b72c7ccbe5296fec45fd68967b6c9"}, - {file = "coverage-7.2.7-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:06fb182e69f33f6cd1d39a6c597294cff3143554b64b9825d1dc69d18cc2fff2"}, - {file = "coverage-7.2.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:201e7389591af40950a6480bd9edfa8ed04346ff80002cec1a66cac4549c1ad7"}, - {file = "coverage-7.2.7-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f6951407391b639504e3b3be51b7ba5f3528adbf1a8ac3302b687ecababf929e"}, - {file = "coverage-7.2.7-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f48351d66575f535669306aa7d6d6f71bc43372473b54a832222803eb956fd1"}, - {file = "coverage-7.2.7-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b29019c76039dc3c0fd815c41392a044ce555d9bcdd38b0fb60fb4cd8e475ba9"}, - {file = "coverage-7.2.7-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:81c13a1fc7468c40f13420732805a4c38a105d89848b7c10af65a90beff25250"}, - {file = "coverage-7.2.7-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:975d70ab7e3c80a3fe86001d8751f6778905ec723f5b110aed1e450da9d4b7f2"}, - {file = "coverage-7.2.7-cp39-cp39-win32.whl", hash = "sha256:7ee7d9d4822c8acc74a5e26c50604dff824710bc8de424904c0982e25c39c6cb"}, - {file = "coverage-7.2.7-cp39-cp39-win_amd64.whl", hash = "sha256:eb393e5ebc85245347950143969b241d08b52b88a3dc39479822e073a1a8eb27"}, - {file = "coverage-7.2.7-pp37.pp38.pp39-none-any.whl", hash = "sha256:b7b4c971f05e6ae490fef852c218b0e79d4e52f79ef0c8475566584a8fb3e01d"}, - {file = "coverage-7.2.7.tar.gz", hash = "sha256:924d94291ca674905fe9481f12294eb11f2d3d3fd1adb20314ba89e94f44ed59"}, + {file = "coverage-7.4.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:077d366e724f24fc02dbfe9d946534357fda71af9764ff99d73c3c596001bbd7"}, + {file = "coverage-7.4.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0193657651f5399d433c92f8ae264aff31fc1d066deee4b831549526433f3f61"}, + {file = "coverage-7.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d17bbc946f52ca67adf72a5ee783cd7cd3477f8f8796f59b4974a9b59cacc9ee"}, + {file = "coverage-7.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a3277f5fa7483c927fe3a7b017b39351610265308f5267ac6d4c2b64cc1d8d25"}, + {file = "coverage-7.4.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6dceb61d40cbfcf45f51e59933c784a50846dc03211054bd76b421a713dcdf19"}, + {file = "coverage-7.4.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:6008adeca04a445ea6ef31b2cbaf1d01d02986047606f7da266629afee982630"}, + {file = "coverage-7.4.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:c61f66d93d712f6e03369b6a7769233bfda880b12f417eefdd4f16d1deb2fc4c"}, + {file = "coverage-7.4.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b9bb62fac84d5f2ff523304e59e5c439955fb3b7f44e3d7b2085184db74d733b"}, + {file = "coverage-7.4.1-cp310-cp310-win32.whl", hash = "sha256:f86f368e1c7ce897bf2457b9eb61169a44e2ef797099fb5728482b8d69f3f016"}, + {file = "coverage-7.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:869b5046d41abfea3e381dd143407b0d29b8282a904a19cb908fa24d090cc018"}, + {file = "coverage-7.4.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b8ffb498a83d7e0305968289441914154fb0ef5d8b3157df02a90c6695978295"}, + {file = "coverage-7.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3cacfaefe6089d477264001f90f55b7881ba615953414999c46cc9713ff93c8c"}, + {file = "coverage-7.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d6850e6e36e332d5511a48a251790ddc545e16e8beaf046c03985c69ccb2676"}, + {file = "coverage-7.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:18e961aa13b6d47f758cc5879383d27b5b3f3dcd9ce8cdbfdc2571fe86feb4dd"}, + {file = "coverage-7.4.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dfd1e1b9f0898817babf840b77ce9fe655ecbe8b1b327983df485b30df8cc011"}, + {file = "coverage-7.4.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:6b00e21f86598b6330f0019b40fb397e705135040dbedc2ca9a93c7441178e74"}, + {file = "coverage-7.4.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:536d609c6963c50055bab766d9951b6c394759190d03311f3e9fcf194ca909e1"}, + {file = "coverage-7.4.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:7ac8f8eb153724f84885a1374999b7e45734bf93a87d8df1e7ce2146860edef6"}, + {file = "coverage-7.4.1-cp311-cp311-win32.whl", hash = "sha256:f3771b23bb3675a06f5d885c3630b1d01ea6cac9e84a01aaf5508706dba546c5"}, + {file = "coverage-7.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:9d2f9d4cc2a53b38cabc2d6d80f7f9b7e3da26b2f53d48f05876fef7956b6968"}, + {file = "coverage-7.4.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f68ef3660677e6624c8cace943e4765545f8191313a07288a53d3da188bd8581"}, + {file = "coverage-7.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:23b27b8a698e749b61809fb637eb98ebf0e505710ec46a8aa6f1be7dc0dc43a6"}, + {file = "coverage-7.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e3424c554391dc9ef4a92ad28665756566a28fecf47308f91841f6c49288e66"}, + {file = "coverage-7.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e0860a348bf7004c812c8368d1fc7f77fe8e4c095d661a579196a9533778e156"}, + {file = "coverage-7.4.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe558371c1bdf3b8fa03e097c523fb9645b8730399c14fe7721ee9c9e2a545d3"}, + {file = "coverage-7.4.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3468cc8720402af37b6c6e7e2a9cdb9f6c16c728638a2ebc768ba1ef6f26c3a1"}, + {file = "coverage-7.4.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:02f2edb575d62172aa28fe00efe821ae31f25dc3d589055b3fb64d51e52e4ab1"}, + {file = "coverage-7.4.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ca6e61dc52f601d1d224526360cdeab0d0712ec104a2ce6cc5ccef6ed9a233bc"}, + {file = "coverage-7.4.1-cp312-cp312-win32.whl", hash = "sha256:ca7b26a5e456a843b9b6683eada193fc1f65c761b3a473941efe5a291f604c74"}, + {file = "coverage-7.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:85ccc5fa54c2ed64bd91ed3b4a627b9cce04646a659512a051fa82a92c04a448"}, + {file = "coverage-7.4.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8bdb0285a0202888d19ec6b6d23d5990410decb932b709f2b0dfe216d031d218"}, + {file = "coverage-7.4.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:918440dea04521f499721c039863ef95433314b1db00ff826a02580c1f503e45"}, + {file = "coverage-7.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:379d4c7abad5afbe9d88cc31ea8ca262296480a86af945b08214eb1a556a3e4d"}, + {file = "coverage-7.4.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b094116f0b6155e36a304ff912f89bbb5067157aff5f94060ff20bbabdc8da06"}, + {file = "coverage-7.4.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2f5968608b1fe2a1d00d01ad1017ee27efd99b3437e08b83ded9b7af3f6f766"}, + {file = "coverage-7.4.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:10e88e7f41e6197ea0429ae18f21ff521d4f4490aa33048f6c6f94c6045a6a75"}, + {file = "coverage-7.4.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a4a3907011d39dbc3e37bdc5df0a8c93853c369039b59efa33a7b6669de04c60"}, + {file = "coverage-7.4.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6d224f0c4c9c98290a6990259073f496fcec1b5cc613eecbd22786d398ded3ad"}, + {file = "coverage-7.4.1-cp38-cp38-win32.whl", hash = "sha256:23f5881362dcb0e1a92b84b3c2809bdc90db892332daab81ad8f642d8ed55042"}, + {file = "coverage-7.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:a07f61fc452c43cd5328b392e52555f7d1952400a1ad09086c4a8addccbd138d"}, + {file = "coverage-7.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8e738a492b6221f8dcf281b67129510835461132b03024830ac0e554311a5c54"}, + {file = "coverage-7.4.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:46342fed0fff72efcda77040b14728049200cbba1279e0bf1188f1f2078c1d70"}, + {file = "coverage-7.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9641e21670c68c7e57d2053ddf6c443e4f0a6e18e547e86af3fad0795414a628"}, + {file = "coverage-7.4.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aeb2c2688ed93b027eb0d26aa188ada34acb22dceea256d76390eea135083950"}, + {file = "coverage-7.4.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d12c923757de24e4e2110cf8832d83a886a4cf215c6e61ed506006872b43a6d1"}, + {file = "coverage-7.4.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0491275c3b9971cdbd28a4595c2cb5838f08036bca31765bad5e17edf900b2c7"}, + {file = "coverage-7.4.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:8dfc5e195bbef80aabd81596ef52a1277ee7143fe419efc3c4d8ba2754671756"}, + {file = "coverage-7.4.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:1a78b656a4d12b0490ca72651fe4d9f5e07e3c6461063a9b6265ee45eb2bdd35"}, + {file = "coverage-7.4.1-cp39-cp39-win32.whl", hash = "sha256:f90515974b39f4dea2f27c0959688621b46d96d5a626cf9c53dbc653a895c05c"}, + {file = "coverage-7.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:64e723ca82a84053dd7bfcc986bdb34af8d9da83c521c19d6b472bc6880e191a"}, + {file = "coverage-7.4.1-pp38.pp39.pp310-none-any.whl", hash = "sha256:32a8d985462e37cfdab611a6f95b09d7c091d07668fdc26e47a725ee575fe166"}, + {file = "coverage-7.4.1.tar.gz", hash = "sha256:1ed4b95480952b1a26d863e546fa5094564aa0065e1e5f0d4d0041f293251d04"}, ] [package.extras] @@ -296,13 +283,14 @@ toml = ["tomli"] [[package]] name = "datadog" -version = "0.47.0" +version = "0.48.0" description = "The Datadog Python library" +category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ - {file = "datadog-0.47.0-py2.py3-none-any.whl", hash = "sha256:a45ec997ab554208837e8c44d81d0e1456539dc14da5743687250e028bc809b7"}, - {file = "datadog-0.47.0.tar.gz", hash = "sha256:47be3b2c3d709a7f5b709eb126ed4fe6cc7977d618fe5c158dd89c2a9f7d9916"}, + {file = "datadog-0.48.0-py2.py3-none-any.whl", hash = "sha256:c3f819e2dc632a546a5b4e8d45409e996d4fa18c60df7814c82eda548e0cca59"}, + {file = "datadog-0.48.0.tar.gz", hash = "sha256:d4d661358c3e7f801fbfe15118f5ccf08b9bd9b1f45b8b910605965283edad64"}, ] [package.dependencies] @@ -312,6 +300,7 @@ requests = ">=2.6.0" name = "ddsketch" version = "2.0.4" description = "Distributed quantile sketches" +category = "main" optional = false python-versions = ">=2.7" files = [ @@ -325,83 +314,80 @@ six = "*" [[package]] name = "ddtrace" -version = "2.3.1" +version = "2.5.1" description = "Datadog APM client library" +category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "ddtrace-2.3.1-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:556a046413024cf53ebb0256bbf957692a5e417599e04dac5793e659d08c398c"}, - {file = "ddtrace-2.3.1-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:6066f1deddb454b8e098e5a0eb53ab36d81344209fdf6bec94767358da190294"}, - {file = "ddtrace-2.3.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb2b950901845b966a7805ff49a9ad58dcd5e9c27b5b804079977a1309c5b4fb"}, - {file = "ddtrace-2.3.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:05b0da47bc98a9802faa2557e83c096868c4ef249c3d9a43f8e5daf91d1c8e4f"}, - {file = "ddtrace-2.3.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0183c5178112604eb012653fd17d0947e6e2f17325f93b1e32cc6af05ceffd0"}, - {file = "ddtrace-2.3.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:462eb671cd78780af6e42b43f2bc451537a0d283db054c175348e9b3a1fcaff4"}, - {file = "ddtrace-2.3.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:9b5284786a0912a9739665a33760f561423524e2d250c0b0bb2dedf6edba2da5"}, - {file = "ddtrace-2.3.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:dbfb1ade5725a63f21945ab8234e64e46645e98a7deb4342eddf6e86d0f9145c"}, - {file = "ddtrace-2.3.1-cp310-cp310-win32.whl", hash = "sha256:1f51732c4181e5b671a5ae3c6c786ce3b9fd2abacad2d4249d53a55564906902"}, - {file = "ddtrace-2.3.1-cp310-cp310-win_amd64.whl", hash = "sha256:0f0ae5814fbb51b4aba4d4f4b5c1fd2110790b04d4141cf4a03291566d1d5b0f"}, - {file = "ddtrace-2.3.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:24f4df55fd952182efe6815748db4675540f6fb674d9838dfa680dec1fdd176f"}, - {file = "ddtrace-2.3.1-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:04b4e476f78389021b50b3ae5c4d494bbbd033a300e93253fe1f873a67611436"}, - {file = "ddtrace-2.3.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:711978dd14c0aca7eaf90587b8608c891b82e1767fc6f2be7d82b67d56c8d580"}, - {file = "ddtrace-2.3.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bfa6b1b2698029b7b1f8cc351869397c33bff996159660a00ca254d9fcc5b78d"}, - {file = "ddtrace-2.3.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0dd7295921009ccc61f5325cc3d30fc6182396fc8e598975b372bdf94fd16077"}, - {file = "ddtrace-2.3.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:94aa6a2e16d05cbb2d7a9a7553ca9b638e5b200e0d80fd027179e6af0faf59a2"}, - {file = "ddtrace-2.3.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:62f67040ef16149a46c8506d92a2824d7ded39427a51947a3651d572bb7a379f"}, - {file = "ddtrace-2.3.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:02622c4b8d5497f6367d9ccad38ac8c59d46fc3373034be114474fb01b1a28e6"}, - {file = "ddtrace-2.3.1-cp311-cp311-win32.whl", hash = "sha256:1d13ec5393802a619f922fb37a9f534911f44554bd0434dfd2d8db4e8897649e"}, - {file = "ddtrace-2.3.1-cp311-cp311-win_amd64.whl", hash = "sha256:36b3427136f61d499f3fd307f97ae168a4d2728887e1922204e509a5aa72a4a3"}, - {file = "ddtrace-2.3.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:ac47d141e03c8bea3953fc5f51ac284de9ff4e6325faf2554b003ac906bc4da8"}, - {file = "ddtrace-2.3.1-cp312-cp312-macosx_11_0_x86_64.whl", hash = "sha256:dd23e10b4cac1cf26e64d4d1ec1d6e173e609a207f5520469326f5cff6c7e462"}, - {file = "ddtrace-2.3.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a31cddf750d7a28c886c194624c6be5a4475de064489002df898731f27f3d16"}, - {file = "ddtrace-2.3.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3dedd8097e58519f47f8908fe684f37c8f9722ce4b0614de78d9f39b83621dc7"}, - {file = "ddtrace-2.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:367aed800b78fb4d2af332c44d07d7126b1dbf758af422299f9a177811ec723d"}, - {file = "ddtrace-2.3.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ca4dea67facdeba44040d9af8eeff96fb9a35a2b1cff93255e33a4d7250881b9"}, - {file = "ddtrace-2.3.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:a661e133d451416741c6c2ad96baa417a1267204975bfb0d247cab748ecc3ed1"}, - {file = "ddtrace-2.3.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:556f60d6c9bbfc2da6d7f6751625fa3ae597c26bb8bbe74953db0d2d74f93b04"}, - {file = "ddtrace-2.3.1-cp312-cp312-win32.whl", hash = "sha256:261e20b9e9a363ec2dc728f8a009a2b1d3c9de4fbe07438b5600902a285bb179"}, - {file = "ddtrace-2.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:119be400024efff2f0eb66216b2aa3d2a700cd9b4a07605f7f9c94eb5e4b4cb5"}, - {file = "ddtrace-2.3.1-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:a66d0e0cccfa2fb207fc9a4d9ca6ab235a768f130129d6bb1dd256b7b3d34305"}, - {file = "ddtrace-2.3.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c465e43b96380f09e1e8f2d0f9cb3b78b4ef2bb211f25b57c925bb79f53cb00c"}, - {file = "ddtrace-2.3.1-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c3eaaf8c5b63e07533822425b3402552c75adf091a1f0a6bf949725fa610c779"}, - {file = "ddtrace-2.3.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:600551ecd232df060203714dc1acba4809e9194fc91a7c638b68c548e92af171"}, - {file = "ddtrace-2.3.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:837232d708956a5d595a3618641c188a5844d663e0f77b1461f20c83f74a21c0"}, - {file = "ddtrace-2.3.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:ddf3043581e2424fc3d4271ee00a038651a4ec9d2610eeaa2d6645095c9f4960"}, - {file = "ddtrace-2.3.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:63c6b28096e273431da923a8dfc0f54f7d472c3c78f0a5c4c99ed7e210b9c855"}, - {file = "ddtrace-2.3.1-cp37-cp37m-win32.whl", hash = "sha256:8b09a42cc975f798bfda9b8d8bf5c8c813022bfcf48b9e0e5e90caf4cf33ee8f"}, - {file = "ddtrace-2.3.1-cp37-cp37m-win_amd64.whl", hash = "sha256:66b49153c85423d5e99b1f364cc3b4a3ffedf35be0f3eb840f3bacd7c58100e8"}, - {file = "ddtrace-2.3.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:81f0bd1d50c8fc7d8a96e38f746ca4421fa3b52991f0df44e5e9faeb5a934c2b"}, - {file = "ddtrace-2.3.1-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:37d600d582a5046f82cf77ae9247cf15cf62cf23c15739c5f23c30db2aa092c9"}, - {file = "ddtrace-2.3.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:60a62cfa22695cb1392c617910fb389c7240fa9dae0b5792bd87ff3ae82d2c45"}, - {file = "ddtrace-2.3.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1bdf55fa4a842f9786ca30434b31bf6f877e95af86b6fb7a5a540ce592f566b7"}, - {file = "ddtrace-2.3.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63032c6a76173cab03c021e65c1997a12c0c571263caf00ec18b82c2293c49be"}, - {file = "ddtrace-2.3.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:516b830e52bc8ac2988f11a06a6c6a5296f73b119e99e8ee55a34e531389acea"}, - {file = "ddtrace-2.3.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:86e7764759043439c3f672f998f60bb9118fc4a6d7f603c762b125471b17f549"}, - {file = "ddtrace-2.3.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:87ae203dd8fa3e04f8855786ae4b2f103bc66c9f2368ee2b4e620bccdde9b34d"}, - {file = "ddtrace-2.3.1-cp38-cp38-win32.whl", hash = "sha256:f42fa2fa6f2cd9e3673a3bd7469439f5bea0ee86456706db1b50dc20b10682a6"}, - {file = "ddtrace-2.3.1-cp38-cp38-win_amd64.whl", hash = "sha256:2a3ad8e53c45c3329f939fe921714dfe76f5737e48f5b37a5422b1573a20ce44"}, - {file = "ddtrace-2.3.1-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:5adff6a5d60239e64062ad5efb72631c47c7fb8310ebea6d817f0208a7585074"}, - {file = "ddtrace-2.3.1-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:84012bc7d27dd3c4cd591bbaf0a0cc0413ebc6c838637ca5a76bacb354e2518f"}, - {file = "ddtrace-2.3.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3cc2596b26701c9e3a362195f79ddcf54b491a8ea13277ed16697da9ad943646"}, - {file = "ddtrace-2.3.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:986113f7eb4d8a8e87216b55e6cc40b578f84a5730241822af3f34cc61e42710"}, - {file = "ddtrace-2.3.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd0cdbc6d81e556b6af0875b0bb2ac77d3cf0a0c5da8faa014da1936e1e0adc2"}, - {file = "ddtrace-2.3.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9e8eb17ef8ca2fc9464216290969cff3bbf8df00860ebb219328804125b43bd1"}, - {file = "ddtrace-2.3.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:fc21e46c5e9d077022b7634ae247d15d2318cbb347f6756607dfd64ff5941797"}, - {file = "ddtrace-2.3.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:51bf7e3e5c80ef0daadd22c26e7c24c90fc4b4a7662dec1a3d9d8e0db68f3c09"}, - {file = "ddtrace-2.3.1-cp39-cp39-win32.whl", hash = "sha256:2a5f040c0eb101f82a9cd8b8b0279e8583bb0a62fd39b879197d53b71a5d6dbe"}, - {file = "ddtrace-2.3.1-cp39-cp39-win_amd64.whl", hash = "sha256:ff708683becb18771cb31ae5fb5d1430ac5031a082106e0dabac46a1fd6f832e"}, - {file = "ddtrace-2.3.1.tar.gz", hash = "sha256:273a0e98f93e7231708b30067768d80df9bc93a505de93500f30c6da24b70a7b"}, + {file = "ddtrace-2.5.1-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:3bb27b10bcb55ad392027ac37ddc86cbea04e38f9963b18e4b7218a59dbc9b6d"}, + {file = "ddtrace-2.5.1-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:bde40dd9cdff53de6535f9ae1e41a4d37aed0eb113e4597fde8f48dec4629291"}, + {file = "ddtrace-2.5.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e02e3d15c2a3b63bd5a05fed429f7d77d41bc818b7a18554ac0f36104de28ccf"}, + {file = "ddtrace-2.5.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e746cb76c41602173ed1d995929218c23cd41f52f29ac2cdf6d44f04b593a5b1"}, + {file = "ddtrace-2.5.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f98240890feca039ce05310bbe91cb842dfc43277ca0560e6acd483753a90cbd"}, + {file = "ddtrace-2.5.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:ae7ed838023ce3d30d2cd071bd6113525b6245e8c25c1f8f9ff32b76fb7b7394"}, + {file = "ddtrace-2.5.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e4b2ab5094e7d4cbf3a5143716e400b3b4af81e777e4afb30a9374394b7a8238"}, + {file = "ddtrace-2.5.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:da1db3e7b5d45c54daf5b422333a03711dcdb448d7b122a689841c450797baa6"}, + {file = "ddtrace-2.5.1-cp310-cp310-win32.whl", hash = "sha256:e0eda4c5f4cc7219361503fd05c1f0bbb6c70d73de73805d062becf323055ffc"}, + {file = "ddtrace-2.5.1-cp310-cp310-win_amd64.whl", hash = "sha256:aeb3a6358e702c7797fc6c447f2a2e5873dc207e65176bb6080608e7d2662a15"}, + {file = "ddtrace-2.5.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:aecb70d89e3662aa32fc42a271dcd90dde654902ccb97fbca2e5c52dfd10276d"}, + {file = "ddtrace-2.5.1-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:dc81597a7bf44d48ce1317e1dd62b0329eea1cf3a22cb1730273593bd3cf9dc6"}, + {file = "ddtrace-2.5.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79e9f9db08a0bd3751503d4e215e04780e5d59d084f43cb54cc35089c4e08c57"}, + {file = "ddtrace-2.5.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d971804470cb34a3580dd701432721678c0c361c75bc580cf2588f42fd13f0b9"}, + {file = "ddtrace-2.5.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c8a936345d53f5290c9557eac5ac7d90218cd45e7c92215f1ee3eb1de309fe46"}, + {file = "ddtrace-2.5.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:eee1eb5ef049b8667d0d53cacfc3c79b5fe978acbd5a59135cd4e1ed59b31be9"}, + {file = "ddtrace-2.5.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:56474f8756cb2a6b708c79a62227b5b0bc235d74099361a95ea225646dbbf230"}, + {file = "ddtrace-2.5.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:06c8b33099285db7fb7dd4b6dffae16b7d88d13231b00104e29c85d925d7359d"}, + {file = "ddtrace-2.5.1-cp311-cp311-win32.whl", hash = "sha256:209ac6ad4656869aecaa7794444d166c741200330843f555f4f8161643ea7a8b"}, + {file = "ddtrace-2.5.1-cp311-cp311-win_amd64.whl", hash = "sha256:418685567d33a27ac476756d73dfa81c74d40099f28dc5af61e3ad8cdaa6596d"}, + {file = "ddtrace-2.5.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:3a27a5cd2eefe98243e185d26cba380960819f43b1d214c77af6ba15699cd8ae"}, + {file = "ddtrace-2.5.1-cp312-cp312-macosx_11_0_x86_64.whl", hash = "sha256:16479b5e04bdb0400898a14b2208247955fd599f9809d7f84d5055557258b6f2"}, + {file = "ddtrace-2.5.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea1a5f908abd988e6f70595c31f4a0be18bbd780558c506640ce2751397c9d19"}, + {file = "ddtrace-2.5.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:72593b98093d3de456cd47185e6dbb851b77b104cd108a16d6339ff3102c1581"}, + {file = "ddtrace-2.5.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e7d1f311779369537148c124528265a7d7d45f4a4ad5304d4919c13d6216eba0"}, + {file = "ddtrace-2.5.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:06a2f4fe57eae9e5a54bd6cf7fad6e34c1c7205ce78a65c2eeb10bd00b610538"}, + {file = "ddtrace-2.5.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:45fc94bfd615c1c64f05e55b760289638de7149020e517af8cefca5151efbbc3"}, + {file = "ddtrace-2.5.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4d10f6e5113d757fef994b9d8db89c7fa270cbb8aec99b75527c460217e5f2a4"}, + {file = "ddtrace-2.5.1-cp312-cp312-win32.whl", hash = "sha256:7500956f12f55f51199b96cdbc6724adb627576dc968c8d36dbc646fc91cd291"}, + {file = "ddtrace-2.5.1-cp312-cp312-win_amd64.whl", hash = "sha256:3302bc89ccdecfbbd907766cbd4e083e5d0df1cf075cd49b07ae5f1c25987187"}, + {file = "ddtrace-2.5.1-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:0c845623008231788aca5e8e27e215d638999de0a82af58a3eebef74b8dd3100"}, + {file = "ddtrace-2.5.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:988582eb12ade7ba4f4bf4a09e5fde8f05a005ffc1784381fd258720354f80bb"}, + {file = "ddtrace-2.5.1-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2110dea2b2390f799516cfe0611e4727939cf3139186668786ad57bbcea70f08"}, + {file = "ddtrace-2.5.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2d8adf00eec47ecd78216903b7c6ec23d533aa0302120ca35d6c35836d92e7ab"}, + {file = "ddtrace-2.5.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:878eed15287aebcc7b776a40392dc1794b12999f561c5872489ad1426df87914"}, + {file = "ddtrace-2.5.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:1a83033183a1747190a7528de8eb9da70392e227288f6d32f57800747c9379cc"}, + {file = "ddtrace-2.5.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:80b21572dbb3d781360987468cd03dacd49179dd703e66d4fdeb524369f94da3"}, + {file = "ddtrace-2.5.1-cp37-cp37m-win32.whl", hash = "sha256:7d7511a9933a087f4603fb4d9c09d0f8a23b8bfdc2c958d7b01d255795d9f087"}, + {file = "ddtrace-2.5.1-cp37-cp37m-win_amd64.whl", hash = "sha256:69327a9d1488dee70bc6ba052c76bd2f73d52767de890edf2997c0e9b3711316"}, + {file = "ddtrace-2.5.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:1427aa0914a20f18b5a7f075c7f1f3c79ded434cfe8fd658110ba43c0490488a"}, + {file = "ddtrace-2.5.1-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:8152a850af06a10c631e8725bf677da2867705c2c4ea4bcd2911837798870050"}, + {file = "ddtrace-2.5.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2277b3b468479d2cfdef597030b029b217528a5bf986e94b707b8a346e68dd21"}, + {file = "ddtrace-2.5.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fafb2235b87141bddd03b38b225ef3468ec821d9c4e5fd0c42b1d27b30f6e9c9"}, + {file = "ddtrace-2.5.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10fa3443168545286c140bfef7a59957c87d89971650788010a2e19352a8f65e"}, + {file = "ddtrace-2.5.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:af0eccf9ac9d9e7557cf52d2bfe549ea02d3b41b81407ebd70a11b079d15a160"}, + {file = "ddtrace-2.5.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:49347e198e82025679c82f8880e029e2dec80f48f6fcc2bd30d64865f6c8c98f"}, + {file = "ddtrace-2.5.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:66dec725d1abf764736a73ee04e885128abb7d6c6ca0ef6935888ba5610ef292"}, + {file = "ddtrace-2.5.1-cp38-cp38-win32.whl", hash = "sha256:cf0cd0b7e65efb91ffacf5987d73fd1505bead9162c05d4a7bc0ff009414621e"}, + {file = "ddtrace-2.5.1-cp38-cp38-win_amd64.whl", hash = "sha256:38a4419916ea6496aa6ee49c13280da825d9863e2a4bce98d6c6820da8d51678"}, + {file = "ddtrace-2.5.1-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:5e2ed51c5fa9247fa3122d8f615c157d0955e2d673b1e76da2578ecf313eb6cf"}, + {file = "ddtrace-2.5.1-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:8953b2c39a0ca5fb4d742df346a9ed53d100ac6d50c6fd68416eb6ebadf9025e"}, + {file = "ddtrace-2.5.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d35cc4e93283ad3f6e96be99de1ba8adc7ef503d995a3dd7808aa242bbed28cc"}, + {file = "ddtrace-2.5.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f79c16a430fc1b4fb18b881106368f09383f293abf5366d96c1155aad320a677"}, + {file = "ddtrace-2.5.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf8d46467e456b0f2682952b4b3835e996aaae77e26455f150c35dde223ff0fb"}, + {file = "ddtrace-2.5.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f73d297c4528c880c0d35a2e43f2c3703662e31a5e527a0d33ee9c20e7dba530"}, + {file = "ddtrace-2.5.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:ed4fcda36dd740693314bcaa4feddb566b2ccd835c3ac6aad42f36525280cc1e"}, + {file = "ddtrace-2.5.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d535cdfc9e34e3a7972420c88a9c88f399619867f9774f09ff3f92a57136e199"}, + {file = "ddtrace-2.5.1-cp39-cp39-win32.whl", hash = "sha256:1d7b4f7aeb9dffe357f00f516fa7c800c9a76ff29045edfb381ac1ee4a228b34"}, + {file = "ddtrace-2.5.1-cp39-cp39-win_amd64.whl", hash = "sha256:bebae8b500c2b6d641d0a312b4a0c1e222c2ba093c3db6e4b38315a6c5f819da"}, + {file = "ddtrace-2.5.1.tar.gz", hash = "sha256:c78da78418a658b1ba1880ffe6477874aa1f26a23f26db98e0f012b07a1d3998"}, ] [package.dependencies] attrs = ">=20" -bytecode = [ - {version = ">=0.13.0,<0.14.0", markers = "python_version == \"3.7\""}, - {version = "*", markers = "python_version >= \"3.8\""}, -] +bytecode = {version = "*", markers = "python_version >= \"3.8\""} cattrs = "*" ddsketch = ">=2.0.1" envier = "*" -importlib-metadata = {version = "*", markers = "python_version < \"3.8\""} opentelemetry-api = ">=1" protobuf = ">=3" setuptools = {version = "*", markers = "python_version >= \"3.12\""} @@ -416,6 +402,7 @@ opentracing = ["opentracing (>=2.0.0)"] name = "deprecated" version = "1.2.14" description = "Python @deprecated decorator to deprecate old python classes, functions or methods." +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -431,13 +418,14 @@ dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "sphinx (<2)", "tox"] [[package]] name = "envier" -version = "0.4.0" +version = "0.5.1" description = "Python application configuration via the environment" +category = "main" optional = false -python-versions = ">=2.7" +python-versions = ">=3.7" files = [ - {file = "envier-0.4.0-py3-none-any.whl", hash = "sha256:7b91af0f16ea3e56d91ec082f038987e81b441fc19c657a8b8afe0909740a706"}, - {file = "envier-0.4.0.tar.gz", hash = "sha256:e68dcd1ed67d8b6313883e27dff3e701b7fba944d2ed4b7f53d0cc2e12364a82"}, + {file = "envier-0.5.1-py3-none-any.whl", hash = "sha256:b45ef6051fea33d0c32a64e186bff2cfb446e2242d6781216c9bc9ce708c5909"}, + {file = "envier-0.5.1.tar.gz", hash = "sha256:bd5ccf707447973ea0f4125b7df202ba415ad888bcdcb8df80e0b002ee11ffdb"}, ] [package.extras] @@ -447,6 +435,7 @@ mypy = ["mypy"] name = "exceptiongroup" version = "1.2.0" description = "Backport of PEP 654 (exception groups)" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -459,69 +448,58 @@ test = ["pytest (>=6)"] [[package]] name = "flake8" -version = "3.9.2" +version = "5.0.4" description = "the modular source code checker: pep8 pyflakes and co" +category = "main" optional = true -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" -files = [ - {file = "flake8-3.9.2-py2.py3-none-any.whl", hash = "sha256:bf8fd333346d844f616e8d47905ef3a3384edae6b4e9beb0c5101e25e3110907"}, - {file = "flake8-3.9.2.tar.gz", hash = "sha256:07528381786f2a6237b061f6e96610a4167b226cb926e2aa2b6b1d78057c576b"}, -] - -[package.dependencies] -importlib-metadata = {version = "*", markers = "python_version < \"3.8\""} -mccabe = ">=0.6.0,<0.7.0" -pycodestyle = ">=2.7.0,<2.8.0" -pyflakes = ">=2.3.0,<2.4.0" - -[[package]] -name = "httpretty" -version = "0.9.7" -description = "HTTP client mock for Python" -optional = true -python-versions = "*" +python-versions = ">=3.6.1" files = [ - {file = "httpretty-0.9.7.tar.gz", hash = "sha256:66216f26b9d2c52e81808f3e674a6fb65d4bf719721394a1a9be926177e55fbe"}, + {file = "flake8-5.0.4-py2.py3-none-any.whl", hash = "sha256:7a1cf6b73744f5806ab95e526f6f0d8c01c66d7bbe349562d22dfca20610b248"}, + {file = "flake8-5.0.4.tar.gz", hash = "sha256:6fbe320aad8d6b95cec8b8e47bc933004678dc63095be98528b7bdd2a9f510db"}, ] [package.dependencies] -six = "*" +mccabe = ">=0.7.0,<0.8.0" +pycodestyle = ">=2.9.0,<2.10.0" +pyflakes = ">=2.5.0,<2.6.0" [[package]] name = "idna" -version = "3.4" +version = "3.6" description = "Internationalized Domain Names in Applications (IDNA)" +category = "main" optional = false python-versions = ">=3.5" files = [ - {file = "idna-3.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"}, - {file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"}, + {file = "idna-3.6-py3-none-any.whl", hash = "sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f"}, + {file = "idna-3.6.tar.gz", hash = "sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca"}, ] [[package]] name = "importlib-metadata" -version = "6.7.0" +version = "6.11.0" description = "Read metadata from Python packages" +category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "importlib_metadata-6.7.0-py3-none-any.whl", hash = "sha256:cb52082e659e97afc5dac71e79de97d8681de3aa07ff18578330904a9d18e5b5"}, - {file = "importlib_metadata-6.7.0.tar.gz", hash = "sha256:1aaf550d4f73e5d6783e7acb77aec43d49da8017410afae93822cc9cca98c4d4"}, + {file = "importlib_metadata-6.11.0-py3-none-any.whl", hash = "sha256:f0afba6205ad8f8947c7d338b5342d5db2afbfd82f9cbef7879a9539cc12eb9b"}, + {file = "importlib_metadata-6.11.0.tar.gz", hash = "sha256:1231cf92d825c9e03cfc4da076a16de6422c863558229ea0b22b675657463443"}, ] [package.dependencies] -typing-extensions = {version = ">=3.6.4", markers = "python_version < \"3.8\""} zipp = ">=0.5" [package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] perf = ["ipython"] -testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)", "pytest-ruff"] +testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)", "pytest-ruff"] [[package]] name = "jmespath" version = "1.0.1" description = "JSON Matching Expressions" +category = "main" optional = true python-versions = ">=3.7" files = [ @@ -531,19 +509,21 @@ files = [ [[package]] name = "mccabe" -version = "0.6.1" +version = "0.7.0" description = "McCabe checker, plugin for flake8" +category = "main" optional = true -python-versions = "*" +python-versions = ">=3.6" files = [ - {file = "mccabe-0.6.1-py2.py3-none-any.whl", hash = "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42"}, - {file = "mccabe-0.6.1.tar.gz", hash = "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f"}, + {file = "mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"}, + {file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"}, ] [[package]] name = "nose2" version = "0.9.2" description = "unittest2 with plugins, the succesor to nose" +category = "main" optional = true python-versions = "*" files = [ @@ -561,13 +541,14 @@ doc = ["Sphinx (>=1.6.5)", "mock", "sphinx-rtd-theme"] [[package]] name = "opentelemetry-api" -version = "1.21.0" +version = "1.22.0" description = "OpenTelemetry Python API" +category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "opentelemetry_api-1.21.0-py3-none-any.whl", hash = "sha256:4bb86b28627b7e41098f0e93280fe4892a1abed1b79a19aec6f928f39b17dffb"}, - {file = "opentelemetry_api-1.21.0.tar.gz", hash = "sha256:d6185fd5043e000075d921822fd2d26b953eba8ca21b1e2fa360dd46a7686316"}, + {file = "opentelemetry_api-1.22.0-py3-none-any.whl", hash = "sha256:43621514301a7e9f5d06dd8013a1b450f30c2e9372b8e30aaeb4562abf2ce034"}, + {file = "opentelemetry_api-1.22.0.tar.gz", hash = "sha256:15ae4ca925ecf9cfdfb7a709250846fbb08072260fca08ade78056c502b86bed"}, ] [package.dependencies] @@ -576,52 +557,54 @@ importlib-metadata = ">=6.0,<7.0" [[package]] name = "protobuf" -version = "4.24.4" +version = "4.25.2" description = "" +category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "protobuf-4.24.4-cp310-abi3-win32.whl", hash = "sha256:ec9912d5cb6714a5710e28e592ee1093d68c5ebfeda61983b3f40331da0b1ebb"}, - {file = "protobuf-4.24.4-cp310-abi3-win_amd64.whl", hash = "sha256:1badab72aa8a3a2b812eacfede5020472e16c6b2212d737cefd685884c191085"}, - {file = "protobuf-4.24.4-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:8e61a27f362369c2f33248a0ff6896c20dcd47b5d48239cb9720134bef6082e4"}, - {file = "protobuf-4.24.4-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:bffa46ad9612e6779d0e51ae586fde768339b791a50610d85eb162daeb23661e"}, - {file = "protobuf-4.24.4-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:b493cb590960ff863743b9ff1452c413c2ee12b782f48beca77c8da3e2ffe9d9"}, - {file = "protobuf-4.24.4-cp37-cp37m-win32.whl", hash = "sha256:dbbed8a56e56cee8d9d522ce844a1379a72a70f453bde6243e3c86c30c2a3d46"}, - {file = "protobuf-4.24.4-cp37-cp37m-win_amd64.whl", hash = "sha256:6b7d2e1c753715dcfe9d284a25a52d67818dd43c4932574307daf836f0071e37"}, - {file = "protobuf-4.24.4-cp38-cp38-win32.whl", hash = "sha256:02212557a76cd99574775a81fefeba8738d0f668d6abd0c6b1d3adcc75503dbe"}, - {file = "protobuf-4.24.4-cp38-cp38-win_amd64.whl", hash = "sha256:2fa3886dfaae6b4c5ed2730d3bf47c7a38a72b3a1f0acb4d4caf68e6874b947b"}, - {file = "protobuf-4.24.4-cp39-cp39-win32.whl", hash = "sha256:b77272f3e28bb416e2071186cb39efd4abbf696d682cbb5dc731308ad37fa6dd"}, - {file = "protobuf-4.24.4-cp39-cp39-win_amd64.whl", hash = "sha256:9fee5e8aa20ef1b84123bb9232b3f4a5114d9897ed89b4b8142d81924e05d79b"}, - {file = "protobuf-4.24.4-py3-none-any.whl", hash = "sha256:80797ce7424f8c8d2f2547e2d42bfbb6c08230ce5832d6c099a37335c9c90a92"}, - {file = "protobuf-4.24.4.tar.gz", hash = "sha256:5a70731910cd9104762161719c3d883c960151eea077134458503723b60e3667"}, + {file = "protobuf-4.25.2-cp310-abi3-win32.whl", hash = "sha256:b50c949608682b12efb0b2717f53256f03636af5f60ac0c1d900df6213910fd6"}, + {file = "protobuf-4.25.2-cp310-abi3-win_amd64.whl", hash = "sha256:8f62574857ee1de9f770baf04dde4165e30b15ad97ba03ceac65f760ff018ac9"}, + {file = "protobuf-4.25.2-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:2db9f8fa64fbdcdc93767d3cf81e0f2aef176284071507e3ede160811502fd3d"}, + {file = "protobuf-4.25.2-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:10894a2885b7175d3984f2be8d9850712c57d5e7587a2410720af8be56cdaf62"}, + {file = "protobuf-4.25.2-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:fc381d1dd0516343f1440019cedf08a7405f791cd49eef4ae1ea06520bc1c020"}, + {file = "protobuf-4.25.2-cp38-cp38-win32.whl", hash = "sha256:33a1aeef4b1927431d1be780e87b641e322b88d654203a9e9d93f218ee359e61"}, + {file = "protobuf-4.25.2-cp38-cp38-win_amd64.whl", hash = "sha256:47f3de503fe7c1245f6f03bea7e8d3ec11c6c4a2ea9ef910e3221c8a15516d62"}, + {file = "protobuf-4.25.2-cp39-cp39-win32.whl", hash = "sha256:5e5c933b4c30a988b52e0b7c02641760a5ba046edc5e43d3b94a74c9fc57c1b3"}, + {file = "protobuf-4.25.2-cp39-cp39-win_amd64.whl", hash = "sha256:d66a769b8d687df9024f2985d5137a337f957a0916cf5464d1513eee96a63ff0"}, + {file = "protobuf-4.25.2-py3-none-any.whl", hash = "sha256:a8b7a98d4ce823303145bf3c1a8bdb0f2f4642a414b196f04ad9853ed0c8f830"}, + {file = "protobuf-4.25.2.tar.gz", hash = "sha256:fe599e175cb347efc8ee524bcd4b902d11f7262c0e569ececcb89995c15f0a5e"}, ] [[package]] name = "pycodestyle" -version = "2.7.0" +version = "2.9.1" description = "Python style guide checker" +category = "main" optional = true -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +python-versions = ">=3.6" files = [ - {file = "pycodestyle-2.7.0-py2.py3-none-any.whl", hash = "sha256:514f76d918fcc0b55c6680472f0a37970994e07bbb80725808c17089be302068"}, - {file = "pycodestyle-2.7.0.tar.gz", hash = "sha256:c389c1d06bf7904078ca03399a4816f974a1d590090fecea0c63ec26ebaf1cef"}, + {file = "pycodestyle-2.9.1-py2.py3-none-any.whl", hash = "sha256:d1735fc58b418fd7c5f658d28d943854f8a849b01a5d0a1e6f3f3fdd0166804b"}, + {file = "pycodestyle-2.9.1.tar.gz", hash = "sha256:2c9607871d58c76354b697b42f5d57e1ada7d261c261efac224b664affdc5785"}, ] [[package]] name = "pyflakes" -version = "2.3.1" +version = "2.5.0" description = "passive checker of Python programs" +category = "main" optional = true -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +python-versions = ">=3.6" files = [ - {file = "pyflakes-2.3.1-py2.py3-none-any.whl", hash = "sha256:7893783d01b8a89811dd72d7dfd4d84ff098e5eed95cfa8905b22bbffe52efc3"}, - {file = "pyflakes-2.3.1.tar.gz", hash = "sha256:f5bc8ecabc05bb9d291eb5203d6810b49040f6ff446a756326104746cc00c1db"}, + {file = "pyflakes-2.5.0-py2.py3-none-any.whl", hash = "sha256:4579f67d887f804e67edb544428f264b7b24f435b263c4614f384135cea553d2"}, + {file = "pyflakes-2.5.0.tar.gz", hash = "sha256:491feb020dca48ccc562a8c0cbe8df07ee13078df59813b83959cbdada312ea3"}, ] [[package]] name = "python-dateutil" version = "2.8.2" description = "Extensions to the standard Python datetime module" +category = "main" optional = true python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" files = [ @@ -636,6 +619,7 @@ six = ">=1.5" name = "requests" version = "2.31.0" description = "Python HTTP for Humans." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -655,30 +639,32 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] [[package]] name = "s3transfer" -version = "0.7.0" +version = "0.10.0" description = "An Amazon S3 Transfer Manager" +category = "main" optional = true -python-versions = ">= 3.7" +python-versions = ">= 3.8" files = [ - {file = "s3transfer-0.7.0-py3-none-any.whl", hash = "sha256:10d6923c6359175f264811ef4bf6161a3156ce8e350e705396a7557d6293c33a"}, - {file = "s3transfer-0.7.0.tar.gz", hash = "sha256:fd3889a66f5fe17299fe75b82eae6cf722554edca744ca5d5fe308b104883d2e"}, + {file = "s3transfer-0.10.0-py3-none-any.whl", hash = "sha256:3cdb40f5cfa6966e812209d0994f2a4709b561c88e90cf00c2696d2df4e56b2e"}, + {file = "s3transfer-0.10.0.tar.gz", hash = "sha256:d0c8bbf672d5eebbe4e57945e23b972d963f07d82f661cabf678a5c88831595b"}, ] [package.dependencies] -botocore = ">=1.12.36,<2.0a.0" +botocore = ">=1.33.2,<2.0a.0" [package.extras] -crt = ["botocore[crt] (>=1.20.29,<2.0a.0)"] +crt = ["botocore[crt] (>=1.33.2,<2.0a.0)"] [[package]] name = "setuptools" -version = "69.0.2" +version = "69.0.3" description = "Easily download, build, install, upgrade, and uninstall Python packages" +category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "setuptools-69.0.2-py3-none-any.whl", hash = "sha256:1e8fdff6797d3865f37397be788a4e3cba233608e9b509382a2777d25ebde7f2"}, - {file = "setuptools-69.0.2.tar.gz", hash = "sha256:735896e78a4742605974de002ac60562d286fa8051a7e2299445e8e8fbb01aa6"}, + {file = "setuptools-69.0.3-py3-none-any.whl", hash = "sha256:385eb4edd9c9d5c17540511303e39a147ce2fc04bc55289c322b9e5904fe2c05"}, + {file = "setuptools-69.0.3.tar.gz", hash = "sha256:be1af57fc409f93647f2e8e4573a142ed38724b8cdd389706a867bb4efcf1e78"}, ] [package.extras] @@ -690,6 +676,7 @@ testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jar name = "six" version = "1.16.0" description = "Python 2 and 3 compatibility utilities" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -699,19 +686,21 @@ files = [ [[package]] name = "typing-extensions" -version = "4.7.1" -description = "Backported and Experimental Type Hints for Python 3.7+" +version = "4.9.0" +description = "Backported and Experimental Type Hints for Python 3.8+" +category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "typing_extensions-4.7.1-py3-none-any.whl", hash = "sha256:440d5dd3af93b060174bf433bccd69b0babc3b15b1a8dca43789fd7f61514b36"}, - {file = "typing_extensions-4.7.1.tar.gz", hash = "sha256:b75ddc264f0ba5615db7ba217daeb99701ad295353c45f9e95963337ceeeffb2"}, + {file = "typing_extensions-4.9.0-py3-none-any.whl", hash = "sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd"}, + {file = "typing_extensions-4.9.0.tar.gz", hash = "sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783"}, ] [[package]] name = "urllib3" version = "1.26.18" description = "HTTP library with thread-safe connection pooling, file post, and more." +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" files = [ @@ -728,6 +717,7 @@ socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] name = "urllib3" version = "2.0.7" description = "HTTP library with thread-safe connection pooling, file post, and more." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -745,6 +735,7 @@ zstd = ["zstandard (>=0.18.0)"] name = "wrapt" version = "1.16.0" description = "Module for decorators, wrappers and monkey patching." +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -824,6 +815,7 @@ files = [ name = "xmltodict" version = "0.13.0" description = "Makes working with XML feel like you are working with JSON" +category = "main" optional = false python-versions = ">=3.4" files = [ @@ -833,23 +825,24 @@ files = [ [[package]] name = "zipp" -version = "3.15.0" +version = "3.17.0" description = "Backport of pathlib-compatible object wrapper for zip files" +category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "zipp-3.15.0-py3-none-any.whl", hash = "sha256:48904fc76a60e542af151aded95726c1a5c34ed43ab4134b597665c86d7ad556"}, - {file = "zipp-3.15.0.tar.gz", hash = "sha256:112929ad649da941c23de50f356a2b5570c954b65150642bccdd66bf194d224b"}, + {file = "zipp-3.17.0-py3-none-any.whl", hash = "sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31"}, + {file = "zipp-3.17.0.tar.gz", hash = "sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["big-O", "flake8 (<5)", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] +testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy (>=0.9.1)", "pytest-ruff"] [extras] -dev = ["boto3", "flake8", "httpretty", "nose2", "requests"] +dev = ["boto3", "flake8", "nose2", "requests"] [metadata] lock-version = "2.0" -python-versions = ">=3.7.0,<4" -content-hash = "6687f40495eae4686955981f339f7eb3bcfbc71c7cfba272620b7aca4c45ad1b" +python-versions = ">=3.8.0,<4" +content-hash = "0025ef8e84fb9e0a746e623853293967663e40854dafb3689ca14da2eb228b84" diff --git a/pyproject.toml b/pyproject.toml index 17f91d53..71c75a78 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -27,7 +27,7 @@ classifiers = [ python = ">=3.8.0,<4" datadog = ">=0.41.0,<1.0.0" wrapt = "^1.11.2" -ddtrace = ">=2.3.1" +ddtrace = ">=2.5.1" urllib3 = [ {version = "<2.0.0", python = "<3.11", optional = true}, {version = "<2.1.0", python = ">=3.11", optional = true}, From 459d11d4a2860ff06cb41f6b3f4c86d679af07f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?jordan=20gonz=C3=A1lez?= <30836115+duncanista@users.noreply.github.com> Date: Fri, 26 Jan 2024 16:07:56 -0500 Subject: [PATCH 071/268] allow script to build for specific architecture (#413) --- scripts/build_layers.sh | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/scripts/build_layers.sh b/scripts/build_layers.sh index 9794f2bf..d4f3076c 100755 --- a/scripts/build_layers.sh +++ b/scripts/build_layers.sh @@ -15,6 +15,21 @@ set -e LAYER_DIR=".layers" LAYER_FILES_PREFIX="datadog_lambda_py" AVAILABLE_PYTHON_VERSIONS=("3.8" "3.9" "3.10" "3.11" "3.12") +AVAILABLE_ARCHS=("arm64" "amd64") + +if [ -z "$ARCH" ]; then + echo "No architectures specified, building layers for all architectures." + ARCHS=("${AVAILABLE_ARCHS[@]}") +else + echo "Architecture specified: $ARCH" + if [[ ! " ${AVAILABLE_ARCHS[@]} " =~ " ${ARCH} " ]]; then + echo "Architecture $ARCH is not a valid option. Choose from: ${AVAILABLE_ARCHS[@]}" + echo "" + echo "EXITING SCRIPT." + exit 1 + fi + ARCHS=$ARCH +fi # Determine which Python versions to build layers for if [ -z "$PYTHON_VERSION" ]; then @@ -64,10 +79,11 @@ mkdir $LAYER_DIR for python_version in "${PYTHON_VERSIONS[@]}" do - echo "Building layer for Python ${python_version} arch=arm64" - docker_build_zip ${python_version} $LAYER_DIR/${LAYER_FILES_PREFIX}-arm64-${python_version}.zip arm64 - echo "Building layer for Python ${python_version} arch=amd64" - docker_build_zip ${python_version} $LAYER_DIR/${LAYER_FILES_PREFIX}-amd64-${python_version}.zip amd64 + for architecture in "${ARCHS[@]}" + do + echo "Building layer for Python ${python_version} arch=${architecture}" + docker_build_zip ${python_version} $LAYER_DIR/${LAYER_FILES_PREFIX}-${architecture}-${python_version}.zip ${architecture} + done done echo "Done creating layers:" From 56c9278b3f0282025ee25f79473500c968594716 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Tue, 6 Feb 2024 13:13:47 -0500 Subject: [PATCH 072/268] Bump version to 5.88.0 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 71c75a78..82685b98 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "5.87.0" +version = "5.88.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From b9f8c0fd4ed9359415a3221efb993ea4bf978aba Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Tue, 13 Feb 2024 12:28:46 -0800 Subject: [PATCH 073/268] Replace nose2 with pytest. (#416) --- .github/workflows/build.yml | 2 +- .gitignore | 1 - LICENSE-3rdparty.csv | 3 +-- pyproject.toml | 6 +++--- scripts/run_tests.sh | 2 +- 5 files changed, 6 insertions(+), 8 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 7092388b..5df92704 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -62,7 +62,7 @@ jobs: - name: Run tests run: | source venv/bin/activate - nose2 -v + pytest -vv integration-test: runs-on: ubuntu-latest diff --git a/.gitignore b/.gitignore index d6b01dbf..3aeeb1fb 100644 --- a/.gitignore +++ b/.gitignore @@ -28,7 +28,6 @@ pip-log.txt # Unit test / coverage reports .coverage .tox -nosetests.xml #Misc .cache/ diff --git a/LICENSE-3rdparty.csv b/LICENSE-3rdparty.csv index e15ac6e5..a6692772 100644 --- a/LICENSE-3rdparty.csv +++ b/LICENSE-3rdparty.csv @@ -1,4 +1,3 @@ Component,Origin,License,Copyright flake8,gitlab.com/pycqa/flake8,MIT,"Copyright (C) 2011-2013 Tarek Ziade . Copyright (C) 2012-2016 Ian Cordasco ." -nose2,github.com/nose-devs/nose2,BSD-2-Clause,"Copyright (c) 2012, Jason Pellerin. All rights reserved." -wrapt,github.com/GrahamDumpleton/wrapt,BSD-2-Clause,"Copyright (c) 2013-2019, Graham Dumpleton" \ No newline at end of file +wrapt,github.com/GrahamDumpleton/wrapt,BSD-2-Clause,"Copyright (c) 2013-2019, Graham Dumpleton" diff --git a/pyproject.toml b/pyproject.toml index 82685b98..5dbd9e5b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -36,16 +36,16 @@ importlib_metadata = {version = "*", python = "<3.8"} boto3 = { version = "^1.28.0", optional = true } typing_extensions = {version = "^4.0", python = "<3.8"} requests = { version ="^2.22.0", optional = true } -nose2 = { version= "^0.9.1", optional = true } +pytest = { version= "^8.0.0", optional = true } flake8 = { version = "^5.0.4", optional = true } [tool.poetry.extras] dev = [ "boto3", - "requests", - "nose2", "flake8", + "pytest", + "requests", ] [build-system] diff --git a/scripts/run_tests.sh b/scripts/run_tests.sh index e06e9912..540ac898 100755 --- a/scripts/run_tests.sh +++ b/scripts/run_tests.sh @@ -18,7 +18,7 @@ do --build-arg python_version=$python_version docker run -w /test \ datadog-lambda-python-test:$python_version \ - nose2 -v + pytest -vv docker run -w /test \ datadog-lambda-python-test:$python_version \ flake8 datadog_lambda/ From 17c8e0be8f12bec1efc7558aa954e2522b10f33d Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Wed, 14 Feb 2024 12:00:20 -0800 Subject: [PATCH 074/268] Prevent function crash when setting unknown log level. (#418) --- datadog_lambda/__init__.py | 6 ++---- datadog_lambda/logger.py | 27 ++++++++++++++++++++++++ tests/test_logger.py | 43 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 72 insertions(+), 4 deletions(-) create mode 100644 datadog_lambda/logger.py create mode 100644 tests/test_logger.py diff --git a/datadog_lambda/__init__.py b/datadog_lambda/__init__.py index 20b42443..cfb5f8e3 100644 --- a/datadog_lambda/__init__.py +++ b/datadog_lambda/__init__.py @@ -1,6 +1,5 @@ -import os -import logging from datadog_lambda.cold_start import initialize_cold_start_tracing +from datadog_lambda.logger import initialize_logging initialize_cold_start_tracing() @@ -13,5 +12,4 @@ __version__ = importlib_metadata.version(__name__) -logger = logging.getLogger(__name__) -logger.setLevel(logging.getLevelName(os.environ.get("DD_LOG_LEVEL", "INFO").upper())) +initialize_logging(__name__) diff --git a/datadog_lambda/logger.py b/datadog_lambda/logger.py new file mode 100644 index 00000000..ae2b5d6d --- /dev/null +++ b/datadog_lambda/logger.py @@ -0,0 +1,27 @@ +import logging +import os + +try: + _level_mappping = logging.getLevelNamesMapping() +except AttributeError: + # python 3.8 + _level_mappping = {name: num for num, name in logging._levelToName.items()} +# https://docs.datadoghq.com/agent/troubleshooting/debug_mode/?tab=agentv6v7#agent-log-level +_level_mappping.update( + { + "TRACE": 5, + "WARN": logging.WARNING, + "OFF": 100, + } +) + + +def initialize_logging(name): + logger = logging.getLogger(name) + str_level = (os.environ.get("DD_LOG_LEVEL") or "INFO").upper() + level = _level_mappping.get(str_level) + if level is None: + logger.setLevel(logging.INFO) + logger.warning("Invalid log level: %s Defaulting to INFO", str_level) + else: + logger.setLevel(level) diff --git a/tests/test_logger.py b/tests/test_logger.py new file mode 100644 index 00000000..eb2822f2 --- /dev/null +++ b/tests/test_logger.py @@ -0,0 +1,43 @@ +import io +import logging +import pytest + +from datadog_lambda.logger import initialize_logging + +_test_initialize_logging = ( + ("TRACE", (10, 20, 30, 40, 50)), + ("DEBUG", (10, 20, 30, 40, 50)), + ("debug", (10, 20, 30, 40, 50)), + ("INFO", (20, 30, 40, 50)), + ("WARNING", (30, 40, 50)), + ("WARN", (30, 40, 50)), + ("ERROR", (40, 50)), + ("CRITICAL", (50,)), + ("OFF", ()), + ("", (20, 30, 40, 50)), + (None, (20, 30, 40, 50)), + ("PURPLE", (30, 20, 30, 40, 50)), # log warning then default to INFO +) + + +@pytest.mark.parametrize("level,logged_levels", _test_initialize_logging) +def test_initialize_logging(level, logged_levels, monkeypatch): + if level is not None: + monkeypatch.setenv("DD_LOG_LEVEL", level) + + stream = io.StringIO() + handler = logging.StreamHandler(stream) + handler.setFormatter(logging.Formatter("%(levelno)s")) + logger = logging.getLogger(__name__) + logger.addHandler(handler) + + initialize_logging(__name__) + + logger.debug("debug") + logger.info("info") + logger.warning("warning") + logger.error("error") + logger.critical("critical") + + logged = tuple(map(int, stream.getvalue().strip().split())) + assert logged == logged_levels From 1649656f63b1e25942639f2cc220ebbc9dcd3f33 Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Mon, 4 Mar 2024 13:52:00 -0500 Subject: [PATCH 075/268] feat: Automatic layer releases (#421) * feat: Copy gitlab-ci from datadog-lambda-js * feat: first crack at migration the build script for individual publishing * feat: secrets for python. TODO - actually create them * feat: Add python runtimes * feat: re-organize architecture flags. Support separate arch/name * feat: first draft of build generator template * feat: Add datasources and first cut at publish_pypi script * feat: oops, no node. TODO: fix container names * feat: pass the right layer name to sign layers * feat: Python before script * feat: arch parameterized sign layer * feat: fix up runtimes * fix: build layer arch * fix: Check layer size arch * feat: zip file is py not python * fix: fix up check layer size script * hotfix: use js ssm secrets until I can figure out which AWS account CI runs in and can add them * feat: Less uniformity on images in python, specify in runtimes.yaml * feat: Can't use permissions across repos * feat: lol our ci runners set DD_SERVICE so it breaks our unit tests * feat: Gotta add yarn so we can add serverless * feat: lint * feat: Break install-node into separate task * feat: Use name instead of python_version * fix: no python-, just the version number * empty commit to bump CI * feat: integration tests should run for both architectures * fix: arg, no arch in integration test * fix: pass sls framework the proper arch * feat: fix script * feat: Default to x86 just so the invoke function works * fix: nvm pass the sls arch everywhere I guess * fix: strip arch from user agent * feat: the right x86_64 arch for serverless framework * fix: globalize local env * feat: fix regex * fix: ints should pass now * feat: Update tests * fix: lint * fix: lint * feat: lint * feat: I think we just need one lint * feat: remove install node for publish step * feat: remove integration tests from github build, we run them in gitlab now * feat: token applied --- .github/workflows/build.yml | 71 ------- .gitlab-ci.yml | 29 +++ ci/config.yaml | 13 ++ ci/datasources/environments.yaml | 9 + ci/datasources/regions.yaml | 29 +++ ci/datasources/runtimes.yaml | 41 ++++ ci/get_secrets.sh | 48 +++++ ci/input_files/build.yaml.tpl | 178 +++++++++++++++++ ci/publish_layers.sh | 182 ++++++++++++++++++ ci/publish_pypi.sh | 23 +++ scripts/check_layer_size.sh | 40 ++-- scripts/run_integration_tests.sh | 17 +- tests/integration/serverless.yml | 3 +- .../snapshots/logs/sync-metrics_python310.log | 36 ++-- .../snapshots/logs/sync-metrics_python311.log | 36 ++-- .../snapshots/logs/sync-metrics_python312.log | 36 ++-- .../snapshots/logs/sync-metrics_python38.log | 36 ++-- .../snapshots/logs/sync-metrics_python39.log | 36 ++-- tests/test_tracing.py | 19 +- tests/test_wrapper.py | 4 + 20 files changed, 691 insertions(+), 195 deletions(-) create mode 100644 .gitlab-ci.yml create mode 100644 ci/config.yaml create mode 100644 ci/datasources/environments.yaml create mode 100644 ci/datasources/regions.yaml create mode 100644 ci/datasources/runtimes.yaml create mode 100755 ci/get_secrets.sh create mode 100644 ci/input_files/build.yaml.tpl create mode 100755 ci/publish_layers.sh create mode 100755 ci/publish_pypi.sh diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5df92704..eeb77064 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -63,74 +63,3 @@ jobs: run: | source venv/bin/activate pytest -vv - - integration-test: - runs-on: ubuntu-latest - strategy: - matrix: - runtime-param: ['3.8', '3.9', '3.10', '3.11', '3.12'] - steps: - - name: Checkout - uses: actions/checkout@v3 - - - name: Set up Node 14 - uses: actions/setup-node@v3 - with: - node-version: 14 - - - name: Cache Node modules - id: cache-node-modules - uses: actions/cache@v3 - with: - path: "**/node_modules" - key: ${{ runner.os }}-modules-${{ hashFiles('**/yarn.lock') }} - - - name: Set up Python - uses: actions/setup-python@v4 - with: - python-version: 3.9 - - - name: Install Python dependencies - run: | - pip install virtualenv - virtualenv venv - source venv/bin/activate - pip install .[dev] - - - name: Install Serverless Framework - run: sudo yarn global add serverless@^3.7.0 --prefix /usr/local - - name: Install Crossbuild Deps - run: | - sudo apt-get update --allow-releaseinfo-change --fix-missing - sudo apt install -y qemu-user-static binfmt-support - - - name: Install dependencies - if: steps.cache-node-modules.outputs.cache-hit != 'true' - working-directory: tests/integration - run: yarn install - - - name: Run tests - env: - BUILD_LAYERS: true - DD_API_KEY: ${{ secrets.DD_API_KEY }} - AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} - AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - RUNTIME_PARAM: ${{ matrix.runtime-param }} - run: ./scripts/run_integration_tests.sh - - - name: Send success metric - env: - DD_API_KEY: ${{ secrets.DD_API_KEY }} - run: ./scripts/send_status_metric.sh 0 $DD_API_KEY - - integration-test-failure: - runs-on: ubuntu-latest - needs: [integration-test] - if: always() && (needs.integration-test.result == 'failure') - steps: - - name: Checkout - uses: actions/checkout@v3 - - name: Send a failure metric - env: - DD_API_KEY: ${{ secrets.DD_API_KEY }} - run: ./scripts/send_status_metric.sh 1 $DD_API_KEY diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 00000000..0f36a781 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,29 @@ +stages: + - pre + - build + +.go-cache: &go-cache + key: datadog-lambda-python-go-cache + policy: pull + +generator: + stage: pre + image: registry.ddbuild.io/images/mirror/golang:alpine + tags: ["arch:amd64"] + cache: *go-cache + script: + - apk add --no-cache gomplate + - gomplate --config ci/config.yaml + artifacts: + paths: + - ci/*-pipeline.yaml + +build-layers: + stage: build + trigger: + include: + - artifact: ci/build-pipeline.yaml + job: generator + strategy: depend + rules: + - when: on_success diff --git a/ci/config.yaml b/ci/config.yaml new file mode 100644 index 00000000..d37a0f31 --- /dev/null +++ b/ci/config.yaml @@ -0,0 +1,13 @@ +inputFiles: + - ci/input_files/build.yaml.tpl + +outputFiles: + - ci/build-pipeline.yaml + +datasources: + runtimes: + url: ci/datasources/runtimes.yaml + regions: + url: ci/datasources/regions.yaml + environments: + url: ci/datasources/environments.yaml diff --git a/ci/datasources/environments.yaml b/ci/datasources/environments.yaml new file mode 100644 index 00000000..90056ab0 --- /dev/null +++ b/ci/datasources/environments.yaml @@ -0,0 +1,9 @@ +environments: + - name: sandbox + external_id: sandbox-publish-externalid + role_to_assume: sandbox-layer-deployer + account: 425362996713 + - name: prod + external_id: prod-publish-externalid + role_to_assume: dd-serverless-layer-deployer-role + account: 464622532012 diff --git a/ci/datasources/regions.yaml b/ci/datasources/regions.yaml new file mode 100644 index 00000000..a26372d8 --- /dev/null +++ b/ci/datasources/regions.yaml @@ -0,0 +1,29 @@ +regions: + - code: "us-east-1" + - code: "us-east-2" + - code: "us-west-1" + - code: "us-west-2" + - code: "af-south-1" + - code: "ap-east-1" + - code: "ap-south-1" + - code: "ap-south-2" + - code: "ap-southeast-1" + - code: "ap-southeast-2" + - code: "ap-southeast-3" + - code: "ap-southeast-4" + - code: "ap-northeast-1" + - code: "ap-northeast-2" + - code: "ap-northeast-3" + - code: "ca-central-1" +# - code: "ca-west-1" we don't support it + - code: "eu-central-1" + - code: "eu-central-2" + - code: "eu-west-1" + - code: "eu-west-2" + - code: "eu-west-3" + - code: "eu-south-1" + - code: "eu-south-2" +# - code: "il-central-1" we don't support it + - code: "me-south-1" + - code: "me-central-1" + - code: "sa-east-1" diff --git a/ci/datasources/runtimes.yaml b/ci/datasources/runtimes.yaml new file mode 100644 index 00000000..0e084b08 --- /dev/null +++ b/ci/datasources/runtimes.yaml @@ -0,0 +1,41 @@ +runtimes: + - name: "python38" + python_version: "3.8" + arch: "amd64" + image: "3.8" + - name: "python38" + python_version: "3.8" + arch: "arm64" + image: "3.8" + - name: "python39" + python_version: "3.8" + arch: "amd64" + image: "3.9" + - name: "python39" + python_version: "3.9" + arch: "arm64" + image: "3.9" + - name: "python310" + python_version: "3.10" + arch: "amd64" + image: "3.10" + - name: "python310" + python_version: "3.10" + arch: "arm64" + image: "3.10" + - name: "python311" + python_version: "3.11" + arch: "amd64" + image: "3.11.6" + - name: "python311" + python_version: "3.11" + arch: "arm64" + image: "3.11.6" + - name: "python312" + python_version: "3.12" + arch: "amd64" + image: "3.12.0" + - name: "python312" + python_version: "3.12" + arch: "arm64" + image: "3.12.0" diff --git a/ci/get_secrets.sh b/ci/get_secrets.sh new file mode 100755 index 00000000..9d9c957c --- /dev/null +++ b/ci/get_secrets.sh @@ -0,0 +1,48 @@ +#!/bin/bash + +# Unless explicitly stated otherwise all files in this repository are licensed +# under the Apache License Version 2.0. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2023 Datadog, Inc. + +set -e + +if [ -z "$EXTERNAL_ID_NAME" ]; then + printf "[Error] No EXTERNAL_ID_NAME found.\n" + printf "Exiting script...\n" + exit 1 +fi + +if [ -z "$ROLE_TO_ASSUME" ]; then + printf "[Error] No ROLE_TO_ASSUME found.\n" + printf "Exiting script...\n" + exit 1 +fi + +printf "Getting AWS External ID...\n" + +EXTERNAL_ID=$(aws ssm get-parameter \ + --region us-east-1 \ + --name "ci.datadog-lambda-python.$EXTERNAL_ID_NAME" \ + --with-decryption \ + --query "Parameter.Value" \ + --out text) + +printf "Getting DD API KEY...\n" + +export DD_API_KEY=$(aws ssm get-parameter \ + --region us-east-1 \ + --name ci.datadog-lambda-python.dd-api-key \ + --with-decryption \ + --query "Parameter.Value" \ + --out text) + +printf "Assuming role...\n" + +export $(printf "AWS_ACCESS_KEY_ID=%s AWS_SECRET_ACCESS_KEY=%s AWS_SESSION_TOKEN=%s" \ + $(aws sts assume-role \ + --role-arn "arn:aws:iam::$AWS_ACCOUNT:role/$ROLE_TO_ASSUME" \ + --role-session-name "ci.datadog-lambda-python-$CI_JOB_ID-$CI_JOB_STAGE" \ + --query "Credentials.[AccessKeyId,SecretAccessKey,SessionToken]" \ + --external-id $EXTERNAL_ID \ + --output text)) diff --git a/ci/input_files/build.yaml.tpl b/ci/input_files/build.yaml.tpl new file mode 100644 index 00000000..e562092d --- /dev/null +++ b/ci/input_files/build.yaml.tpl @@ -0,0 +1,178 @@ +stages: + - build + - test + - sign + - publish + +.python-before-script: &python-before-script + - pip install virtualenv + - virtualenv venv + - source venv/bin/activate + - pip install .[dev] + +# This is for serverless framework +.install-node: &install-node + - apt-get update + - apt-get install -y ca-certificates curl gnupg xxd + - mkdir -p /etc/apt/keyrings + - curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg + # We are explicitly setting the node_18.x version for the installation + - echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_18.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list + - apt-get update + - apt-get install nodejs -y + - npm install --global yarn + +{{ range $runtime := (ds "runtimes").runtimes }} + +# TODO(astuyve) - figure out python build cache +.{{ $runtime.name }}-{{ $runtime.arch }}-cache: &{{ $runtime.name }}-{{ $runtime.arch }}-cache + key: "$CI_JOB_STAGE-$CI_COMMIT_REF_SLUG" + paths: + - $CI_PROJECT_DIR/.yarn-cache + policy: pull + +build-layer ({{ $runtime.name }}-{{ $runtime.arch }}): + stage: build + tags: ["arch:amd64"] + image: registry.ddbuild.io/images/docker:20.10 + artifacts: + expire_in: 1 hr # Unsigned zips expire in 1 hour + paths: + - .layers/datadog_lambda_py-{{ $runtime.arch }}-{{ $runtime.python_version }}.zip + variables: + CI_ENABLE_CONTAINER_IMAGE_BUILDS: "true" + script: + - PYTHON_VERSION={{ $runtime.python_version }} ARCH={{ $runtime.arch }} ./scripts/build_layers.sh + +check-layer-size ({{ $runtime.name }}-{{ $runtime.arch }}): + stage: test + tags: ["arch:amd64"] + image: registry.ddbuild.io/images/docker:20.10 + needs: + - build-layer ({{ $runtime.name }}-{{ $runtime.arch }}) + dependencies: + - build-layer ({{ $runtime.name }}-{{ $runtime.arch }}) + script: + - PYTHON_VERSION={{ $runtime.python_version }} ./scripts/check_layer_size.sh + +lint python: + stage: test + tags: ["arch:amd64"] + image: registry.ddbuild.io/images/mirror/python:{{ $runtime.image }} + cache: &{{ $runtime.name }}-{{ $runtime.arch }}-cache + before_script: *python-before-script + script: + - source venv/bin/activate + - ./scripts/check_format.sh + +unit-test ({{ $runtime.name }}-{{ $runtime.arch }}): + stage: test + tags: ["arch:amd64"] + image: registry.ddbuild.io/images/mirror/python:{{ $runtime.image }} + cache: &{{ $runtime.name }}-{{ $runtime.arch }}-cache + before_script: *python-before-script + script: + - source venv/bin/activate + - pytest -vv + +integration-test ({{ $runtime.name }}-{{ $runtime.arch }}): + stage: test + tags: ["arch:amd64"] + image: registry.ddbuild.io/images/docker:20.10-py3 + needs: + - build-layer ({{ $runtime.name }}-{{ $runtime.arch }}) + dependencies: + - build-layer ({{ $runtime.name }}-{{ $runtime.arch }}) + cache: &{{ $runtime.name }}-{{ $runtime.arch }}-cache + variables: + CI_ENABLE_CONTAINER_IMAGE_BUILDS: "true" + before_script: + - *install-node + - EXTERNAL_ID_NAME=integration-test-externalid ROLE_TO_ASSUME=sandbox-integration-test-deployer AWS_ACCOUNT=425362996713 source ./ci/get_secrets.sh + - yarn global add serverless --prefix /usr/local + - cd integration_tests && yarn install && cd .. + script: + - RUNTIME_PARAM={{ $runtime.python_version }} ARCH={{ $runtime.arch }} ./scripts/run_integration_tests.sh + +{{ range $environment := (ds "environments").environments }} + +{{ if or (eq $environment.name "prod") }} +sign-layer ({{ $runtime.name }}-{{ $runtime.arch }}): + stage: sign + tags: ["arch:amd64"] + image: registry.ddbuild.io/images/docker:20.10-py3 + rules: + - if: '$CI_COMMIT_TAG =~ /^v.*/' + when: manual + needs: + - build-layer ({{ $runtime.name }}-{{ $runtime.arch }}) + - check-layer-size ({{ $runtime.name }}-{{ $runtime.arch }}) + - lint python + - unit-test ({{ $runtime.name }}-{{ $runtime.arch }}) + - integration-test ({{ $runtime.name }}-{{ $runtime.arch }}) + dependencies: + - build-layer ({{ $runtime.name }}-{{ $runtime.arch }}) + artifacts: # Re specify artifacts so the modified signed file is passed + expire_in: 1 day # Signed layers should expire after 1 day + paths: + - .layers/datadog_lambda_python-{{ $runtime.arch }}-{{ $runtime.python_version }}.zip + before_script: + - apt-get update + - apt-get install -y uuid-runtime + - EXTERNAL_ID_NAME={{ $environment.external_id }} ROLE_TO_ASSUME={{ $environment.role_to_assume }} AWS_ACCOUNT={{ $environment.account }} source ./ci/get_secrets.sh + script: + - LAYER_FILE=datadog_lambda_python-{{ $runtime.arch}}-{{ $runtime.python_version }}.zip ./scripts/sign_layers.sh {{ $environment.name }} +{{ end }} + +publish-layer-{{ $environment.name }} ({{ $runtime.name }}-{{ $runtime.arch }}): + stage: publish + tags: ["arch:amd64"] + image: registry.ddbuild.io/images/docker:20.10-py3 + rules: + - if: '"{{ $environment.name }}" =~ /^(sandbox|staging)/' + when: manual + allow_failure: true + - if: '$CI_COMMIT_TAG =~ /^v.*/' + needs: +{{ if or (eq $environment.name "prod") }} + - sign-layer ({{ $runtime.name }}-{{ $runtime.arch}}) +{{ else }} + - build-layer ({{ $runtime.name }}-{{ $runtime.arch }}) + - check-layer-size ({{ $runtime.name }}-{{ $runtime.arch }}) + - lint python + - unit-test ({{ $runtime.name }}-{{ $runtime.arch }}) + - integration-test ({{ $runtime.name }}-{{ $runtime.arch }}) +{{ end }} + dependencies: +{{ if or (eq $environment.name "prod") }} + - sign-layer ({{ $runtime.name }}-{{ $runtime.arch}}) +{{ else }} + - build-layer ({{ $runtime.name }}-{{ $runtime.arch }}) +{{ end }} + parallel: + matrix: + - REGION: {{ range (ds "regions").regions }} + - {{ .code }} + {{- end}} + before_script: + - EXTERNAL_ID_NAME={{ $environment.external_id }} ROLE_TO_ASSUME={{ $environment.role_to_assume }} AWS_ACCOUNT={{ $environment.account }} source ./ci/get_secrets.sh + script: + - STAGE={{ $environment.name }} PYTHON_VERSION={{ $runtime.python_version }} ARCH={{ $runtime.arch }} ./ci/publish_layers.sh + +{{- end }} + +{{- end }} + +publish-pypi-package: + stage: publish + tags: ["arch:amd64"] + image: registry.ddbuild.io/images/docker:20.10-py3 + cache: [] + rules: + - if: '$CI_COMMIT_TAG =~ /^v.*/' + when: manual + needs: {{ range $runtime := (ds "runtimes").runtimes }} + - sign-layer ({{ $runtime.name }}-{{ $runtime.arch}}) + {{- end }} + script: + - ./ci/publish_pypi.sh diff --git a/ci/publish_layers.sh b/ci/publish_layers.sh new file mode 100755 index 00000000..31a91839 --- /dev/null +++ b/ci/publish_layers.sh @@ -0,0 +1,182 @@ +#!/bin/bash + +# Unless explicitly stated otherwise all files in this repository are licensed +# under the Apache License Version 2.0. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2023 Datadog, Inc. + +# PYTHON_VERSION=20.9 REGION=us-east-1 + +set -e + +# Available runtimes: https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html +AWS_CLI_PYTHON_VERSIONS=( + "python3.8" + "python3.8" + "python3.9" + "python3.9" + "python3.10" + "python3.10" + "python3.11" + "python3.11" + "python3.12" + "python3.12" +) +PYTHON_VERSIONS=("3.8-amd64" "3.8-arm64" "3.9-amd64" "3.9-arm64" "3.10-amd64" "3.10-arm64" "3.11-amd64" "3.11-arm64" "3.12-amd64" "3.12-arm64") +LAYER_PATHS=( + ".layers/datadog_lambda_py-amd64-3.8.zip" + ".layers/datadog_lambda_py-arm64-3.8.zip" + ".layers/datadog_lambda_py-amd64-3.9.zip" + ".layers/datadog_lambda_py-arm64-3.9.zip" + ".layers/datadog_lambda_py-amd64-3.10.zip" + ".layers/datadog_lambda_py-arm64-3.10.zip" + ".layers/datadog_lambda_py-amd64-3.11.zip" + ".layers/datadog_lambda_py-arm64-3.11.zip" + ".layers/datadog_lambda_py-amd64-3.12.zip" + ".layers/datadog_lambda_py-arm64-3.12.zip" +) +LAYERS=( + "Datadog-Python38" + "Datadog-Python38-ARM" + "Datadog-Python39" + "Datadog-Python39-ARM" + "Datadog-Python310" + "Datadog-Python310-ARM" + "Datadog-Python311" + "Datadog-Python311-ARM" + "Datadog-Python312" + "Datadog-Python312-ARM" +) +STAGES=('prod', 'sandbox', 'staging') + +printf "Starting script...\n\n" +printf "Installing dependencies\n" +pip install awscli + +publish_layer() { + region=$1 + layer_name=$2 + compatible_runtimes=$3 + layer_path=$4 + + version_nbr=$(aws lambda publish-layer-version --layer-name $layer_name \ + --description "Datadog Lambda Layer for Node" \ + --zip-file "fileb://$layer_path" \ + --region $region \ + --compatible-runtimes $compatible_runtimes \ + | jq -r '.Version') + + permission=$(aws lambda add-layer-version-permission --layer-name $layer_name \ + --version-number $version_nbr \ + --statement-id "release-$version_nbr" \ + --action lambda:GetLayerVersion --principal "*" \ + --region $region) + + echo $version_nbr +} + +# Target Python version +if [ -z $PYTHON_VERSION ]; then + printf "[Error] PYTHON_VERSION version not specified.\n" + exit 1 +fi + +printf "Python version specified: $PYTHON_VERSION\n" +if [[ ! ${PYTHON_VERSIONS[@]} =~ $PYTHON_VERSION ]]; then + printf "[Error] Unsupported PYTHON_VERSION found.\n" + exit 1 +fi + +if [ -z $ARCH ]; then + printf "[Error] ARCH architecture not specified.\n" + exit 1 +fi + +index=0 +for i in "${!PYTHON_VERSIONS[@]}"; do + if [[ "${PYTHON_VERSIONS[$i]}" = "${PYTHON_VERSION}-${ARCH}" ]]; then + index=$i + fi +done + +REGIONS=$(aws ec2 describe-regions | jq -r '.[] | .[] | .RegionName') + +# Target region +if [ -z "$REGION" ]; then + printf "REGION not specified.\n" + exit 1 +fi + +printf "Region specified, region is: $REGION\n" +if [[ ! "$REGIONS" == *"$REGION"* ]]; then + printf "[Error] Could not find $REGION in AWS available regions: \n${REGIONS[@]}\n" + exit 1 +fi + +# Deploy stage +if [ -z "$STAGE" ]; then + printf "[Error] STAGE not specified.\n" + printf "Exiting script...\n" + exit 1 +fi + +printf "Stage specified: $STAGE\n" +if [[ ! ${STAGES[@]} =~ $STAGE ]]; then + printf "[Error] Unsupported STAGE found.\n" + exit 1 +fi + +layer="${LAYERS[$index]}" + +if [[ "$STAGE" =~ ^(staging|sandbox)$ ]]; then + # Deploy latest version + latest_version=$(aws lambda list-layer-versions --region $REGION --layer-name $layer --query 'LayerVersions[0].Version || `0`') + VERSION=$(($latest_version + 1)) +else + # Running on prod + if [ -z "$CI_COMMIT_TAG" ]; then + printf "[Error] No CI_COMMIT_TAG found.\n" + printf "Exiting script...\n" + exit 1 + else + printf "Tag found in environment: $CI_COMMIT_TAG\n" + fi + + VERSION=$(echo "${CI_COMMIT_TAG##*v}" | cut -d. -f2) +fi + +# Target layer version +if [ -z "$VERSION" ]; then + printf "[Error] VERSION for layer version not specified.\n" + printf "Exiting script...\n" + exit 1 +else + printf "Layer version parsed: $VERSION\n" +fi + +printf "[$REGION] Starting publishing layers...\n" +aws_cli_python_version_key="${AWS_CLI_PYTHON_VERSIONS[$index]}" +layer_path="${LAYER_PATHS[$index]}" + +latest_version=$(aws lambda list-layer-versions --region $REGION --layer-name $layer --query 'LayerVersions[0].Version || `0`') +if [ $latest_version -ge $VERSION ]; then + printf "[$REGION] Layer $layer version $VERSION already exists in region $REGION, skipping...\n" + exit 0 +elif [ $latest_version -lt $((VERSION-1)) ]; then + printf "[$REGION][WARNING] The latest version of layer $layer in region $REGION is $latest_version, this will publish all the missing versions including $VERSION\n" +fi + +while [ $latest_version -lt $VERSION ]; do + latest_version=$(publish_layer $REGION $layer $aws_cli_python_version_key $layer_path) + printf "[$REGION] Published version $latest_version for layer $layer in region $REGION\n" + + # This shouldn't happen unless someone manually deleted the latest version, say 28, and + # then tries to republish 28 again. The published version would actually be 29, because + # Lambda layers are immutable and AWS will skip deleted version and use the next number. + if [ $latest_version -gt $VERSION ]; then + printf "[$REGION] Published version $latest_version is greater than the desired version $VERSION!" + exit 1 + fi +done + +printf "[$REGION] Finished publishing layers...\n\n" diff --git a/ci/publish_pypi.sh b/ci/publish_pypi.sh new file mode 100755 index 00000000..d7ec78fd --- /dev/null +++ b/ci/publish_pypi.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +# Unless explicitly stated otherwise all files in this repository are licensed +# under the Apache License Version 2.0. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2023 Datadog, Inc. +set -e +PYPI_TOKEN=$(aws ssm get-parameter \ + --region us-east-1 \ + --name "ci.datadog-lambda-python.pypi-token" \ + --with-decryption \ + --query "Parameter.Value" \ + --out text) +# Builds the lambda layer and upload to Pypi + +# Clear previously built distributions +if [ -d "dist" ]; then + echo "Removing folder 'dist' to clear previously built distributions" + rm -rf dist; +fi + +# Publish to pypi +poetry publish --build --username __token__ --password $PYPI_TOKEN diff --git a/scripts/check_layer_size.sh b/scripts/check_layer_size.sh index 395f79a4..f1c8c813 100755 --- a/scripts/check_layer_size.sh +++ b/scripts/check_layer_size.sh @@ -14,26 +14,22 @@ MAX_LAYER_UNCOMPRESSED_SIZE_KB=$(expr 24 \* 1024) LAYER_FILES_PREFIX="datadog_lambda_py" LAYER_DIR=".layers" -VERSIONS=("3.8" "3.9" "3.10" "3.11" "3.12") -for version in "${VERSIONS[@]}" -do - FILE=$LAYER_DIR/${LAYER_FILES_PREFIX}-amd64-${version}.zip - FILE_SIZE=$(stat --printf="%s" $FILE) - FILE_SIZE_KB="$(( ${FILE_SIZE%% *} / 1024))" - echo "Layer file ${FILE} has zipped size ${FILE_SIZE_KB} kb" - if [ "$FILE_SIZE_KB" -gt "$MAX_LAYER_COMPRESSED_SIZE_KB" ]; then - echo "Zipped size exceeded limit $MAX_LAYER_COMPRESSED_SIZE_KB kb" - exit 1 - fi - mkdir tmp - unzip -q $FILE -d tmp - UNZIPPED_FILE_SIZE=$(du -shb tmp/ | cut -f1) - UNZIPPED_FILE_SIZE_KB="$(( ${UNZIPPED_FILE_SIZE%% *} / 1024))" - rm -rf tmp - echo "Layer file ${FILE} has unzipped size ${UNZIPPED_FILE_SIZE_KB} kb" - if [ "$UNZIPPED_FILE_SIZE_KB" -gt "$MAX_LAYER_UNCOMPRESSED_SIZE_KB" ]; then - echo "Unzipped size exceeded limit $MAX_LAYER_UNCOMPRESSED_SIZE_KB kb" - exit 1 - fi -done +FILE=$LAYER_DIR/${LAYER_FILES_PREFIX}-${ARCH}-${PYTHON_VERSION}.zip +FILE_SIZE=$(stat --printf="%s" $FILE) +FILE_SIZE_KB="$(( ${FILE_SIZE%% *} / 1024))" +echo "Layer file ${FILE} has zipped size ${FILE_SIZE_KB} kb" +if [ "$FILE_SIZE_KB" -gt "$MAX_LAYER_COMPRESSED_SIZE_KB" ]; then + echo "Zipped size exceeded limit $MAX_LAYER_COMPRESSED_SIZE_KB kb" + exit 1 +fi +mkdir tmp +unzip -q $FILE -d tmp +UNZIPPED_FILE_SIZE=$(du -shb tmp/ | cut -f1) +UNZIPPED_FILE_SIZE_KB="$(( ${UNZIPPED_FILE_SIZE%% *} / 1024))" +rm -rf tmp +echo "Layer file ${FILE} has unzipped size ${UNZIPPED_FILE_SIZE_KB} kb" +if [ "$UNZIPPED_FILE_SIZE_KB" -gt "$MAX_LAYER_UNCOMPRESSED_SIZE_KB" ]; then + echo "Unzipped size exceeded limit $MAX_LAYER_UNCOMPRESSED_SIZE_KB kb" + exit 1 +fi diff --git a/scripts/run_integration_tests.sh b/scripts/run_integration_tests.sh index 27dd8ec8..13edf1ac 100755 --- a/scripts/run_integration_tests.sh +++ b/scripts/run_integration_tests.sh @@ -71,6 +71,12 @@ else echo "Not building layers, ensure they've already been built or re-run with 'BUILD_LAYERS=true DD_API_KEY=XXXX ./scripts/run_integration_tests.sh'" fi +SERVERLESS_FRAMEWORK_ARCH="" +if [ "$ARCH" = "amd64" ]; then + SERVERLESS_FRAMEWORK_ARCH="x86_64" +else + SERVERLESS_FRAMEWORK_ARCH="arm64" +fi cd $integration_tests_dir input_event_files=$(ls ./input_events) @@ -84,13 +90,11 @@ function remove_stack() { python_version=$parameters_set[1] run_id=$parameters_set[2] echo "Removing stack for stage : ${!run_id}" - PYTHON_VERSION=${!python_version} RUNTIME=$parameters_set SERVERLESS_RUNTIME=${!serverless_runtime} \ + PYTHON_VERSION=${!python_version} RUNTIME=$parameters_set SERVERLESS_RUNTIME=${!serverless_runtime} SLS_ARCH=${SERVERLESS_FRAMEWORK_ARCH} \ serverless remove --stage ${!run_id} done } - - trap remove_stack EXIT for parameters_set in "${PARAMETERS_SETS[@]}"; do serverless_runtime=$parameters_set[0] @@ -100,7 +104,7 @@ for parameters_set in "${PARAMETERS_SETS[@]}"; do echo "Deploying functions for runtime : $parameters_set, serverless runtime : ${!serverless_runtime}, \ python version : ${!python_version} and run id : ${!run_id}" - PYTHON_VERSION=${!python_version} RUNTIME=$parameters_set SERVERLESS_RUNTIME=${!serverless_runtime} \ + PYTHON_VERSION=${!python_version} RUNTIME=$parameters_set SERVERLESS_RUNTIME=${!serverless_runtime} ARCH=${ARCH} SLS_ARCH=${SERVERLESS_FRAMEWORK_ARCH} \ serverless deploy --stage ${!run_id} echo "Invoking functions for runtime $parameters_set" @@ -114,7 +118,7 @@ python version : ${!python_version} and run id : ${!run_id}" input_event_name=$(echo "$input_event_file" | sed "s/.json//") snapshot_path="./snapshots/return_values/${handler_name}_${input_event_name}.json" - return_value=$(PYTHON_VERSION=${!python_version} RUNTIME=$parameters_set SERVERLESS_RUNTIME=${!serverless_runtime} \ + return_value=$(PYTHON_VERSION=${!python_version} RUNTIME=$parameters_set SERVERLESS_RUNTIME=${!serverless_runtime} SLS_ARCH=${SERVERLESS_FRAMEWORK_ARCH} \ serverless invoke --stage ${!run_id} -f "$function_name" --path "./input_events/$input_event_file") if [ ! -f $snapshot_path ]; then @@ -156,7 +160,7 @@ for handler_name in "${LAMBDA_HANDLERS[@]}"; do # Fetch logs with serverless cli, retrying to avoid AWS account-wide rate limit error retry_counter=0 while [ $retry_counter -lt 10 ]; do - raw_logs=$(PYTHON_VERSION=${!python_version} RUNTIME=$parameters_set SERVERLESS_RUNTIME=${!serverless_runtime} \ + raw_logs=$(PYTHON_VERSION=${!python_version} RUNTIME=$parameters_set SERVERLESS_RUNTIME=${!serverless_runtime} ARCH=${ARCH} SLS_ARCH=${SERVERLESS_FRAMEWORK_ARCH} \ serverless logs --stage ${!run_id} -f $function_name --startTime $script_utc_start_time) fetch_logs_exit_code=$? if [ $fetch_logs_exit_code -eq 1 ]; then @@ -238,6 +242,7 @@ for handler_name in "${LAMBDA_HANDLERS[@]}"; do sed -E "s/(tracestate\:)([A-Za-z0-9\-\=\:\;].+)/\1XXX/g" | sed -E "s/(\"_dd.p.tid\"\: \")[a-z0-9\.\-]+/\1XXXX/g" | sed -E "s/(_dd.p.tid=)[a-z0-9\.\-]+/\1XXXX/g" | + sed -E 's/arch (aarch64|x86_64)/arch XXXX/g' | # Parse out account ID in ARN sed -E "s/([a-zA-Z0-9]+):([a-zA-Z0-9]+):([a-zA-Z0-9]+):([a-zA-Z0-9\-]+):([a-zA-Z0-9\-\:]+)/\1:\2:\3:\4:XXXX:\4/g" | sed -E "/init complete at epoch/d" | diff --git a/tests/integration/serverless.yml b/tests/integration/serverless.yml index bb64c397..fd174c5f 100644 --- a/tests/integration/serverless.yml +++ b/tests/integration/serverless.yml @@ -6,6 +6,7 @@ provider: region: eu-west-1 tracing: lambda: "PassThrough" + architecture: ${env:SLS_ARCH} environment: DD_INTEGRATION_TEST: true DD_TRACE_ENABLED: true @@ -23,7 +24,7 @@ provider: layers: python: package: - artifact: ../../.layers/datadog_lambda_py-amd64-${env:PYTHON_VERSION}.zip + artifact: ../../.layers/datadog_lambda_py-${env:ARCH}-${env:PYTHON_VERSION}.zip functions: # async-metrics (flushed to logs) diff --git a/tests/integration/snapshots/logs/sync-metrics_python310.log b/tests/integration/snapshots/logs/sync-metrics_python310.log index ac833bf0..e97b0cb2 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python310.log +++ b/tests/integration/snapshots/logs/sync-metrics_python310.log @@ -149,7 +149,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -172,7 +172,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -334,7 +334,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -357,7 +357,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -512,7 +512,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -535,7 +535,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -705,7 +705,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -728,7 +728,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -890,7 +890,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -913,7 +913,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1072,7 +1072,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1095,7 +1095,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1255,7 +1255,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1278,7 +1278,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1437,7 +1437,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1460,7 +1460,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1627,7 +1627,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1650,7 +1650,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" diff --git a/tests/integration/snapshots/logs/sync-metrics_python311.log b/tests/integration/snapshots/logs/sync-metrics_python311.log index 0e252e0f..84161ca2 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python311.log +++ b/tests/integration/snapshots/logs/sync-metrics_python311.log @@ -149,7 +149,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -172,7 +172,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -334,7 +334,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -357,7 +357,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -512,7 +512,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -535,7 +535,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -705,7 +705,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -728,7 +728,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -890,7 +890,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -913,7 +913,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1072,7 +1072,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1095,7 +1095,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1255,7 +1255,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1278,7 +1278,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1437,7 +1437,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1460,7 +1460,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1627,7 +1627,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1650,7 +1650,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" diff --git a/tests/integration/snapshots/logs/sync-metrics_python312.log b/tests/integration/snapshots/logs/sync-metrics_python312.log index 74ebff99..8b4c74cf 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python312.log +++ b/tests/integration/snapshots/logs/sync-metrics_python312.log @@ -149,7 +149,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -172,7 +172,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -334,7 +334,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -357,7 +357,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -512,7 +512,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -535,7 +535,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -705,7 +705,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -728,7 +728,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -890,7 +890,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -913,7 +913,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1072,7 +1072,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1095,7 +1095,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1255,7 +1255,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1278,7 +1278,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1437,7 +1437,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1460,7 +1460,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1627,7 +1627,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1650,7 +1650,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" diff --git a/tests/integration/snapshots/logs/sync-metrics_python38.log b/tests/integration/snapshots/logs/sync-metrics_python38.log index bd52bc1e..4fe60af6 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python38.log +++ b/tests/integration/snapshots/logs/sync-metrics_python38.log @@ -149,7 +149,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -172,7 +172,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -334,7 +334,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -357,7 +357,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -512,7 +512,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -535,7 +535,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -705,7 +705,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -728,7 +728,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -890,7 +890,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -913,7 +913,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1072,7 +1072,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1095,7 +1095,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1255,7 +1255,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1278,7 +1278,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1437,7 +1437,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1460,7 +1460,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1627,7 +1627,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1650,7 +1650,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" diff --git a/tests/integration/snapshots/logs/sync-metrics_python39.log b/tests/integration/snapshots/logs/sync-metrics_python39.log index 92a7cd33..98d74ed6 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python39.log +++ b/tests/integration/snapshots/logs/sync-metrics_python39.log @@ -149,7 +149,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -172,7 +172,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -334,7 +334,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -357,7 +357,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -512,7 +512,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -535,7 +535,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -705,7 +705,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -728,7 +728,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -890,7 +890,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -913,7 +913,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1072,7 +1072,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1095,7 +1095,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1255,7 +1255,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1278,7 +1278,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1437,7 +1437,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1460,7 +1460,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1627,7 +1627,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1650,7 +1650,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" diff --git a/tests/test_tracing.py b/tests/test_tracing.py index 3a28a2a3..3d047822 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -184,6 +184,8 @@ def test_with_non_object_event(self): {}, ) + """ + TODO(astuyve) I don't think partial extraction is forbidden anymore? ask rey @with_trace_propagation_style("datadog") def test_with_incomplete_datadog_trace_headers(self): lambda_ctx = get_mock_context() @@ -192,6 +194,7 @@ def test_with_incomplete_datadog_trace_headers(self): lambda_ctx, ) self.assertEqual(source, "xray") + print(ctx) self.assertEqual( ctx, Context( @@ -208,6 +211,7 @@ def test_with_incomplete_datadog_trace_headers(self): TraceHeader.SAMPLING_PRIORITY: "2", }, ) + """ @with_trace_propagation_style("datadog") def test_with_complete_datadog_trace_headers(self): @@ -261,6 +265,7 @@ def test_with_w3c_trace_headers(self): "traceparent": "00-0000000000000000000000000000007b-0000000000000141-01", "tracestate": "dd=s:2;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", "_dd.p.dm": "-0", + "_dd.parent_id": "0000000000000000", }, ) self.assertEqual(ctx, expected_context) @@ -268,7 +273,7 @@ def test_with_w3c_trace_headers(self): get_dd_trace_context(), { "traceparent": "00-0000000000000000000000000000007b-94ae789b969f1cc5-01", - "tracestate": "dd=s:2;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", + "tracestate": "dd=p:94ae789b969f1cc5;s:2;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", }, ) create_dd_dummy_metadata_subsegment(ctx, XraySubsegment.TRACE_KEY) @@ -453,6 +458,7 @@ def test_with_sqs_distributed_w3c_trace_data(self): "traceparent": "00-0000000000000000000000000000007b-0000000000000141-01", "tracestate": "dd=s:2;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", "_dd.p.dm": "-0", + "_dd.parent_id": "0000000000000000", }, ) self.assertEqual(ctx, expected_context) @@ -460,7 +466,7 @@ def test_with_sqs_distributed_w3c_trace_data(self): get_dd_trace_context(), { "traceparent": "00-0000000000000000000000000000007b-94ae789b969f1cc5-01", - "tracestate": "dd=s:2;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", + "tracestate": "dd=p:94ae789b969f1cc5;s:2;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", }, ) create_dd_dummy_metadata_subsegment(ctx, XraySubsegment.TRACE_KEY) @@ -523,14 +529,16 @@ def test_with_legacy_client_context_w3c_trace_data(self): "traceparent": "00-0000000000000000000000000000029a-0000000000000309-01", "tracestate": "dd=s:1;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", "_dd.p.dm": "-0", + "_dd.parent_id": "0000000000000000", }, ) + print(ctx) self.assertEqual(ctx, expected_context) self.assertDictEqual( get_dd_trace_context(), { "traceparent": "00-0000000000000000000000000000029a-94ae789b969f1cc5-01", - "tracestate": "dd=s:1;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", + "tracestate": "dd=p:94ae789b969f1cc5;s:1;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", }, ) create_dd_dummy_metadata_subsegment(ctx, XraySubsegment.TRACE_KEY) @@ -590,6 +598,7 @@ def test_with_new_client_context_w3c_trace_data(self): "traceparent": "00-0000000000000000000000000000029a-0000000000000309-01", "tracestate": "dd=s:1;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", "_dd.p.dm": "-0", + "_dd.parent_id": "0000000000000000", }, ) self.assertEqual(ctx, expected_context) @@ -597,7 +606,7 @@ def test_with_new_client_context_w3c_trace_data(self): get_dd_trace_context(), { "traceparent": "00-0000000000000000000000000000029a-94ae789b969f1cc5-01", - "tracestate": "dd=s:1;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", + "tracestate": "dd=p:94ae789b969f1cc5;s:1;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", }, ) create_dd_dummy_metadata_subsegment(ctx, XraySubsegment.TRACE_KEY) @@ -2231,7 +2240,7 @@ def test_mark_trace_as_error_for_5xx_responses_getting_400_response_code( def test_mark_trace_as_error_for_5xx_responses_sends_error_metric_and_set_error_tags( self, mock_submit_errors_metric ): - mock_span = Mock(ddtrace.span.Span) + mock_span = Mock(ddtrace.Span) status_code = "500" mark_trace_as_error_for_5xx_responses( context="fake_context", status_code=status_code, span=mock_span diff --git a/tests/test_wrapper.py b/tests/test_wrapper.py index 39998921..ee1ef99c 100644 --- a/tests/test_wrapper.py +++ b/tests/test_wrapper.py @@ -155,6 +155,7 @@ def lambda_handler(event, context): lambda_metric("test.metric", 100) time.sleep(11) # assert flushing in the thread + # TODO(astuyve) flaky test here, sometimes this is zero self.assertEqual(self.mock_threadstats_flush_distributions.call_count, 1) lambda_metric("test.metric", 200) @@ -502,6 +503,9 @@ def lambda_handler(event, context): self.mock_submit_invocations_metric.assert_called_once() def test_dd_requests_service_name_default(self): + # TODO(astuyve) this is now set by CI, so we need to null it out for this case + os.environ["DD_SERVICE"] = "aws.lambda" + @wrapper.datadog_lambda_wrapper def lambda_handler(event, context): pass From 90dcd4969a9f75ec4907f110d742c98ac7c83b7b Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Mon, 4 Mar 2024 16:47:20 -0500 Subject: [PATCH 076/268] feat: Disable instrumentation telemetry by default (#423) --- datadog_lambda/tracing.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index dc7e32b2..948a19e5 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -28,6 +28,10 @@ send_segment, parse_xray_header, ) + +if os.environ.get("DD_INSTRUMENTATION_TELEMETRY_ENABLED") is None: + os.environ["DD_INSTRUMENTATION_TELEMETRY_ENABLED"] = "false" + from ddtrace import tracer, patch, Span from ddtrace import __version__ as ddtrace_version from ddtrace.propagation.http import HTTPPropagator From 57b280e11d0aeb1e50cf5a0f04bba0a21078bb51 Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Mon, 4 Mar 2024 19:31:18 -0500 Subject: [PATCH 077/268] fix: wrong py version (#426) --- ci/datasources/runtimes.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/datasources/runtimes.yaml b/ci/datasources/runtimes.yaml index 0e084b08..62fd0279 100644 --- a/ci/datasources/runtimes.yaml +++ b/ci/datasources/runtimes.yaml @@ -8,7 +8,7 @@ runtimes: arch: "arm64" image: "3.8" - name: "python39" - python_version: "3.8" + python_version: "3.9" arch: "amd64" image: "3.9" - name: "python39" From 8b44ee3b246ddd99148d9af572beb691c77007c8 Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Mon, 4 Mar 2024 19:32:18 -0500 Subject: [PATCH 078/268] fix: Wrong description (#425) --- ci/publish_layers.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/publish_layers.sh b/ci/publish_layers.sh index 31a91839..f94a0bc3 100755 --- a/ci/publish_layers.sh +++ b/ci/publish_layers.sh @@ -60,7 +60,7 @@ publish_layer() { layer_path=$4 version_nbr=$(aws lambda publish-layer-version --layer-name $layer_name \ - --description "Datadog Lambda Layer for Node" \ + --description "Datadog Lambda Layer for Python" \ --zip-file "fileb://$layer_path" \ --region $region \ --compatible-runtimes $compatible_runtimes \ From a06668d72cf968435e3ca95605f91207034d080f Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Tue, 5 Mar 2024 09:19:49 -0500 Subject: [PATCH 079/268] feat: Move env setting to init.py. Disable api security (#424) --- datadog_lambda/__init__.py | 8 ++++++++ datadog_lambda/tracing.py | 3 --- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/datadog_lambda/__init__.py b/datadog_lambda/__init__.py index cfb5f8e3..5cc2ba00 100644 --- a/datadog_lambda/__init__.py +++ b/datadog_lambda/__init__.py @@ -1,5 +1,13 @@ from datadog_lambda.cold_start import initialize_cold_start_tracing from datadog_lambda.logger import initialize_logging +import os + + +if os.environ.get("DD_INSTRUMENTATION_TELEMETRY_ENABLED") is None: + os.environ["DD_INSTRUMENTATION_TELEMETRY_ENABLED"] = "false" + +if os.environ.get("DD_API_SECURITY_ENABLED") is None: + os.environ["DD_API_SECURITY_ENABLED"] = "False" initialize_cold_start_tracing() diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 948a19e5..f032059b 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -29,9 +29,6 @@ parse_xray_header, ) -if os.environ.get("DD_INSTRUMENTATION_TELEMETRY_ENABLED") is None: - os.environ["DD_INSTRUMENTATION_TELEMETRY_ENABLED"] = "false" - from ddtrace import tracer, patch, Span from ddtrace import __version__ as ddtrace_version from ddtrace.propagation.http import HTTPPropagator From 0cf9c56d09fb2c050ddbc48c2441fefcf8362c38 Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Tue, 5 Mar 2024 09:20:28 -0500 Subject: [PATCH 080/268] feat: Remove http check for extension hello route (#422) * feat: Remove http check for extension hello route * feat: lint --- datadog_lambda/extension.py | 27 +++++++-------------------- tests/test_extension.py | 13 +++---------- 2 files changed, 10 insertions(+), 30 deletions(-) diff --git a/datadog_lambda/extension.py b/datadog_lambda/extension.py index d66848ff..159048d7 100644 --- a/datadog_lambda/extension.py +++ b/datadog_lambda/extension.py @@ -1,36 +1,23 @@ import logging from os import path -try: - # only available in python 3 - # not an issue since the extension is not compatible with python 2.x runtime - # https://docs.aws.amazon.com/lambda/latest/dg/using-extensions.html - import urllib.request -except ImportError: - # safe since both calls to urllib are protected with try/expect and will return false - urllib = None - AGENT_URL = "http://127.0.0.1:8124/" -HELLO_PATH = "/lambda/hello" FLUSH_PATH = "/lambda/flush" EXTENSION_PATH = "/opt/extensions/datadog-agent" logger = logging.getLogger(__name__) -def is_extension_running(): - if not path.exists(EXTENSION_PATH): - return False - try: - urllib.request.urlopen(AGENT_URL + HELLO_PATH) - except Exception as e: - logger.debug("Extension is not running, returned with error %s", e) - return False - return True +def is_extension_present(): + if path.exists(EXTENSION_PATH): + return True + return False def flush_extension(): try: + import urllib.request + req = urllib.request.Request(AGENT_URL + FLUSH_PATH, "".encode("ascii")) urllib.request.urlopen(req) except Exception as e: @@ -39,4 +26,4 @@ def flush_extension(): return True -should_use_extension = is_extension_running() +should_use_extension = is_extension_present() diff --git a/tests/test_extension.py b/tests/test_extension.py index 5ecb0e36..92142a9e 100644 --- a/tests/test_extension.py +++ b/tests/test_extension.py @@ -6,7 +6,7 @@ from unittest.mock import patch from datadog_lambda.extension import ( - is_extension_running, + is_extension_present, flush_extension, should_use_extension, ) @@ -48,19 +48,12 @@ def tearDown(self): @patch("datadog_lambda.extension.EXTENSION_PATH", os.path.abspath(__file__)) def test_is_extension_running_true(self): - assert is_extension_running() - assert self.server.called + assert is_extension_present() def test_is_extension_running_file_not_found(self): - assert not is_extension_running() + assert not is_extension_present() assert not self.server.called - @patch("datadog_lambda.extension.EXTENSION_PATH", os.path.abspath(__file__)) - def test_is_extension_running_http_failure(self): - self.server.raises = True - assert not is_extension_running() - assert self.server.called - @patch("datadog_lambda.extension.EXTENSION_PATH", os.path.abspath(__file__)) def test_flush_ok(self): assert flush_extension() From d481a72cd60e260af2797f30baf91eda5097a856 Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Tue, 5 Mar 2024 16:01:47 -0500 Subject: [PATCH 081/268] Remove iast and ddwaf (#427) * feat: Rip out appsec * feat: Remove more appsec stuff * empty commit to trigger ci --- Dockerfile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Dockerfile b/Dockerfile index a2da16f9..757d0c00 100644 --- a/Dockerfile +++ b/Dockerfile @@ -23,6 +23,9 @@ RUN find . -name '*.so' -exec strip -g {} \; RUN rm -rf ./python/lib/$runtime/site-packages/botocore* RUN rm -rf ./python/lib/$runtime/site-packages/setuptools RUN rm -rf ./python/lib/$runtime/site-packages/jsonschema/tests +RUN find . -name 'libddwaf.so' -delete +RUN rm ./python/lib/$runtime/site-packages/ddtrace/appsec/_iast/_taint_tracking/*.so +RUN rm ./python/lib/$runtime/site-packages/ddtrace/appsec/_iast/_stacktrace*.so FROM scratch COPY --from=builder /build/python / From 2b8d31d2129cd32ce6377e0f12486e2563554eef Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Tue, 5 Mar 2024 16:14:18 -0500 Subject: [PATCH 082/268] feat: ddtrace py now sets a default sample rate header, so we don't fall into this case anymore (#428) --- tests/test_tracing.py | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/tests/test_tracing.py b/tests/test_tracing.py index 3d047822..d14ad1e9 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -184,17 +184,14 @@ def test_with_non_object_event(self): {}, ) - """ - TODO(astuyve) I don't think partial extraction is forbidden anymore? ask rey @with_trace_propagation_style("datadog") def test_with_incomplete_datadog_trace_headers(self): lambda_ctx = get_mock_context() ctx, source, event_source = extract_dd_trace_context( - {"headers": {TraceHeader.TRACE_ID: "123", TraceHeader.PARENT_ID: "321"}}, + {"headers": {TraceHeader.TRACE_ID: "123"}}, lambda_ctx, ) self.assertEqual(source, "xray") - print(ctx) self.assertEqual( ctx, Context( @@ -211,7 +208,6 @@ def test_with_incomplete_datadog_trace_headers(self): TraceHeader.SAMPLING_PRIORITY: "2", }, ) - """ @with_trace_propagation_style("datadog") def test_with_complete_datadog_trace_headers(self): @@ -532,7 +528,6 @@ def test_with_legacy_client_context_w3c_trace_data(self): "_dd.parent_id": "0000000000000000", }, ) - print(ctx) self.assertEqual(ctx, expected_context) self.assertDictEqual( get_dd_trace_context(), From b2e20847d83ccad77db9398cd9829d82452f36fb Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Wed, 6 Mar 2024 10:26:18 -0500 Subject: [PATCH 083/268] feat: remove check-size from github workflow (#429) --- .github/workflows/check-size.yml | 33 -------------------------------- 1 file changed, 33 deletions(-) delete mode 100644 .github/workflows/check-size.yml diff --git a/.github/workflows/check-size.yml b/.github/workflows/check-size.yml deleted file mode 100644 index 9a60bfe9..00000000 --- a/.github/workflows/check-size.yml +++ /dev/null @@ -1,33 +0,0 @@ -name: check-size - -on: pull_request - -jobs: - check-size: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v3 - - - name: Set up Python - uses: actions/setup-python@v4 - with: - python-version: 3.12 - - - name: Install Crossbuild Deps - run: | - sudo apt-get update --allow-releaseinfo-change --fix-missing - sudo apt install -y qemu-user-static binfmt-support - - - name: Install dependencies - run: | - pip install virtualenv - virtualenv venv - source venv/bin/activate - pip install .[dev] - - - name: Build Layers - run: ./scripts/build_layers.sh - - - name: Check Size - run: ./scripts/check_layer_size.sh From 1f4593d5bf3f07b9632888982dac68ba5f61c26d Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Wed, 6 Mar 2024 10:35:45 -0500 Subject: [PATCH 084/268] v5.89.0 (#430) --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 5dbd9e5b..007f47c6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "5.88.0" +version = "5.89.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 51fefdf4d0650fcc609763f8abb8a3c77038371f Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Wed, 6 Mar 2024 11:01:22 -0500 Subject: [PATCH 085/268] Revert "v5.89.0 (#430)" (#431) This reverts commit 1f4593d5bf3f07b9632888982dac68ba5f61c26d. --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 007f47c6..5dbd9e5b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "5.89.0" +version = "5.88.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From a132b042fff2a471330a97ef8cbcb741651ac1f2 Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Wed, 6 Mar 2024 11:07:27 -0500 Subject: [PATCH 086/268] feat: Signing job should run as one-shot or loop over layers (#432) --- scripts/sign_layers.sh | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/scripts/sign_layers.sh b/scripts/sign_layers.sh index 7e748f70..700bd55a 100755 --- a/scripts/sign_layers.sh +++ b/scripts/sign_layers.sh @@ -41,6 +41,18 @@ if [ "$1" = "prod" ]; then S3_BUCKET_NAME="dd-lambda-signing-bucket" fi +if [ -z "$LAYER_FILE" ]; then + echo "Layer file not specified, running for all layer files." +else + echo "Layer file is specified: $LAYER_FILE" + if (printf '%s\n' "${LAYER_FILES[@]}" | grep -xq $LAYER_FILE); then + LAYER_FILES=($LAYER_FILE) + else + echo "Unsupported layer found, valid options are : ${LAYER_FILES[@]}" + exit 1 + fi +fi + for LAYER_FILE in "${LAYER_FILES[@]}" do echo From 9b30329795d287157815e3bb908341b99fffdc9e Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Wed, 6 Mar 2024 12:32:43 -0500 Subject: [PATCH 087/268] v5.89.0 (#433) --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 5dbd9e5b..007f47c6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "5.88.0" +version = "5.89.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From df9e164d025d85138f06e374ecd1e764071c9272 Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Wed, 6 Mar 2024 12:53:58 -0500 Subject: [PATCH 088/268] feat: Fix py layer name (#434) --- ci/input_files/build.yaml.tpl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ci/input_files/build.yaml.tpl b/ci/input_files/build.yaml.tpl index e562092d..68efeea8 100644 --- a/ci/input_files/build.yaml.tpl +++ b/ci/input_files/build.yaml.tpl @@ -115,13 +115,13 @@ sign-layer ({{ $runtime.name }}-{{ $runtime.arch }}): artifacts: # Re specify artifacts so the modified signed file is passed expire_in: 1 day # Signed layers should expire after 1 day paths: - - .layers/datadog_lambda_python-{{ $runtime.arch }}-{{ $runtime.python_version }}.zip + - .layers/datadog_lambda_py-{{ $runtime.arch }}-{{ $runtime.python_version }}.zip before_script: - apt-get update - apt-get install -y uuid-runtime - EXTERNAL_ID_NAME={{ $environment.external_id }} ROLE_TO_ASSUME={{ $environment.role_to_assume }} AWS_ACCOUNT={{ $environment.account }} source ./ci/get_secrets.sh script: - - LAYER_FILE=datadog_lambda_python-{{ $runtime.arch}}-{{ $runtime.python_version }}.zip ./scripts/sign_layers.sh {{ $environment.name }} + - LAYER_FILE=datadog_lambda_py-{{ $runtime.arch}}-{{ $runtime.python_version }}.zip ./scripts/sign_layers.sh {{ $environment.name }} {{ end }} publish-layer-{{ $environment.name }} ({{ $runtime.name }}-{{ $runtime.arch }}): From 36cb0527e3d0c899eefa6c67a1128eb8531e6a01 Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Wed, 6 Mar 2024 12:55:57 -0500 Subject: [PATCH 089/268] Revert "v5.89.0 (#433)" (#435) This reverts commit 9b30329795d287157815e3bb908341b99fffdc9e. --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 007f47c6..5dbd9e5b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "5.89.0" +version = "5.88.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 537011171b22be8cdb8cc752a112c327b1059392 Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Wed, 6 Mar 2024 13:34:19 -0500 Subject: [PATCH 090/268] release v5.89.0 (#437) --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 5dbd9e5b..007f47c6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "5.88.0" +version = "5.89.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 0ebcf58daf30fcf736b93d87cf2aeacafda8d8df Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Wed, 6 Mar 2024 16:35:00 -0500 Subject: [PATCH 091/268] feat: Support govcloud releases locally (#438) * feat: Support govcloud releases locally * feat: remove extra early return --- scripts/publish_prod.sh | 79 +++++++++++++++++++++++++++-------------- 1 file changed, 52 insertions(+), 27 deletions(-) diff --git a/scripts/publish_prod.sh b/scripts/publish_prod.sh index e8838c5a..f88ac5e2 100755 --- a/scripts/publish_prod.sh +++ b/scripts/publish_prod.sh @@ -31,11 +31,6 @@ else NEW_VERSION=$1 fi -# Ensure AWS access before proceeding -ddsaml2aws login -a govcloud-us1-fed-human-engineering -AWS_PROFILE=govcloud-us1-fed-human-engineering aws sts get-caller-identity -aws-vault exec sso-prod-engineering -- aws sts get-caller-identity - # Ensure pypi registry access read -p "Do you have access to PyPI (y/n)?" CONT if [ "$CONT" != "y" ]; then @@ -52,11 +47,17 @@ if [ "$CONT" != "y" ]; then exit 1 fi -echo -echo "Replacing version in pyproject.toml" -echo +echo "Answer 'n' if already done in a PR" +read -p "Update pyproject.toml version? (y/n)?" CONT +if [ "$CONT" != "y" ]; then + echo "Skipping updating package.json version" +else + echo + echo "Replacing version in pyproject.toml" + echo -poetry version ${NEW_VERSION} + poetry version ${NEW_VERSION} +fi echo echo "Building layers..." @@ -66,33 +67,57 @@ echo echo "Signing layers for commercial AWS regions" aws-vault exec sso-prod-engineering -- ./scripts/sign_layers.sh prod -echo -echo "Publishing layers to commercial AWS regions" -VERSION=$LAYER_VERSION aws-vault exec sso-prod-engineering -- ./scripts/publish_layers.sh +echo "Answer 'n' if GitLab already did this" +read -p "Deploy layers to commercial AWS (y/n)?" CONT +if [ "$CONT" != "y" ]; then + echo "Skipping deployment to commercial AWS" +else + echo "Ensuring you have access to the production AWS account" + aws-vault exec sso-prod-engineering -- aws sts get-caller-identity + + echo + echo "Publishing layers to commercial AWS regions" + VERSION=$LAYER_VERSION aws-vault exec sso-prod-engineering --no-session -- ./scripts/publish_layers.sh +fi +read -p "Deploy layers to GovCloud AWS (y/n)?" CONT +if [ "$CONT" != "y" ]; then + echo "Skipping deployment to GovCloud AWS" +else + echo "Ensuring you have access to the AWS GovCloud account" + ddsaml2aws login -a govcloud-us1-fed-human-engineering + AWS_PROFILE=govcloud-us1-fed-human-engineering aws sts get-caller-identity -echo "Publishing layers to GovCloud AWS regions" -ddsaml2aws login -a govcloud-us1-fed-human-engineering -VERSION=$LAYER_VERSION AWS_PROFILE=govcloud-us1-fed-human-engineering ./scripts/publish_layers.sh + echo "Publishing layers to GovCloud AWS regions" + ddsaml2aws login -a govcloud-us1-fed-human-engineering + VERSION=$LAYER_VERSION AWS_PROFILE=govcloud-us1-fed-human-engineering ./scripts/publish_layers.sh +fi +echo "Answer 'n' if GitLab already did this" read -p "Ready to publish $NEW_VERSION to PyPI (y/n)?" CONT if [ "$CONT" != "y" ]; then - echo "Exiting" - exit 1 + echo "Skipping publishing to PyPI" +else + echo + echo "Publishing to https://pypi.org/project/datadog-lambda/" + ./scripts/pypi.sh fi -echo -echo "Publishing to https://pypi.org/project/datadog-lambda/" -./scripts/pypi.sh -echo -echo 'Publishing updates to github' -git commit pyproject.toml -m "Bump version to ${NEW_VERSION}" -git push origin main -git tag "v$LAYER_VERSION" -git push origin "refs/tags/v$LAYER_VERSION" +echo "Answer 'n' if you already released in GitHub" +read -p "Do you want to bump the version in GitHub? (y/n)" CONT +if [ "$CONT" != "y" ]; then + echo "Skipping publishing updates to GitHub" +else + echo + echo 'Publishing updates to github' + git commit pyproject.toml -m "Bump version to ${NEW_VERSION}" + git push origin main + git tag "v$LAYER_VERSION" + git push origin "refs/tags/v$LAYER_VERSION" +fi echo -echo "Now create a new release with the tag v${LAYER_VERSION} created" +echo "Now create a new release with the tag v${LAYER_VERSION} created unless you have done this already" echo "https://github.com/DataDog/datadog-lambda-python/releases/new?tag=v$LAYER_VERSION&title=v$LAYER_VERSION" # Open a PR to the documentation repo to automatically bump layer version VERSION=$LAYER_VERSION LAYER=datadog-lambda-python ./scripts/create_documentation_pr.sh From e90d089b8d271d738c6ea1a48220d7bc5213ef56 Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Fri, 8 Mar 2024 11:09:00 -0500 Subject: [PATCH 092/268] feat: add eu-north-1 (#439) --- ci/datasources/regions.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/ci/datasources/regions.yaml b/ci/datasources/regions.yaml index a26372d8..a885f967 100644 --- a/ci/datasources/regions.yaml +++ b/ci/datasources/regions.yaml @@ -18,6 +18,7 @@ regions: # - code: "ca-west-1" we don't support it - code: "eu-central-1" - code: "eu-central-2" + - code: "eu-north-1" - code: "eu-west-1" - code: "eu-west-2" - code: "eu-west-3" From 3b53751c6c4393872f7c3229d5989c031b22d37d Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Mon, 11 Mar 2024 11:07:56 -0400 Subject: [PATCH 093/268] feat: Enable ca-west-1 and il-central-1 (#440) * feat: Enable ca-west-1 and il-central-1 * feat: remove comment --- ci/datasources/regions.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ci/datasources/regions.yaml b/ci/datasources/regions.yaml index a885f967..9f12a011 100644 --- a/ci/datasources/regions.yaml +++ b/ci/datasources/regions.yaml @@ -15,7 +15,7 @@ regions: - code: "ap-northeast-2" - code: "ap-northeast-3" - code: "ca-central-1" -# - code: "ca-west-1" we don't support it + - code: "ca-west-1" - code: "eu-central-1" - code: "eu-central-2" - code: "eu-north-1" @@ -24,7 +24,7 @@ regions: - code: "eu-west-3" - code: "eu-south-1" - code: "eu-south-2" -# - code: "il-central-1" we don't support it + - code: "il-central-1" - code: "me-south-1" - code: "me-central-1" - code: "sa-east-1" From 1a28c72c3efe1ef7a6abd923683b11e6f0d7bfe9 Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Mon, 11 Mar 2024 15:03:04 -0400 Subject: [PATCH 094/268] feat: Bump ddtrace to 2.7.2 (#441) --- poetry.lock | 374 ++++++++++++++++--------------- pyproject.toml | 2 +- scripts/run_integration_tests.sh | 5 + 3 files changed, 203 insertions(+), 178 deletions(-) diff --git a/poetry.lock b/poetry.lock index 52515d21..1986c23a 100644 --- a/poetry.lock +++ b/poetry.lock @@ -22,18 +22,18 @@ tests-no-zope = ["attrs[tests-mypy]", "cloudpickle", "hypothesis", "pympler", "p [[package]] name = "boto3" -version = "1.34.28" +version = "1.34.59" description = "The AWS SDK for Python" category = "main" optional = true python-versions = ">= 3.8" files = [ - {file = "boto3-1.34.28-py3-none-any.whl", hash = "sha256:fb56622ce195c06ae0d15ae9472d44529362a869ad52862a5a28b891530969f9"}, - {file = "boto3-1.34.28.tar.gz", hash = "sha256:9e0dcca7bb0567f7b4b84d1d26c19b217abfe149d19106af7f120f09142688cf"}, + {file = "boto3-1.34.59-py3-none-any.whl", hash = "sha256:004e67b078be58d34469406f93cc8b95bc43becef4bbe44523a0b8e51f84c668"}, + {file = "boto3-1.34.59.tar.gz", hash = "sha256:162edf182e53c198137a28432a626dba103f787a8f5000ed4758b73ccd203fa0"}, ] [package.dependencies] -botocore = ">=1.34.28,<1.35.0" +botocore = ">=1.34.59,<1.35.0" jmespath = ">=0.7.1,<2.0.0" s3transfer = ">=0.10.0,<0.11.0" @@ -42,14 +42,14 @@ crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] [[package]] name = "botocore" -version = "1.34.28" +version = "1.34.59" description = "Low-level, data-driven core of boto 3." category = "main" optional = true python-versions = ">= 3.8" files = [ - {file = "botocore-1.34.28-py3-none-any.whl", hash = "sha256:03be8209257ab65f3c8be7377cf8d38bff6a6afbe3d36c72924e48959bb694dc"}, - {file = "botocore-1.34.28.tar.gz", hash = "sha256:45c99ccc6389ab1a87e996a7cc8797c7e41d5ecd9a5757d567ba3a57cb7655e7"}, + {file = "botocore-1.34.59-py3-none-any.whl", hash = "sha256:4bc112dafb1679ab571117593f7656604726a3da0e5ae5bad00ea772fa40e75c"}, + {file = "botocore-1.34.59.tar.gz", hash = "sha256:24edb4d21d7c97dea0c6c4a80d36b3809b1443a30b0bd5e317d6c319dfac823f"}, ] [package.dependencies] @@ -106,14 +106,14 @@ ujson = ["ujson (>=5.7.0)"] [[package]] name = "certifi" -version = "2023.11.17" +version = "2024.2.2" description = "Python package for providing Mozilla's CA Bundle." category = "main" optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2023.11.17-py3-none-any.whl", hash = "sha256:e036ab49d5b79556f99cfc2d9320b34cfbe5be05c5871b51de9329f0603b0474"}, - {file = "certifi-2023.11.17.tar.gz", hash = "sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1"}, + {file = "certifi-2024.2.2-py3-none-any.whl", hash = "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1"}, + {file = "certifi-2024.2.2.tar.gz", hash = "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f"}, ] [[package]] @@ -217,70 +217,17 @@ files = [ ] [[package]] -name = "coverage" -version = "7.4.1" -description = "Code coverage measurement for Python" +name = "colorama" +version = "0.4.6" +description = "Cross-platform colored terminal text." category = "main" optional = true -python-versions = ">=3.8" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ - {file = "coverage-7.4.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:077d366e724f24fc02dbfe9d946534357fda71af9764ff99d73c3c596001bbd7"}, - {file = "coverage-7.4.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0193657651f5399d433c92f8ae264aff31fc1d066deee4b831549526433f3f61"}, - {file = "coverage-7.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d17bbc946f52ca67adf72a5ee783cd7cd3477f8f8796f59b4974a9b59cacc9ee"}, - {file = "coverage-7.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a3277f5fa7483c927fe3a7b017b39351610265308f5267ac6d4c2b64cc1d8d25"}, - {file = "coverage-7.4.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6dceb61d40cbfcf45f51e59933c784a50846dc03211054bd76b421a713dcdf19"}, - {file = "coverage-7.4.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:6008adeca04a445ea6ef31b2cbaf1d01d02986047606f7da266629afee982630"}, - {file = "coverage-7.4.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:c61f66d93d712f6e03369b6a7769233bfda880b12f417eefdd4f16d1deb2fc4c"}, - {file = "coverage-7.4.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b9bb62fac84d5f2ff523304e59e5c439955fb3b7f44e3d7b2085184db74d733b"}, - {file = "coverage-7.4.1-cp310-cp310-win32.whl", hash = "sha256:f86f368e1c7ce897bf2457b9eb61169a44e2ef797099fb5728482b8d69f3f016"}, - {file = "coverage-7.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:869b5046d41abfea3e381dd143407b0d29b8282a904a19cb908fa24d090cc018"}, - {file = "coverage-7.4.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b8ffb498a83d7e0305968289441914154fb0ef5d8b3157df02a90c6695978295"}, - {file = "coverage-7.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3cacfaefe6089d477264001f90f55b7881ba615953414999c46cc9713ff93c8c"}, - {file = "coverage-7.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d6850e6e36e332d5511a48a251790ddc545e16e8beaf046c03985c69ccb2676"}, - {file = "coverage-7.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:18e961aa13b6d47f758cc5879383d27b5b3f3dcd9ce8cdbfdc2571fe86feb4dd"}, - {file = "coverage-7.4.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dfd1e1b9f0898817babf840b77ce9fe655ecbe8b1b327983df485b30df8cc011"}, - {file = "coverage-7.4.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:6b00e21f86598b6330f0019b40fb397e705135040dbedc2ca9a93c7441178e74"}, - {file = "coverage-7.4.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:536d609c6963c50055bab766d9951b6c394759190d03311f3e9fcf194ca909e1"}, - {file = "coverage-7.4.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:7ac8f8eb153724f84885a1374999b7e45734bf93a87d8df1e7ce2146860edef6"}, - {file = "coverage-7.4.1-cp311-cp311-win32.whl", hash = "sha256:f3771b23bb3675a06f5d885c3630b1d01ea6cac9e84a01aaf5508706dba546c5"}, - {file = "coverage-7.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:9d2f9d4cc2a53b38cabc2d6d80f7f9b7e3da26b2f53d48f05876fef7956b6968"}, - {file = "coverage-7.4.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f68ef3660677e6624c8cace943e4765545f8191313a07288a53d3da188bd8581"}, - {file = "coverage-7.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:23b27b8a698e749b61809fb637eb98ebf0e505710ec46a8aa6f1be7dc0dc43a6"}, - {file = "coverage-7.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e3424c554391dc9ef4a92ad28665756566a28fecf47308f91841f6c49288e66"}, - {file = "coverage-7.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e0860a348bf7004c812c8368d1fc7f77fe8e4c095d661a579196a9533778e156"}, - {file = "coverage-7.4.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe558371c1bdf3b8fa03e097c523fb9645b8730399c14fe7721ee9c9e2a545d3"}, - {file = "coverage-7.4.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3468cc8720402af37b6c6e7e2a9cdb9f6c16c728638a2ebc768ba1ef6f26c3a1"}, - {file = "coverage-7.4.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:02f2edb575d62172aa28fe00efe821ae31f25dc3d589055b3fb64d51e52e4ab1"}, - {file = "coverage-7.4.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ca6e61dc52f601d1d224526360cdeab0d0712ec104a2ce6cc5ccef6ed9a233bc"}, - {file = "coverage-7.4.1-cp312-cp312-win32.whl", hash = "sha256:ca7b26a5e456a843b9b6683eada193fc1f65c761b3a473941efe5a291f604c74"}, - {file = "coverage-7.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:85ccc5fa54c2ed64bd91ed3b4a627b9cce04646a659512a051fa82a92c04a448"}, - {file = "coverage-7.4.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8bdb0285a0202888d19ec6b6d23d5990410decb932b709f2b0dfe216d031d218"}, - {file = "coverage-7.4.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:918440dea04521f499721c039863ef95433314b1db00ff826a02580c1f503e45"}, - {file = "coverage-7.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:379d4c7abad5afbe9d88cc31ea8ca262296480a86af945b08214eb1a556a3e4d"}, - {file = "coverage-7.4.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b094116f0b6155e36a304ff912f89bbb5067157aff5f94060ff20bbabdc8da06"}, - {file = "coverage-7.4.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2f5968608b1fe2a1d00d01ad1017ee27efd99b3437e08b83ded9b7af3f6f766"}, - {file = "coverage-7.4.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:10e88e7f41e6197ea0429ae18f21ff521d4f4490aa33048f6c6f94c6045a6a75"}, - {file = "coverage-7.4.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a4a3907011d39dbc3e37bdc5df0a8c93853c369039b59efa33a7b6669de04c60"}, - {file = "coverage-7.4.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6d224f0c4c9c98290a6990259073f496fcec1b5cc613eecbd22786d398ded3ad"}, - {file = "coverage-7.4.1-cp38-cp38-win32.whl", hash = "sha256:23f5881362dcb0e1a92b84b3c2809bdc90db892332daab81ad8f642d8ed55042"}, - {file = "coverage-7.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:a07f61fc452c43cd5328b392e52555f7d1952400a1ad09086c4a8addccbd138d"}, - {file = "coverage-7.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8e738a492b6221f8dcf281b67129510835461132b03024830ac0e554311a5c54"}, - {file = "coverage-7.4.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:46342fed0fff72efcda77040b14728049200cbba1279e0bf1188f1f2078c1d70"}, - {file = "coverage-7.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9641e21670c68c7e57d2053ddf6c443e4f0a6e18e547e86af3fad0795414a628"}, - {file = "coverage-7.4.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aeb2c2688ed93b027eb0d26aa188ada34acb22dceea256d76390eea135083950"}, - {file = "coverage-7.4.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d12c923757de24e4e2110cf8832d83a886a4cf215c6e61ed506006872b43a6d1"}, - {file = "coverage-7.4.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0491275c3b9971cdbd28a4595c2cb5838f08036bca31765bad5e17edf900b2c7"}, - {file = "coverage-7.4.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:8dfc5e195bbef80aabd81596ef52a1277ee7143fe419efc3c4d8ba2754671756"}, - {file = "coverage-7.4.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:1a78b656a4d12b0490ca72651fe4d9f5e07e3c6461063a9b6265ee45eb2bdd35"}, - {file = "coverage-7.4.1-cp39-cp39-win32.whl", hash = "sha256:f90515974b39f4dea2f27c0959688621b46d96d5a626cf9c53dbc653a895c05c"}, - {file = "coverage-7.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:64e723ca82a84053dd7bfcc986bdb34af8d9da83c521c19d6b472bc6880e191a"}, - {file = "coverage-7.4.1-pp38.pp39.pp310-none-any.whl", hash = "sha256:32a8d985462e37cfdab611a6f95b09d7c091d07668fdc26e47a725ee575fe166"}, - {file = "coverage-7.4.1.tar.gz", hash = "sha256:1ed4b95480952b1a26d863e546fa5094564aa0065e1e5f0d4d0041f293251d04"}, + {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, + {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, ] -[package.extras] -toml = ["tomli"] - [[package]] name = "datadog" version = "0.48.0" @@ -314,72 +261,72 @@ six = "*" [[package]] name = "ddtrace" -version = "2.5.1" +version = "2.7.2" description = "Datadog APM client library" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "ddtrace-2.5.1-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:3bb27b10bcb55ad392027ac37ddc86cbea04e38f9963b18e4b7218a59dbc9b6d"}, - {file = "ddtrace-2.5.1-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:bde40dd9cdff53de6535f9ae1e41a4d37aed0eb113e4597fde8f48dec4629291"}, - {file = "ddtrace-2.5.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e02e3d15c2a3b63bd5a05fed429f7d77d41bc818b7a18554ac0f36104de28ccf"}, - {file = "ddtrace-2.5.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e746cb76c41602173ed1d995929218c23cd41f52f29ac2cdf6d44f04b593a5b1"}, - {file = "ddtrace-2.5.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f98240890feca039ce05310bbe91cb842dfc43277ca0560e6acd483753a90cbd"}, - {file = "ddtrace-2.5.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:ae7ed838023ce3d30d2cd071bd6113525b6245e8c25c1f8f9ff32b76fb7b7394"}, - {file = "ddtrace-2.5.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e4b2ab5094e7d4cbf3a5143716e400b3b4af81e777e4afb30a9374394b7a8238"}, - {file = "ddtrace-2.5.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:da1db3e7b5d45c54daf5b422333a03711dcdb448d7b122a689841c450797baa6"}, - {file = "ddtrace-2.5.1-cp310-cp310-win32.whl", hash = "sha256:e0eda4c5f4cc7219361503fd05c1f0bbb6c70d73de73805d062becf323055ffc"}, - {file = "ddtrace-2.5.1-cp310-cp310-win_amd64.whl", hash = "sha256:aeb3a6358e702c7797fc6c447f2a2e5873dc207e65176bb6080608e7d2662a15"}, - {file = "ddtrace-2.5.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:aecb70d89e3662aa32fc42a271dcd90dde654902ccb97fbca2e5c52dfd10276d"}, - {file = "ddtrace-2.5.1-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:dc81597a7bf44d48ce1317e1dd62b0329eea1cf3a22cb1730273593bd3cf9dc6"}, - {file = "ddtrace-2.5.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79e9f9db08a0bd3751503d4e215e04780e5d59d084f43cb54cc35089c4e08c57"}, - {file = "ddtrace-2.5.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d971804470cb34a3580dd701432721678c0c361c75bc580cf2588f42fd13f0b9"}, - {file = "ddtrace-2.5.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c8a936345d53f5290c9557eac5ac7d90218cd45e7c92215f1ee3eb1de309fe46"}, - {file = "ddtrace-2.5.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:eee1eb5ef049b8667d0d53cacfc3c79b5fe978acbd5a59135cd4e1ed59b31be9"}, - {file = "ddtrace-2.5.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:56474f8756cb2a6b708c79a62227b5b0bc235d74099361a95ea225646dbbf230"}, - {file = "ddtrace-2.5.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:06c8b33099285db7fb7dd4b6dffae16b7d88d13231b00104e29c85d925d7359d"}, - {file = "ddtrace-2.5.1-cp311-cp311-win32.whl", hash = "sha256:209ac6ad4656869aecaa7794444d166c741200330843f555f4f8161643ea7a8b"}, - {file = "ddtrace-2.5.1-cp311-cp311-win_amd64.whl", hash = "sha256:418685567d33a27ac476756d73dfa81c74d40099f28dc5af61e3ad8cdaa6596d"}, - {file = "ddtrace-2.5.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:3a27a5cd2eefe98243e185d26cba380960819f43b1d214c77af6ba15699cd8ae"}, - {file = "ddtrace-2.5.1-cp312-cp312-macosx_11_0_x86_64.whl", hash = "sha256:16479b5e04bdb0400898a14b2208247955fd599f9809d7f84d5055557258b6f2"}, - {file = "ddtrace-2.5.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea1a5f908abd988e6f70595c31f4a0be18bbd780558c506640ce2751397c9d19"}, - {file = "ddtrace-2.5.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:72593b98093d3de456cd47185e6dbb851b77b104cd108a16d6339ff3102c1581"}, - {file = "ddtrace-2.5.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e7d1f311779369537148c124528265a7d7d45f4a4ad5304d4919c13d6216eba0"}, - {file = "ddtrace-2.5.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:06a2f4fe57eae9e5a54bd6cf7fad6e34c1c7205ce78a65c2eeb10bd00b610538"}, - {file = "ddtrace-2.5.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:45fc94bfd615c1c64f05e55b760289638de7149020e517af8cefca5151efbbc3"}, - {file = "ddtrace-2.5.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4d10f6e5113d757fef994b9d8db89c7fa270cbb8aec99b75527c460217e5f2a4"}, - {file = "ddtrace-2.5.1-cp312-cp312-win32.whl", hash = "sha256:7500956f12f55f51199b96cdbc6724adb627576dc968c8d36dbc646fc91cd291"}, - {file = "ddtrace-2.5.1-cp312-cp312-win_amd64.whl", hash = "sha256:3302bc89ccdecfbbd907766cbd4e083e5d0df1cf075cd49b07ae5f1c25987187"}, - {file = "ddtrace-2.5.1-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:0c845623008231788aca5e8e27e215d638999de0a82af58a3eebef74b8dd3100"}, - {file = "ddtrace-2.5.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:988582eb12ade7ba4f4bf4a09e5fde8f05a005ffc1784381fd258720354f80bb"}, - {file = "ddtrace-2.5.1-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2110dea2b2390f799516cfe0611e4727939cf3139186668786ad57bbcea70f08"}, - {file = "ddtrace-2.5.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2d8adf00eec47ecd78216903b7c6ec23d533aa0302120ca35d6c35836d92e7ab"}, - {file = "ddtrace-2.5.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:878eed15287aebcc7b776a40392dc1794b12999f561c5872489ad1426df87914"}, - {file = "ddtrace-2.5.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:1a83033183a1747190a7528de8eb9da70392e227288f6d32f57800747c9379cc"}, - {file = "ddtrace-2.5.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:80b21572dbb3d781360987468cd03dacd49179dd703e66d4fdeb524369f94da3"}, - {file = "ddtrace-2.5.1-cp37-cp37m-win32.whl", hash = "sha256:7d7511a9933a087f4603fb4d9c09d0f8a23b8bfdc2c958d7b01d255795d9f087"}, - {file = "ddtrace-2.5.1-cp37-cp37m-win_amd64.whl", hash = "sha256:69327a9d1488dee70bc6ba052c76bd2f73d52767de890edf2997c0e9b3711316"}, - {file = "ddtrace-2.5.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:1427aa0914a20f18b5a7f075c7f1f3c79ded434cfe8fd658110ba43c0490488a"}, - {file = "ddtrace-2.5.1-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:8152a850af06a10c631e8725bf677da2867705c2c4ea4bcd2911837798870050"}, - {file = "ddtrace-2.5.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2277b3b468479d2cfdef597030b029b217528a5bf986e94b707b8a346e68dd21"}, - {file = "ddtrace-2.5.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fafb2235b87141bddd03b38b225ef3468ec821d9c4e5fd0c42b1d27b30f6e9c9"}, - {file = "ddtrace-2.5.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10fa3443168545286c140bfef7a59957c87d89971650788010a2e19352a8f65e"}, - {file = "ddtrace-2.5.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:af0eccf9ac9d9e7557cf52d2bfe549ea02d3b41b81407ebd70a11b079d15a160"}, - {file = "ddtrace-2.5.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:49347e198e82025679c82f8880e029e2dec80f48f6fcc2bd30d64865f6c8c98f"}, - {file = "ddtrace-2.5.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:66dec725d1abf764736a73ee04e885128abb7d6c6ca0ef6935888ba5610ef292"}, - {file = "ddtrace-2.5.1-cp38-cp38-win32.whl", hash = "sha256:cf0cd0b7e65efb91ffacf5987d73fd1505bead9162c05d4a7bc0ff009414621e"}, - {file = "ddtrace-2.5.1-cp38-cp38-win_amd64.whl", hash = "sha256:38a4419916ea6496aa6ee49c13280da825d9863e2a4bce98d6c6820da8d51678"}, - {file = "ddtrace-2.5.1-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:5e2ed51c5fa9247fa3122d8f615c157d0955e2d673b1e76da2578ecf313eb6cf"}, - {file = "ddtrace-2.5.1-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:8953b2c39a0ca5fb4d742df346a9ed53d100ac6d50c6fd68416eb6ebadf9025e"}, - {file = "ddtrace-2.5.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d35cc4e93283ad3f6e96be99de1ba8adc7ef503d995a3dd7808aa242bbed28cc"}, - {file = "ddtrace-2.5.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f79c16a430fc1b4fb18b881106368f09383f293abf5366d96c1155aad320a677"}, - {file = "ddtrace-2.5.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf8d46467e456b0f2682952b4b3835e996aaae77e26455f150c35dde223ff0fb"}, - {file = "ddtrace-2.5.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f73d297c4528c880c0d35a2e43f2c3703662e31a5e527a0d33ee9c20e7dba530"}, - {file = "ddtrace-2.5.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:ed4fcda36dd740693314bcaa4feddb566b2ccd835c3ac6aad42f36525280cc1e"}, - {file = "ddtrace-2.5.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d535cdfc9e34e3a7972420c88a9c88f399619867f9774f09ff3f92a57136e199"}, - {file = "ddtrace-2.5.1-cp39-cp39-win32.whl", hash = "sha256:1d7b4f7aeb9dffe357f00f516fa7c800c9a76ff29045edfb381ac1ee4a228b34"}, - {file = "ddtrace-2.5.1-cp39-cp39-win_amd64.whl", hash = "sha256:bebae8b500c2b6d641d0a312b4a0c1e222c2ba093c3db6e4b38315a6c5f819da"}, - {file = "ddtrace-2.5.1.tar.gz", hash = "sha256:c78da78418a658b1ba1880ffe6477874aa1f26a23f26db98e0f012b07a1d3998"}, + {file = "ddtrace-2.7.2-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:31a0a4ffefdc6c20e9e4ef663b411ea66bd2a4113bec7f10292df00b75e883f3"}, + {file = "ddtrace-2.7.2-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:fd148fce8c18a278b055f7e1b4c56e5b3214cd17fc42882dfb987826a00197d6"}, + {file = "ddtrace-2.7.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce0febe3be1c06b7b3ea64aa21d0a37bc06f9a4c3291e833e95687c10be459a2"}, + {file = "ddtrace-2.7.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6cc7663f1c7d42f47266ae135b4ee16773e125417597e24da86bb78ecc82f85b"}, + {file = "ddtrace-2.7.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:06c6b7e6f153fb739de3da62cb9d99283a2669f8ebeb92238d272803939c7433"}, + {file = "ddtrace-2.7.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:a7879965428bb7c6abd020031ef3a5ffcc0104b7c15f021dcc0315bc421a721a"}, + {file = "ddtrace-2.7.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:5e3d33c43e8302c72d1b2b7a854d4a17c787973e61ec76cd7fc6434839aefc7c"}, + {file = "ddtrace-2.7.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fcbb686d0ffe47df42fe092e020302c912c956da742cf4787e616c8f73a26c8b"}, + {file = "ddtrace-2.7.2-cp310-cp310-win32.whl", hash = "sha256:f9a76c303cec59216b706186e2de38ae1d650405660277fed121c7658f320cf7"}, + {file = "ddtrace-2.7.2-cp310-cp310-win_amd64.whl", hash = "sha256:4385b4f4f8ec7313ead4d852d8dd50cae4c45f49b3893cc6aa4a64a3b3be93b8"}, + {file = "ddtrace-2.7.2-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:4dd90dc7c173edc32283b4f70937ea01ec43924a1b0af7ef6bbaa22076210860"}, + {file = "ddtrace-2.7.2-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:923462adde72f363821c0c165ac78aa76236ae12022d44ad7c51b8870595bbaa"}, + {file = "ddtrace-2.7.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:190c4eefc1e3c0a7befd995bf10b51451ddd497fb636fd825d7f8527e28c5864"}, + {file = "ddtrace-2.7.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c5016bc73e92adef4017e8cf7fff8a49a2c0fad8dcac600459fa30f63dbab8be"}, + {file = "ddtrace-2.7.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c230035c714ed9ea3dd16d65813f539ba9c30c87294107d5f77cdddad430a086"}, + {file = "ddtrace-2.7.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:1689277365728d5735931b98ef64115d958ab76fb698472e7d92a1f71bf0000b"}, + {file = "ddtrace-2.7.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:3e3a19ae9e8e2e6aff56aa93d73a0d72ce5530c1f0347b7ebba68b5c437efe49"}, + {file = "ddtrace-2.7.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e03cf1787728ae01cb8cd0b474b09461d47afb15a2146b1753bee80a27568d86"}, + {file = "ddtrace-2.7.2-cp311-cp311-win32.whl", hash = "sha256:081ba7c3d876c6dde6d3f8078205e3ae06932f0dbe5cb283f9bdc99052c262de"}, + {file = "ddtrace-2.7.2-cp311-cp311-win_amd64.whl", hash = "sha256:0299654ce610fe4d0f73b9c599bfaacd17537d1193cc7be95fb8e5238bed0ffa"}, + {file = "ddtrace-2.7.2-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:283d1ed0d496e07b80ef372f5e78d5a5aa86a70b59b1a0039d655d5796d8cd37"}, + {file = "ddtrace-2.7.2-cp312-cp312-macosx_11_0_x86_64.whl", hash = "sha256:a0e0ad2f20ce6942b3ceca0578be72416aacd6f63a7ef07de5a86ea524b16ad4"}, + {file = "ddtrace-2.7.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2094747698d8ffd50339b4c8142923371272a4e919a1f56cc75e8cce868ff638"}, + {file = "ddtrace-2.7.2-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dd239ba8a9762ef1defb7bb5c70e8b488987b462936f6f9f70a6613b35376178"}, + {file = "ddtrace-2.7.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82170d1d5153554dcfd475c0c1ab64f315cc7f00c5cf6c6bb471025b661ecc41"}, + {file = "ddtrace-2.7.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3140f5db9313f6a14d02a9036f16a1d5311261daec2d90160db829d08593ce1e"}, + {file = "ddtrace-2.7.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:134194fa8e8c14798374074c5472f33479cf5220dfccea79e1abaea7f57bdef2"}, + {file = "ddtrace-2.7.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5ce6f31d785762b80a8a8d346bdd302f15977cf0b0e13f81f4fdbf7815bae2c4"}, + {file = "ddtrace-2.7.2-cp312-cp312-win32.whl", hash = "sha256:0e6cd36d2373345863b3664f440b0255c1313e4f7ea3ac343de38ffe5402fa90"}, + {file = "ddtrace-2.7.2-cp312-cp312-win_amd64.whl", hash = "sha256:8ee761d7dfa01ccfeeb81215d16da27d0cfcc47a58a6b582dfd5816bccb64005"}, + {file = "ddtrace-2.7.2-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:c3b55cb4fc6ec1994f7f1e44dfbf62f46069b16cebe8b26781a3b198c821591d"}, + {file = "ddtrace-2.7.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7aa91a2c729f9187a75084b2a0fce23c63a8d3181e9c33a640e9e638ddbc7079"}, + {file = "ddtrace-2.7.2-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b4ce51a957f21ae997795a9a2e9f11fb988718417012e2a5765f74e157f3099a"}, + {file = "ddtrace-2.7.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0fb0adacd1116b1043f92382fd3dc9e7deabd6d788c15c2b1e3b0f75c4adb711"}, + {file = "ddtrace-2.7.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:99a6cf91b3ab290afac26fa61b81b746677b1627df12373919219fd562881c2d"}, + {file = "ddtrace-2.7.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:d4f8ac0ac0970d65223247c879729c4c489e3cc69529b54e9dd2051efc68a007"}, + {file = "ddtrace-2.7.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:6052dd35bb0ec6d1023f0c4de9b0426a9e16d80fd8152d8eb8135e34bf41e1df"}, + {file = "ddtrace-2.7.2-cp37-cp37m-win32.whl", hash = "sha256:641e440ac175bb04e03e34543ed48a3ddfe4a393712c62deb2f2c78adb48db90"}, + {file = "ddtrace-2.7.2-cp37-cp37m-win_amd64.whl", hash = "sha256:1687a40014873860b8c87a9a3e18dee51fa6a593e4758f973ed4cb8832b4e53a"}, + {file = "ddtrace-2.7.2-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:d5529a7e4a083ec1388872c5a9b41b38622a7146d27d3bdee81d701f0ac6fc38"}, + {file = "ddtrace-2.7.2-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:df4b51f39b260d8706fdf5417f3f94277f76b951cbbeabdb2b3a597d5f6cd0c1"}, + {file = "ddtrace-2.7.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:27c6e8c3b1bf642ca74afe985985450f2ca18e686ecb4f2e0ab978ae5fc03f8f"}, + {file = "ddtrace-2.7.2-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c0399c670229651517338c456304a2a65ce54387b8ddecf2da7011b259c0817d"}, + {file = "ddtrace-2.7.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c81a89236f3ea91ad0e9da1fef32d9420c0d4614a44ef0a2cab168444cdb0d8"}, + {file = "ddtrace-2.7.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:06d840db3283999ddacc3c9d8f5e5f0e0692ce635500d51f5e7e7ed2109c989a"}, + {file = "ddtrace-2.7.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:0e242cab1c2a153e418060f66e477e21b45cd33843959a6d000f3f9ea8a9c06a"}, + {file = "ddtrace-2.7.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b51e2230d805873974af882c19026030f40aee14a8d1b55d378443659ff4463f"}, + {file = "ddtrace-2.7.2-cp38-cp38-win32.whl", hash = "sha256:7c589ee49644d6c022928ebe49e4586b22ac40f8f841d67e01eeda4a6f61cea0"}, + {file = "ddtrace-2.7.2-cp38-cp38-win_amd64.whl", hash = "sha256:0974c8f36f0f1be229befede438ba91c1da715abd68091c0c0e21ec4d3d85f79"}, + {file = "ddtrace-2.7.2-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:b602703fff34f3397df22fdc1184fc039d89e8c5b07cc2bcc330c9b83bcc6ad6"}, + {file = "ddtrace-2.7.2-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:81ff83a9cdc033175780379d83af4bb03785bfd3c71672954f00c5a7f8d0d63b"}, + {file = "ddtrace-2.7.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d6f7e2fa06c61f9a26b253898654a97b49b805942aee19fb7c4b95e17105c6a5"}, + {file = "ddtrace-2.7.2-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d0140acfd73449e8cfa090e322f76ff85f385ce4337111ed2780cd2ee62e5e4b"}, + {file = "ddtrace-2.7.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9af429e4c48cae2fb6a9a51cdb6ccc2dc0cabbc9905c1ce6e9062335da0b9db"}, + {file = "ddtrace-2.7.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:09330db7a2c0ed91d244ef653f0aa261153dc0820874923c325058352b5278fd"}, + {file = "ddtrace-2.7.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:8638ddb94d77bdf55cc64718af66b172c4ff677b57c9e59dfd9dc8f630fb3169"}, + {file = "ddtrace-2.7.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0ba0668e439134b3f258ddcc3e5c1d1d8848a40954087288312557b455b6967e"}, + {file = "ddtrace-2.7.2-cp39-cp39-win32.whl", hash = "sha256:aa3c927299aa134ccaf8821eb7284366c60e29a542d0e7738e0b7dd9182b2025"}, + {file = "ddtrace-2.7.2-cp39-cp39-win_amd64.whl", hash = "sha256:7e3f36e91d1a91fb083258b09fa7f887a295321b4dc928630ce748ec664e70be"}, + {file = "ddtrace-2.7.2.tar.gz", hash = "sha256:89a0b4b30220aeb68c2845fa21e51ec9bf915a1893cf003850b9d8022e7cb72a"}, ] [package.dependencies] @@ -392,6 +339,7 @@ opentelemetry-api = ">=1" protobuf = ">=3" setuptools = {version = "*", markers = "python_version >= \"3.12\""} six = ">=1.12.0" +sqlparse = ">=0.2.2" typing-extensions = "*" xmltodict = ">=0.12" @@ -495,6 +443,18 @@ docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.link perf = ["ipython"] testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)", "pytest-ruff"] +[[package]] +name = "iniconfig" +version = "2.0.0" +description = "brain-dead simple config-ini parsing" +category = "main" +optional = true +python-versions = ">=3.7" +files = [ + {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, + {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, +] + [[package]] name = "jmespath" version = "1.0.1" @@ -520,60 +480,68 @@ files = [ ] [[package]] -name = "nose2" -version = "0.9.2" -description = "unittest2 with plugins, the succesor to nose" +name = "opentelemetry-api" +version = "1.23.0" +description = "OpenTelemetry Python API" category = "main" -optional = true -python-versions = "*" +optional = false +python-versions = ">=3.8" files = [ - {file = "nose2-0.9.2-py2.py3-none-any.whl", hash = "sha256:fd4b84c65ecea869080a23bdb8916716f5363df3b899933991c861ada8aa3f48"}, - {file = "nose2-0.9.2.tar.gz", hash = "sha256:8762f77925bbafcdf38331e0e2ee718756fb75ff74b1f9097cd08731ad59ab5e"}, + {file = "opentelemetry_api-1.23.0-py3-none-any.whl", hash = "sha256:cc03ea4025353048aadb9c64919099663664672ea1c6be6ddd8fee8e4cd5e774"}, + {file = "opentelemetry_api-1.23.0.tar.gz", hash = "sha256:14a766548c8dd2eb4dfc349739eb4c3893712a0daa996e5dbf945f9da665da9d"}, ] [package.dependencies] -coverage = ">=4.4.1" -six = ">=1.7" - -[package.extras] -coverage-plugin = ["coverage (>=4.4.1)"] -doc = ["Sphinx (>=1.6.5)", "mock", "sphinx-rtd-theme"] +deprecated = ">=1.2.6" +importlib-metadata = ">=6.0,<7.0" [[package]] -name = "opentelemetry-api" -version = "1.22.0" -description = "OpenTelemetry Python API" +name = "packaging" +version = "24.0" +description = "Core utilities for Python packages" category = "main" -optional = false +optional = true python-versions = ">=3.7" files = [ - {file = "opentelemetry_api-1.22.0-py3-none-any.whl", hash = "sha256:43621514301a7e9f5d06dd8013a1b450f30c2e9372b8e30aaeb4562abf2ce034"}, - {file = "opentelemetry_api-1.22.0.tar.gz", hash = "sha256:15ae4ca925ecf9cfdfb7a709250846fbb08072260fca08ade78056c502b86bed"}, + {file = "packaging-24.0-py3-none-any.whl", hash = "sha256:2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5"}, + {file = "packaging-24.0.tar.gz", hash = "sha256:eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9"}, ] -[package.dependencies] -deprecated = ">=1.2.6" -importlib-metadata = ">=6.0,<7.0" +[[package]] +name = "pluggy" +version = "1.4.0" +description = "plugin and hook calling mechanisms for python" +category = "main" +optional = true +python-versions = ">=3.8" +files = [ + {file = "pluggy-1.4.0-py3-none-any.whl", hash = "sha256:7db9f7b503d67d1c5b95f59773ebb58a8c1c288129a88665838012cfb07b8981"}, + {file = "pluggy-1.4.0.tar.gz", hash = "sha256:8c85c2876142a764e5b7548e7d9a0e0ddb46f5185161049a79b7e974454223be"}, +] + +[package.extras] +dev = ["pre-commit", "tox"] +testing = ["pytest", "pytest-benchmark"] [[package]] name = "protobuf" -version = "4.25.2" +version = "4.25.3" description = "" category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "protobuf-4.25.2-cp310-abi3-win32.whl", hash = "sha256:b50c949608682b12efb0b2717f53256f03636af5f60ac0c1d900df6213910fd6"}, - {file = "protobuf-4.25.2-cp310-abi3-win_amd64.whl", hash = "sha256:8f62574857ee1de9f770baf04dde4165e30b15ad97ba03ceac65f760ff018ac9"}, - {file = "protobuf-4.25.2-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:2db9f8fa64fbdcdc93767d3cf81e0f2aef176284071507e3ede160811502fd3d"}, - {file = "protobuf-4.25.2-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:10894a2885b7175d3984f2be8d9850712c57d5e7587a2410720af8be56cdaf62"}, - {file = "protobuf-4.25.2-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:fc381d1dd0516343f1440019cedf08a7405f791cd49eef4ae1ea06520bc1c020"}, - {file = "protobuf-4.25.2-cp38-cp38-win32.whl", hash = "sha256:33a1aeef4b1927431d1be780e87b641e322b88d654203a9e9d93f218ee359e61"}, - {file = "protobuf-4.25.2-cp38-cp38-win_amd64.whl", hash = "sha256:47f3de503fe7c1245f6f03bea7e8d3ec11c6c4a2ea9ef910e3221c8a15516d62"}, - {file = "protobuf-4.25.2-cp39-cp39-win32.whl", hash = "sha256:5e5c933b4c30a988b52e0b7c02641760a5ba046edc5e43d3b94a74c9fc57c1b3"}, - {file = "protobuf-4.25.2-cp39-cp39-win_amd64.whl", hash = "sha256:d66a769b8d687df9024f2985d5137a337f957a0916cf5464d1513eee96a63ff0"}, - {file = "protobuf-4.25.2-py3-none-any.whl", hash = "sha256:a8b7a98d4ce823303145bf3c1a8bdb0f2f4642a414b196f04ad9853ed0c8f830"}, - {file = "protobuf-4.25.2.tar.gz", hash = "sha256:fe599e175cb347efc8ee524bcd4b902d11f7262c0e569ececcb89995c15f0a5e"}, + {file = "protobuf-4.25.3-cp310-abi3-win32.whl", hash = "sha256:d4198877797a83cbfe9bffa3803602bbe1625dc30d8a097365dbc762e5790faa"}, + {file = "protobuf-4.25.3-cp310-abi3-win_amd64.whl", hash = "sha256:209ba4cc916bab46f64e56b85b090607a676f66b473e6b762e6f1d9d591eb2e8"}, + {file = "protobuf-4.25.3-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:f1279ab38ecbfae7e456a108c5c0681e4956d5b1090027c1de0f934dfdb4b35c"}, + {file = "protobuf-4.25.3-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:e7cb0ae90dd83727f0c0718634ed56837bfeeee29a5f82a7514c03ee1364c019"}, + {file = "protobuf-4.25.3-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:7c8daa26095f82482307bc717364e7c13f4f1c99659be82890dcfc215194554d"}, + {file = "protobuf-4.25.3-cp38-cp38-win32.whl", hash = "sha256:f4f118245c4a087776e0a8408be33cf09f6c547442c00395fbfb116fac2f8ac2"}, + {file = "protobuf-4.25.3-cp38-cp38-win_amd64.whl", hash = "sha256:c053062984e61144385022e53678fbded7aea14ebb3e0305ae3592fb219ccfa4"}, + {file = "protobuf-4.25.3-cp39-cp39-win32.whl", hash = "sha256:19b270aeaa0099f16d3ca02628546b8baefe2955bbe23224aaf856134eccf1e4"}, + {file = "protobuf-4.25.3-cp39-cp39-win_amd64.whl", hash = "sha256:e3c97a1555fd6388f857770ff8b9703083de6bf1f9274a002a332d65fbb56c8c"}, + {file = "protobuf-4.25.3-py3-none-any.whl", hash = "sha256:f0700d54bcf45424477e46a9f0944155b46fb0639d69728739c0e47bab83f2b9"}, + {file = "protobuf-4.25.3.tar.gz", hash = "sha256:25b5d0b42fd000320bd7830b349e3b696435f3b329810427a6bcce6a5492cc5c"}, ] [[package]] @@ -600,16 +568,39 @@ files = [ {file = "pyflakes-2.5.0.tar.gz", hash = "sha256:491feb020dca48ccc562a8c0cbe8df07ee13078df59813b83959cbdada312ea3"}, ] +[[package]] +name = "pytest" +version = "8.1.1" +description = "pytest: simple powerful testing with Python" +category = "main" +optional = true +python-versions = ">=3.8" +files = [ + {file = "pytest-8.1.1-py3-none-any.whl", hash = "sha256:2a8386cfc11fa9d2c50ee7b2a57e7d898ef90470a7a34c4b949ff59662bb78b7"}, + {file = "pytest-8.1.1.tar.gz", hash = "sha256:ac978141a75948948817d360297b7aae0fcb9d6ff6bc9ec6d514b85d5a65c044"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "sys_platform == \"win32\""} +exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""} +iniconfig = "*" +packaging = "*" +pluggy = ">=1.4,<2.0" +tomli = {version = ">=1", markers = "python_version < \"3.11\""} + +[package.extras] +testing = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] + [[package]] name = "python-dateutil" -version = "2.8.2" +version = "2.9.0.post0" description = "Extensions to the standard Python datetime module" category = "main" optional = true python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" files = [ - {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"}, - {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"}, + {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, + {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, ] [package.dependencies] @@ -657,20 +648,20 @@ crt = ["botocore[crt] (>=1.33.2,<2.0a.0)"] [[package]] name = "setuptools" -version = "69.0.3" +version = "69.1.1" description = "Easily download, build, install, upgrade, and uninstall Python packages" category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "setuptools-69.0.3-py3-none-any.whl", hash = "sha256:385eb4edd9c9d5c17540511303e39a147ce2fc04bc55289c322b9e5904fe2c05"}, - {file = "setuptools-69.0.3.tar.gz", hash = "sha256:be1af57fc409f93647f2e8e4573a142ed38724b8cdd389706a867bb4efcf1e78"}, + {file = "setuptools-69.1.1-py3-none-any.whl", hash = "sha256:02fa291a0471b3a18b2b2481ed902af520c69e8ae0919c13da936542754b4c56"}, + {file = "setuptools-69.1.1.tar.gz", hash = "sha256:5c0806c7d9af348e6dd3777b4f4dbb42c7ad85b190104837488eab9a7c945cf8"}, ] [package.extras] docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] -testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.1)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] +testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.2)", "pip (>=19.1)", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff (>=0.2.1)", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] +testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.2)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] [[package]] name = "six" @@ -684,16 +675,45 @@ files = [ {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, ] +[[package]] +name = "sqlparse" +version = "0.4.4" +description = "A non-validating SQL parser." +category = "main" +optional = false +python-versions = ">=3.5" +files = [ + {file = "sqlparse-0.4.4-py3-none-any.whl", hash = "sha256:5430a4fe2ac7d0f93e66f1efc6e1338a41884b7ddf2a350cedd20ccc4d9d28f3"}, + {file = "sqlparse-0.4.4.tar.gz", hash = "sha256:d446183e84b8349fa3061f0fe7f06ca94ba65b426946ffebe6e3e8295332420c"}, +] + +[package.extras] +dev = ["build", "flake8"] +doc = ["sphinx"] +test = ["pytest", "pytest-cov"] + +[[package]] +name = "tomli" +version = "2.0.1" +description = "A lil' TOML parser" +category = "main" +optional = true +python-versions = ">=3.7" +files = [ + {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, + {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, +] + [[package]] name = "typing-extensions" -version = "4.9.0" +version = "4.10.0" description = "Backported and Experimental Type Hints for Python 3.8+" category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "typing_extensions-4.9.0-py3-none-any.whl", hash = "sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd"}, - {file = "typing_extensions-4.9.0.tar.gz", hash = "sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783"}, + {file = "typing_extensions-4.10.0-py3-none-any.whl", hash = "sha256:69b1a937c3a517342112fb4c6df7e72fc39a38e7891a5730ed4985b5214b5475"}, + {file = "typing_extensions-4.10.0.tar.gz", hash = "sha256:b0abd7c89e8fb96f98db18d86106ff1d90ab692004eb746cf6eda2682f91b3cb"}, ] [[package]] @@ -840,9 +860,9 @@ docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.link testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy (>=0.9.1)", "pytest-ruff"] [extras] -dev = ["boto3", "flake8", "nose2", "requests"] +dev = ["boto3", "flake8", "pytest", "requests"] [metadata] lock-version = "2.0" python-versions = ">=3.8.0,<4" -content-hash = "0025ef8e84fb9e0a746e623853293967663e40854dafb3689ca14da2eb228b84" +content-hash = "80b471e42622e7de85a0795ad15cb6c01e61dd65df354b5e289a2cd47536a26b" diff --git a/pyproject.toml b/pyproject.toml index 007f47c6..a0204d4c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -27,7 +27,7 @@ classifiers = [ python = ">=3.8.0,<4" datadog = ">=0.41.0,<1.0.0" wrapt = "^1.11.2" -ddtrace = ">=2.5.1" +ddtrace = ">=2.7.2" urllib3 = [ {version = "<2.0.0", python = "<3.11", optional = true}, {version = "<2.1.0", python = ">=3.11", optional = true}, diff --git a/scripts/run_integration_tests.sh b/scripts/run_integration_tests.sh index 13edf1ac..cc36698b 100755 --- a/scripts/run_integration_tests.sh +++ b/scripts/run_integration_tests.sh @@ -56,6 +56,11 @@ if [ -z "$DD_API_KEY" ]; then exit 1 fi +if [ -z "$ARCH" ]; then + echo "No ARCH env var set, exiting" + exit 1 +fi + if [ -n "$UPDATE_SNAPSHOTS" ]; then echo "Overwriting snapshots in this execution" fi From 92498ffe3028af8984265a1535000c2a78a2c9d7 Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Mon, 11 Mar 2024 18:16:05 -0400 Subject: [PATCH 095/268] v5.90.0 (#443) --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index a0204d4c..94b73d03 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "5.89.0" +version = "5.90.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 20a2e4e6b0e377e764f68532bcd7d9da264348dc Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Mon, 11 Mar 2024 20:20:39 -0400 Subject: [PATCH 096/268] feat: Pass arch to check layer size, set e on it (#444) --- ci/input_files/build.yaml.tpl | 2 +- scripts/check_layer_size.sh | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/ci/input_files/build.yaml.tpl b/ci/input_files/build.yaml.tpl index 68efeea8..0229576e 100644 --- a/ci/input_files/build.yaml.tpl +++ b/ci/input_files/build.yaml.tpl @@ -53,7 +53,7 @@ check-layer-size ({{ $runtime.name }}-{{ $runtime.arch }}): dependencies: - build-layer ({{ $runtime.name }}-{{ $runtime.arch }}) script: - - PYTHON_VERSION={{ $runtime.python_version }} ./scripts/check_layer_size.sh + - PYTHON_VERSION={{ $runtime.python_version }} ARCH={{ $runtime.arch }} ./scripts/check_layer_size.sh lint python: stage: test diff --git a/scripts/check_layer_size.sh b/scripts/check_layer_size.sh index f1c8c813..9dbd7e99 100755 --- a/scripts/check_layer_size.sh +++ b/scripts/check_layer_size.sh @@ -8,6 +8,7 @@ # Compares layer size to threshold, and fails if below that threshold # 7 mb size limit +set -e MAX_LAYER_COMPRESSED_SIZE_KB=$(expr 7 \* 1024) MAX_LAYER_UNCOMPRESSED_SIZE_KB=$(expr 24 \* 1024) From 7e1fa708d40ab51648ce060d705066aa16422f7d Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Tue, 12 Mar 2024 09:11:19 -0400 Subject: [PATCH 097/268] feat: Reduce size limits, remove experimental ddtrace bins (#445) * feat: Reduce size limits, strip unused ddtrace bins * feat: 13m? * feat: Lower zipped * feat: 4mb zipped then * feat: remove urllib3 --- Dockerfile | 8 ++++---- scripts/check_layer_size.sh | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Dockerfile b/Dockerfile index 757d0c00..396ef25c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -14,18 +14,18 @@ RUN pip install . -t ./python/lib/$runtime/site-packages # Remove *.pyc files RUN find ./python/lib/$runtime/site-packages -name \*.pyc -delete -# Strip symbols from ddtrace's binaries. -# TODO (AJ): remove when ddtrace fixes this upstream -RUN find . -name '*.so' -exec strip -g {} \; - # Remove botocore (40MB) to reduce package size. aws-xray-sdk # installs it, while it's already provided by the Lambda Runtime. RUN rm -rf ./python/lib/$runtime/site-packages/botocore* RUN rm -rf ./python/lib/$runtime/site-packages/setuptools RUN rm -rf ./python/lib/$runtime/site-packages/jsonschema/tests RUN find . -name 'libddwaf.so' -delete +RUN rm -rf ./python/lib/$runtime/site-packages/urllib3 RUN rm ./python/lib/$runtime/site-packages/ddtrace/appsec/_iast/_taint_tracking/*.so RUN rm ./python/lib/$runtime/site-packages/ddtrace/appsec/_iast/_stacktrace*.so +RUN rm ./python/lib/$runtime/site-packages/ddtrace/internal/datadog/profiling/libdd_wrapper.so +RUN rm ./python/lib/$runtime/site-packages/ddtrace/internal/datadog/profiling/ddup/_ddup.*.so +RUN rm ./python/lib/$runtime/site-packages/ddtrace/internal/datadog/profiling/stack_v2/_stack_v2.*.so FROM scratch COPY --from=builder /build/python / diff --git a/scripts/check_layer_size.sh b/scripts/check_layer_size.sh index 9dbd7e99..84752fa1 100755 --- a/scripts/check_layer_size.sh +++ b/scripts/check_layer_size.sh @@ -9,8 +9,8 @@ # 7 mb size limit set -e -MAX_LAYER_COMPRESSED_SIZE_KB=$(expr 7 \* 1024) -MAX_LAYER_UNCOMPRESSED_SIZE_KB=$(expr 24 \* 1024) +MAX_LAYER_COMPRESSED_SIZE_KB=$(expr 4 \* 1024) +MAX_LAYER_UNCOMPRESSED_SIZE_KB=$(expr 13 \* 1024) LAYER_FILES_PREFIX="datadog_lambda_py" From 6bccf3b53f204198bee06cdd26b3063adb9122d5 Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Wed, 13 Mar 2024 11:16:55 -0400 Subject: [PATCH 098/268] aj/verify poetry (#447) * feat: add poetry explicitly, test publish script in sandbox env * fix: Include py before script * feat: Ensure poetry is installed before publishing. Ensure CI_COMMIT_TAG present before publishing --- ci/input_files/build.yaml.tpl | 2 ++ ci/publish_pypi.sh | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/ci/input_files/build.yaml.tpl b/ci/input_files/build.yaml.tpl index 0229576e..449f6978 100644 --- a/ci/input_files/build.yaml.tpl +++ b/ci/input_files/build.yaml.tpl @@ -9,6 +9,7 @@ stages: - virtualenv venv - source venv/bin/activate - pip install .[dev] + - pip install poetry # This is for serverless framework .install-node: &install-node @@ -167,6 +168,7 @@ publish-pypi-package: stage: publish tags: ["arch:amd64"] image: registry.ddbuild.io/images/docker:20.10-py3 + before_script: *python-before-script cache: [] rules: - if: '$CI_COMMIT_TAG =~ /^v.*/' diff --git a/ci/publish_pypi.sh b/ci/publish_pypi.sh index d7ec78fd..c01df7ef 100755 --- a/ci/publish_pypi.sh +++ b/ci/publish_pypi.sh @@ -13,6 +13,14 @@ PYPI_TOKEN=$(aws ssm get-parameter \ --out text) # Builds the lambda layer and upload to Pypi +if [ -z "$CI_COMMIT_TAG" ]; then + printf "[Error] No CI_COMMIT_TAG found.\n" + printf "Exiting script...\n" + exit 1 +else + printf "Tag found in environment: $CI_COMMIT_TAG\n" +fi + # Clear previously built distributions if [ -d "dist" ]; then echo "Removing folder 'dist' to clear previously built distributions" From 1015d8d61c524bdd93577dfe8c9932ed17d5d57b Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Thu, 14 Mar 2024 10:55:13 -0700 Subject: [PATCH 099/268] Properly parent lazily loaded module imports. (#446) * Properly parent lazily loaded module imports. * Test parenting for lazy loaded package. * Clear lists instead of updating the reference. --- datadog_lambda/cold_start.py | 15 ++++++++---- tests/test_cold_start.py | 46 ++++++++++++++++++++++++++++++++++-- 2 files changed, 54 insertions(+), 7 deletions(-) diff --git a/datadog_lambda/cold_start.py b/datadog_lambda/cold_start.py index 9da02e78..9dcbec23 100644 --- a/datadog_lambda/cold_start.py +++ b/datadog_lambda/cold_start.py @@ -8,6 +8,7 @@ _cold_start = True _proactive_initialization = False _lambda_container_initialized = False +_tracer = None def set_cold_start(init_timestamp_ns): @@ -18,6 +19,7 @@ def set_cold_start(init_timestamp_ns): global _cold_start global _lambda_container_initialized global _proactive_initialization + global _tracer if not _lambda_container_initialized: now = time.time_ns() if (now - init_timestamp_ns) // 1_000_000_000 > 10: @@ -29,6 +31,7 @@ def set_cold_start(init_timestamp_ns): _cold_start = False _proactive_initialization = False _lambda_container_initialized = True + from ddtrace import tracer as _tracer def is_cold_start(): @@ -62,6 +65,9 @@ def __init__(self, module_name, full_file_path, start_time_ns, end_time_ns=None) self.start_time_ns = start_time_ns self.end_time_ns = end_time_ns self.children = [] + self.context = None + if _lambda_container_initialized: + self.context = _tracer.context_provider.active() root_nodes: List[ImportNode] = [] @@ -70,10 +76,8 @@ def __init__(self, module_name, full_file_path, start_time_ns, end_time_ns=None) def reset_node_stacks(): - global root_nodes - root_nodes = [] - global import_stack - import_stack = [] + root_nodes.clear() + import_stack.clear() def push_node(module_name, file_path): @@ -183,7 +187,8 @@ def trace(self, root_nodes: List[ImportNode] = root_nodes): cold_start_span = self.create_cold_start_span(cold_start_span_start_time_ns) while root_nodes: root_node = root_nodes.pop() - self.trace_tree(root_node, cold_start_span) + parent = root_node.context or cold_start_span + self.trace_tree(root_node, parent) self.finish_span(cold_start_span, cold_start_span_end_time_ns) def trace_tree(self, import_node: ImportNode, parent_span): diff --git a/tests/test_cold_start.py b/tests/test_cold_start.py index 65193e1d..2ce37e7c 100644 --- a/tests/test_cold_start.py +++ b/tests/test_cold_start.py @@ -1,10 +1,13 @@ +import os import time import unittest -import datadog_lambda.cold_start as cold_start + from sys import modules, meta_path -import os from unittest.mock import MagicMock +import datadog_lambda.cold_start as cold_start +import datadog_lambda.wrapper as wrapper + class TestColdStartTracingSetup(unittest.TestCase): def test_proactive_init(self): @@ -234,3 +237,42 @@ def test_trace_ignore_libs(self): self.cold_start_tracer.trace(nodes) self.mock_activate.assert_called_once_with(self.mock_trace_ctx) self.assertEqual(self.output_spans, ["node_0", "unittest_cold_start"]) + + +def test_lazy_loaded_package_imports(monkeypatch): + + spans = [] + + def finish(span): + spans.append(span) + + monkeypatch.setattr(wrapper.tracer, "_on_span_finish", finish) + monkeypatch.setattr(wrapper, "is_new_sandbox", lambda: True) + monkeypatch.setattr("datadog_lambda.wrapper.dd_tracing_enabled", True) + monkeypatch.setenv( + "DD_COLD_START_TRACE_SKIP_LIB", "ddtrace.contrib.logging,datadog_lambda.wrapper" + ) + monkeypatch.setenv("DD_MIN_COLD_START_DURATION", "0") + + @wrapper.datadog_lambda_wrapper + def handler(event, context): + import tabnanny + + lambda_context = MagicMock() + lambda_context.invoked_function_arn = ( + "arn:aws:lambda:us-west-1:123457598159:function:python-layer-test:1" + ) + + handler.cold_start_tracing = True + handler({}, lambda_context) + + function_span = import_span = None + for span in spans: + if span.resource == "tabnanny": + import_span = span + elif span.name == "aws.lambda": + function_span = span + + assert function_span is not None + assert import_span is not None + assert import_span.parent_id == function_span.span_id From ba39856173c6c6d54262b969d8ad0512035e178e Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Thu, 14 Mar 2024 11:46:08 -0700 Subject: [PATCH 100/268] Bump v5.91.0 for release. (#448) --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 94b73d03..806485b6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "5.90.0" +version = "5.91.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 097a8230b98ce3570c7e8fc537a433cc00861721 Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Fri, 15 Mar 2024 14:02:25 -0400 Subject: [PATCH 101/268] Feat: Automatically retry the runner if it fails to start (#449) --- ci/input_files/build.yaml.tpl | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/ci/input_files/build.yaml.tpl b/ci/input_files/build.yaml.tpl index 449f6978..57f9ff0e 100644 --- a/ci/input_files/build.yaml.tpl +++ b/ci/input_files/build.yaml.tpl @@ -11,6 +11,13 @@ stages: - pip install .[dev] - pip install poetry +default: + retry: + max: 1 + when: + # Retry when the runner fails to start + - runner_system_failure + # This is for serverless framework .install-node: &install-node - apt-get update From 6b9eda0d83c8c07ee7eb1ceec4fe88849d3cb94c Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Wed, 27 Mar 2024 12:49:54 -0400 Subject: [PATCH 102/268] [SVLS-4647] Fix unittests (#452) * fixing the unittests broken due to ddtrace changes --- tests/test_tracing.py | 340 +++++++++++------------------------------- 1 file changed, 84 insertions(+), 256 deletions(-) diff --git a/tests/test_tracing.py b/tests/test_tracing.py index d14ad1e9..d51f7b3f 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -34,6 +34,7 @@ create_service_mapping, determine_service_name, service_mapping as global_service_mapping, + propagator, ) from datadog_lambda.trigger import EventTypes @@ -209,74 +210,48 @@ def test_with_incomplete_datadog_trace_headers(self): }, ) - @with_trace_propagation_style("datadog") - def test_with_complete_datadog_trace_headers(self): - lambda_ctx = get_mock_context() + def common_tests_with_trace_context_extraction_injection( + self, headers, event_containing_headers, lambda_context=get_mock_context() + ): ctx, source, event_source = extract_dd_trace_context( - { - "headers": { - TraceHeader.TRACE_ID: "123", - TraceHeader.PARENT_ID: "321", - TraceHeader.SAMPLING_PRIORITY: "1", - } - }, - lambda_ctx, + event_containing_headers, + lambda_context, ) self.assertEqual(source, "event") - expected_context = Context(trace_id=123, span_id=321, sampling_priority=1) + expected_context = propagator.extract(headers) self.assertEqual(ctx, expected_context) - self.assertDictEqual( - get_dd_trace_context(), - { - TraceHeader.TRACE_ID: "123", - TraceHeader.PARENT_ID: fake_xray_header_value_parent_decimal, - TraceHeader.SAMPLING_PRIORITY: "1", - }, - ) create_dd_dummy_metadata_subsegment(ctx, XraySubsegment.TRACE_KEY) self.mock_send_segment.assert_called() self.mock_send_segment.assert_called_with( XraySubsegment.TRACE_KEY, expected_context, ) + # when no active ddtrace context, xray context would be used + expected_context.span_id = int(fake_xray_header_value_parent_decimal) + expected_headers = {} + propagator.inject(expected_context, expected_headers) + dd_context_headers = get_dd_trace_context() + self.assertDictEqual(expected_headers, dd_context_headers) + + @with_trace_propagation_style("datadog") + def test_with_complete_datadog_trace_headers(self): + headers = { + TraceHeader.TRACE_ID: "123", + TraceHeader.PARENT_ID: "321", + TraceHeader.SAMPLING_PRIORITY: "1", + } + self.common_tests_with_trace_context_extraction_injection( + headers, {"headers": headers} + ) @with_trace_propagation_style("tracecontext") def test_with_w3c_trace_headers(self): - lambda_ctx = get_mock_context() - ctx, source, event_source = extract_dd_trace_context( - { - "headers": { - "traceparent": "00-0000000000000000000000000000007b-0000000000000141-01", - "tracestate": "dd=s:2;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", - } - }, - lambda_ctx, - ) - self.assertEqual(source, "event") - expected_context = Context( - trace_id=123, - span_id=321, - sampling_priority=2, - meta={ - "traceparent": "00-0000000000000000000000000000007b-0000000000000141-01", - "tracestate": "dd=s:2;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", - "_dd.p.dm": "-0", - "_dd.parent_id": "0000000000000000", - }, - ) - self.assertEqual(ctx, expected_context) - self.assertDictEqual( - get_dd_trace_context(), - { - "traceparent": "00-0000000000000000000000000000007b-94ae789b969f1cc5-01", - "tracestate": "dd=p:94ae789b969f1cc5;s:2;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", - }, - ) - create_dd_dummy_metadata_subsegment(ctx, XraySubsegment.TRACE_KEY) - self.mock_send_segment.assert_called() - self.mock_send_segment.assert_called_with( - XraySubsegment.TRACE_KEY, - expected_context, + headers = { + "traceparent": "00-0000000000000000000000000000007b-0000000000000141-01", + "tracestate": "dd=s:2;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", + } + self.common_tests_with_trace_context_extraction_injection( + headers, {"headers": headers} ) @with_trace_propagation_style("datadog") @@ -357,7 +332,11 @@ def extractor_raiser(event, context): @with_trace_propagation_style("datadog") def test_with_sqs_distributed_datadog_trace_data(self): - lambda_ctx = get_mock_context() + headers = { + TraceHeader.TRACE_ID: "123", + TraceHeader.PARENT_ID: "321", + TraceHeader.SAMPLING_PRIORITY: "1", + } sqs_event = { "Records": [ { @@ -372,13 +351,7 @@ def test_with_sqs_distributed_datadog_trace_data(self): }, "messageAttributes": { "_datadog": { - "stringValue": json.dumps( - { - TraceHeader.TRACE_ID: "123", - TraceHeader.PARENT_ID: "321", - TraceHeader.SAMPLING_PRIORITY: "1", - } - ), + "stringValue": json.dumps(headers), "dataType": "String", } }, @@ -389,31 +362,14 @@ def test_with_sqs_distributed_datadog_trace_data(self): } ] } - ctx, source, event_source = extract_dd_trace_context(sqs_event, lambda_ctx) - self.assertEqual(source, "event") - expected_context = Context( - trace_id=123, - span_id=321, - sampling_priority=1, - ) - self.assertEqual(ctx, expected_context) - self.assertDictEqual( - get_dd_trace_context(), - { - TraceHeader.TRACE_ID: "123", - TraceHeader.PARENT_ID: fake_xray_header_value_parent_decimal, - TraceHeader.SAMPLING_PRIORITY: "1", - }, - ) - create_dd_dummy_metadata_subsegment(ctx, XraySubsegment.TRACE_KEY) - self.mock_send_segment.assert_called_with( - XraySubsegment.TRACE_KEY, - expected_context, - ) + self.common_tests_with_trace_context_extraction_injection(headers, sqs_event) @with_trace_propagation_style("tracecontext") def test_with_sqs_distributed_w3c_trace_data(self): - lambda_ctx = get_mock_context() + headers = { + "traceparent": "00-0000000000000000000000000000007b-0000000000000141-01", + "tracestate": "dd=s:2;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", + } sqs_event = { "Records": [ { @@ -428,12 +384,7 @@ def test_with_sqs_distributed_w3c_trace_data(self): }, "messageAttributes": { "_datadog": { - "stringValue": json.dumps( - { - "traceparent": "00-0000000000000000000000000000007b-0000000000000141-01", - "tracestate": "dd=s:2;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", - } - ), + "stringValue": json.dumps(headers), "dataType": "String", } }, @@ -444,194 +395,71 @@ def test_with_sqs_distributed_w3c_trace_data(self): } ] } - ctx, source, event_source = extract_dd_trace_context(sqs_event, lambda_ctx) - self.assertEqual(source, "event") - expected_context = Context( - trace_id=123, - span_id=321, - sampling_priority=2, - meta={ - "traceparent": "00-0000000000000000000000000000007b-0000000000000141-01", - "tracestate": "dd=s:2;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", - "_dd.p.dm": "-0", - "_dd.parent_id": "0000000000000000", - }, - ) - self.assertEqual(ctx, expected_context) - self.assertDictEqual( - get_dd_trace_context(), - { - "traceparent": "00-0000000000000000000000000000007b-94ae789b969f1cc5-01", - "tracestate": "dd=p:94ae789b969f1cc5;s:2;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", - }, - ) - create_dd_dummy_metadata_subsegment(ctx, XraySubsegment.TRACE_KEY) - self.mock_send_segment.assert_called_with( - XraySubsegment.TRACE_KEY, - expected_context, - ) + self.common_tests_with_trace_context_extraction_injection(headers, sqs_event) @with_trace_propagation_style("datadog") def test_with_legacy_client_context_datadog_trace_data(self): - lambda_ctx = get_mock_context( - custom={ - "_datadog": { - TraceHeader.TRACE_ID: "666", - TraceHeader.PARENT_ID: "777", - TraceHeader.SAMPLING_PRIORITY: "1", - } - } - ) - ctx, source, event_source = extract_dd_trace_context({}, lambda_ctx) - self.assertEqual(source, "event") - expected_context = Context( - trace_id=666, - span_id=777, - sampling_priority=1, - ) - self.assertEqual(ctx, expected_context) - self.assertDictEqual( - get_dd_trace_context(), - { - TraceHeader.TRACE_ID: "666", - TraceHeader.PARENT_ID: fake_xray_header_value_parent_decimal, - TraceHeader.SAMPLING_PRIORITY: "1", - }, - ) - create_dd_dummy_metadata_subsegment(ctx, XraySubsegment.TRACE_KEY) - self.mock_send_segment.assert_called() - self.mock_send_segment.assert_called_with( - XraySubsegment.TRACE_KEY, - expected_context, + headers = { + TraceHeader.TRACE_ID: "666", + TraceHeader.PARENT_ID: "777", + TraceHeader.SAMPLING_PRIORITY: "1", + } + lambda_ctx = get_mock_context(custom={"_datadog": headers}) + self.common_tests_with_trace_context_extraction_injection( + headers, {}, lambda_ctx ) @with_trace_propagation_style("tracecontext") def test_with_legacy_client_context_w3c_trace_data(self): - lambda_ctx = get_mock_context( - custom={ - "_datadog": { - "traceparent": "00-0000000000000000000000000000029a-0000000000000309-01", - "tracestate": "dd=s:1;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", - } - } - ) - ctx, source, event_source = extract_dd_trace_context({}, lambda_ctx) - self.assertEqual(source, "event") - expected_context = Context( - trace_id=666, - span_id=777, - sampling_priority=1, - meta={ - "traceparent": "00-0000000000000000000000000000029a-0000000000000309-01", - "tracestate": "dd=s:1;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", - "_dd.p.dm": "-0", - "_dd.parent_id": "0000000000000000", - }, - ) - self.assertEqual(ctx, expected_context) - self.assertDictEqual( - get_dd_trace_context(), - { - "traceparent": "00-0000000000000000000000000000029a-94ae789b969f1cc5-01", - "tracestate": "dd=p:94ae789b969f1cc5;s:1;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", - }, - ) - create_dd_dummy_metadata_subsegment(ctx, XraySubsegment.TRACE_KEY) - self.mock_send_segment.assert_called() - self.mock_send_segment.assert_called_with( - XraySubsegment.TRACE_KEY, - expected_context, + headers = { + "traceparent": "00-0000000000000000000000000000029a-0000000000000309-01", + "tracestate": "dd=s:1;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", + } + lambda_ctx = get_mock_context(custom={"_datadog": headers}) + self.common_tests_with_trace_context_extraction_injection( + headers, {}, lambda_ctx ) @with_trace_propagation_style("datadog") def test_with_new_client_context_datadog_trace_data(self): - lambda_ctx = get_mock_context( - custom={ - TraceHeader.TRACE_ID: "666", - TraceHeader.PARENT_ID: "777", - TraceHeader.SAMPLING_PRIORITY: "1", - } - ) - ctx, source, event_source = extract_dd_trace_context({}, lambda_ctx) - self.assertEqual(source, "event") - expected_context = Context( - trace_id=666, - span_id=777, - sampling_priority=1, - ) - self.assertEqual(ctx, expected_context) - self.assertDictEqual( - get_dd_trace_context(), - { - TraceHeader.TRACE_ID: "666", - TraceHeader.PARENT_ID: fake_xray_header_value_parent_decimal, - TraceHeader.SAMPLING_PRIORITY: "1", - }, - ) - create_dd_dummy_metadata_subsegment(ctx, XraySubsegment.TRACE_KEY) - self.mock_send_segment.assert_called() - self.mock_send_segment.assert_called_with( - XraySubsegment.TRACE_KEY, - expected_context, + headers = { + TraceHeader.TRACE_ID: "666", + TraceHeader.PARENT_ID: "777", + TraceHeader.SAMPLING_PRIORITY: "1", + } + lambda_ctx = get_mock_context(custom=headers) + self.common_tests_with_trace_context_extraction_injection( + headers, {}, lambda_ctx ) @with_trace_propagation_style("tracecontext") def test_with_new_client_context_w3c_trace_data(self): - lambda_ctx = get_mock_context( - custom={ - "traceparent": "00-0000000000000000000000000000029a-0000000000000309-01", - "tracestate": "dd=s:1;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", - } - ) - ctx, source, event_source = extract_dd_trace_context({}, lambda_ctx) - self.assertEqual(source, "event") - expected_context = Context( - trace_id=666, - span_id=777, - sampling_priority=1, - meta={ - "traceparent": "00-0000000000000000000000000000029a-0000000000000309-01", - "tracestate": "dd=s:1;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", - "_dd.p.dm": "-0", - "_dd.parent_id": "0000000000000000", - }, - ) - self.assertEqual(ctx, expected_context) - self.assertDictEqual( - get_dd_trace_context(), - { - "traceparent": "00-0000000000000000000000000000029a-94ae789b969f1cc5-01", - "tracestate": "dd=p:94ae789b969f1cc5;s:1;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", - }, - ) - create_dd_dummy_metadata_subsegment(ctx, XraySubsegment.TRACE_KEY) - self.mock_send_segment.assert_called() - self.mock_send_segment.assert_called_with( - XraySubsegment.TRACE_KEY, - expected_context, + headers = { + "traceparent": "00-0000000000000000000000000000029a-0000000000000309-01", + "tracestate": "dd=s:1;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", + } + lambda_ctx = get_mock_context(custom=headers) + self.common_tests_with_trace_context_extraction_injection( + headers, {}, lambda_ctx ) @with_trace_propagation_style("datadog") def test_with_complete_datadog_trace_headers_with_mixed_casing(self): lambda_ctx = get_mock_context() + headers = { + "X-Datadog-Trace-Id": "123", + "X-Datadog-Parent-Id": "321", + "X-Datadog-Sampling-Priority": "1", + } extract_dd_trace_context( - { - "headers": { - "X-Datadog-Trace-Id": "123", - "X-Datadog-Parent-Id": "321", - "X-Datadog-Sampling-Priority": "1", - } - }, + {"headers": headers}, lambda_ctx, ) - self.assertDictEqual( - get_dd_trace_context(), - { - TraceHeader.TRACE_ID: "123", - TraceHeader.PARENT_ID: fake_xray_header_value_parent_decimal, - TraceHeader.SAMPLING_PRIORITY: "1", - }, - ) + extract_headers = {} + context = propagator.extract(headers) + context.span_id = fake_xray_header_value_parent_decimal + propagator.inject(context, extract_headers) + self.assertDictEqual(extract_headers, get_dd_trace_context()) def test_with_complete_datadog_trace_headers_with_trigger_tags(self): trigger_tags = { From 8e79a70784904ffa46de3847cddf64705303503f Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Wed, 27 Mar 2024 13:49:38 -0400 Subject: [PATCH 103/268] fix lambda authorizer trace context injection issue (#453) --- datadog_lambda/wrapper.py | 10 ++-------- tests/test_wrapper.py | 19 +++++++++---------- 2 files changed, 11 insertions(+), 18 deletions(-) diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index 73d17887..057f048c 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -22,7 +22,6 @@ TraceContextSource, XraySubsegment, Headers, - TraceHeader, ) from datadog_lambda.metric import ( flush_stats, @@ -44,6 +43,7 @@ InferredSpanInfo, is_authorizer_response, tracer, + propagator, ) from datadog_lambda.trigger import ( extract_trigger_tags, @@ -254,13 +254,7 @@ def _inject_authorizer_span_headers(self, request_id): injected_headers = {} source_span = self.inferred_span if self.inferred_span else self.span span_context = source_span.context - injected_headers[TraceHeader.TRACE_ID] = str(span_context.trace_id) - injected_headers[TraceHeader.PARENT_ID] = str(span_context.span_id) - sampling_priority = span_context.sampling_priority - if sampling_priority is not None: - injected_headers[TraceHeader.SAMPLING_PRIORITY] = str( - span_context.sampling_priority - ) + propagator.inject(span_context, injected_headers) injected_headers[Headers.Parent_Span_Finish_Time] = finish_time_ns if request_id is not None: injected_headers[Headers.Authorizing_Request_Id] = request_id diff --git a/tests/test_wrapper.py b/tests/test_wrapper.py index ee1ef99c..141e245a 100644 --- a/tests/test_wrapper.py +++ b/tests/test_wrapper.py @@ -10,6 +10,7 @@ from datadog_lambda.metric import lambda_metric from datadog_lambda.thread_stats_writer import ThreadStatsWriter from ddtrace import Span, tracer +from ddtrace.internal.constants import MAX_UINT_64BITS def get_mock_context( @@ -543,19 +544,19 @@ def lambda_handler(event, context): lambda_event = {} lambda_context = get_mock_context() - mock_span = Span(name="my_inferred_span", span_id=123, trace_id=456) - mock_span.context.sampling_priority = "1" - mock_span.context.dd_origin = None - mock_span.start_ns = 1668127541671386817 - mock_span.duration_ns = 1e8 - lambda_handler.inferred_span = mock_span + test_span = tracer.trace("test_span") + trace_ctx = tracer.current_trace_context() + test_span.finish() + lambda_handler.inferred_span = test_span lambda_handler.make_inferred_span = False result = lambda_handler(lambda_event, lambda_context) raw_inject_data = result["context"]["_datadog"] self.assertIsInstance(raw_inject_data, str) inject_data = json.loads(base64.b64decode(raw_inject_data)) - self.assertEqual(inject_data[TraceHeader.PARENT_ID], "123") - self.assertEqual(inject_data[TraceHeader.TRACE_ID], "456") + self.assertEqual(inject_data[TraceHeader.PARENT_ID], str(trace_ctx.span_id)) + self.assertEqual( + inject_data[TraceHeader.TRACE_ID], str(MAX_UINT_64BITS & trace_ctx.trace_id) + ) self.assertEqual(inject_data[TraceHeader.SAMPLING_PRIORITY], "1") self.assertEqual(result["context"]["scope"], "still here") @@ -662,7 +663,6 @@ def tearDown(self): @patch("datadog_lambda.wrapper.should_use_extension", True) def test_local_test_envvar_flushing(self): - flushes = [] lambda_event = {} lambda_context = get_mock_context() @@ -680,7 +680,6 @@ def flush(): ({"DD_LOCAL_TEST": ""}, False), ({}, False), ): - os.environ = environ flushes.clear() From 33b7bfcfa29d279827c8432e4c206e1d270271e0 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Wed, 27 Mar 2024 15:09:49 -0400 Subject: [PATCH 104/268] [SVLS-4298] Java upstream sqs trace context propagation (#454) * java upstream sqs trace context propagation --- datadog_lambda/tracing.py | 68 +++++++++++++++------- tests/event_samples/sqs-java-upstream.json | 22 +++++++ tests/test_cold_start.py | 1 - tests/test_tracing.py | 11 ++++ 4 files changed, 80 insertions(+), 22 deletions(-) create mode 100644 tests/event_samples/sqs-java-upstream.json diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index f032059b..5e338253 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -68,6 +68,8 @@ propagator = HTTPPropagator() +DD_TRACE_JAVA_TRACE_ID_PADDING = "00000000" + def _convert_xray_trace_id(xray_trace_id): """ @@ -248,28 +250,52 @@ def extract_context_from_sqs_or_sns_event_or_context(event, lambda_context): first_record.get("Sns", {}).get("MessageAttributes", {}), ) dd_payload = msg_attributes.get("_datadog", {}) - # SQS uses dataType and binaryValue/stringValue - # SNS uses Type and Value - dd_json_data_type = dd_payload.get("Type", dd_payload.get("dataType", "")) - if dd_json_data_type == "Binary": - dd_json_data = dd_payload.get( - "binaryValue", - dd_payload.get("Value", r"{}"), - ) - dd_json_data = base64.b64decode(dd_json_data) - elif dd_json_data_type == "String": - dd_json_data = dd_payload.get( - "stringValue", - dd_payload.get("Value", r"{}"), - ) + if dd_payload: + # SQS uses dataType and binaryValue/stringValue + # SNS uses Type and Value + dd_json_data = None + dd_json_data_type = dd_payload.get("Type", dd_payload.get("dataType", "")) + if dd_json_data_type == "Binary": + dd_json_data = dd_payload.get( + "binaryValue", + dd_payload.get("Value", r"{}"), + ) + dd_json_data = base64.b64decode(dd_json_data) + elif dd_json_data_type == "String": + dd_json_data = dd_payload.get( + "stringValue", + dd_payload.get("Value", r"{}"), + ) + else: + logger.debug( + "Datadog Lambda Python only supports extracting trace" + "context from String or Binary SQS/SNS message attributes" + ) + + if dd_json_data: + dd_data = json.loads(dd_json_data) + return propagator.extract(dd_data) else: - logger.debug( - "Datadog Lambda Python only supports extracting trace" - "context from String or Binary SQS/SNS message attributes" - ) - return extract_context_from_lambda_context(lambda_context) - dd_data = json.loads(dd_json_data) - return propagator.extract(dd_data) + # Handle case where trace context is injected into attributes.AWSTraceHeader + # example: Root=1-654321ab-000000001234567890abcdef;Parent=0123456789abcdef;Sampled=1 + x_ray_header = first_record.get("attributes", {}).get("AWSTraceHeader") + if x_ray_header: + x_ray_context = parse_xray_header(x_ray_header) + trace_id_parts = x_ray_context.get("trace_id", "").split("-") + if len(trace_id_parts) > 2 and trace_id_parts[2].startswith( + DD_TRACE_JAVA_TRACE_ID_PADDING + ): + # If it starts with eight 0's padding, + # then this AWSTraceHeader contains Datadog injected trace context + logger.debug( + "Found dd-trace injected trace context from AWSTraceHeader" + ) + return Context( + trace_id=int(trace_id_parts[2][8:], 16), + span_id=int(int(x_ray_context["parent_id"], 16)), + sampling_priority=float(x_ray_context["sampled"]), + ) + return extract_context_from_lambda_context(lambda_context) except Exception as e: logger.debug("The trace extractor returned with error %s", e) return extract_context_from_lambda_context(lambda_context) diff --git a/tests/event_samples/sqs-java-upstream.json b/tests/event_samples/sqs-java-upstream.json new file mode 100644 index 00000000..23ab6881 --- /dev/null +++ b/tests/event_samples/sqs-java-upstream.json @@ -0,0 +1,22 @@ +{ + "Records": [ + { + "messageId": "f7e888aa-1368-484c-8e15-fc3f0f7c6fea", + "receiptHandle": "AQEBN1aYTQ1c5huZh9bkhBYqcMMnqTUMRh8MfUPyGXkEolcn23rvM9saGEg3wTK/7JnJ1s3Uk107uLjaP6yV6+zS3oQRU0vMG2LfyTgHovWhYQ8TnrpC7XpYL+Uf+oc9KoILQopiYi4wsFnOWQqy82yQmlOA3W+CZ3Rvq8N6rNcmyaZEXVdozHG+FyMCMQ8QdTcCHhzR9YKnkZ87Y40+LhysUR57VNPVtRwENI8H1uMEfmxaCkW+CAkdCGoXeX+KioT7pHJDZaEutXM3VRmGXDDzCXvfUJQ9JQIlP5xe66JO8/cpCyl5sDoHsCjLy6X/XCmfG2+XclPObGHBzcMSjG1RQtHsEGTOAJrLREucqf/oj0Ab4svpxz6lR4UXrICygZ2x0NZcNFXcZx3GV2QL9nHmJxzrO2lnNTEOMuYB4SnqtIhsaDTcmkYHumaAJdRHl5BksFcU5qpS7BQrnRvXn5Sz3hYdR2KuYKN5Oq6W1vuT16o=", + "body": "{\"hello\":\"world\"}", + "attributes": { + "ApproximateReceiveCount": "1", + "AWSTraceHeader": "Root=1-65eb7350-000000006dfd06bf489aa4e5;Parent=48cc02b6aafae897;Sampled=1", + "SentTimestamp": "1709929297382", + "SenderId": "AROAWGCM4HXUTHYJKOM7M:DdTraceXLambda-sqsjavache-sqsjavaproducerforPython-moi7s7Hu7Ppy", + "ApproximateFirstReceiveTimestamp": "1709929297387" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": "", + "md5OfBody": "fbc24bcc7a1794758fc1327fcfebdaf6", + "eventSource": "aws:sqs", + "eventSourceARN": "arn:aws:sqs:us-west-2:444442222111:DdTraceXLambda-sqsjavachecksNeste-sqsJavaProducer2sqsjavaproducerfo-dwpHQF6fcZT4", + "awsRegion": "us-west-2" + } + ] +} diff --git a/tests/test_cold_start.py b/tests/test_cold_start.py index 2ce37e7c..c7444c49 100644 --- a/tests/test_cold_start.py +++ b/tests/test_cold_start.py @@ -240,7 +240,6 @@ def test_trace_ignore_libs(self): def test_lazy_loaded_package_imports(monkeypatch): - spans = [] def finish(span): diff --git a/tests/test_tracing.py b/tests/test_tracing.py index d51f7b3f..e30d202c 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -1963,6 +1963,17 @@ def test_extract_context_from_sqs_batch_event(self): self.assertEqual(context.span_id, 7431398482019833808) self.assertEqual(context.sampling_priority, 1) + def test_extract_context_from_sqs_java_upstream_event(self): + event_sample_source = "sqs-java-upstream" + test_file = event_samples + event_sample_source + ".json" + with open(test_file, "r") as event: + event = json.load(event) + ctx = get_mock_context() + context, source, event_type = extract_dd_trace_context(event, ctx) + self.assertEqual(context.trace_id, 7925498337868555493) + self.assertEqual(context.span_id, 5245570649555658903) + self.assertEqual(context.sampling_priority, 1) + def test_extract_context_from_sns_event_with_string_msg_attr(self): event_sample_source = "sns-string-msg-attribute" test_file = event_samples + event_sample_source + ".json" From 22629eadfd2e40336049d7f3bf7340fcdb2277a8 Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Wed, 27 Mar 2024 12:38:42 -0700 Subject: [PATCH 105/268] Switch inferred spans tests to pytest parametrized. (#455) * Switch inferred spans tests to pytest parametrized. * Remove global span caching. * Replace namedtuple with regular class object. * Linting. * Leave comments about parent name. --- tests/test_tracing.py | 1333 ++++++++++++++++++----------------------- 1 file changed, 583 insertions(+), 750 deletions(-) diff --git a/tests/test_tracing.py b/tests/test_tracing.py index e30d202c..0aa38613 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -1,8 +1,9 @@ -import unittest +import copy import functools import json +import pytest import os -import copy +import unittest from unittest.mock import MagicMock, Mock, patch, call @@ -48,32 +49,6 @@ event_samples = "tests/event_samples/" -span_to_finish = None - - -def _clean_up_span(): - global span_to_finish - if span_to_finish is not None: - span_to_finish.finish() - span_to_finish = None - - -def register_span(span): - global span_to_finish - _clean_up_span() - span_to_finish = span - return span - - -def wrapped_span_creator(span_creator_func): - def result_func(*args, **kwargs): - return register_span(span_creator_func(*args, **kwargs)) - - return result_func - - -create_inferred_span = wrapped_span_creator(create_inferred_span) - class ClientContext(object): def __init__(self, custom=None): @@ -712,160 +687,6 @@ def test_set_dd_trace_py_root_no_span_id(self): self.mock_activate.assert_has_calls([call(expected_context)]) -class TestAuthorizerInferredSpans(unittest.TestCase): - def setUp(self): - patcher = patch("ddtrace.Span.finish", autospec=True) - self.mock_span_stop = patcher.start() - self.addCleanup(patcher.stop) - - def tearDown(self): - _clean_up_span() - - def test_create_inferred_span_from_authorizer_request_api_gateway_v1_event(self): - event_sample_source = "authorizer-request-api-gateway-v1" - finish_time = ( - 1663295021.832 # request_time_epoch + integrationLatency for api-gateway-v1 - ) - span = self._authorizer_span_testing_items(event_sample_source, finish_time) - self._basic_common_checks(span, "aws.apigateway.rest") - - def test_create_inferred_span_from_authorizer_request_api_gateway_v1_cached_event( - self, - ): - event_sample_source = "authorizer-request-api-gateway-v1-cached" - test_file = event_samples + event_sample_source + ".json" - with open(test_file, "r") as event: - event = json.load(event) - ctx = get_mock_context() - ctx.aws_request_id = "abc123" # injected data's requestId is abc321 - span = create_inferred_span(event, ctx) - self.mock_span_stop.assert_not_called() # NO authorizer span is injected - self._basic_common_checks(span, "aws.apigateway.rest") - - def test_create_inferred_span_from_authorizer_token_api_gateway_v1_event(self): - event_sample_source = "authorizer-token-api-gateway-v1" - finish_time = ( - 1663295021.832 # request_time_epoch + integrationLatency for api-gateway-v1 - ) - span = self._authorizer_span_testing_items(event_sample_source, finish_time) - self._basic_common_checks(span, "aws.apigateway.rest") - - def test_create_inferred_span_from_authorizer_token_api_gateway_v2_cached_event( - self, - ): - event_sample_source = "authorizer-token-api-gateway-v1-cached" - test_file = event_samples + event_sample_source + ".json" - with open(test_file, "r") as event: - event = json.load(event) - ctx = get_mock_context() - ctx.aws_request_id = "abc123" # injected data's requestId is abc321 - span = create_inferred_span(event, ctx) - self.mock_span_stop.assert_not_called() # NO authorizer span is injected - self._basic_common_checks(span, "aws.apigateway.rest") - - def test_create_inferred_span_from_authorizer_request_api_gateway_v2_event(self): - event_sample_source = "authorizer-request-api-gateway-v2" - finish_time = 1664228639533775400 # use the injected parent span finish time as an approximation - test_file = event_samples + event_sample_source + ".json" - with open(test_file, "r") as event: - event = json.load(event) - ctx = get_mock_context() - ctx.aws_request_id = "abc123" - span = create_inferred_span(event, ctx) - self.assertEqual(span.get_tag(InferredSpanInfo.TAG_SOURCE), "self") - self.assertEqual(span.get_tag(InferredSpanInfo.SYNCHRONICITY), "sync") - self.mock_span_stop.assert_not_called() - self.assertEqual(span.start_ns, finish_time) - self._basic_common_checks(span, "aws.httpapi") - - def test_create_inferred_span_from_authorizer_request_api_gateway_v2_cached_event( - self, - ): - event_sample_source = "authorizer-request-api-gateway-v2-cached" - test_file = event_samples + event_sample_source + ".json" - with open(test_file, "r") as event: - event = json.load(event) - ctx = get_mock_context() - ctx.aws_request_id = "abc123" # injected data's requestId is abc321 - span = create_inferred_span(event, ctx) - self.mock_span_stop.assert_not_called() # NO authorizer span is injected - self._basic_common_checks(span, "aws.httpapi") - - def test_create_inferred_span_from_authorizer_request_api_gateway_websocket_connect_event( - self, - ): - event_sample_source = "authorizer-request-api-gateway-websocket-connect" - finish_time = ( - 1664388386.892 # request_time_epoch + integrationLatency in websocket case - ) - span = self._authorizer_span_testing_items(event_sample_source, finish_time) - self._basic_common_checks( - span, "aws.apigateway.websocket", "web", "$connect", None - ) - - def test_create_inferred_span_from_authorizer_request_api_gateway_websocket_message_event( - self, - ): - event_sample_source = "authorizer-request-api-gateway-websocket-message" - test_file = event_samples + event_sample_source + ".json" - with open(test_file, "r") as event: - event = json.load(event) - ctx = get_mock_context() - ctx.aws_request_id = "abc123" # injected data's requestId is abc321 - span = create_inferred_span(event, ctx) - self.mock_span_stop.assert_not_called() # NO authorizer span is injected - self._basic_common_checks(span, "aws.apigateway.websocket", "web", "main", None) - - def _authorizer_span_testing_items(self, event_sample_source, finish_time): - test_file = event_samples + event_sample_source + ".json" - with open(test_file, "r") as event: - event = json.load(event) - ctx = get_mock_context() - ctx.aws_request_id = "abc123" - span = create_inferred_span(event, ctx) - self.assertEqual(span.get_tag(InferredSpanInfo.TAG_SOURCE), "self") - self.assertEqual(span.get_tag(InferredSpanInfo.SYNCHRONICITY), "sync") - - # checking the upstream_authorizer_span - self.mock_span_stop.assert_called_once() - args, kwargs = self.mock_span_stop.call_args_list[0] - self.assertEqual(kwargs.get("finish_time", args[1]), finish_time) - self.assertEqual(span.start, finish_time) - authorizer_span = args[0] - self.assertEqual(authorizer_span.name, "aws.apigateway.authorizer") - self.assertEqual(span.parent_id, authorizer_span.span_id) - return span - - def _basic_common_checks( - self, - span, - operation_name, - span_type="http", - route_key="/hello", - http_method="GET", - ): - self.assertEqual(span.get_tag("apiid"), "amddr1rix9") - self.assertEqual(span.get_tag("apiname"), "amddr1rix9") - self.assertEqual(span.get_tag("stage"), "dev") - self.assertEqual(span.get_tag("operation_name"), operation_name) - self.assertEqual(span.span_type, span_type) - self.assertEqual( - span.service, - "amddr1rix9.execute-api.eu-west-1.amazonaws.com", - ) - self.assertEqual( - span.get_tag("http.url"), - "amddr1rix9.execute-api.eu-west-1.amazonaws.com" + route_key, - ) - self.assertEqual(span.get_tag("endpoint"), route_key) - self.assertEqual(span.get_tag("http.method"), http_method) - self.assertEqual( - span.get_tag("resource_names"), - f"{http_method} {route_key}" if http_method else route_key, - ) - self.assertEqual(span.get_tag("request_id"), "abc123") - - class TestServiceMapping(unittest.TestCase): def setUp(self): self.service_mapping = {} @@ -1369,545 +1190,589 @@ def test_remaps_specific_inferred_span_service_names_from_eventbridge_event( self.assertEqual(span2.service, "eventbridge") -class TestInferredSpans(unittest.TestCase): - def tearDown(self): - _clean_up_span() +class _Span(object): + def __init__(self, service, start, span_type, parent_name=None, tags=None): + self.service = service + self.start = start + self.span_type = span_type + self.parent_name = parent_name + self.tags = tags or {} + + +_test_create_inferred_span = ( + ( + "api-gateway", + _Span( + service="70ixmpl4fl.execute-api.us-east-2.amazonaws.com", + start=1428582896.0, + span_type="http", + tags={ + "_dd.origin": "lambda", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "apiid": "1234567890", + "apiname": "1234567890", + "endpoint": "/path/to/resource", + "http.method": "POST", + "http.url": "70ixmpl4fl.execute-api.us-east-2.amazonaws.com/path/to/resource", + "operation_name": "aws.apigateway.rest", + "request_id": "123", + "resource_names": "POST /path/to/resource", + "stage": "prod", + }, + ), + ), + ( + "api-gateway-non-proxy-async", + _Span( + service="lgxbo6a518.execute-api.eu-west-1.amazonaws.com", + start=1631210915.2510002, + span_type="http", + tags={ + "_dd.origin": "lambda", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "apiid": "lgxbo6a518", + "apiname": "lgxbo6a518", + "endpoint": "/http/get", + "http.method": "GET", + "http.url": "lgxbo6a518.execute-api.eu-west-1.amazonaws.com/http/get", + "operation_name": "aws.apigateway.rest", + "request_id": "123", + "resource_names": "GET /http/get", + "stage": "dev", + }, + ), + ), + ( + "api-gateway-non-proxy", + _Span( + service="lgxbo6a518.execute-api.eu-west-1.amazonaws.com", + start=1631210915.2510002, + span_type="http", + tags={ + "_dd.origin": "lambda", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "apiid": "lgxbo6a518", + "apiname": "lgxbo6a518", + "endpoint": "/http/get", + "http.method": "GET", + "http.url": "lgxbo6a518.execute-api.eu-west-1.amazonaws.com/http/get", + "operation_name": "aws.apigateway.rest", + "request_id": "123", + "resource_names": "GET /http/get", + "stage": "dev", + }, + ), + ), + ( + "http-api", + _Span( + service="x02yirxc7a.execute-api.eu-west-1.amazonaws.com", + start=1631212283.738, + span_type="http", + tags={ + "_dd.origin": "lambda", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "apiid": "x02yirxc7a", + "apiname": "x02yirxc7a", + "endpoint": "/httpapi/get", + "http.method": "GET", + "http.protocol": "HTTP/1.1", + "http.source_ip": "38.122.226.210", + "http.url": "x02yirxc7a.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "http.user_agent": "curl/7.64.1", + "operation_name": "aws.httpapi", + "request_id": "123", + "resource_names": "GET /httpapi/get", + "stage": "$default", + }, + ), + ), + ( + "api-gateway-websocket-default", + _Span( + service="p62c47itsb.execute-api.eu-west-1.amazonaws.com", + start=1631285061.365, + span_type="web", + tags={ + "_dd.origin": "lambda", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "apiid": "p62c47itsb", + "apiname": "p62c47itsb", + "connection_id": "Fc5SzcoYGjQCJlg=", + "endpoint": "$default", + "event_type": "MESSAGE", + "http.url": "p62c47itsb.execute-api.eu-west-1.amazonaws.com$default", + "message_direction": "IN", + "operation_name": "aws.apigateway.websocket", + "request_id": "123", + "resource_names": "$default", + "stage": "dev", + }, + ), + ), + ( + "api-gateway-websocket-connect", + _Span( + service="p62c47itsb.execute-api.eu-west-1.amazonaws.com", + start=1631284003.071, + span_type="web", + tags={ + "_dd.origin": "lambda", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "apiid": "p62c47itsb", + "apiname": "p62c47itsb", + "connection_id": "Fc2tgfl3mjQCJfA=", + "endpoint": "$connect", + "event_type": "CONNECT", + "http.url": "p62c47itsb.execute-api.eu-west-1.amazonaws.com$connect", + "message_direction": "IN", + "operation_name": "aws.apigateway.websocket", + "request_id": "123", + "resource_names": "$connect", + "stage": "dev", + }, + ), + ), + ( + "api-gateway-websocket-disconnect", + _Span( + service="p62c47itsb.execute-api.eu-west-1.amazonaws.com", + start=1631284034.737, + span_type="web", + tags={ + "_dd.origin": "lambda", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "apiid": "p62c47itsb", + "apiname": "p62c47itsb", + "connection_id": "Fc2tgfl3mjQCJfA=", + "endpoint": "$disconnect", + "event_type": "DISCONNECT", + "http.url": "p62c47itsb.execute-api.eu-west-1.amazonaws.com$disconnect", + "message_direction": "IN", + "operation_name": "aws.apigateway.websocket", + "request_id": "123", + "resource_names": "$disconnect", + "stage": "dev", + }, + ), + ), + ( + "sqs-string-msg-attribute", + _Span( + service="sqs", + start=1634662094.538, + span_type="web", + tags={ + "_dd.origin": "lambda", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "event_source_arn": "arn:aws:sqs:eu-west-1:601427279990:InferredSpansQueueNode", + "operation_name": "aws.sqs", + "queuename": "InferredSpansQueueNode", + "resource_names": "InferredSpansQueueNode", + "sender_id": "AROAYYB64AB3LSVUYFP5T:harv-inferred-spans-dev-initSender", + }, + ), + ), + ( + "sns-string-msg-attribute", + _Span( + service="sns", + start=1643638421.637, + span_type="web", + tags={ + "_dd.origin": "lambda", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "message_id": "87056a47-f506-5d77-908b-303605d3b197", + "operation_name": "aws.sns", + "resource_names": "serverlessTracingTopicPy", + "topic_arn": "arn:aws:sns:eu-west-1:601427279990:serverlessTracingTopicPy", + "topicname": "serverlessTracingTopicPy", + "type": "Notification", + }, + ), + ), + ( + "sns-b64-msg-attribute", + _Span( + service="sns", + start=1643638421.637, + span_type="web", + tags={ + "_dd.origin": "lambda", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "message_id": "87056a47-f506-5d77-908b-303605d3b197", + "operation_name": "aws.sns", + "resource_names": "serverlessTracingTopicPy", + "topic_arn": "arn:aws:sns:eu-west-1:601427279990:serverlessTracingTopicPy", + "topicname": "serverlessTracingTopicPy", + "type": "Notification", + }, + ), + ), + ( + "kinesis", + _Span( + service="kinesis", + start=1643638425.163, + span_type="web", + tags={ + "_dd.origin": "lambda", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "endpoint": None, + "event_id": "shardId-000000000002:49624230154685806402418173680709770494154422022871973922", + "event_name": "aws:kinesis:record", + "event_source_arn": "arn:aws:kinesis:eu-west-1:601427279990:stream/kinesisStream", + "event_version": "1.0", + "http.method": None, + "http.url": None, + "operation_name": "aws.kinesis", + "partition_key": "partitionkey", + "request_id": None, + "resource_names": "stream/kinesisStream", + "shardid": "shardId-000000000002", + "streamname": "stream/kinesisStream", + }, + ), + ), + ( + "dynamodb", + _Span( + service="dynamodb", + start=1428537600.0, + span_type="web", + tags={ + "_dd.origin": "lambda", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "endpoint": None, + "event_id": "c4ca4238a0b923820dcc509a6f75849b", + "event_name": "INSERT", + "event_source_arn": "arn:aws:dynamodb:us-east-1:123456789012:table/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", + "event_version": "1.1", + "http.method": None, + "http.url": None, + "operation_name": "aws.dynamodb", + "request_id": None, + "resource_names": "ExampleTableWithStream", + "size_bytes": "26", + "stream_view_type": "NEW_AND_OLD_IMAGES", + "tablename": "ExampleTableWithStream", + }, + ), + ), + ( + "s3", + _Span( + service="s3", + start=0.0, + span_type="web", + tags={ + "_dd.origin": "lambda", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "bucket_arn": "arn:aws:s3:::example-bucket", + "bucketname": "example-bucket", + "endpoint": None, + "event_name": "ObjectCreated:Put", + "http.method": None, + "http.url": None, + "object_etag": "0123456789abcdef0123456789abcdef", + "object_key": "test/key", + "object_size": "1024", + "operation_name": "aws.s3", + "request_id": None, + "resource_names": "example-bucket", + }, + ), + ), + ( + "eventbridge-custom", + _Span( + service="eventbridge", + start=1635989865.0, + span_type="web", + tags={ + "_dd.origin": "lambda", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "endpoint": None, + "http.method": None, + "http.url": None, + "operation_name": "aws.eventbridge", + "request_id": None, + "resource_names": "eventbridge.custom.event.sender", + }, + ), + ), + ( + "eventbridge-sqs", + _Span( + service="sqs", + start=1691102943.638, + span_type="web", + parent_name="aws.eventbridge", + tags={ + "_dd.origin": "lambda", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "endpoint": None, + "event_source_arn": "arn:aws:sqs:us-east-1:425362996713:eventbridge-sqs-queue", + "http.method": None, + "http.url": None, + "operation_name": "aws.sqs", + "queuename": "eventbridge-sqs-queue", + "request_id": None, + "resource_names": "eventbridge-sqs-queue", + "sender_id": "AIDAJXNJGGKNS7OSV23OI", + }, + ), + ), + ( + "api-gateway-no-apiid", + _Span( + service="70ixmpl4fl.execute-api.us-east-2.amazonaws.com", + start=1428582896.0, + span_type="http", + tags={ + "_dd.origin": "lambda", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "apiid": "None", + "apiname": "None", + "endpoint": "/path/to/resource", + "http.method": "POST", + "http.url": "70ixmpl4fl.execute-api.us-east-2.amazonaws.com/path/to/resource", + "operation_name": "aws.apigateway.rest", + "request_id": "123", + "resource_names": "POST /path/to/resource", + "stage": "prod", + }, + ), + ), + ( + "authorizer-request-api-gateway-v1", + _Span( + service="amddr1rix9.execute-api.eu-west-1.amazonaws.com", + start=1663295021.832, + span_type="http", + parent_name="aws.apigateway.authorizer", + tags={ + "_dd.origin": "lambda", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "apiid": "amddr1rix9", + "apiname": "amddr1rix9", + "endpoint": "/hello", + "http.method": "GET", + "http.url": "amddr1rix9.execute-api.eu-west-1.amazonaws.com/hello", + "operation_name": "aws.apigateway.rest", + "request_id": "123", + "resource_names": "GET /hello", + "stage": "dev", + }, + ), + ), + ( + "authorizer-request-api-gateway-v1-cached", + _Span( + service="amddr1rix9.execute-api.eu-west-1.amazonaws.com", + start=1666714653.636, + span_type="http", + tags={ + "_dd.origin": "lambda", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "apiid": "amddr1rix9", + "apiname": "amddr1rix9", + "endpoint": "/hello", + "http.method": "GET", + "http.url": "amddr1rix9.execute-api.eu-west-1.amazonaws.com/hello", + "operation_name": "aws.apigateway.rest", + "request_id": "123", + "resource_names": "GET /hello", + "stage": "dev", + }, + ), + ), + ( + "authorizer-token-api-gateway-v1", + _Span( + service="amddr1rix9.execute-api.eu-west-1.amazonaws.com", + start=1663295021.832, + span_type="http", + parent_name="aws.apigateway.authorizer", + tags={ + "_dd.origin": "lambda", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "apiid": "amddr1rix9", + "apiname": "amddr1rix9", + "endpoint": "/hello", + "http.method": "GET", + "http.url": "amddr1rix9.execute-api.eu-west-1.amazonaws.com/hello", + "operation_name": "aws.apigateway.rest", + "request_id": "123", + "resource_names": "GET /hello", + "stage": "dev", + }, + ), + ), + ( + "authorizer-token-api-gateway-v1-cached", + _Span( + service="amddr1rix9.execute-api.eu-west-1.amazonaws.com", + start=1666803622.99, + span_type="http", + tags={ + "_dd.origin": "lambda", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "apiid": "amddr1rix9", + "apiname": "amddr1rix9", + "endpoint": "/hello", + "http.method": "GET", + "http.url": "amddr1rix9.execute-api.eu-west-1.amazonaws.com/hello", + "operation_name": "aws.apigateway.rest", + "request_id": "123", + "resource_names": "GET /hello", + "stage": "dev", + }, + ), + ), + ( + "authorizer-request-api-gateway-v2", + _Span( + service="amddr1rix9.execute-api.eu-west-1.amazonaws.com", + start=1664228639.5337753, + span_type="http", + tags={ + "_dd.origin": "lambda", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "apiid": "amddr1rix9", + "apiname": "amddr1rix9", + "endpoint": "/hello", + "http.method": "GET", + "http.url": "amddr1rix9.execute-api.eu-west-1.amazonaws.com/hello", + "operation_name": "aws.httpapi", + "request_id": "123", + "resource_names": "GET /hello", + "stage": "dev", + }, + ), + ), + ( + "authorizer-request-api-gateway-v2-cached", + _Span( + service="amddr1rix9.execute-api.eu-west-1.amazonaws.com", + start=1666715429.349, + span_type="http", + tags={ + "_dd.origin": "lambda", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "apiid": "amddr1rix9", + "apiname": "amddr1rix9", + "endpoint": "/hello", + "http.method": "GET", + "http.url": "amddr1rix9.execute-api.eu-west-1.amazonaws.com/hello", + "operation_name": "aws.httpapi", + "request_id": "123", + "resource_names": "GET /hello", + "stage": "dev", + }, + ), + ), + ( + "authorizer-request-api-gateway-websocket-connect", + _Span( + service="amddr1rix9.execute-api.eu-west-1.amazonaws.com", + start=1664388386.892, + span_type="web", + parent_name="aws.apigateway.authorizer", + tags={ + "_dd.origin": "lambda", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "apiid": "amddr1rix9", + "apiname": "amddr1rix9", + "connection_id": "ZLr9QeNLmjQCIZA=", + "endpoint": "$connect", + "event_type": "CONNECT", + "http.url": "amddr1rix9.execute-api.eu-west-1.amazonaws.com$connect", + "message_direction": "IN", + "operation_name": "aws.apigateway.websocket", + "request_id": "123", + "resource_names": "$connect", + "stage": "dev", + }, + ), + ), + ( + "authorizer-request-api-gateway-websocket-message", + _Span( + service="amddr1rix9.execute-api.eu-west-1.amazonaws.com", + start=1664390397.1169999, + span_type="web", + tags={ + "_dd.origin": "lambda", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "apiid": "amddr1rix9", + "apiname": "amddr1rix9", + "connection_id": "ZLwtceO1mjQCI8Q=", + "endpoint": "main", + "event_type": "MESSAGE", + "http.url": "amddr1rix9.execute-api.eu-west-1.amazonaws.commain", + "message_direction": "IN", + "operation_name": "aws.apigateway.websocket", + "request_id": "123", + "resource_names": "main", + "stage": "dev", + }, + ), + ), +) - def test_create_inferred_span_from_api_gateway_event(self): - event_sample_source = "api-gateway" - test_file = event_samples + event_sample_source + ".json" - with open(test_file, "r") as event: - event = json.load(event) - ctx = get_mock_context() - ctx.aws_request_id = "123" - span = create_inferred_span(event, ctx) - self.assertEqual(span.get_tag("operation_name"), "aws.apigateway.rest") - self.assertEqual( - span.service, - "70ixmpl4fl.execute-api.us-east-2.amazonaws.com", - ) - self.assertEqual( - span.get_tag("http.url"), - "70ixmpl4fl.execute-api.us-east-2.amazonaws.com/path/to/resource", - ) - self.assertEqual(span.get_tag("endpoint"), "/path/to/resource") - self.assertEqual(span.get_tag("http.method"), "POST") - self.assertEqual( - span.get_tag("resource_names"), - "POST /path/to/resource", - ) - self.assertEqual(span.get_tag("request_id"), "123") - self.assertEqual(span.get_tag("apiid"), "1234567890") - self.assertEqual(span.get_tag("apiname"), "1234567890") - self.assertEqual(span.get_tag("stage"), "prod") - self.assertEqual(span.start, 1428582896.0) - self.assertEqual(span.span_type, "http") - self.assertEqual(span.get_tag(InferredSpanInfo.TAG_SOURCE), "self") - self.assertEqual(span.get_tag(InferredSpanInfo.SYNCHRONICITY), "sync") - - def test_create_inferred_span_from_api_gateway_non_proxy_event_async(self): - event_sample_source = "api-gateway-non-proxy-async" - test_file = event_samples + event_sample_source + ".json" - with open(test_file, "r") as event: - event = json.load(event) - ctx = get_mock_context() - ctx.aws_request_id = "123" - span = create_inferred_span(event, ctx) - self.assertEqual(span.get_tag("operation_name"), "aws.apigateway.rest") - self.assertEqual( - span.service, - "lgxbo6a518.execute-api.eu-west-1.amazonaws.com", - ) - self.assertEqual( - span.get_tag("http.url"), - "lgxbo6a518.execute-api.eu-west-1.amazonaws.com/http/get", - ) - self.assertEqual(span.get_tag("endpoint"), "/http/get") - self.assertEqual(span.get_tag("http.method"), "GET") - self.assertEqual( - span.get_tag("resource_names"), - "GET /http/get", - ) - self.assertEqual(span.get_tag("request_id"), "123") - self.assertEqual(span.get_tag("apiid"), "lgxbo6a518") - self.assertEqual(span.get_tag("apiname"), "lgxbo6a518") - self.assertEqual(span.get_tag("stage"), "dev") - self.assertEqual(span.start, 1631210915.2510002) - self.assertEqual(span.span_type, "http") - self.assertEqual(span.get_tag(InferredSpanInfo.TAG_SOURCE), "self") - self.assertEqual(span.get_tag(InferredSpanInfo.SYNCHRONICITY), "async") - - def test_create_inferred_span_from_api_gateway_non_proxy_event_sync(self): - event_sample_source = "api-gateway-non-proxy" - test_file = event_samples + event_sample_source + ".json" - with open(test_file, "r") as event: - event = json.load(event) - ctx = get_mock_context() - ctx.aws_request_id = "123" - span = create_inferred_span(event, ctx) - self.assertEqual(span.get_tag("operation_name"), "aws.apigateway.rest") - self.assertEqual( - span.service, - "lgxbo6a518.execute-api.eu-west-1.amazonaws.com", - ) - self.assertEqual( - span.get_tag("http.url"), - "lgxbo6a518.execute-api.eu-west-1.amazonaws.com/http/get", - ) - self.assertEqual(span.get_tag("endpoint"), "/http/get") - self.assertEqual(span.get_tag("http.method"), "GET") - self.assertEqual( - span.get_tag("resource_names"), - "GET /http/get", - ) - self.assertEqual(span.get_tag("request_id"), "123") - self.assertEqual(span.get_tag("apiid"), "lgxbo6a518") - self.assertEqual(span.get_tag("apiname"), "lgxbo6a518") - self.assertEqual(span.get_tag("stage"), "dev") - self.assertEqual(span.start, 1631210915.2510002) - self.assertEqual(span.span_type, "http") - self.assertEqual(span.get_tag(InferredSpanInfo.TAG_SOURCE), "self") - self.assertEqual(span.get_tag(InferredSpanInfo.SYNCHRONICITY), "sync") - - def test_create_inferred_span_from_http_api_event(self): - event_sample_source = "http-api" - test_file = event_samples + event_sample_source + ".json" - with open(test_file, "r") as event: - event = json.load(event) - ctx = get_mock_context() - ctx.aws_request_id = "123" - span = create_inferred_span(event, ctx) - self.assertEqual(span.get_tag("operation_name"), "aws.httpapi") - self.assertEqual( - span.service, - "x02yirxc7a.execute-api.eu-west-1.amazonaws.com", - ) - self.assertEqual( - span.get_tag("http.url"), - "x02yirxc7a.execute-api.eu-west-1.amazonaws.com/httpapi/get", - ) - self.assertEqual(span.get_tag("endpoint"), "/httpapi/get") - self.assertEqual(span.get_tag("http.method"), "GET") - self.assertEqual( - span.get_tag("resource_names"), - "GET /httpapi/get", - ) - self.assertEqual(span.get_tag("request_id"), "123") - self.assertEqual(span.get_tag("apiid"), "x02yirxc7a") - self.assertEqual(span.get_tag("apiname"), "x02yirxc7a") - self.assertEqual(span.get_tag("stage"), "$default") - self.assertEqual(span.get_tag("http.protocol"), "HTTP/1.1") - self.assertEqual(span.get_tag("http.source_ip"), "38.122.226.210") - self.assertEqual(span.get_tag("http.user_agent"), "curl/7.64.1") - self.assertEqual(span.start, 1631212283.738) - self.assertEqual(span.span_type, "http") - self.assertEqual(span.get_tag(InferredSpanInfo.TAG_SOURCE), "self") - self.assertEqual(span.get_tag(InferredSpanInfo.SYNCHRONICITY), "sync") - - def test_create_inferred_span_from_api_gateway_websocket_default_event(self): - event_sample_source = "api-gateway-websocket-default" - test_file = event_samples + event_sample_source + ".json" - with open(test_file, "r") as event: - event = json.load(event) - ctx = get_mock_context() - ctx.aws_request_id = "123" - span = create_inferred_span(event, ctx) - self.assertEqual(span.get_tag("operation_name"), "aws.apigateway.websocket") - self.assertEqual( - span.service, - "p62c47itsb.execute-api.eu-west-1.amazonaws.com", - ) - self.assertEqual( - span.get_tag("http.url"), - "p62c47itsb.execute-api.eu-west-1.amazonaws.com$default", - ) - self.assertEqual(span.get_tag("endpoint"), "$default") - self.assertEqual(span.get_tag("http.method"), None) - self.assertEqual( - span.get_tag("resource_names"), - "$default", - ) - self.assertEqual(span.get_tag("request_id"), "123") - self.assertEqual(span.get_tag("apiid"), "p62c47itsb") - self.assertEqual(span.get_tag("apiname"), "p62c47itsb") - self.assertEqual(span.get_tag("stage"), "dev") - self.assertEqual(span.get_tag("connection_id"), "Fc5SzcoYGjQCJlg=") - self.assertEqual(span.get_tag("event_type"), "MESSAGE") - self.assertEqual(span.get_tag("message_direction"), "IN") - self.assertEqual(span.start, 1631285061.365) - self.assertEqual(span.span_type, "web") - self.assertEqual(span.get_tag(InferredSpanInfo.TAG_SOURCE), "self") - self.assertEqual(span.get_tag(InferredSpanInfo.SYNCHRONICITY), "sync") - - def test_create_inferred_span_from_api_gateway_websocket_connect_event(self): - event_sample_source = "api-gateway-websocket-connect" - test_file = event_samples + event_sample_source + ".json" - with open(test_file, "r") as event: - event = json.load(event) - ctx = get_mock_context() - ctx.aws_request_id = "123" - span = create_inferred_span(event, ctx) - self.assertEqual(span.get_tag("operation_name"), "aws.apigateway.websocket") - self.assertEqual( - span.service, - "p62c47itsb.execute-api.eu-west-1.amazonaws.com", - ) - self.assertEqual( - span.get_tag("http.url"), - "p62c47itsb.execute-api.eu-west-1.amazonaws.com$connect", - ) - self.assertEqual(span.get_tag("endpoint"), "$connect") - self.assertEqual(span.get_tag("http.method"), None) - self.assertEqual( - span.get_tag("resource_names"), - "$connect", - ) - self.assertEqual(span.get_tag("request_id"), "123") - self.assertEqual(span.get_tag("apiid"), "p62c47itsb") - self.assertEqual(span.get_tag("apiname"), "p62c47itsb") - self.assertEqual(span.get_tag("stage"), "dev") - self.assertEqual(span.get_tag("connection_id"), "Fc2tgfl3mjQCJfA=") - self.assertEqual(span.get_tag("event_type"), "CONNECT") - self.assertEqual(span.get_tag("message_direction"), "IN") - self.assertEqual(span.start, 1631284003.071) - self.assertEqual(span.span_type, "web") - self.assertEqual(span.get_tag(InferredSpanInfo.TAG_SOURCE), "self") - self.assertEqual(span.get_tag(InferredSpanInfo.SYNCHRONICITY), "sync") - - def test_create_inferred_span_from_api_gateway_websocket_disconnect_event(self): - event_sample_source = "api-gateway-websocket-disconnect" - test_file = event_samples + event_sample_source + ".json" - with open(test_file, "r") as event: - event = json.load(event) - ctx = get_mock_context() - ctx.aws_request_id = "123" - span = create_inferred_span(event, ctx) - self.assertEqual(span.get_tag("operation_name"), "aws.apigateway.websocket") - self.assertEqual( - span.service, - "p62c47itsb.execute-api.eu-west-1.amazonaws.com", - ) - self.assertEqual( - span.get_tag("http.url"), - "p62c47itsb.execute-api.eu-west-1.amazonaws.com$disconnect", - ) - self.assertEqual(span.get_tag("endpoint"), "$disconnect") - self.assertEqual(span.get_tag("http.method"), None) - self.assertEqual( - span.get_tag("resource_names"), - "$disconnect", - ) - self.assertEqual(span.get_tag("request_id"), "123") - self.assertEqual(span.get_tag("apiid"), "p62c47itsb") - self.assertEqual(span.get_tag("apiname"), "p62c47itsb") - self.assertEqual(span.get_tag("stage"), "dev") - self.assertEqual(span.get_tag("connection_id"), "Fc2tgfl3mjQCJfA=") - self.assertEqual(span.get_tag("event_type"), "DISCONNECT") - self.assertEqual(span.get_tag("message_direction"), "IN") - self.assertEqual(span.start, 1631284034.737) - self.assertEqual(span.span_type, "web") - self.assertEqual(span.get_tag(InferredSpanInfo.TAG_SOURCE), "self") - self.assertEqual(span.get_tag(InferredSpanInfo.SYNCHRONICITY), "sync") - - def test_create_inferred_span_from_sqs_event_string_msg_attr(self): - event_sample_name = "sqs-string-msg-attribute" - test_file = event_samples + event_sample_name + ".json" - with open(test_file, "r") as event: - event = json.load(event) - ctx = get_mock_context() - ctx.aws_request_id = "123" - span = create_inferred_span(event, ctx) - self.assertEqual(span.get_tag("operation_name"), "aws.sqs") - self.assertEqual( - span.service, - "sqs", - ) - self.assertEqual( - span.get_tag("http.url"), - None, - ) - self.assertEqual(span.get_tag("endpoint"), None) - self.assertEqual(span.get_tag("http.method"), None) - self.assertEqual( - span.get_tag("resource_names"), - "InferredSpansQueueNode", - ) - self.assertEqual(span.get_tag("request_id"), None) - self.assertEqual(span.get_tag("queuename"), "InferredSpansQueueNode") - self.assertEqual( - span.get_tag("event_source_arn"), - "arn:aws:sqs:eu-west-1:601427279990:InferredSpansQueueNode", - ) - self.assertEqual( - span.get_tag("sender_id"), - "AROAYYB64AB3LSVUYFP5T:harv-inferred-spans-dev-initSender", - ) - self.assertEqual(span.start, 1634662094.538) - self.assertEqual(span.span_type, "web") - self.assertEqual(span.get_tag(InferredSpanInfo.TAG_SOURCE), "self") - self.assertEqual(span.get_tag(InferredSpanInfo.SYNCHRONICITY), "async") - - def test_create_inferred_span_from_sns_event_string_msg_attr(self): - event_sample_name = "sns-string-msg-attribute" - test_file = event_samples + event_sample_name + ".json" - with open(test_file, "r") as event: - event = json.load(event) - ctx = get_mock_context() - ctx.aws_request_id = "123" - span = create_inferred_span(event, ctx) - self.assertEqual(span.get_tag("operation_name"), "aws.sns") - self.assertEqual( - span.service, - "sns", - ) - self.assertEqual( - span.get_tag("http.url"), - None, - ) - self.assertEqual(span.get_tag("endpoint"), None) - self.assertEqual(span.get_tag("http.method"), None) - self.assertEqual( - span.get_tag("resource_names"), - "serverlessTracingTopicPy", - ) - self.assertEqual(span.get_tag("topicname"), "serverlessTracingTopicPy") - self.assertEqual( - span.get_tag("topic_arn"), - "arn:aws:sns:eu-west-1:601427279990:serverlessTracingTopicPy", - ) - self.assertEqual( - span.get_tag("message_id"), "87056a47-f506-5d77-908b-303605d3b197" - ) - self.assertEqual(span.get_tag("type"), "Notification") - self.assertEqual(span.get_tag("subject"), None) - self.assertEqual(span.start, 1643638421.637) - self.assertEqual(span.span_type, "web") - self.assertEqual(span.get_tag(InferredSpanInfo.TAG_SOURCE), "self") - self.assertEqual(span.get_tag(InferredSpanInfo.SYNCHRONICITY), "async") - - def test_create_inferred_span_from_sns_event_b64_msg_attr(self): - event_sample_name = "sns-b64-msg-attribute" - test_file = event_samples + event_sample_name + ".json" - with open(test_file, "r") as event: - event = json.load(event) - ctx = get_mock_context() - ctx.aws_request_id = "123" - span = create_inferred_span(event, ctx) - self.assertEqual(span.get_tag("operation_name"), "aws.sns") - self.assertEqual( - span.service, - "sns", - ) - self.assertEqual( - span.get_tag("http.url"), - None, - ) - self.assertEqual(span.get_tag("endpoint"), None) - self.assertEqual(span.get_tag("http.method"), None) - self.assertEqual( - span.get_tag("resource_names"), - "serverlessTracingTopicPy", - ) - self.assertEqual(span.get_tag("topicname"), "serverlessTracingTopicPy") - self.assertEqual( - span.get_tag("topic_arn"), - "arn:aws:sns:eu-west-1:601427279990:serverlessTracingTopicPy", - ) - self.assertEqual( - span.get_tag("message_id"), "87056a47-f506-5d77-908b-303605d3b197" - ) - self.assertEqual(span.get_tag("type"), "Notification") - self.assertEqual(span.get_tag("subject"), None) - self.assertEqual(span.start, 1643638421.637) - self.assertEqual(span.span_type, "web") - self.assertEqual(span.get_tag(InferredSpanInfo.TAG_SOURCE), "self") - self.assertEqual(span.get_tag(InferredSpanInfo.SYNCHRONICITY), "async") - - def test_create_inferred_span_from_kinesis_event(self): - event_sample_source = "kinesis" - test_file = event_samples + event_sample_source + ".json" - with open(test_file, "r") as event: - event = json.load(event) - ctx = get_mock_context() - ctx.aws_request_id = "123" - span = create_inferred_span(event, ctx) - self.assertEqual(span.get_tag("operation_name"), "aws.kinesis") - self.assertEqual( - span.service, - "kinesis", - ) - self.assertEqual( - span.get_tag("http.url"), - None, - ) - self.assertEqual(span.get_tag("endpoint"), None) - self.assertEqual(span.get_tag("http.method"), None) - self.assertEqual( - span.get_tag("resource_names"), - "stream/kinesisStream", - ) - self.assertEqual(span.get_tag("request_id"), None) - self.assertEqual(span.get_tag("streamname"), "stream/kinesisStream") - self.assertEqual(span.get_tag("shardid"), "shardId-000000000002") - self.assertEqual( - span.get_tag("event_source_arn"), - "arn:aws:kinesis:eu-west-1:601427279990:stream/kinesisStream", - ) - self.assertEqual( - span.get_tag("event_id"), - "shardId-000000000002:49624230154685806402418173680709770494154422022871973922", - ) - self.assertEqual(span.get_tag("event_name"), "aws:kinesis:record") - self.assertEqual(span.get_tag("event_version"), "1.0") - self.assertEqual(span.get_tag("partition_key"), "partitionkey") - self.assertEqual(span.start, 1643638425.163) - self.assertEqual(span.span_type, "web") - self.assertEqual(span.get_tag(InferredSpanInfo.TAG_SOURCE), "self") - self.assertEqual(span.get_tag(InferredSpanInfo.SYNCHRONICITY), "async") - - def test_create_inferred_span_from_dynamodb_event(self): - event_sample_source = "dynamodb" - test_file = event_samples + event_sample_source + ".json" - with open(test_file, "r") as event: - event = json.load(event) - ctx = get_mock_context() - ctx.aws_request_id = "123" - span = create_inferred_span(event, ctx) - self.assertEqual(span.get_tag("operation_name"), "aws.dynamodb") - self.assertEqual( - span.service, - "dynamodb", - ) - self.assertEqual( - span.get_tag("http.url"), - None, - ) - self.assertEqual(span.get_tag("endpoint"), None) - self.assertEqual(span.get_tag("http.method"), None) - self.assertEqual( - span.get_tag("resource_names"), - "ExampleTableWithStream", - ) - self.assertEqual(span.get_tag("request_id"), None) - self.assertEqual(span.get_tag("tablename"), "ExampleTableWithStream") - self.assertEqual( - span.get_tag("event_source_arn"), - "arn:aws:dynamodb:us-east-1:123456789012:table/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", - ) - self.assertEqual(span.get_tag("event_id"), "c4ca4238a0b923820dcc509a6f75849b") - self.assertEqual(span.get_tag("event_name"), "INSERT") - self.assertEqual(span.get_tag("event_version"), "1.1") - self.assertEqual(span.get_tag("stream_view_type"), "NEW_AND_OLD_IMAGES") - self.assertEqual(span.get_tag("size_bytes"), "26") - self.assertEqual(span.start, 1428537600.0) - self.assertEqual(span.span_type, "web") - self.assertEqual(span.get_tag(InferredSpanInfo.TAG_SOURCE), "self") - self.assertEqual(span.get_tag(InferredSpanInfo.SYNCHRONICITY), "async") - - def test_create_inferred_span_from_s3_event(self): - event_sample_source = "s3" - test_file = event_samples + event_sample_source + ".json" - with open(test_file, "r") as event: - event = json.load(event) - ctx = get_mock_context() - ctx.aws_request_id = "123" - span = create_inferred_span(event, ctx) - self.assertEqual(span.get_tag("operation_name"), "aws.s3") - self.assertEqual( - span.service, - "s3", - ) - self.assertEqual( - span.get_tag("http.url"), - None, - ) - self.assertEqual(span.get_tag("endpoint"), None) - self.assertEqual(span.get_tag("http.method"), None) - self.assertEqual( - span.get_tag("resource_names"), - "example-bucket", - ) - self.assertEqual(span.get_tag("request_id"), None) - self.assertEqual(span.get_tag("event_name"), "ObjectCreated:Put") - self.assertEqual(span.get_tag("bucketname"), "example-bucket") - self.assertEqual(span.get_tag("bucket_arn"), "arn:aws:s3:::example-bucket") - self.assertEqual(span.get_tag("object_key"), "test/key") - self.assertEqual(span.get_tag("object_size"), "1024") - self.assertEqual( - span.get_tag("object_etag"), "0123456789abcdef0123456789abcdef" - ) - self.assertEqual(span.start, 0.0) - self.assertEqual(span.span_type, "web") - self.assertEqual(span.get_tag(InferredSpanInfo.TAG_SOURCE), "self") - self.assertEqual(span.get_tag(InferredSpanInfo.SYNCHRONICITY), "async") - def test_create_inferred_span_from_eventbridge_event(self): - event_sample_source = "eventbridge-custom" - test_file = event_samples + event_sample_source + ".json" - with open(test_file, "r") as event: - event = json.load(event) - ctx = get_mock_context() - ctx.aws_request_id = "123" - span = create_inferred_span(event, ctx) - self.assertEqual(span.get_tag("operation_name"), "aws.eventbridge") - self.assertEqual( - span.service, - "eventbridge", - ) - self.assertEqual( - span.get_tag("http.url"), - None, - ) - self.assertEqual(span.get_tag("endpoint"), None) - self.assertEqual(span.get_tag("http.method"), None) - self.assertEqual( - span.get_tag("resource_names"), - "eventbridge.custom.event.sender", - ) - self.assertEqual(span.get_tag("request_id"), None) - self.assertEqual(span.start, 1635989865.0) - self.assertEqual(span.span_type, "web") - self.assertEqual(span.get_tag(InferredSpanInfo.TAG_SOURCE), "self") - self.assertEqual(span.get_tag(InferredSpanInfo.SYNCHRONICITY), "async") - - def test_create_inferred_span_from_eventbridge_sqs_event(self): - event_sample_name = "eventbridge-sqs" - test_file = event_samples + event_sample_name + ".json" - with open(test_file, "r") as event: - event = json.load(event) - ctx = get_mock_context() - ctx.aws_request_id = "123" - span = create_inferred_span(event, ctx) - self.assertEqual(span.get_tag("operation_name"), "aws.sqs") - self.assertEqual( - span.service, - "sqs", - ) - self.assertEqual( - span.get_tag("http.url"), - None, - ) - self.assertEqual(span.get_tag("endpoint"), None) - self.assertEqual(span.get_tag("http.method"), None) - self.assertEqual( - span.get_tag("resource_names"), - "eventbridge-sqs-queue", - ) - self.assertEqual(span.get_tag("request_id"), None) - self.assertEqual(span.get_tag("queuename"), "eventbridge-sqs-queue") - self.assertEqual( - span.get_tag("event_source_arn"), - "arn:aws:sqs:us-east-1:425362996713:eventbridge-sqs-queue", - ) - self.assertEqual( - span.get_tag("sender_id"), - "AIDAJXNJGGKNS7OSV23OI", - ) - self.assertEqual(span.start, 1691102943.638) - self.assertEqual(span.span_type, "web") - self.assertEqual(span.get_tag(InferredSpanInfo.TAG_SOURCE), "self") - self.assertEqual(span.get_tag(InferredSpanInfo.SYNCHRONICITY), "async") +@pytest.mark.parametrize("source,expect", _test_create_inferred_span) +@patch("ddtrace.Span.finish", autospec=True) +def test_create_inferred_span(mock_span_finish, source, expect): + with open(f"{event_samples}{source}.json") as f: + event = json.load(f) + ctx = get_mock_context(aws_request_id="123") + + actual = create_inferred_span(event, ctx) + assert actual.service == expect.service + assert actual.start == expect.start + assert actual.span_type == expect.span_type + for tag, value in expect.tags.items(): + assert actual.get_tag(tag) == value, f"wrong value for tag {tag}" + + if expect.parent_name is not None: # there are two inferred spans + assert mock_span_finish.call_count == 1 + args, kwargs = mock_span_finish.call_args_list[0] + parent = args[0] + finish_time = kwargs.get("finish_time") or args[1] + assert parent.name == expect.parent_name + assert actual.parent_id == parent.span_id + assert finish_time == expect.start + else: # there is only one inferred span + assert mock_span_finish.call_count == 0 + +class TestInferredSpans(unittest.TestCase): def test_extract_context_from_eventbridge_event(self): event_sample_source = "eventbridge-custom" test_file = event_samples + event_sample_source + ".json" @@ -2029,38 +1894,6 @@ def test_extract_context_from_kinesis_batch_event(self): self.assertEqual(context.span_id, 2876253380018681026) self.assertEqual(context.sampling_priority, 1) - def test_create_inferred_span_from_api_gateway_event_no_apiid(self): - event_sample_source = "api-gateway-no-apiid" - test_file = event_samples + event_sample_source + ".json" - with open(test_file, "r") as event: - event = json.load(event) - ctx = get_mock_context() - ctx.aws_request_id = "123" - span = create_inferred_span(event, ctx) - self.assertEqual(span.get_tag("operation_name"), "aws.apigateway.rest") - self.assertEqual( - span.service, - "70ixmpl4fl.execute-api.us-east-2.amazonaws.com", - ) - self.assertEqual( - span.get_tag("http.url"), - "70ixmpl4fl.execute-api.us-east-2.amazonaws.com/path/to/resource", - ) - self.assertEqual(span.get_tag("endpoint"), "/path/to/resource") - self.assertEqual(span.get_tag("http.method"), "POST") - self.assertEqual( - span.get_tag("resource_names"), - "POST /path/to/resource", - ) - self.assertEqual(span.get_tag("request_id"), "123") - self.assertEqual(span.get_tag("apiid"), "None") - self.assertEqual(span.get_tag("apiname"), "None") - self.assertEqual(span.get_tag("stage"), "prod") - self.assertEqual(span.start, 1428582896.0) - self.assertEqual(span.span_type, "http") - self.assertEqual(span.get_tag(InferredSpanInfo.TAG_SOURCE), "self") - self.assertEqual(span.get_tag(InferredSpanInfo.SYNCHRONICITY), "sync") - @patch("datadog_lambda.tracing.submit_errors_metric") def test_mark_trace_as_error_for_5xx_responses_getting_400_response_code( self, mock_submit_errors_metric From 92990ae7a2947f08af464be7aeb5bbccdc987917 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Thu, 28 Mar 2024 10:36:15 -0400 Subject: [PATCH 106/268] Release v5.92.0 (#457) --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 806485b6..3536347f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "5.91.0" +version = "5.92.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 466911736c5604eaa29bbde3681fe363f2b24114 Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Thu, 28 Mar 2024 09:27:10 -0700 Subject: [PATCH 107/268] Parametrized trace context extraction tests. (#456) * Parametrized trace context extraction tests. * Linting. --- tests/test_tracing.py | 290 +++++++++++++++++++++++------------------- 1 file changed, 161 insertions(+), 129 deletions(-) diff --git a/tests/test_tracing.py b/tests/test_tracing.py index 0aa38613..d38bb7d3 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -96,6 +96,167 @@ def _wrap(*args, **kwargs): return _wrapper +_test_extract_dd_trace_context = ( + ("api-gateway", Context(trace_id=12345, span_id=67890, sampling_priority=2)), + ( + "api-gateway-no-apiid", + Context(trace_id=12345, span_id=67890, sampling_priority=2), + ), + ( + "api-gateway-non-proxy", + Context(trace_id=12345, span_id=67890, sampling_priority=2), + ), + ( + "api-gateway-non-proxy-async", + Context(trace_id=12345, span_id=67890, sampling_priority=2), + ), + ( + "api-gateway-websocket-connect", + Context(trace_id=12345, span_id=67890, sampling_priority=2), + ), + ( + "api-gateway-websocket-default", + Context(trace_id=12345, span_id=67890, sampling_priority=2), + ), + ( + "api-gateway-websocket-disconnect", + Context(trace_id=12345, span_id=67890, sampling_priority=2), + ), + ( + "authorizer-request-api-gateway-v1", + Context( + trace_id=13478705995797221209, + span_id=8471288263384216896, + sampling_priority=1, + ), + ), + ("authorizer-request-api-gateway-v1-cached", None), + ( + "authorizer-request-api-gateway-v2", + Context( + trace_id=14356983619852933354, + span_id=12658621083505413809, + sampling_priority=1, + ), + ), + ("authorizer-request-api-gateway-v2-cached", None), + ( + "authorizer-request-api-gateway-websocket-connect", + Context( + trace_id=5351047404834723189, + span_id=18230460631156161837, + sampling_priority=1, + ), + ), + ("authorizer-request-api-gateway-websocket-message", None), + ( + "authorizer-token-api-gateway-v1", + Context( + trace_id=17874798268144902712, + span_id=16184667399315372101, + sampling_priority=1, + ), + ), + ("authorizer-token-api-gateway-v1-cached", None), + ("cloudfront", None), + ("cloudwatch-events", None), + ("cloudwatch-logs", None), + ("custom", None), + ("dynamodb", None), + ("eventbridge-custom", Context(trace_id=12345, span_id=67890, sampling_priority=2)), + ( + "eventbridge-sqs", + Context( + trace_id=7379586022458917877, + span_id=2644033662113726488, + sampling_priority=1, + ), + ), + ("http-api", Context(trace_id=12345, span_id=67890, sampling_priority=2)), + ( + "kinesis", + Context( + trace_id=4948377316357291421, + span_id=2876253380018681026, + sampling_priority=1, + ), + ), + ( + "kinesis-batch", + Context( + trace_id=4948377316357291421, + span_id=2876253380018681026, + sampling_priority=1, + ), + ), + ("lambda-url", None), + ("s3", None), + ( + "sns-b64-msg-attribute", + Context( + trace_id=4948377316357291421, + span_id=6746998015037429512, + sampling_priority=1, + ), + ), + ( + "sns-batch", + Context( + trace_id=4948377316357291421, + span_id=6746998015037429512, + sampling_priority=1, + ), + ), + ( + "sns-string-msg-attribute", + Context( + trace_id=4948377316357291421, + span_id=6746998015037429512, + sampling_priority=1, + ), + ), + ( + "sqs-batch", + Context( + trace_id=2684756524522091840, + span_id=7431398482019833808, + sampling_priority=1, + ), + ), + ( + "sqs-java-upstream", + Context( + trace_id=7925498337868555493, + span_id=5245570649555658903, + sampling_priority=1, + ), + ), + ( + "sqs-string-msg-attribute", + Context( + trace_id=2684756524522091840, + span_id=7431398482019833808, + sampling_priority=1, + ), + ), + ({"headers": None}, None), +) + + +@pytest.mark.parametrize("event,expect", _test_extract_dd_trace_context) +def test_extract_dd_trace_context(event, expect): + if isinstance(event, str): + with open(f"{event_samples}{event}.json") as f: + event = json.load(f) + ctx = get_mock_context() + + actual, _, _ = extract_dd_trace_context(event, ctx) + assert (expect is None) is (actual is None) + assert (expect is None) or actual.trace_id == expect.trace_id + assert (expect is None) or actual.span_id == expect.span_id + assert (expect is None) or actual.sampling_priority == expect.sampling_priority + + class TestExtractAndGetDDTraceContext(unittest.TestCase): def setUp(self): global dd_tracing_enabled @@ -1773,127 +1934,6 @@ def test_create_inferred_span(mock_span_finish, source, expect): class TestInferredSpans(unittest.TestCase): - def test_extract_context_from_eventbridge_event(self): - event_sample_source = "eventbridge-custom" - test_file = event_samples + event_sample_source + ".json" - with open(test_file, "r") as event: - event = json.load(event) - ctx = get_mock_context() - context, source, event_type = extract_dd_trace_context(event, ctx) - self.assertEqual(context.trace_id, 12345) - self.assertEqual(context.span_id, 67890), - self.assertEqual(context.sampling_priority, 2) - - def test_extract_dd_trace_context_for_eventbridge(self): - event_sample_source = "eventbridge-custom" - test_file = event_samples + event_sample_source + ".json" - with open(test_file, "r") as event: - event = json.load(event) - ctx = get_mock_context() - context, source, event_type = extract_dd_trace_context(event, ctx) - self.assertEqual(context.trace_id, 12345) - self.assertEqual(context.span_id, 67890) - - def test_extract_context_from_eventbridge_sqs_event(self): - event_sample_source = "eventbridge-sqs" - test_file = event_samples + event_sample_source + ".json" - with open(test_file, "r") as event: - event = json.load(event) - - ctx = get_mock_context() - context, source, event_type = extract_dd_trace_context(event, ctx) - self.assertEqual(context.trace_id, 7379586022458917877) - self.assertEqual(context.span_id, 2644033662113726488) - self.assertEqual(context.sampling_priority, 1) - - def test_extract_context_from_sqs_event_with_string_msg_attr(self): - event_sample_source = "sqs-string-msg-attribute" - test_file = event_samples + event_sample_source + ".json" - with open(test_file, "r") as event: - event = json.load(event) - ctx = get_mock_context() - context, source, event_type = extract_dd_trace_context(event, ctx) - self.assertEqual(context.trace_id, 2684756524522091840) - self.assertEqual(context.span_id, 7431398482019833808) - self.assertEqual(context.sampling_priority, 1) - - def test_extract_context_from_sqs_batch_event(self): - event_sample_source = "sqs-batch" - test_file = event_samples + event_sample_source + ".json" - with open(test_file, "r") as event: - event = json.load(event) - ctx = get_mock_context() - context, source, event_source = extract_dd_trace_context(event, ctx) - self.assertEqual(context.trace_id, 2684756524522091840) - self.assertEqual(context.span_id, 7431398482019833808) - self.assertEqual(context.sampling_priority, 1) - - def test_extract_context_from_sqs_java_upstream_event(self): - event_sample_source = "sqs-java-upstream" - test_file = event_samples + event_sample_source + ".json" - with open(test_file, "r") as event: - event = json.load(event) - ctx = get_mock_context() - context, source, event_type = extract_dd_trace_context(event, ctx) - self.assertEqual(context.trace_id, 7925498337868555493) - self.assertEqual(context.span_id, 5245570649555658903) - self.assertEqual(context.sampling_priority, 1) - - def test_extract_context_from_sns_event_with_string_msg_attr(self): - event_sample_source = "sns-string-msg-attribute" - test_file = event_samples + event_sample_source + ".json" - with open(test_file, "r") as event: - event = json.load(event) - ctx = get_mock_context() - context, source, event_source = extract_dd_trace_context(event, ctx) - self.assertEqual(context.trace_id, 4948377316357291421) - self.assertEqual(context.span_id, 6746998015037429512) - self.assertEqual(context.sampling_priority, 1) - - def test_extract_context_from_sns_event_with_b64_msg_attr(self): - event_sample_source = "sns-b64-msg-attribute" - test_file = event_samples + event_sample_source + ".json" - with open(test_file, "r") as event: - event = json.load(event) - ctx = get_mock_context() - context, source, event_source = extract_dd_trace_context(event, ctx) - self.assertEqual(context.trace_id, 4948377316357291421) - self.assertEqual(context.span_id, 6746998015037429512) - self.assertEqual(context.sampling_priority, 1) - - def test_extract_context_from_sns_batch_event(self): - event_sample_source = "sns-batch" - test_file = event_samples + event_sample_source + ".json" - with open(test_file, "r") as event: - event = json.load(event) - ctx = get_mock_context() - context, source, event_source = extract_dd_trace_context(event, ctx) - self.assertEqual(context.trace_id, 4948377316357291421) - self.assertEqual(context.span_id, 6746998015037429512) - self.assertEqual(context.sampling_priority, 1) - - def test_extract_context_from_kinesis_event(self): - event_sample_source = "kinesis" - test_file = event_samples + event_sample_source + ".json" - with open(test_file, "r") as event: - event = json.load(event) - ctx = get_mock_context() - context, source, event_source = extract_dd_trace_context(event, ctx) - self.assertEqual(context.trace_id, 4948377316357291421) - self.assertEqual(context.span_id, 2876253380018681026) - self.assertEqual(context.sampling_priority, 1) - - def test_extract_context_from_kinesis_batch_event(self): - event_sample_source = "kinesis-batch" - test_file = event_samples + event_sample_source + ".json" - with open(test_file, "r") as event: - event = json.load(event) - ctx = get_mock_context() - context, source, event_source = extract_dd_trace_context(event, ctx) - self.assertEqual(context.trace_id, 4948377316357291421) - self.assertEqual(context.span_id, 2876253380018681026) - self.assertEqual(context.sampling_priority, 1) - @patch("datadog_lambda.tracing.submit_errors_metric") def test_mark_trace_as_error_for_5xx_responses_getting_400_response_code( self, mock_submit_errors_metric @@ -1915,14 +1955,6 @@ def test_mark_trace_as_error_for_5xx_responses_sends_error_metric_and_set_error_ mock_submit_errors_metric.assert_called_once() self.assertEqual(1, mock_span.error) - def test_no_error_with_nonetype_headers(self): - lambda_ctx = get_mock_context() - ctx, source, event_type = extract_dd_trace_context( - {"headers": None}, - lambda_ctx, - ) - self.assertEqual(ctx, None) - class TestStepFunctionsTraceContext(unittest.TestCase): def test_deterministic_m5_hash(self): From d812fb6c45e1653fa5a61c8737757678760a587d Mon Sep 17 00:00:00 2001 From: Andrew Rodriguez <49878080+zARODz11z@users.noreply.github.com> Date: Fri, 29 Mar 2024 09:10:49 -0700 Subject: [PATCH 108/268] fix: use RouteKey in resource path for API Gateway inferred spans (#442) * use route key * Align with js implementation. * Update existing tests. * Add new parametrized tests. * Revert v1 to original. --------- Co-authored-by: Rey Abolofia --- datadog_lambda/tracing.py | 16 ++- .../api-gateway-v1-parametrized.json | 111 ++++++++++++++++++ .../api-gateway-v2-parametrized.json | 38 ++++++ tests/test_tracing.py | 48 +++++++- 4 files changed, 209 insertions(+), 4 deletions(-) create mode 100644 tests/event_samples/api-gateway-v1-parametrized.json create mode 100644 tests/event_samples/api-gateway-v2-parametrized.json diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 5e338253..ae2a0112 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -893,7 +893,8 @@ def create_inferred_span_from_api_gateway_event( ) method = event.get("httpMethod") path = event.get("path") - resource = "{0} {1}".format(method, path) + resource_path = _get_resource_path(event, request_context) + resource = "{0} {1}".format(method, resource_path) tags = { "operation_name": "aws.apigateway.rest", "http.url": domain + path, @@ -936,6 +937,16 @@ def create_inferred_span_from_api_gateway_event( return span +def _get_resource_path(event, request_context): + route_key = request_context.get("routeKey") or "" + if "{" in route_key: + try: + return route_key.split(" ")[1] + except Exception as e: + logger.debug("Error parsing routeKey: %s", e) + return event.get("rawPath") or request_context.get("resourcePath") or route_key + + def create_inferred_span_from_http_api_event( event, context, decode_authorizer_context: bool = True ): @@ -947,7 +958,8 @@ def create_inferred_span_from_http_api_event( ) method = request_context.get("http", {}).get("method") path = event.get("rawPath") - resource = "{0} {1}".format(method, path) + resource_path = _get_resource_path(event, request_context) + resource = "{0} {1}".format(method, resource_path) tags = { "operation_name": "aws.httpapi", "endpoint": path, diff --git a/tests/event_samples/api-gateway-v1-parametrized.json b/tests/event_samples/api-gateway-v1-parametrized.json new file mode 100644 index 00000000..65527ccb --- /dev/null +++ b/tests/event_samples/api-gateway-v1-parametrized.json @@ -0,0 +1,111 @@ +{ + "resource": "/user/{id}", + "path": "/user/42", + "httpMethod": "GET", + "headers": { + "Accept": "*/*", + "CloudFront-Forwarded-Proto": "https", + "CloudFront-Is-Desktop-Viewer": "true", + "CloudFront-Is-Mobile-Viewer": "false", + "CloudFront-Is-SmartTV-Viewer": "false", + "CloudFront-Is-Tablet-Viewer": "false", + "CloudFront-Viewer-ASN": "7922", + "CloudFront-Viewer-Country": "US", + "Host": "mcwkra0ya4.execute-api.sa-east-1.amazonaws.com", + "User-Agent": "curl/8.1.2", + "Via": "2.0 xxx.cloudfront.net (CloudFront)", + "X-Amz-Cf-Id": "Tz3yUVcJkwOhQGqZgKTzrEHqAoOd8ZprYAHpg2S6BNxdd-Ym79pb6g==", + "X-Amzn-Trace-Id": "Root=1-65f49d20-7ba106216238dd0078a5db31", + "X-Forwarded-For": "76.115.124.192, 15.158.54.119", + "X-Forwarded-Port": "443", + "X-Forwarded-Proto": "https" + }, + "multiValueHeaders": { + "Accept": [ + "*/*" + ], + "CloudFront-Forwarded-Proto": [ + "https" + ], + "CloudFront-Is-Desktop-Viewer": [ + "true" + ], + "CloudFront-Is-Mobile-Viewer": [ + "false" + ], + "CloudFront-Is-SmartTV-Viewer": [ + "false" + ], + "CloudFront-Is-Tablet-Viewer": [ + "false" + ], + "CloudFront-Viewer-ASN": [ + "7922" + ], + "CloudFront-Viewer-Country": [ + "US" + ], + "Host": [ + "mcwkra0ya4.execute-api.sa-east-1.amazonaws.com" + ], + "User-Agent": [ + "curl/8.1.2" + ], + "Via": [ + "2.0 xxx.cloudfront.net (CloudFront)" + ], + "X-Amz-Cf-Id": [ + "Tz3yUVcJkwOhQGqZgKTzrEHqAoOd8ZprYAHpg2S6BNxdd-Ym79pb6g==" + ], + "X-Amzn-Trace-Id": [ + "Root=1-65f49d20-7ba106216238dd0078a5db31" + ], + "X-Forwarded-For": [ + "76.115.124.192, 15.158.54.119" + ], + "X-Forwarded-Port": [ + "443" + ], + "X-Forwarded-Proto": [ + "https" + ] + }, + "queryStringParameters": null, + "multiValueQueryStringParameters": null, + "pathParameters": { + "id": "42" + }, + "stageVariables": null, + "requestContext": { + "resourceId": "ojg3nk", + "resourcePath": "/user/{id}", + "httpMethod": "GET", + "extendedRequestId": "Ur19IHYDmjQEU5A=", + "requestTime": "15/Mar/2024:19:10:24 +0000", + "path": "/dev/user/42", + "accountId": "425362996713", + "protocol": "HTTP/1.1", + "stage": "dev", + "domainPrefix": "mcwkra0ya4", + "requestTimeEpoch": 1710529824520, + "requestId": "e16399f7-e984-463a-9931-745ba021a27f", + "identity": { + "cognitoIdentityPoolId": null, + "accountId": null, + "cognitoIdentityId": null, + "caller": null, + "sourceIp": "76.115.124.192", + "principalOrgId": null, + "accessKey": null, + "cognitoAuthenticationType": null, + "cognitoAuthenticationProvider": null, + "userArn": null, + "userAgent": "curl/8.1.2", + "user": null + }, + "domainName": "mcwkra0ya4.execute-api.sa-east-1.amazonaws.com", + "apiId": "mcwkra0ya4" + }, + "body": null, + "isBase64Encoded": false +} diff --git a/tests/event_samples/api-gateway-v2-parametrized.json b/tests/event_samples/api-gateway-v2-parametrized.json new file mode 100644 index 00000000..89ff72b9 --- /dev/null +++ b/tests/event_samples/api-gateway-v2-parametrized.json @@ -0,0 +1,38 @@ +{ + "version": "2.0", + "routeKey": "GET /user/{id}", + "rawPath": "/user/42", + "rawQueryString": "", + "headers": { + "accept": "*/*", + "content-length": "0", + "host": "9vj54we5ih.execute-api.sa-east-1.amazonaws.com", + "user-agent": "curl/8.1.2", + "x-amzn-trace-id": "Root=1-65f49d71-505edb3b69b8abd513cfa08b", + "x-forwarded-for": "76.115.124.192", + "x-forwarded-port": "443", + "x-forwarded-proto": "https" + }, + "requestContext": { + "accountId": "425362996713", + "apiId": "9vj54we5ih", + "domainName": "9vj54we5ih.execute-api.sa-east-1.amazonaws.com", + "domainPrefix": "9vj54we5ih", + "http": { + "method": "GET", + "path": "/user/42", + "protocol": "HTTP/1.1", + "sourceIp": "76.115.124.192", + "userAgent": "curl/8.1.2" + }, + "requestId": "Ur2JtjEfGjQEPOg=", + "routeKey": "GET /user/{id}", + "stage": "$default", + "time": "15/Mar/2024:19:11:45 +0000", + "timeEpoch": 1710529905066 + }, + "pathParameters": { + "id": "42" + }, + "isBase64Encoded": false +} diff --git a/tests/test_tracing.py b/tests/test_tracing.py index d38bb7d3..0f7b84b4 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -1378,7 +1378,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): "http.url": "70ixmpl4fl.execute-api.us-east-2.amazonaws.com/path/to/resource", "operation_name": "aws.apigateway.rest", "request_id": "123", - "resource_names": "POST /path/to/resource", + "resource_names": "POST /{proxy+}", "stage": "prod", }, ), @@ -1452,6 +1452,50 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): }, ), ), + ( + "api-gateway-v1-parametrized", + _Span( + service="mcwkra0ya4.execute-api.sa-east-1.amazonaws.com", + start=1710529824.52, + span_type="http", + tags={ + "_dd.origin": "lambda", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "apiid": "mcwkra0ya4", + "apiname": "mcwkra0ya4", + "endpoint": "/user/42", + "http.method": "GET", + "http.url": "mcwkra0ya4.execute-api.sa-east-1.amazonaws.com/user/42", + "operation_name": "aws.apigateway.rest", + "request_id": "123", + "resource_names": "GET /user/{id}", + "stage": "dev", + }, + ), + ), + ( + "api-gateway-v2-parametrized", + _Span( + service="9vj54we5ih.execute-api.sa-east-1.amazonaws.com", + start=1710529905.066, + span_type="http", + tags={ + "_dd.origin": "lambda", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "apiid": "9vj54we5ih", + "apiname": "9vj54we5ih", + "endpoint": "/user/42", + "http.method": "GET", + "http.url": "9vj54we5ih.execute-api.sa-east-1.amazonaws.com/user/42", + "operation_name": "aws.httpapi", + "request_id": "123", + "resource_names": "GET /user/{id}", + "stage": "$default", + }, + ), + ), ( "api-gateway-websocket-default", _Span( @@ -1716,7 +1760,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): "http.url": "70ixmpl4fl.execute-api.us-east-2.amazonaws.com/path/to/resource", "operation_name": "aws.apigateway.rest", "request_id": "123", - "resource_names": "POST /path/to/resource", + "resource_names": "POST /{proxy+}", "stage": "prod", }, ), From 20a6d10b3dbc5520224479f1708cdc8a4e18c036 Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Mon, 1 Apr 2024 09:20:18 -0700 Subject: [PATCH 109/268] Replace string formatting with f strings. (#458) * Replace string formatting with f strings. * Speed up tag creation. * Fix test patching for cold starts. --- datadog_lambda/cold_start.py | 8 ++++++-- datadog_lambda/handler.py | 2 +- datadog_lambda/tag_object.py | 6 +++--- datadog_lambda/tags.py | 29 ++++++++++++----------------- datadog_lambda/tracing.py | 6 +++--- datadog_lambda/trigger.py | 14 +++++--------- datadog_lambda/wrapper.py | 5 ++--- datadog_lambda/xray.py | 2 +- tests/test_tags.py | 3 +-- tests/test_wrapper.py | 11 +++++------ 10 files changed, 39 insertions(+), 47 deletions(-) diff --git a/datadog_lambda/cold_start.py b/datadog_lambda/cold_start.py index 9dcbec23..d4d4b8c2 100644 --- a/datadog_lambda/cold_start.py +++ b/datadog_lambda/cold_start.py @@ -50,12 +50,16 @@ def is_new_sandbox(): def get_cold_start_tag(): """Returns the cold start tag to be used in metrics""" - return "cold_start:{}".format(str(is_cold_start()).lower()) + return "cold_start:true" if _cold_start else "cold_start:false" def get_proactive_init_tag(): """Returns the proactive init tag to be used in metrics""" - return "proactive_initialization:{}".format(str(is_proactive_init()).lower()) + return ( + "proactive_initialization:true" + if _proactive_initialization + else "proactive_initialization:false" + ) class ImportNode(object): diff --git a/datadog_lambda/handler.py b/datadog_lambda/handler.py index 09cc5e7d..777dc492 100644 --- a/datadog_lambda/handler.py +++ b/datadog_lambda/handler.py @@ -22,7 +22,7 @@ class HandlerError(Exception): ) parts = path.rsplit(".", 1) if len(parts) != 2: - raise HandlerError("Value %s for DD_LAMBDA_HANDLER has invalid format." % path) + raise HandlerError(f"Value {path} for DD_LAMBDA_HANDLER has invalid format.") (mod_name, handler_name) = parts diff --git a/datadog_lambda/tag_object.py b/datadog_lambda/tag_object.py index ec1c5a66..5571bf53 100644 --- a/datadog_lambda/tag_object.py +++ b/datadog_lambda/tag_object.py @@ -30,17 +30,17 @@ def tag_object(span, key, obj, depth=0): return span.set_tag(key, str(obj)) if isinstance(obj, list): for k, v in enumerate(obj): - formatted_key = "{}.{}".format(key, k) + formatted_key = f"{key}.{k}" tag_object(span, formatted_key, v, depth) return if hasattr(obj, "items"): for k, v in obj.items(): - formatted_key = "{}.{}".format(key, k) + formatted_key = f"{key}.{k}" tag_object(span, formatted_key, v, depth) return if hasattr(obj, "to_dict"): for k, v in obj.to_dict().items(): - formatted_key = "{}.{}".format(key, k) + formatted_key = f"{key}.{k}" tag_object(span, formatted_key, v, depth) return try: diff --git a/datadog_lambda/tags.py b/datadog_lambda/tags.py index cdaeb4ed..3e12e2ff 100644 --- a/datadog_lambda/tags.py +++ b/datadog_lambda/tags.py @@ -1,7 +1,5 @@ import sys -from platform import python_version_tuple - from datadog_lambda import __version__ from datadog_lambda.cold_start import get_cold_start_tag @@ -10,8 +8,8 @@ def _format_dd_lambda_layer_tag(): """ Formats the dd_lambda_layer tag, e.g., 'dd_lambda_layer:datadog-python39_1' """ - runtime = "python{}{}".format(sys.version_info[0], sys.version_info[1]) - return "dd_lambda_layer:datadog-{}_{}".format(runtime, __version__) + major, minor = sys.version_info[0], sys.version_info[1] + return f"dd_lambda_layer:datadog-python{major}{minor}_{__version__}" def tag_dd_lambda_layer(tags): @@ -44,9 +42,9 @@ def parse_lambda_tags_from_arn(lambda_context): # Add the standard tags to a list tags = [ - "region:{}".format(region), - "account_id:{}".format(account_id), - "functionname:{}".format(function_name), + f"region:{region}", + f"account_id:{account_id}", + f"functionname:{function_name}", ] # Check if we have a version or alias @@ -56,12 +54,12 @@ def parse_lambda_tags_from_arn(lambda_context): alias = alias[1:] # Versions are numeric. Aliases need the executed version tag elif not check_if_number(alias): - tags.append("executedversion:{}".format(lambda_context.function_version)) + tags.append(f"executedversion:{lambda_context.function_version}") # create resource tag with function name and alias/version - resource = "resource:{}:{}".format(function_name, alias) + resource = f"resource:{function_name}:{alias}" else: # Resource is only the function name otherwise - resource = "resource:{}".format(function_name) + resource = f"resource:{function_name}" tags.append(resource) @@ -70,23 +68,20 @@ def parse_lambda_tags_from_arn(lambda_context): def get_runtime_tag(): """Get the runtime tag from the current Python version""" - major_version, minor_version, _ = python_version_tuple() - - return "runtime:python{major}.{minor}".format( - major=major_version, minor=minor_version - ) + major, minor = sys.version_info[0], sys.version_info[1] + return f"runtime:python{major}.{minor}" def get_library_version_tag(): """Get datadog lambda library tag""" - return "datadog_lambda:v{}".format(__version__) + return f"datadog_lambda:v{__version__}" def get_enhanced_metrics_tags(lambda_context): """Get the list of tags to apply to enhanced metrics""" return parse_lambda_tags_from_arn(lambda_context) + [ get_cold_start_tag(), - "memorysize:{}".format(lambda_context.memory_limit_in_mb), + f"memorysize:{lambda_context.memory_limit_in_mb}", get_runtime_tag(), get_library_version_tag(), ] diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index ae2a0112..2769429f 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -734,7 +734,7 @@ def create_inferred_span_from_lambda_function_url_event(event, context): service_name = determine_service_name(service_mapping, api_id, "lambda_url", domain) method = request_context.get("http", {}).get("method") path = request_context.get("http", {}).get("path") - resource = "{0} {1}".format(method, path) + resource = f"{method} {path}" tags = { "operation_name": "aws.lambda.url", "http.url": domain + path, @@ -894,7 +894,7 @@ def create_inferred_span_from_api_gateway_event( method = event.get("httpMethod") path = event.get("path") resource_path = _get_resource_path(event, request_context) - resource = "{0} {1}".format(method, resource_path) + resource = f"{method} {resource_path}" tags = { "operation_name": "aws.apigateway.rest", "http.url": domain + path, @@ -959,7 +959,7 @@ def create_inferred_span_from_http_api_event( method = request_context.get("http", {}).get("method") path = event.get("rawPath") resource_path = _get_resource_path(event, request_context) - resource = "{0} {1}".format(method, resource_path) + resource = f"{method} {resource_path}" tags = { "operation_name": "aws.httpapi", "endpoint": path, diff --git a/datadog_lambda/trigger.py b/datadog_lambda/trigger.py index bbb44b30..0bb26d59 100644 --- a/datadog_lambda/trigger.py +++ b/datadog_lambda/trigger.py @@ -204,9 +204,7 @@ def parse_event_source_arn(source: _EventSource, event: dict, context: Any) -> s distribution_id = ( event_record.get("cf", {}).get("config", {}).get("distributionId") ) - return "arn:{}:cloudfront::{}:distribution/{}".format( - aws_arn, account_id, distribution_id - ) + return f"arn:{aws_arn}:cloudfront::{account_id}:distribution/{distribution_id}" # e.g. arn:aws:lambda:::url:: if source.equals(EventTypes.LAMBDA_FUNCTION_URL): @@ -223,9 +221,9 @@ def parse_event_source_arn(source: _EventSource, event: dict, context: Any) -> s # e.g. arn:aws:apigateway:us-east-1::/restapis/xyz123/stages/default if source.event_type == EventTypes.API_GATEWAY: request_context = event.get("requestContext") - return "arn:{}:apigateway:{}::/restapis/{}/stages/{}".format( - aws_arn, region, request_context.get("apiId"), request_context.get("stage") - ) + api_id = request_context.get("apiId") + stage = request_context.get("stage") + return f"arn:{aws_arn}:apigateway:{region}::/restapis/{api_id}/stages/{stage}" # e.g. arn:aws:elasticloadbalancing:us-east-1:123456789012:targetgroup/lambda-xyz/123 if source.event_type == EventTypes.ALB: @@ -240,9 +238,7 @@ def parse_event_source_arn(source: _EventSource, event: dict, context: Any) -> s data = b"".join(BufferedReader(decompress_stream)) logs = json.loads(data) log_group = logs.get("logGroup", "cloudwatch") - return "arn:{}:logs:{}:{}:log-group:{}".format( - aws_arn, region, account_id, log_group - ) + return f"arn:{aws_arn}:logs:{region}:{account_id}:log-group:{log_group}" # e.g. arn:aws:events:us-east-1:123456789012:rule/my-schedule if source.event_type == EventTypes.CLOUDWATCH_EVENTS and event.get("resources"): diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index 057f048c..3f6e044b 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -381,9 +381,8 @@ def _after(self, event, context): def format_err_with_traceback(e): - return "Error {}. Traceback: {}".format( - e, traceback.format_exc().replace("\n", "\r") - ) + tb = traceback.format_exc().replace("\n", "\r") + return f"Error {e}. Traceback: {tb}" datadog_lambda_wrapper = _LambdaDecorator diff --git a/datadog_lambda/xray.py b/datadog_lambda/xray.py index 88d108f5..db63a06f 100644 --- a/datadog_lambda/xray.py +++ b/datadog_lambda/xray.py @@ -41,7 +41,7 @@ def send(host_port_tuple, payload): def build_segment_payload(payload): if payload is None: return None - return '{"format": "json", "version": 1}' + "\n" + payload + return '{"format": "json", "version": 1}\n' + payload def parse_xray_header(raw_trace_id): diff --git a/tests/test_tags.py b/tests/test_tags.py index 66c0c39f..e50251c9 100644 --- a/tests/test_tags.py +++ b/tests/test_tags.py @@ -18,7 +18,7 @@ def get_mock_context( class TestMetricTags(unittest.TestCase): def setUp(self): - patcher = patch("datadog_lambda.tags.python_version_tuple") + patcher = patch("sys.version_info", (3, 12, 0)) self.mock_python_version_tuple = patcher.start() self.addCleanup(patcher.stop) @@ -65,5 +65,4 @@ def test_parse_lambda_tags_from_arn_alias(self): ) def test_get_runtime_tag(self): - self.mock_python_version_tuple.return_value = ("3", "12", "0") self.assertEqual(get_runtime_tag(), "runtime:python3.12") diff --git a/tests/test_wrapper.py b/tests/test_wrapper.py index 141e245a..bb26b661 100644 --- a/tests/test_wrapper.py +++ b/tests/test_wrapper.py @@ -61,14 +61,13 @@ def setUp(self): self.mock_patch_all = patcher.start() self.addCleanup(patcher.stop) - patcher = patch("datadog_lambda.cold_start.is_cold_start") - self.mock_is_cold_start = patcher.start() - self.mock_is_cold_start.return_value = True + patcher = patch("datadog_lambda.tags.get_cold_start_tag") + self.mock_get_cold_start_tag = patcher.start() + self.mock_get_cold_start_tag.return_value = "cold_start:true" self.addCleanup(patcher.stop) - patcher = patch("datadog_lambda.tags.python_version_tuple") + patcher = patch("sys.version_info", (3, 9, 10)) self.mock_python_version_tuple = patcher.start() - self.mock_python_version_tuple.return_value = ("3", "9", "10") self.addCleanup(patcher.stop) patcher = patch("datadog_lambda.metric.write_metric_point_to_stdout") @@ -354,7 +353,7 @@ def lambda_handler(event, context): lambda_handler(lambda_event, get_mock_context()) - self.mock_is_cold_start.return_value = False + self.mock_get_cold_start_tag.return_value = "cold_start:false" lambda_handler( lambda_event, get_mock_context(aws_request_id="second-request-id") From e617fd32d11977e43398add4a2423d14f2b4ce72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?jordan=20gonz=C3=A1lez?= <30836115+duncanista@users.noreply.github.com> Date: Mon, 1 Apr 2024 14:06:58 -0400 Subject: [PATCH 110/268] fix licenses (#461) --- LICENSE-3rdparty.csv | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/LICENSE-3rdparty.csv b/LICENSE-3rdparty.csv index a6692772..71ac83fb 100644 --- a/LICENSE-3rdparty.csv +++ b/LICENSE-3rdparty.csv @@ -1,3 +1,11 @@ Component,Origin,License,Copyright -flake8,gitlab.com/pycqa/flake8,MIT,"Copyright (C) 2011-2013 Tarek Ziade . Copyright (C) 2012-2016 Ian Cordasco ." +datadog,github.com/DataDog/datadogpy,BSD-3-Clause,"Copyright (c) 2015-Present Datadog, Inc " wrapt,github.com/GrahamDumpleton/wrapt,BSD-2-Clause,"Copyright (c) 2013-2019, Graham Dumpleton" +ddtrace,github.com/DataDog/dd-trace-py,BSD-3-Clause,"Copyright (c) 2016, Datadog " +urllib3,github.com/urllib3/urllib3,MIT,Copyright (c) 2008-2020 Andrey Petrov and contributors. +importlib_metadata,github.com/python/importlib_metadata,Apache-2.0,Copyright © Jason R. Coombs +boto3,github.com/boto/boto3,Apache-2.0,"Copyright 2013-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved." +typing_extensions,github.com/python/typing_extensions,PSF-2.0,"Copyright (c) 1991 - 1995, Stichting Mathematisch Centrum Amsterdam, The Netherlands. All rights reserved" +requests,github.com/psf/requests,Apache-2.0,"Copyright 2018 Kenneth Reitz" +pytest,github.com/pytest-dev/pytest,MIT,Copyright (c) 2004 Holger Krekel and others +flake8,gitlab.com/pycqa/flake8,MIT,"Copyright (C) 2011-2013 Tarek Ziade . Copyright (C) 2012-2016 Ian Cordasco ." From 4cfcf7ec8891b621942cbbffbb9ee9971128e869 Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Mon, 1 Apr 2024 11:15:21 -0700 Subject: [PATCH 111/268] Small performance improvements to %s formatted strings. (#459) --- datadog_lambda/tracing.py | 6 +++--- datadog_lambda/xray.py | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 2769429f..43137622 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -529,8 +529,8 @@ def get_dd_trace_context_obj(): xray_context = _get_xray_trace_context() # xray (sub)segment except Exception as e: logger.debug( - "get_dd_trace_context couldn't read from segment from x-ray, with error %s" - % e + "get_dd_trace_context couldn't read from segment from x-ray, with error %s", + e, ) if not xray_context: return None @@ -1051,7 +1051,7 @@ def create_inferred_span_from_sqs_event(event, context): except Exception as e: logger.debug( - "Unable to create upstream span from SQS message, with error %s" % e + "Unable to create upstream span from SQS message, with error %s", e ) pass diff --git a/datadog_lambda/xray.py b/datadog_lambda/xray.py index db63a06f..e6aff0bc 100644 --- a/datadog_lambda/xray.py +++ b/datadog_lambda/xray.py @@ -31,11 +31,11 @@ def send(host_port_tuple, payload): sock.connect(host_port_tuple) sock.send(payload.encode("utf-8")) except Exception as e_send: - logger.error("Error occurred submitting to xray daemon: %s", str(e_send)) + logger.error("Error occurred submitting to xray daemon: %s", e_send) try: sock.close() except Exception as e_close: - logger.error("Error while closing the socket: %s", str(e_close)) + logger.error("Error while closing the socket: %s", e_close) def build_segment_payload(payload): From ad81d15c18fd98e5761cc97a409151fa65793db2 Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Mon, 1 Apr 2024 11:20:41 -0700 Subject: [PATCH 112/268] Create static tags once on import. (#460) * Create lambda layer tag only once. * Only create runtime tag once. * Create library version tag just once. * Avoid extra list allocations when creating tags. * Cleaned test. * Linting. --- datadog_lambda/metric.py | 5 ++-- datadog_lambda/tags.py | 50 +++++++++++----------------------------- tests/test_metric.py | 14 +++++------ tests/test_tags.py | 5 +--- tests/test_wrapper.py | 22 ++++++++++-------- 5 files changed, 36 insertions(+), 60 deletions(-) diff --git a/datadog_lambda/metric.py b/datadog_lambda/metric.py index ca23ed96..f02893dd 100644 --- a/datadog_lambda/metric.py +++ b/datadog_lambda/metric.py @@ -9,7 +9,7 @@ import logging from datadog_lambda.extension import should_use_extension -from datadog_lambda.tags import get_enhanced_metrics_tags, tag_dd_lambda_layer +from datadog_lambda.tags import get_enhanced_metrics_tags, dd_lambda_layer_tag from datadog_lambda.api import init_api logger = logging.getLogger(__name__) @@ -50,7 +50,8 @@ def lambda_metric(metric_name, value, timestamp=None, tags=None, force_async=Fal and always use the layer to send metrics to the extension """ flush_to_logs = os.environ.get("DD_FLUSH_TO_LOG", "").lower() == "true" - tags = tag_dd_lambda_layer(tags) + tags = [] if tags is None else list(tags) + tags.append(dd_lambda_layer_tag) if should_use_extension: logger.debug( diff --git a/datadog_lambda/tags.py b/datadog_lambda/tags.py index 3e12e2ff..695d1a48 100644 --- a/datadog_lambda/tags.py +++ b/datadog_lambda/tags.py @@ -4,23 +4,10 @@ from datadog_lambda.cold_start import get_cold_start_tag -def _format_dd_lambda_layer_tag(): - """ - Formats the dd_lambda_layer tag, e.g., 'dd_lambda_layer:datadog-python39_1' - """ - major, minor = sys.version_info[0], sys.version_info[1] - return f"dd_lambda_layer:datadog-python{major}{minor}_{__version__}" - - -def tag_dd_lambda_layer(tags): - """ - Used by lambda_metric to insert the dd_lambda_layer tag - """ - dd_lambda_layer_tag = _format_dd_lambda_layer_tag() - if tags: - return tags + [dd_lambda_layer_tag] - else: - return [dd_lambda_layer_tag] +_major, _minor = sys.version_info[0], sys.version_info[1] +dd_lambda_layer_tag = f"dd_lambda_layer:datadog-python{_major}{_minor}_{__version__}" +runtime_tag = f"runtime:python{_major}.{_minor}" +library_version_tag = f"datadog_lambda:v{__version__}" def parse_lambda_tags_from_arn(lambda_context): @@ -30,12 +17,12 @@ def parse_lambda_tags_from_arn(lambda_context): ex: lambda_context.arn = arn:aws:lambda:us-east-1:123597598159:function:my-lambda:1 """ # Set up flag for extra testing to distinguish between a version or alias - hasAlias = False + has_alias = False # Cap the number of times to spli split_arn = lambda_context.invoked_function_arn.split(":") if len(split_arn) > 7: - hasAlias = True + has_alias = True _, _, _, region, account_id, _, function_name, alias = split_arn else: _, _, _, region, account_id, _, function_name = split_arn @@ -48,7 +35,7 @@ def parse_lambda_tags_from_arn(lambda_context): ] # Check if we have a version or alias - if hasAlias: + if has_alias: # If $Latest, drop the $ for datadog tag convention. A lambda alias can't start with $ if alias.startswith("$"): alias = alias[1:] @@ -66,25 +53,14 @@ def parse_lambda_tags_from_arn(lambda_context): return tags -def get_runtime_tag(): - """Get the runtime tag from the current Python version""" - major, minor = sys.version_info[0], sys.version_info[1] - return f"runtime:python{major}.{minor}" - - -def get_library_version_tag(): - """Get datadog lambda library tag""" - return f"datadog_lambda:v{__version__}" - - def get_enhanced_metrics_tags(lambda_context): """Get the list of tags to apply to enhanced metrics""" - return parse_lambda_tags_from_arn(lambda_context) + [ - get_cold_start_tag(), - f"memorysize:{lambda_context.memory_limit_in_mb}", - get_runtime_tag(), - get_library_version_tag(), - ] + tags = parse_lambda_tags_from_arn(lambda_context) + tags.append(get_cold_start_tag()) + tags.append(f"memorysize:{lambda_context.memory_limit_in_mb}") + tags.append(runtime_tag) + tags.append(library_version_tag) + return tags def check_if_number(alias): diff --git a/tests/test_metric.py b/tests/test_metric.py index 24c9a56d..992084b9 100644 --- a/tests/test_metric.py +++ b/tests/test_metric.py @@ -10,7 +10,7 @@ from datadog_lambda.metric import lambda_metric from datadog_lambda.api import decrypt_kms_api_key, KMS_ENCRYPTION_CONTEXT_KEY from datadog_lambda.thread_stats_writer import ThreadStatsWriter -from datadog_lambda.tags import _format_dd_lambda_layer_tag +from datadog_lambda.tags import dd_lambda_layer_tag class TestLambdaMetric(unittest.TestCase): @@ -23,12 +23,13 @@ def test_lambda_metric_tagged_with_dd_lambda_layer(self): lambda_metric("test", 1) lambda_metric("test", 1, 123, []) lambda_metric("test", 1, tags=["tag1:test"]) - expected_tag = _format_dd_lambda_layer_tag() self.mock_metric_lambda_stats.distribution.assert_has_calls( [ - call("test", 1, timestamp=None, tags=[expected_tag]), - call("test", 1, timestamp=123, tags=[expected_tag]), - call("test", 1, timestamp=None, tags=["tag1:test", expected_tag]), + call("test", 1, timestamp=None, tags=[dd_lambda_layer_tag]), + call("test", 1, timestamp=123, tags=[dd_lambda_layer_tag]), + call( + "test", 1, timestamp=None, tags=["tag1:test", dd_lambda_layer_tag] + ), ] ) @@ -37,9 +38,8 @@ def test_lambda_metric_tagged_with_dd_lambda_layer(self): def test_lambda_metric_flush_to_log_with_extension(self): os.environ["DD_FLUSH_TO_LOG"] = "True" lambda_metric("test", 1) - expected_tag = _format_dd_lambda_layer_tag() self.mock_metric_lambda_stats.distribution.assert_has_calls( - [call("test", 1, timestamp=None, tags=[expected_tag])] + [call("test", 1, timestamp=None, tags=[dd_lambda_layer_tag])] ) del os.environ["DD_FLUSH_TO_LOG"] diff --git a/tests/test_tags.py b/tests/test_tags.py index e50251c9..7a1ad86d 100644 --- a/tests/test_tags.py +++ b/tests/test_tags.py @@ -3,7 +3,7 @@ from unittest.mock import patch, MagicMock -from datadog_lambda.tags import parse_lambda_tags_from_arn, get_runtime_tag +from datadog_lambda.tags import parse_lambda_tags_from_arn def get_mock_context( @@ -63,6 +63,3 @@ def test_parse_lambda_tags_from_arn_alias(self): "resource:swf-hello-test:my_alias-1", ], ) - - def test_get_runtime_tag(self): - self.assertEqual(get_runtime_tag(), "runtime:python3.12") diff --git a/tests/test_wrapper.py b/tests/test_wrapper.py index bb26b661..6ac0951b 100644 --- a/tests/test_wrapper.py +++ b/tests/test_wrapper.py @@ -66,25 +66,27 @@ def setUp(self): self.mock_get_cold_start_tag.return_value = "cold_start:true" self.addCleanup(patcher.stop) - patcher = patch("sys.version_info", (3, 9, 10)) - self.mock_python_version_tuple = patcher.start() + patcher = patch("datadog_lambda.tags.runtime_tag", "runtime:python3.9") + self.mock_runtime_tag = patcher.start() self.addCleanup(patcher.stop) patcher = patch("datadog_lambda.metric.write_metric_point_to_stdout") self.mock_write_metric_point_to_stdout = patcher.start() self.addCleanup(patcher.stop) - patcher = patch("datadog_lambda.tags.get_library_version_tag") - self.mock_format_dd_lambda_layer_tag = patcher.start() + patcher = patch( + "datadog_lambda.tags.library_version_tag", "datadog_lambda:v6.6.6" + ) # Mock the layer version so we don't have to update tests on every version bump - self.mock_format_dd_lambda_layer_tag.return_value = "datadog_lambda:v6.6.6" + self.mock_library_version_tag = patcher.start() + self.addCleanup(patcher.stop) - patcher = patch("datadog_lambda.tags._format_dd_lambda_layer_tag") - self.mock_format_dd_lambda_layer_tag = patcher.start() - # Mock the layer version so we don't have to update tests on every version bump - self.mock_format_dd_lambda_layer_tag.return_value = ( - "dd_lambda_layer:datadog-python39_X.X.X" + patcher = patch( + "datadog_lambda.metric.dd_lambda_layer_tag", + "dd_lambda_layer:datadog-python39_X.X.X", ) + # Mock the layer version so we don't have to update tests on every version bump + self.mock_dd_lambda_layer_tag = patcher.start() self.addCleanup(patcher.stop) def test_datadog_lambda_wrapper(self): From a388918155c835c54eea14c9cf97d19f0174310e Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Mon, 1 Apr 2024 14:40:12 -0700 Subject: [PATCH 113/268] Do not recalculate enhanced metric setting each time. (#462) --- datadog_lambda/extension.py | 6 ++---- datadog_lambda/metric.py | 16 +++++----------- tests/test_wrapper.py | 6 +++--- 3 files changed, 10 insertions(+), 18 deletions(-) diff --git a/datadog_lambda/extension.py b/datadog_lambda/extension.py index 159048d7..79c0031a 100644 --- a/datadog_lambda/extension.py +++ b/datadog_lambda/extension.py @@ -1,5 +1,5 @@ import logging -from os import path +import os AGENT_URL = "http://127.0.0.1:8124/" FLUSH_PATH = "/lambda/flush" @@ -9,9 +9,7 @@ def is_extension_present(): - if path.exists(EXTENSION_PATH): - return True - return False + return os.path.exists(EXTENSION_PATH) def flush_extension(): diff --git a/datadog_lambda/metric.py b/datadog_lambda/metric.py index f02893dd..a49c6c14 100644 --- a/datadog_lambda/metric.py +++ b/datadog_lambda/metric.py @@ -32,6 +32,10 @@ flush_in_thread = os.environ.get("DD_FLUSH_IN_THREAD", "").lower() == "true" lambda_stats = ThreadStatsWriter(flush_in_thread) +enhanced_metrics_enabled = ( + os.environ.get("DD_ENHANCED_METRICS", "true").lower() == "true" +) + def lambda_metric(metric_name, value, timestamp=None, tags=None, force_async=False): """ @@ -90,16 +94,6 @@ def flush_stats(): lambda_stats.flush() -def are_enhanced_metrics_enabled(): - """Check env var to find if enhanced metrics should be submitted - - Returns: - boolean for whether enhanced metrics are enabled - """ - # DD_ENHANCED_METRICS defaults to true - return os.environ.get("DD_ENHANCED_METRICS", "true").lower() == "true" - - def submit_enhanced_metric(metric_name, lambda_context): """Submits the enhanced metric with the given name @@ -107,7 +101,7 @@ def submit_enhanced_metric(metric_name, lambda_context): metric_name (str): metric name w/o enhanced prefix i.e. "invocations" or "errors" lambda_context (dict): Lambda context dict passed to the function by AWS """ - if not are_enhanced_metrics_enabled(): + if not enhanced_metrics_enabled: logger.debug( "Not submitting enhanced metric %s because enhanced metrics are disabled", metric_name, diff --git a/tests/test_wrapper.py b/tests/test_wrapper.py index 6ac0951b..ff038c21 100644 --- a/tests/test_wrapper.py +++ b/tests/test_wrapper.py @@ -467,7 +467,9 @@ def lambda_handler(event, context): ) def test_no_enhanced_metrics_without_env_var(self): - os.environ["DD_ENHANCED_METRICS"] = "false" + patcher = patch("datadog_lambda.metric.enhanced_metrics_enabled", False) + patcher.start() + self.addCleanup(patcher.stop) @wrapper.datadog_lambda_wrapper def lambda_handler(event, context): @@ -480,8 +482,6 @@ def lambda_handler(event, context): self.mock_write_metric_point_to_stdout.assert_not_called() - del os.environ["DD_ENHANCED_METRICS"] - def test_only_one_wrapper_in_use(self): patcher = patch("datadog_lambda.wrapper.submit_invocations_metric") self.mock_submit_invocations_metric = patcher.start() From 06395b8403ac6964fcc980e6d23878c9c39ea802 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Wed, 3 Apr 2024 15:15:09 -0400 Subject: [PATCH 114/268] use sso for govcloud (#464) --- scripts/publish_prod.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/publish_prod.sh b/scripts/publish_prod.sh index f88ac5e2..aa53df71 100755 --- a/scripts/publish_prod.sh +++ b/scripts/publish_prod.sh @@ -85,11 +85,11 @@ if [ "$CONT" != "y" ]; then else echo "Ensuring you have access to the AWS GovCloud account" ddsaml2aws login -a govcloud-us1-fed-human-engineering - AWS_PROFILE=govcloud-us1-fed-human-engineering aws sts get-caller-identity + aws-vault exec sso-govcloud-us1-fed-engineering -- aws sts get-caller-identity echo "Publishing layers to GovCloud AWS regions" ddsaml2aws login -a govcloud-us1-fed-human-engineering - VERSION=$LAYER_VERSION AWS_PROFILE=govcloud-us1-fed-human-engineering ./scripts/publish_layers.sh + VERSION=$LAYER_VERSION aws-vault exec sso-govcloud-us1-fed-engineering -- ./scripts/publish_layers.sh fi echo "Answer 'n' if GitLab already did this" From 36610c1f4f763a90c42aa88bb6fbd415a5f3413e Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Fri, 5 Apr 2024 09:15:07 -0700 Subject: [PATCH 115/268] Reduce allocations during event parsing. (#463) * Reduce allocations during event parsing. * Simplify SQS/SNS data extraction logic. * Update snapshots. --- datadog_lambda/tracing.py | 323 ++++++++---------- .../logs/async-metrics_python310.log | 68 ++-- .../logs/async-metrics_python311.log | 70 ++-- .../logs/async-metrics_python312.log | 68 ++-- .../snapshots/logs/async-metrics_python38.log | 68 ++-- .../snapshots/logs/async-metrics_python39.log | 70 ++-- .../snapshots/logs/sync-metrics_python310.log | 70 ++-- .../snapshots/logs/sync-metrics_python311.log | 72 ++-- .../snapshots/logs/sync-metrics_python312.log | 70 ++-- .../snapshots/logs/sync-metrics_python38.log | 70 ++-- .../snapshots/logs/sync-metrics_python39.log | 70 ++-- 11 files changed, 497 insertions(+), 522 deletions(-) diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 43137622..58a45af3 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -66,6 +66,8 @@ telemetry_writer.enable() +is_lambda_context = os.environ.get(XrayDaemon.FUNCTION_NAME_HEADER_NAME) != "" + propagator = HTTPPropagator() DD_TRACE_JAVA_TRACE_ID_PADDING = "00000000" @@ -93,7 +95,7 @@ def _convert_xray_sampling(xray_sampled): def _get_xray_trace_context(): - if not is_lambda_context(): + if not is_lambda_context: return None xray_trace_entity = parse_xray_header( @@ -109,11 +111,7 @@ def _get_xray_trace_context(): logger.debug( "Converted trace context %s from X-Ray segment %s", trace_context, - ( - xray_trace_entity["trace_id"], - xray_trace_entity["parent_id"], - xray_trace_entity["sampled"], - ), + xray_trace_entity, ) return trace_context @@ -124,7 +122,9 @@ def _get_dd_trace_py_context(): return None logger.debug( - "found dd trace context: %s", (span.context.trace_id, span.context.span_id) + "found dd trace context: trace_id=%s span_id=%s", + span.context.trace_id, + span.context.span_id, ) return span.context @@ -235,37 +235,31 @@ def extract_context_from_sqs_or_sns_event_or_context(event, lambda_context): # logic to deal with SNS => SQS event if "body" in first_record: - body_str = first_record.get("body", {}) + body_str = first_record.get("body") try: body = json.loads(body_str) if body.get("Type", "") == "Notification" and "TopicArn" in body: logger.debug("Found SNS message inside SQS event") first_record = get_first_record(create_sns_event(body)) except Exception: - first_record = event.get("Records")[0] pass - msg_attributes = first_record.get( - "messageAttributes", - first_record.get("Sns", {}).get("MessageAttributes", {}), - ) - dd_payload = msg_attributes.get("_datadog", {}) + msg_attributes = first_record.get("messageAttributes") + if msg_attributes is None: + sns_record = first_record.get("Sns") or {} + msg_attributes = sns_record.get("MessageAttributes") or {} + dd_payload = msg_attributes.get("_datadog") if dd_payload: # SQS uses dataType and binaryValue/stringValue # SNS uses Type and Value dd_json_data = None - dd_json_data_type = dd_payload.get("Type", dd_payload.get("dataType", "")) + dd_json_data_type = dd_payload.get("Type") or dd_payload.get("dataType") if dd_json_data_type == "Binary": - dd_json_data = dd_payload.get( - "binaryValue", - dd_payload.get("Value", r"{}"), - ) - dd_json_data = base64.b64decode(dd_json_data) + dd_json_data = dd_payload.get("binaryValue") or dd_payload.get("Value") + if dd_json_data: + dd_json_data = base64.b64decode(dd_json_data) elif dd_json_data_type == "String": - dd_json_data = dd_payload.get( - "stringValue", - dd_payload.get("Value", r"{}"), - ) + dd_json_data = dd_payload.get("stringValue") or dd_payload.get("Value") else: logger.debug( "Datadog Lambda Python only supports extracting trace" @@ -278,23 +272,25 @@ def extract_context_from_sqs_or_sns_event_or_context(event, lambda_context): else: # Handle case where trace context is injected into attributes.AWSTraceHeader # example: Root=1-654321ab-000000001234567890abcdef;Parent=0123456789abcdef;Sampled=1 - x_ray_header = first_record.get("attributes", {}).get("AWSTraceHeader") - if x_ray_header: - x_ray_context = parse_xray_header(x_ray_header) - trace_id_parts = x_ray_context.get("trace_id", "").split("-") - if len(trace_id_parts) > 2 and trace_id_parts[2].startswith( - DD_TRACE_JAVA_TRACE_ID_PADDING - ): - # If it starts with eight 0's padding, - # then this AWSTraceHeader contains Datadog injected trace context - logger.debug( - "Found dd-trace injected trace context from AWSTraceHeader" - ) - return Context( - trace_id=int(trace_id_parts[2][8:], 16), - span_id=int(int(x_ray_context["parent_id"], 16)), - sampling_priority=float(x_ray_context["sampled"]), - ) + attrs = first_record.get("attributes") + if attrs: + x_ray_header = attrs.get("AWSTraceHeader") + if x_ray_header: + x_ray_context = parse_xray_header(x_ray_header) + trace_id_parts = x_ray_context.get("trace_id", "").split("-") + if len(trace_id_parts) > 2 and trace_id_parts[2].startswith( + DD_TRACE_JAVA_TRACE_ID_PADDING + ): + # If it starts with eight 0's padding, + # then this AWSTraceHeader contains Datadog injected trace context + logger.debug( + "Found dd-trace injected trace context from AWSTraceHeader" + ) + return Context( + trace_id=int(trace_id_parts[2][8:], 16), + span_id=int(x_ray_context["parent_id"], 16), + sampling_priority=float(x_ray_context["sampled"]), + ) return extract_context_from_lambda_context(lambda_context) except Exception as e: logger.debug("The trace extractor returned with error %s", e) @@ -339,21 +335,22 @@ def extract_context_from_kinesis_event(event, lambda_context): """ try: record = get_first_record(event) - data = record.get("kinesis", {}).get("data", None) + kinesis = record.get("kinesis") + if not kinesis: + return extract_context_from_lambda_context(lambda_context) + data = kinesis.get("data") if data: b64_bytes = data.encode("ascii") str_bytes = base64.b64decode(b64_bytes) data_str = str_bytes.decode("ascii") data_obj = json.loads(data_str) dd_ctx = data_obj.get("_datadog") - - if not dd_ctx: - return extract_context_from_lambda_context(lambda_context) - - return propagator.extract(dd_ctx) + if dd_ctx: + return propagator.extract(dd_ctx) except Exception as e: logger.debug("The trace extractor returned with error %s", e) - return extract_context_from_lambda_context(lambda_context) + + return extract_context_from_lambda_context(lambda_context) def _deterministic_md5_hash(s: str) -> int: @@ -380,7 +377,7 @@ def extract_context_from_step_functions(event, lambda_context): state_entered_time = event.get("State").get("EnteredTime") trace_id = _deterministic_md5_hash(execution_id) parent_id = _deterministic_md5_hash( - execution_id + "#" + state_name + "#" + state_entered_time + f"{execution_id}#{state_name}#{state_entered_time}" ) sampling_priority = SamplingPriority.AUTO_KEEP return Context( @@ -396,11 +393,7 @@ def extract_context_custom_extractor(extractor, event, lambda_context): Extract Datadog trace context using a custom trace extractor function """ try: - ( - trace_id, - parent_id, - sampling_priority, - ) = extractor(event, lambda_context) + trace_id, parent_id, sampling_priority = extractor(event, lambda_context) return Context( trace_id=int(trace_id), span_id=int(parent_id), @@ -426,15 +419,20 @@ def is_authorizer_response(response) -> bool: def get_injected_authorizer_data(event, is_http_api) -> dict: try: - authorizer_headers = event.get("requestContext", {}).get("authorizer") + req_ctx = event.get("requestContext") + if not req_ctx: + return None + authorizer_headers = req_ctx.get("authorizer") if not authorizer_headers: return None - dd_data_raw = ( - authorizer_headers.get("lambda", {}).get("_datadog") - if is_http_api - else authorizer_headers.get("_datadog") - ) + if is_http_api: + lambda_hdr = authorizer_headers.get("lambda") + if not lambda_hdr: + return None + dd_data_raw = lambda_hdr.get("_datadog") + else: + dd_data_raw = authorizer_headers.get("_datadog") if not dd_data_raw: return None @@ -448,16 +446,19 @@ def get_injected_authorizer_data(event, is_http_api) -> dict: # that case, we use the injected Authorizing_Request_Id to tell if it's cached. But token # authorizers don't pass on the requestId. The Authorizing_Request_Id can't work for all # cases neither. As a result, we combine both methods as shown below. - if authorizer_headers.get("integrationLatency", 0) > 0 or event.get( - "requestContext", {} - ).get("requestId") == injected_data.get(Headers.Authorizing_Request_Id): + if authorizer_headers.get("integrationLatency", 0) > 0: return injected_data - else: + req_ctx = event.get("requestContext") + if not req_ctx: return None + if req_ctx.get("requestId") == injected_data.get( + Headers.Authorizing_Request_Id + ): + return injected_data + return None except Exception as e: logger.debug("Failed to check if invocated by an authorizer. error %s", e) - return None def extract_dd_trace_context( @@ -569,7 +570,7 @@ def set_correlation_ids(): TODO: Remove me when Datadog tracer is natively supported in Lambda. """ - if not is_lambda_context(): + if not is_lambda_context: logger.debug("set_correlation_ids is only supported in LambdaContext") return if dd_tracing_enabled: @@ -613,14 +614,6 @@ def inject_correlation_ids(): logger.debug("logs injection configured") -def is_lambda_context(): - """ - Return True if the X-Ray context is `LambdaContext`, rather than the - regular `Context` (e.g., when testing lambda functions locally). - """ - return os.environ.get(XrayDaemon.FUNCTION_NAME_HEADER_NAME, "") != "" - - def set_dd_trace_py_root(trace_context_source, merge_xray_traces): if trace_context_source == TraceContextSource.EVENT or merge_xray_traces: context = Context( @@ -635,8 +628,9 @@ def set_dd_trace_py_root(trace_context_source, merge_xray_traces): tracer.context_provider.activate(context) logger.debug( - "Set dd trace root context to: %s", - (context.trace_id, context.span_id), + "Set dd trace root context to: trace_id=%s span_id=%s", + context.trace_id, + context.span_id, ) @@ -697,9 +691,7 @@ def create_inferred_span( event_source.to_string(), e, ) - return None logger.debug("Unable to infer a span: unknown event type") - return None def create_service_mapping(val): @@ -721,19 +713,21 @@ def determine_service_name(service_mapping, specific_key, generic_key, default_v return service_name -service_mapping = {} # Initialization code service_mapping_str = os.getenv("DD_SERVICE_MAPPING", "") service_mapping = create_service_mapping(service_mapping_str) +_dd_origin = {"_dd.origin": "lambda"} + def create_inferred_span_from_lambda_function_url_event(event, context): request_context = event.get("requestContext") api_id = request_context.get("apiId") domain = request_context.get("domainName") service_name = determine_service_name(service_mapping, api_id, "lambda_url", domain) - method = request_context.get("http", {}).get("method") - path = request_context.get("http", {}).get("path") + http = request_context.get("http") + method = http.get("method") if http else None + path = http.get("path") if http else None resource = f"{method} {path}" tags = { "operation_name": "aws.lambda.url", @@ -744,16 +738,11 @@ def create_inferred_span_from_lambda_function_url_event(event, context): "request_id": context.aws_request_id, } request_time_epoch = request_context.get("timeEpoch") - args = { - "service": service_name, - "resource": resource, - "span_type": "http", - } - tracer.set_tags( - {"_dd.origin": "lambda"} - ) # function urls don't count as lambda_inferred, + tracer.set_tags(_dd_origin) # function urls don't count as lambda_inferred, # because they're in the same service as the inferring lambda function - span = tracer.trace("aws.lambda.url", **args) + span = tracer.trace( + "aws.lambda.url", service=service_name, resource=resource, span_type="http" + ) InferredSpanInfo.set_tags(tags, tag_source="self", synchronicity="sync") if span: span.set_tags(tags) @@ -762,7 +751,10 @@ def create_inferred_span_from_lambda_function_url_event(event, context): def is_api_gateway_invocation_async(event): - return event.get("headers", {}).get("X-Amz-Invocation-Type") == "Event" + hdrs = event.get("headers") + if not hdrs: + return False + return hdrs.get("X-Amz-Invocation-Type") == "Event" def insert_upstream_authorizer_span( @@ -862,7 +854,7 @@ def create_inferred_span_from_api_gateway_websocket_event( "resource": endpoint, "span_type": "web", } - tracer.set_tags({"_dd.origin": "lambda"}) + tracer.set_tags(_dd_origin) upstream_authorizer_span = None finish_time_ns = None if decode_authorizer_context: @@ -916,7 +908,7 @@ def create_inferred_span_from_api_gateway_event( "resource": resource, "span_type": "http", } - tracer.set_tags({"_dd.origin": "lambda"}) + tracer.set_tags(_dd_origin) upstream_authorizer_span = None finish_time_ns = None if decode_authorizer_context: @@ -956,7 +948,8 @@ def create_inferred_span_from_http_api_event( service_name = determine_service_name( service_mapping, api_id, "lambda_api_gateway", domain ) - method = request_context.get("http", {}).get("method") + http = request_context.get("http") or {} + method = http.get("method") path = event.get("rawPath") resource_path = _get_resource_path(event, request_context) resource = f"{method} {resource_path}" @@ -964,10 +957,10 @@ def create_inferred_span_from_http_api_event( "operation_name": "aws.httpapi", "endpoint": path, "http.url": domain + path, - "http.method": request_context.get("http", {}).get("method"), - "http.protocol": request_context.get("http", {}).get("protocol"), - "http.source_ip": request_context.get("http", {}).get("sourceIp"), - "http.user_agent": request_context.get("http", {}).get("userAgent"), + "http.method": http.get("method"), + "http.protocol": http.get("protocol"), + "http.source_ip": http.get("sourceIp"), + "http.user_agent": http.get("userAgent"), "resource_names": resource, "request_id": context.aws_request_id, "apiid": api_id, @@ -979,12 +972,7 @@ def create_inferred_span_from_http_api_event( InferredSpanInfo.set_tags(tags, tag_source="self", synchronicity="async") else: InferredSpanInfo.set_tags(tags, tag_source="self", synchronicity="sync") - args = { - "service": service_name, - "resource": resource, - "span_type": "http", - } - tracer.set_tags({"_dd.origin": "lambda"}) + tracer.set_tags(_dd_origin) inferred_span_start_ns = request_time_epoch_ms * 1e6 if decode_authorizer_context: injected_authorizer_data = get_injected_authorizer_data(event, True) @@ -992,7 +980,9 @@ def create_inferred_span_from_http_api_event( inferred_span_start_ns = injected_authorizer_data.get( Headers.Parent_Span_Finish_Time ) - span = tracer.trace("aws.httpapi", **args) + span = tracer.trace( + "aws.httpapi", service=service_name, resource=resource, span_type="http" + ) if span: span.set_tags(tags) span.start_ns = int(inferred_span_start_ns) @@ -1008,21 +998,17 @@ def create_inferred_span_from_sqs_event(event, context): service_name = determine_service_name( service_mapping, queue_name, "lambda_sqs", "sqs" ) + attrs = event_record.get("attributes") or {} tags = { "operation_name": "aws.sqs", "resource_names": queue_name, "queuename": queue_name, "event_source_arn": event_source_arn, "receipt_handle": event_record.get("receiptHandle"), - "sender_id": event_record.get("attributes", {}).get("SenderId"), + "sender_id": attrs.get("SenderId"), } InferredSpanInfo.set_tags(tags, tag_source="self", synchronicity="async") - request_time_epoch = event_record.get("attributes", {}).get("SentTimestamp") - args = { - "service": service_name, - "resource": queue_name, - "span_type": "web", - } + request_time_epoch = attrs.get("SentTimestamp") start_time = int(request_time_epoch) / 1000 upstream_span = None @@ -1058,8 +1044,10 @@ def create_inferred_span_from_sqs_event(event, context): # trace context needs to be set again as it is reset # when sns_span.finish executes tracer.context_provider.activate(trace_ctx) - tracer.set_tags({"_dd.origin": "lambda"}) - span = tracer.trace("aws.sqs", **args) + tracer.set_tags(_dd_origin) + span = tracer.trace( + "aws.sqs", service=service_name, resource=queue_name, span_type="web" + ) if span: span.set_tags(tags) span.start = start_time @@ -1071,8 +1059,8 @@ def create_inferred_span_from_sqs_event(event, context): def create_inferred_span_from_sns_event(event, context): event_record = get_first_record(event) - sns_message = event_record.get("Sns") - topic_arn = event_record.get("Sns", {}).get("TopicArn") + sns_message = event_record.get("Sns") or {} + topic_arn = sns_message.get("TopicArn") topic_name = topic_arn.split(":")[-1] service_name = determine_service_name( service_mapping, topic_name, "lambda_sns", "sns" @@ -1087,21 +1075,19 @@ def create_inferred_span_from_sns_event(event, context): } # Subject not available in SNS => SQS scenario - if "Subject" in sns_message and sns_message["Subject"]: - tags["subject"] = sns_message.get("Subject") + subject = sns_message.get("Subject") + if subject: + tags["subject"] = subject InferredSpanInfo.set_tags(tags, tag_source="self", synchronicity="async") sns_dt_format = "%Y-%m-%dT%H:%M:%S.%fZ" - timestamp = event_record.get("Sns", {}).get("Timestamp") + timestamp = sns_message.get("Timestamp") dt = datetime.strptime(timestamp, sns_dt_format) - args = { - "service": service_name, - "resource": topic_name, - "span_type": "web", - } - tracer.set_tags({"_dd.origin": "lambda"}) - span = tracer.trace("aws.sns", **args) + tracer.set_tags(_dd_origin) + span = tracer.trace( + "aws.sns", service=service_name, resource=topic_name, span_type="web" + ) if span: span.set_tags(tags) span.start = dt.replace(tzinfo=timezone.utc).timestamp() @@ -1117,6 +1103,7 @@ def create_inferred_span_from_kinesis_event(event, context): service_name = determine_service_name( service_mapping, stream_name, "lambda_kinesis", "kinesis" ) + kinesis = event_record.get("kinesis") or {} tags = { "operation_name": "aws.kinesis", "resource_names": stream_name, @@ -1126,20 +1113,15 @@ def create_inferred_span_from_kinesis_event(event, context): "event_id": event_id, "event_name": event_record.get("eventName"), "event_version": event_record.get("eventVersion"), - "partition_key": event_record.get("kinesis", {}).get("partitionKey"), + "partition_key": kinesis.get("partitionKey"), } InferredSpanInfo.set_tags(tags, tag_source="self", synchronicity="async") - request_time_epoch = event_record.get("kinesis", {}).get( - "approximateArrivalTimestamp" - ) + request_time_epoch = kinesis.get("approximateArrivalTimestamp") - args = { - "service": service_name, - "resource": stream_name, - "span_type": "web", - } - tracer.set_tags({"_dd.origin": "lambda"}) - span = tracer.trace("aws.kinesis", **args) + tracer.set_tags(_dd_origin) + span = tracer.trace( + "aws.kinesis", service=service_name, resource=stream_name, span_type="web" + ) if span: span.set_tags(tags) span.start = request_time_epoch @@ -1153,7 +1135,7 @@ def create_inferred_span_from_dynamodb_event(event, context): service_name = determine_service_name( service_mapping, table_name, "lambda_dynamodb", "dynamodb" ) - dynamodb_message = event_record.get("dynamodb") + dynamodb_message = event_record.get("dynamodb") or {} tags = { "operation_name": "aws.dynamodb", "resource_names": table_name, @@ -1166,16 +1148,11 @@ def create_inferred_span_from_dynamodb_event(event, context): "size_bytes": str(dynamodb_message.get("SizeBytes")), } InferredSpanInfo.set_tags(tags, synchronicity="async", tag_source="self") - request_time_epoch = event_record.get("dynamodb", {}).get( - "ApproximateCreationDateTime" + request_time_epoch = dynamodb_message.get("ApproximateCreationDateTime") + tracer.set_tags(_dd_origin) + span = tracer.trace( + "aws.dynamodb", service=service_name, resource=table_name, span_type="web" ) - args = { - "service": service_name, - "resource": table_name, - "span_type": "web", - } - tracer.set_tags({"_dd.origin": "lambda"}) - span = tracer.trace("aws.dynamodb", **args) if span: span.set_tags(tags) @@ -1185,7 +1162,10 @@ def create_inferred_span_from_dynamodb_event(event, context): def create_inferred_span_from_s3_event(event, context): event_record = get_first_record(event) - bucket_name = event_record.get("s3", {}).get("bucket", {}).get("name") + s3 = event_record.get("s3") or {} + bucket = s3.get("bucket") or {} + obj = s3.get("object") or {} + bucket_name = bucket.get("name") service_name = determine_service_name( service_mapping, bucket_name, "lambda_s3", "s3" ) @@ -1194,23 +1174,20 @@ def create_inferred_span_from_s3_event(event, context): "resource_names": bucket_name, "event_name": event_record.get("eventName"), "bucketname": bucket_name, - "bucket_arn": event_record.get("s3", {}).get("bucket", {}).get("arn"), - "object_key": event_record.get("s3", {}).get("object", {}).get("key"), - "object_size": str(event_record.get("s3", {}).get("object", {}).get("size")), - "object_etag": event_record.get("s3", {}).get("object", {}).get("eTag"), + "bucket_arn": bucket.get("arn"), + "object_key": obj.get("key"), + "object_size": str(obj.get("size")), + "object_etag": obj.get("eTag"), } InferredSpanInfo.set_tags(tags, synchronicity="async", tag_source="self") dt_format = "%Y-%m-%dT%H:%M:%S.%fZ" timestamp = event_record.get("eventTime") dt = datetime.strptime(timestamp, dt_format) - args = { - "service": service_name, - "resource": bucket_name, - "span_type": "web", - } - tracer.set_tags({"_dd.origin": "lambda"}) - span = tracer.trace("aws.s3", **args) + tracer.set_tags(_dd_origin) + span = tracer.trace( + "aws.s3", service=service_name, resource=bucket_name, span_type="web" + ) if span: span.set_tags(tags) span.start = dt.replace(tzinfo=timezone.utc).timestamp() @@ -1236,13 +1213,10 @@ def create_inferred_span_from_eventbridge_event(event, context): timestamp = event.get("time") dt = datetime.strptime(timestamp, dt_format) - args = { - "service": service_name, - "resource": source, - "span_type": "web", - } - tracer.set_tags({"_dd.origin": "lambda"}) - span = tracer.trace("aws.eventbridge", **args) + tracer.set_tags(_dd_origin) + span = tracer.trace( + "aws.eventbridge", service=service_name, resource=source, span_type="web" + ) if span: span.set_tags(tags) span.start = dt.replace(tzinfo=timezone.utc).timestamp() @@ -1259,7 +1233,7 @@ def create_function_execution_span( trigger_tags, parent_span=None, ): - tags = {} + tags = None if context: function_arn = (context.invoked_function_arn or "").lower() tk = function_arn.split(":") @@ -1278,18 +1252,19 @@ def create_function_execution_span( "dd_trace": ddtrace_version, "span.name": "aws.lambda", } + tags = tags or {} if is_proactive_init: tags["proactive_initialization"] = str(is_proactive_init).lower() if trace_context_source == TraceContextSource.XRAY and merge_xray_traces: tags["_dd.parent_source"] = trace_context_source tags.update(trigger_tags) - args = { - "service": "aws.lambda", - "resource": function_name, - "span_type": "serverless", - } - tracer.set_tags({"_dd.origin": "lambda"}) - span = tracer.trace("aws.lambda", **args) + tracer.set_tags(_dd_origin) + span = tracer.trace( + "aws.lambda", + service="aws.lambda", + resource=function_name, + span_type="serverless", + ) if span: span.set_tags(tags) if parent_span: diff --git a/tests/integration/snapshots/logs/async-metrics_python310.log b/tests/integration/snapshots/logs/async-metrics_python310.log index e2101885..bec8aa8a 100644 --- a/tests/integration/snapshots/logs/async-metrics_python310.log +++ b/tests/integration/snapshots/logs/async-metrics_python310.log @@ -67,11 +67,11 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "http.status_code": "200", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -237,16 +237,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -397,11 +397,11 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -566,16 +566,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "http.status_code": "200", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "http" }, @@ -736,16 +736,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -899,16 +899,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -1063,16 +1063,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -1226,16 +1226,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -1395,16 +1395,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "http.status_code": "200", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python311.log b/tests/integration/snapshots/logs/async-metrics_python311.log index 8d5419c1..1e6a384d 100644 --- a/tests/integration/snapshots/logs/async-metrics_python311.log +++ b/tests/integration/snapshots/logs/async-metrics_python311.log @@ -67,11 +67,11 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "http.status_code": "200", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -237,16 +237,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -397,11 +397,11 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -566,16 +566,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "http.status_code": "200", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "http" }, @@ -708,6 +708,7 @@ START } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +END Duration: XXXX ms Memory Used: XXXX MB { "traces": [ [ @@ -736,16 +737,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -834,7 +835,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -END Duration: XXXX ms Memory Used: XXXX MB START { "m": "aws.lambda.enhanced.invocations", @@ -899,16 +899,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -1063,16 +1063,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -1226,16 +1226,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -1395,16 +1395,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "http.status_code": "200", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python312.log b/tests/integration/snapshots/logs/async-metrics_python312.log index 0132e54e..fdf90e98 100644 --- a/tests/integration/snapshots/logs/async-metrics_python312.log +++ b/tests/integration/snapshots/logs/async-metrics_python312.log @@ -67,11 +67,11 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "http.status_code": "200", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -237,16 +237,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -397,11 +397,11 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -566,16 +566,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "http.status_code": "200", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "http" }, @@ -736,16 +736,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -899,16 +899,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -1063,16 +1063,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -1226,16 +1226,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -1395,16 +1395,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "http.status_code": "200", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python38.log b/tests/integration/snapshots/logs/async-metrics_python38.log index e5b755ac..50a9f700 100644 --- a/tests/integration/snapshots/logs/async-metrics_python38.log +++ b/tests/integration/snapshots/logs/async-metrics_python38.log @@ -67,11 +67,11 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "http.status_code": "200", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -237,16 +237,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -397,11 +397,11 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -566,16 +566,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "http.status_code": "200", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "http" }, @@ -736,16 +736,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -899,16 +899,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -1063,16 +1063,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -1226,16 +1226,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -1395,16 +1395,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "http.status_code": "200", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python39.log b/tests/integration/snapshots/logs/async-metrics_python39.log index d02e097d..d411dd1e 100644 --- a/tests/integration/snapshots/logs/async-metrics_python39.log +++ b/tests/integration/snapshots/logs/async-metrics_python39.log @@ -67,11 +67,11 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "http.status_code": "200", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -237,16 +237,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -397,11 +397,11 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -566,16 +566,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "http.status_code": "200", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "http" }, @@ -736,16 +736,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -899,16 +899,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -1037,6 +1037,7 @@ START } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +END Duration: XXXX ms Memory Used: XXXX MB { "traces": [ [ @@ -1063,16 +1064,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -1161,7 +1162,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -END Duration: XXXX ms Memory Used: XXXX MB START { "m": "aws.lambda.enhanced.invocations", @@ -1226,16 +1226,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -1395,16 +1395,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "http.status_code": "200", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, diff --git a/tests/integration/snapshots/logs/sync-metrics_python310.log b/tests/integration/snapshots/logs/sync-metrics_python310.log index e97b0cb2..97a0cf4d 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python310.log +++ b/tests/integration/snapshots/logs/sync-metrics_python310.log @@ -47,11 +47,11 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "http.status_code": "200", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -236,16 +236,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -415,16 +415,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -603,16 +603,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "http.status_code": "200", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "http" }, @@ -792,16 +792,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -974,16 +974,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -1157,16 +1157,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -1339,16 +1339,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -1527,16 +1527,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "http.status_code": "200", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, diff --git a/tests/integration/snapshots/logs/sync-metrics_python311.log b/tests/integration/snapshots/logs/sync-metrics_python311.log index 84161ca2..bfb38df9 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python311.log +++ b/tests/integration/snapshots/logs/sync-metrics_python311.log @@ -47,11 +47,11 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "http.status_code": "200", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -236,16 +236,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -415,16 +415,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -603,16 +603,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "http.status_code": "200", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "http" }, @@ -792,16 +792,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -974,16 +974,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -1073,6 +1073,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] } HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +END Duration: XXXX ms Memory Used: XXXX MB { "traces": [ [ @@ -1111,7 +1112,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept ] ] } -END Duration: XXXX ms Memory Used: XXXX MB START { "m": "aws.lambda.enhanced.invocations", @@ -1157,16 +1157,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -1339,16 +1339,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -1527,16 +1527,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "http.status_code": "200", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, diff --git a/tests/integration/snapshots/logs/sync-metrics_python312.log b/tests/integration/snapshots/logs/sync-metrics_python312.log index 8b4c74cf..e9e3e339 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python312.log +++ b/tests/integration/snapshots/logs/sync-metrics_python312.log @@ -47,11 +47,11 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "http.status_code": "200", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -236,16 +236,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -415,16 +415,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -603,16 +603,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "http.status_code": "200", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "http" }, @@ -792,16 +792,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -974,16 +974,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -1157,16 +1157,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -1339,16 +1339,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -1527,16 +1527,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "http.status_code": "200", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, diff --git a/tests/integration/snapshots/logs/sync-metrics_python38.log b/tests/integration/snapshots/logs/sync-metrics_python38.log index 4fe60af6..e9e6eea6 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python38.log +++ b/tests/integration/snapshots/logs/sync-metrics_python38.log @@ -47,11 +47,11 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "http.status_code": "200", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -236,16 +236,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -415,16 +415,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -603,16 +603,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "http.status_code": "200", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "http" }, @@ -792,16 +792,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -974,16 +974,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -1157,16 +1157,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -1339,16 +1339,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -1527,16 +1527,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "http.status_code": "200", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, diff --git a/tests/integration/snapshots/logs/sync-metrics_python39.log b/tests/integration/snapshots/logs/sync-metrics_python39.log index 98d74ed6..ebc39ab5 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python39.log +++ b/tests/integration/snapshots/logs/sync-metrics_python39.log @@ -47,11 +47,11 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "http.status_code": "200", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -236,16 +236,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -415,16 +415,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -603,16 +603,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "http.status_code": "200", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "http" }, @@ -792,16 +792,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -974,16 +974,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -1157,16 +1157,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -1339,16 +1339,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -1527,16 +1527,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "http.status_code": "200", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, From cfeed1787b23a6613f549c4d3bc4062036fa5dfe Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Fri, 5 Apr 2024 11:32:40 -0700 Subject: [PATCH 116/268] Move get_mock_context method to central utils file. (#465) --- tests/test_module_name.py | 2 -- tests/test_tags.py | 19 +++++++------------ tests/test_tracing.py | 28 ++++------------------------ tests/test_trigger.py | 8 ++------ tests/test_wrapper.py | 32 +++++++++----------------------- tests/utils.py | 26 ++++++++++++++++++++++++++ 6 files changed, 48 insertions(+), 67 deletions(-) create mode 100644 tests/utils.py diff --git a/tests/test_module_name.py b/tests/test_module_name.py index 21396465..a6faf829 100644 --- a/tests/test_module_name.py +++ b/tests/test_module_name.py @@ -1,7 +1,5 @@ import unittest -from unittest.mock import patch, call, MagicMock - from datadog_lambda.module_name import modify_module_name diff --git a/tests/test_tags.py b/tests/test_tags.py index 7a1ad86d..07daa8e0 100644 --- a/tests/test_tags.py +++ b/tests/test_tags.py @@ -1,19 +1,10 @@ import unittest -from unittest.mock import patch, MagicMock - +from unittest.mock import patch from datadog_lambda.tags import parse_lambda_tags_from_arn - -def get_mock_context( - invoked_function_arn="arn:aws:lambda:us-east-1:1234597598159:function:swf-hello-test:$Latest", - function_version="1", -): - lambda_context = MagicMock() - lambda_context.invoked_function_arn = invoked_function_arn - lambda_context.function_version = function_version - return lambda_context +from tests.utils import get_mock_context class TestMetricTags(unittest.TestCase): @@ -23,8 +14,12 @@ def setUp(self): self.addCleanup(patcher.stop) def test_parse_lambda_tags_from_arn_latest(self): + lambda_context = get_mock_context() + lambda_context.invoked_function_arn = ( + "arn:aws:lambda:us-east-1:1234597598159:function:swf-hello-test:$Latest" + ) self.assertListEqual( - parse_lambda_tags_from_arn(get_mock_context()), + parse_lambda_tags_from_arn(lambda_context), [ "region:us-east-1", "account_id:1234597598159", diff --git a/tests/test_tracing.py b/tests/test_tracing.py index 0f7b84b4..296bd0dc 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -5,7 +5,7 @@ import os import unittest -from unittest.mock import MagicMock, Mock, patch, call +from unittest.mock import Mock, patch, call import ddtrace @@ -39,6 +39,9 @@ ) from datadog_lambda.trigger import EventTypes +from tests.utils import get_mock_context + + function_arn = "arn:aws:lambda:us-west-1:123457598159:function:python-layer-test" fake_xray_header_value = ( @@ -50,29 +53,6 @@ event_samples = "tests/event_samples/" -class ClientContext(object): - def __init__(self, custom=None): - self.custom = custom - - -def get_mock_context( - aws_request_id="request-id-1", - memory_limit_in_mb="256", - invoked_function_arn=function_arn, - function_version="1", - function_name="Function", - custom=None, -): - lambda_context = MagicMock() - lambda_context.aws_request_id = aws_request_id - lambda_context.memory_limit_in_mb = memory_limit_in_mb - lambda_context.invoked_function_arn = invoked_function_arn - lambda_context.function_version = function_version - lambda_context.function_name = function_name - lambda_context.client_context = ClientContext(custom) - return lambda_context - - def with_trace_propagation_style(style): style_list = list(style.split(",")) diff --git a/tests/test_trigger.py b/tests/test_trigger.py index 2f514811..59178b1e 100644 --- a/tests/test_trigger.py +++ b/tests/test_trigger.py @@ -11,16 +11,12 @@ extract_http_status_code_tag, ) +from tests.utils import get_mock_context + event_samples = "tests/event_samples/" function_arn = "arn:aws:lambda:us-west-1:123457598159:function:python-layer-test" -def get_mock_context(invoked_function_arn=function_arn): - lambda_context = MagicMock() - lambda_context.invoked_function_arn = invoked_function_arn - return lambda_context - - class TestGetEventSourceAndARN(unittest.TestCase): def test_event_source_api_gateway(self): event_sample_source = "api-gateway" diff --git a/tests/test_wrapper.py b/tests/test_wrapper.py index ff038c21..b7058e11 100644 --- a/tests/test_wrapper.py +++ b/tests/test_wrapper.py @@ -3,7 +3,7 @@ import os import unittest -from unittest.mock import patch, call, ANY, MagicMock +from unittest.mock import patch, call, ANY from datadog_lambda.constants import TraceHeader import datadog_lambda.wrapper as wrapper @@ -12,21 +12,7 @@ from ddtrace import Span, tracer from ddtrace.internal.constants import MAX_UINT_64BITS - -def get_mock_context( - aws_request_id="request-id-1", - memory_limit_in_mb="256", - invoked_function_arn="arn:aws:lambda:us-west-1:123457598159:function:python-layer-test:1", - function_version="1", - client_context={}, -): - lambda_context = MagicMock() - lambda_context.aws_request_id = aws_request_id - lambda_context.memory_limit_in_mb = memory_limit_in_mb - lambda_context.invoked_function_arn = invoked_function_arn - lambda_context.function_version = function_version - lambda_context.client_context = client_context - return lambda_context +from tests.utils import get_mock_context class TestDatadogLambdaWrapper(unittest.TestCase): @@ -232,7 +218,7 @@ def lambda_handler(event, context): "region:us-west-1", "account_id:123457598159", "functionname:python-layer-test", - "resource:python-layer-test:1", + "resource:python-layer-test", "cold_start:true", "memorysize:256", "runtime:python3.9", @@ -263,7 +249,7 @@ def lambda_handler(event, context): "region:us-west-1", "account_id:123457598159", "functionname:python-layer-test", - "resource:python-layer-test:1", + "resource:python-layer-test", "cold_start:true", "memorysize:256", "runtime:python3.9", @@ -279,7 +265,7 @@ def lambda_handler(event, context): "region:us-west-1", "account_id:123457598159", "functionname:python-layer-test", - "resource:python-layer-test:1", + "resource:python-layer-test", "cold_start:true", "memorysize:256", "runtime:python3.9", @@ -318,7 +304,7 @@ def lambda_handler(event, context): "region:us-west-1", "account_id:123457598159", "functionname:python-layer-test", - "resource:python-layer-test:1", + "resource:python-layer-test", "cold_start:true", "memorysize:256", "runtime:python3.9", @@ -334,7 +320,7 @@ def lambda_handler(event, context): "region:us-west-1", "account_id:123457598159", "functionname:python-layer-test", - "resource:python-layer-test:1", + "resource:python-layer-test", "cold_start:true", "memorysize:256", "runtime:python3.9", @@ -370,7 +356,7 @@ def lambda_handler(event, context): "region:us-west-1", "account_id:123457598159", "functionname:python-layer-test", - "resource:python-layer-test:1", + "resource:python-layer-test", "cold_start:true", "memorysize:256", "runtime:python3.9", @@ -386,7 +372,7 @@ def lambda_handler(event, context): "region:us-west-1", "account_id:123457598159", "functionname:python-layer-test", - "resource:python-layer-test:1", + "resource:python-layer-test", "cold_start:false", "memorysize:256", "runtime:python3.9", diff --git a/tests/utils.py b/tests/utils.py new file mode 100644 index 00000000..71060d46 --- /dev/null +++ b/tests/utils.py @@ -0,0 +1,26 @@ +from unittest.mock import MagicMock + +function_arn = "arn:aws:lambda:us-west-1:123457598159:function:python-layer-test" + + +class ClientContext(object): + def __init__(self, custom=None): + self.custom = custom + + +def get_mock_context( + aws_request_id="request-id-1", + memory_limit_in_mb="256", + invoked_function_arn=function_arn, + function_version="1", + function_name="Function", + custom=None, +): + lambda_context = MagicMock() + lambda_context.aws_request_id = aws_request_id + lambda_context.memory_limit_in_mb = memory_limit_in_mb + lambda_context.invoked_function_arn = invoked_function_arn + lambda_context.function_version = function_version + lambda_context.function_name = function_name + lambda_context.client_context = ClientContext(custom) + return lambda_context From a20395dddebe10e5e8ef5b2c133f2ab886af055c Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Mon, 8 Apr 2024 10:26:39 -0700 Subject: [PATCH 117/268] Benchmarks for operations that use json dump/load. (#466) * Benchmarks for operations that use json dump/load. * Set required envvars for sending xray segments. --- .gitignore | 2 + pyproject.toml | 5 +++ tests/test_benchmarks.py | 87 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 94 insertions(+) create mode 100644 tests/test_benchmarks.py diff --git a/.gitignore b/.gitignore index 3aeeb1fb..ff0272ba 100644 --- a/.gitignore +++ b/.gitignore @@ -41,3 +41,5 @@ pip-log.txt node_modules yarn-lock.json + +.benchmarks diff --git a/pyproject.toml b/pyproject.toml index 3536347f..7d77a952 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -37,6 +37,7 @@ boto3 = { version = "^1.28.0", optional = true } typing_extensions = {version = "^4.0", python = "<3.8"} requests = { version ="^2.22.0", optional = true } pytest = { version= "^8.0.0", optional = true } +pytest-benchmark = { version = "^4.0", optional = true } flake8 = { version = "^5.0.4", optional = true } @@ -45,9 +46,13 @@ dev = [ "boto3", "flake8", "pytest", + "pytest-benchmark", "requests", ] [build-system] requires = ["poetry-core>=1.0.0"] build-backend = "poetry.core.masonry.api" + +[tool.pytest.ini_options] +addopts = "--benchmark-disable --benchmark-autosave" diff --git a/tests/test_benchmarks.py b/tests/test_benchmarks.py new file mode 100644 index 00000000..d430c255 --- /dev/null +++ b/tests/test_benchmarks.py @@ -0,0 +1,87 @@ +import builtins +import json +import os +import pytest + +import ddtrace + +from datadog_lambda import metric +from datadog_lambda import tag_object +from datadog_lambda import tracing +from datadog_lambda import trigger +from datadog_lambda import xray + +from datadog_lambda.constants import XrayDaemon, XraySubsegment + +from tests.utils import get_mock_context + + +event_samples_dir = "tests/event_samples" +event_samples = [f[:-5] for f in os.listdir(event_samples_dir) if f.endswith(".json")] + + +def test_metric_write_metric_point_to_stdout(benchmark, monkeypatch): + monkeypatch.setattr(builtins, "print", lambda *a, **k: None) + benchmark( + metric.write_metric_point_to_stdout, + "metric_name", + 1, + tags=[ + "tag1:value1", + "tag2:value2", + "tag3:value3", + ], + ) + + +@pytest.mark.parametrize("event", event_samples) +def test_tag_object_tag_object(event, benchmark): + with open(f"{event_samples_dir}/{event}.json") as f: + event = json.load(f) + span = ddtrace.tracer.start_span("test") + benchmark(tag_object.tag_object, span, "function.request", event) + + +@pytest.mark.parametrize("event", event_samples) +def test_tracing_create_inferred_span(event, benchmark): + with open(f"{event_samples_dir}/{event}.json") as f: + event = json.load(f) + context = get_mock_context() + benchmark(tracing.create_inferred_span, event, context) + + +@pytest.mark.parametrize("event", event_samples) +def test_tracing_extract_dd_trace_context(event, benchmark): + with open(f"{event_samples_dir}/{event}.json") as f: + event = json.load(f) + context = get_mock_context() + benchmark(tracing.extract_dd_trace_context, event, context) + + +@pytest.mark.parametrize("event", event_samples) +def test_trigger_parse_event_source(event, benchmark): + with open(f"{event_samples_dir}/{event}.json") as f: + event = json.load(f) + benchmark(trigger.parse_event_source, event) + + +@pytest.mark.parametrize("event", event_samples) +def test_trigger_extract_trigger_tags(event, benchmark): + with open(f"{event_samples_dir}/{event}.json") as f: + event = json.load(f) + context = get_mock_context() + benchmark(trigger.extract_trigger_tags, event, context) + + +def test_xray_send_segment(benchmark, monkeypatch): + monkeypatch.setenv(XrayDaemon.XRAY_DAEMON_ADDRESS, "localhost:9000") + monkeypatch.setenv( + XrayDaemon.XRAY_TRACE_ID_HEADER_NAME, + "Root=1-5e272390-8c398be037738dc042009320;Parent=94ae789b969f1cc5;Sampled=1;Lineage=c6c5b1b9:0", + ) + key = { + "trace-id": "12345678901234567890123456789012", + "parent-id": "1234567890123456", + "sampling-priority": "1", + } + benchmark(xray.send_segment, XraySubsegment.TRACE_KEY, key) From 16f0e234d54288c6d5969b1bf7c3184d100a9d9b Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Tue, 9 Apr 2024 12:32:15 -0700 Subject: [PATCH 118/268] Delay import of logging initialization code. (#468) * Delay import of logging initialization code. * Fix flake8 error. --- datadog_lambda/__init__.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/datadog_lambda/__init__.py b/datadog_lambda/__init__.py index 5cc2ba00..5063b2f9 100644 --- a/datadog_lambda/__init__.py +++ b/datadog_lambda/__init__.py @@ -1,5 +1,4 @@ from datadog_lambda.cold_start import initialize_cold_start_tracing -from datadog_lambda.logger import initialize_logging import os @@ -20,4 +19,8 @@ __version__ = importlib_metadata.version(__name__) + +from datadog_lambda.logger import initialize_logging # noqa: E402 + + initialize_logging(__name__) From 3414cfbbff76384f03c2856a6eb4ea8087d25785 Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Tue, 9 Apr 2024 12:43:57 -0700 Subject: [PATCH 119/268] Use single socket instance for all xray api calls. (#467) * Use single socket for all xray api calls. * Move reset to tests. --- datadog_lambda/xray.py | 72 +++++++++++++++++++++++----------------- tests/test_benchmarks.py | 12 ++++++- tests/test_wrapper.py | 9 +++-- tests/test_xray.py | 21 ++++++------ tests/utils.py | 10 ++++++ 5 files changed, 78 insertions(+), 46 deletions(-) diff --git a/datadog_lambda/xray.py b/datadog_lambda/xray.py index e6aff0bc..c4fa1643 100644 --- a/datadog_lambda/xray.py +++ b/datadog_lambda/xray.py @@ -10,32 +10,45 @@ logger = logging.getLogger(__name__) -def get_xray_host_port(address): - if address == "": - logger.debug("X-Ray daemon env var not set, not sending sub-segment") - return None - parts = address.split(":") - if len(parts) <= 1: - logger.debug("X-Ray daemon env var not set, not sending sub-segment") - return None - port = int(parts[1]) - host = parts[0] - return (host, port) - - -def send(host_port_tuple, payload): - sock = None - try: - sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) - sock.setblocking(0) - sock.connect(host_port_tuple) - sock.send(payload.encode("utf-8")) - except Exception as e_send: - logger.error("Error occurred submitting to xray daemon: %s", e_send) - try: - sock.close() - except Exception as e_close: - logger.error("Error while closing the socket: %s", e_close) +class Socket(object): + def __init__(self): + self.sock = None + + @property + def host_port_tuple(self): + if not hasattr(self, "_host_port_tuple"): + self._host_port_tuple = self._get_xray_host_port( + os.environ.get(XrayDaemon.XRAY_DAEMON_ADDRESS, "") + ) + return self._host_port_tuple + + def send(self, payload): + if not self.sock: + self._connect() + try: + self.sock.send(payload.encode("utf-8")) + except Exception as e_send: + logger.error("Error occurred submitting to xray daemon: %s", e_send) + + def _connect(self): + self.sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) + self.sock.setblocking(0) + self.sock.connect(self.host_port_tuple) + + def _get_xray_host_port(self, address): + if address == "": + logger.debug("X-Ray daemon env var not set, not sending sub-segment") + return None + parts = address.split(":") + if len(parts) <= 1: + logger.debug("X-Ray daemon env var not set, not sending sub-segment") + return None + port = int(parts[1]) + host = parts[0] + return (host, port) + + +sock = Socket() def build_segment_payload(payload): @@ -95,10 +108,7 @@ def build_segment(context, key, metadata): def send_segment(key, metadata): - host_port_tuple = get_xray_host_port( - os.environ.get(XrayDaemon.XRAY_DAEMON_ADDRESS, "") - ) - if host_port_tuple is None: + if sock.host_port_tuple is None: return None context = parse_xray_header( os.environ.get(XrayDaemon.XRAY_TRACE_ID_HEADER_NAME, "") @@ -115,4 +125,4 @@ def send_segment(key, metadata): return None segment = build_segment(context, key, metadata) segment_payload = build_segment_payload(segment) - send(host_port_tuple, segment_payload) + sock.send(segment_payload) diff --git a/tests/test_benchmarks.py b/tests/test_benchmarks.py index d430c255..899e3d7f 100644 --- a/tests/test_benchmarks.py +++ b/tests/test_benchmarks.py @@ -13,7 +13,7 @@ from datadog_lambda.constants import XrayDaemon, XraySubsegment -from tests.utils import get_mock_context +from tests.utils import get_mock_context, reset_xray_connection event_samples_dir = "tests/event_samples" @@ -74,14 +74,24 @@ def test_trigger_extract_trigger_tags(event, benchmark): def test_xray_send_segment(benchmark, monkeypatch): + reset_xray_connection() + monkeypatch.setenv(XrayDaemon.XRAY_DAEMON_ADDRESS, "localhost:9000") monkeypatch.setenv( XrayDaemon.XRAY_TRACE_ID_HEADER_NAME, "Root=1-5e272390-8c398be037738dc042009320;Parent=94ae789b969f1cc5;Sampled=1;Lineage=c6c5b1b9:0", ) + + def socket_send(*a, **k): + sends.append(True) + + sends = [] + monkeypatch.setattr("socket.socket.send", socket_send) + key = { "trace-id": "12345678901234567890123456789012", "parent-id": "1234567890123456", "sampling-priority": "1", } benchmark(xray.send_segment, XraySubsegment.TRACE_KEY, key) + assert sends diff --git a/tests/test_wrapper.py b/tests/test_wrapper.py index b7058e11..38c0d9fc 100644 --- a/tests/test_wrapper.py +++ b/tests/test_wrapper.py @@ -7,12 +7,13 @@ from datadog_lambda.constants import TraceHeader import datadog_lambda.wrapper as wrapper +import datadog_lambda.xray as xray from datadog_lambda.metric import lambda_metric from datadog_lambda.thread_stats_writer import ThreadStatsWriter from ddtrace import Span, tracer from ddtrace.internal.constants import MAX_UINT_64BITS -from tests.utils import get_mock_context +from tests.utils import get_mock_context, reset_xray_connection class TestDatadogLambdaWrapper(unittest.TestCase): @@ -590,7 +591,9 @@ class TestLambdaWrapperWithTraceContext(unittest.TestCase): }, ) def test_event_bridge_sqs_payload(self): - patcher = patch("datadog_lambda.xray.send") + reset_xray_connection() + + patcher = patch("datadog_lambda.xray.sock.send") mock_send = patcher.start() self.addCleanup(patcher.stop) @@ -623,7 +626,7 @@ def handler(event, context): self.assertEqual(result.span_id, aws_lambda_span.span_id) self.assertEqual(result.sampling_priority, 1) mock_send.assert_called_once() - (_, raw_payload), _ = mock_send.call_args + (raw_payload,), _ = mock_send.call_args payload = json.loads(raw_payload[33:]) # strip formatting prefix self.assertEqual(self.xray_root, payload["trace_id"]) self.assertEqual(self.xray_parent, payload["parent_id"]) diff --git a/tests/test_xray.py b/tests/test_xray.py index ac3594a9..7f33f891 100644 --- a/tests/test_xray.py +++ b/tests/test_xray.py @@ -4,15 +4,14 @@ from unittest.mock import MagicMock, patch -from datadog_lambda.xray import ( - get_xray_host_port, - build_segment_payload, - build_segment, - send_segment, -) +from datadog_lambda.xray import build_segment_payload, build_segment, send_segment, sock +from tests.utils import reset_xray_connection class TestXRay(unittest.TestCase): + def setUp(self): + reset_xray_connection() + def tearDown(self): if os.environ.get("_X_AMZN_TRACE_ID"): os.environ.pop("_X_AMZN_TRACE_ID") @@ -21,15 +20,15 @@ def tearDown(self): return super().tearDown() def test_get_xray_host_port_empty_(self): - result = get_xray_host_port("") + result = sock._get_xray_host_port("") self.assertIsNone(result) def test_get_xray_host_port_invalid_value(self): - result = get_xray_host_port("myVar") + result = sock._get_xray_host_port("myVar") self.assertIsNone(result) def test_get_xray_host_port_success(self): - result = get_xray_host_port("mySuperHost:1000") + result = sock._get_xray_host_port("mySuperHost:1000") self.assertEqual("mySuperHost", result[0]) self.assertEqual(1000, result[1]) @@ -40,7 +39,7 @@ def test_send_segment_sampled_out(self): ] = "Root=1-5e272390-8c398be037738dc042009320;Parent=94ae789b969f1cc5;Sampled=0;Lineage=c6c5b1b9:0" with patch( - "datadog_lambda.xray.send", MagicMock(return_value=None) + "datadog_lambda.xray.sock.send", MagicMock(return_value=None) ) as mock_send: # XRay trace won't be sampled according to the trace header. send_segment("my_key", {"data": "value"}) @@ -52,7 +51,7 @@ def test_send_segment_sampled(self): "_X_AMZN_TRACE_ID" ] = "Root=1-5e272390-8c398be037738dc042009320;Parent=94ae789b969f1cc5;Sampled=1;Lineage=c6c5b1b9:0" with patch( - "datadog_lambda.xray.send", MagicMock(return_value=None) + "datadog_lambda.xray.sock.send", MagicMock(return_value=None) ) as mock_send: # X-Ray trace will be sampled according to the trace header. send_segment("my_key", {"data": "value"}) diff --git a/tests/utils.py b/tests/utils.py index 71060d46..0f246e68 100644 --- a/tests/utils.py +++ b/tests/utils.py @@ -24,3 +24,13 @@ def get_mock_context( lambda_context.function_name = function_name lambda_context.client_context = ClientContext(custom) return lambda_context + + +def reset_xray_connection(): + from datadog_lambda.xray import sock + + if hasattr(sock, "_host_port_tuple"): + del sock._host_port_tuple + if sock.sock: + sock.sock.close() + sock.sock = None From 0b85fc95dac364f295ba9228bea2ee20c126e4bc Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Thu, 11 Apr 2024 09:57:23 -0700 Subject: [PATCH 120/268] Reduce allocations in trigger.py. (#470) --- datadog_lambda/trigger.py | 58 ++++++++++++++++++++++----------------- 1 file changed, 33 insertions(+), 25 deletions(-) diff --git a/datadog_lambda/trigger.py b/datadog_lambda/trigger.py index 0bb26d59..06a4507c 100644 --- a/datadog_lambda/trigger.py +++ b/datadog_lambda/trigger.py @@ -110,10 +110,10 @@ def get_first_record(event): def parse_event_source(event: dict) -> _EventSource: """Determines the source of the trigger event""" - if type(event) is not dict: + if not isinstance(event, dict): return _EventSource(EventTypes.UNKNOWN) - event_source = _EventSource(EventTypes.UNKNOWN) + event_source = None request_context = event.get("requestContext") if request_context and request_context.get("stage"): @@ -126,7 +126,7 @@ def parse_event_source(event: dict) -> _EventSource: event_source.subtype = EventSubtypes.API_GATEWAY if "routeKey" in event: event_source.subtype = EventSubtypes.HTTP_API - if event.get("requestContext", {}).get("messageDirection"): + if request_context.get("messageDirection"): event_source.subtype = EventSubtypes.WEBSOCKET if request_context and request_context.get("elb"): @@ -151,10 +151,9 @@ def parse_event_source(event: dict) -> _EventSource: event_record = get_first_record(event) if event_record: - aws_event_source = event_record.get( - "eventSource", event_record.get("EventSource") + aws_event_source = event_record.get("eventSource") or event_record.get( + "EventSource" ) - if aws_event_source == "aws:dynamodb": event_source = _EventSource(EventTypes.DYNAMODB) if aws_event_source == "aws:kinesis": @@ -165,11 +164,10 @@ def parse_event_source(event: dict) -> _EventSource: event_source = _EventSource(EventTypes.SNS) if aws_event_source == "aws:sqs": event_source = _EventSource(EventTypes.SQS) - if event_record.get("cf"): event_source = _EventSource(EventTypes.CLOUDFRONT) - return event_source + return event_source or _EventSource(EventTypes.UNKNOWN) def detect_lambda_function_url_domain(domain: str) -> bool: @@ -193,11 +191,19 @@ def parse_event_source_arn(source: _EventSource, event: dict, context: Any) -> s event_record = get_first_record(event) # e.g. arn:aws:s3:::lambda-xyz123-abc890 if source.to_string() == "s3": - return event_record.get("s3", {}).get("bucket", {}).get("arn") + s3 = event_record.get("s3") + if s3: + bucket = s3.get("bucket") + if bucket: + return bucket.get("arn") + return None # e.g. arn:aws:sns:us-east-1:123456789012:sns-lambda if source.to_string() == "sns": - return event_record.get("Sns", {}).get("TopicArn") + sns = event_record.get("Sns") + if sns: + return sns.get("TopicArn") + return None # e.g. arn:aws:cloudfront::123456789012:distribution/ABC123XYZ if source.event_type == EventTypes.CLOUDFRONT: @@ -228,7 +234,11 @@ def parse_event_source_arn(source: _EventSource, event: dict, context: Any) -> s # e.g. arn:aws:elasticloadbalancing:us-east-1:123456789012:targetgroup/lambda-xyz/123 if source.event_type == EventTypes.ALB: request_context = event.get("requestContext") - return request_context.get("elb", {}).get("targetGroupArn") + if request_context: + elb = request_context.get("elb") + if elb: + return elb.get("targetGroupArn") + return None # e.g. arn:aws:logs:us-west-1:123456789012:log-group:/my-log-group-xyz if source.event_type == EventTypes.CLOUDWATCH_LOGS: @@ -292,6 +302,13 @@ def extract_http_tags(event): return http_tags +_http_event_types = ( + EventTypes.API_GATEWAY, + EventTypes.ALB, + EventTypes.LAMBDA_FUNCTION_URL, +) + + def extract_trigger_tags(event: dict, context: Any) -> dict: """ Parses the trigger event object to get tags to be added to the span metadata @@ -305,16 +322,15 @@ def extract_trigger_tags(event: dict, context: Any) -> dict: if event_source_arn: trigger_tags["function_trigger.event_source_arn"] = event_source_arn - if event_source.event_type in [ - EventTypes.API_GATEWAY, - EventTypes.ALB, - EventTypes.LAMBDA_FUNCTION_URL, - ]: + if event_source.event_type in _http_event_types: trigger_tags.update(extract_http_tags(event)) return trigger_tags +_str_http_triggers = [et.value for et in _http_event_types] + + def extract_http_status_code_tag(trigger_tags, response): """ If the Lambda was triggered by API Gateway, Lambda Function URL, or ALB, @@ -325,15 +341,7 @@ def extract_http_status_code_tag(trigger_tags, response): str_event_source = trigger_tags.get("function_trigger.event_source") # it would be cleaner if each event type was a constant object that # knew some properties about itself like this. - str_http_triggers = [ - et.value - for et in [ - EventTypes.API_GATEWAY, - EventTypes.LAMBDA_FUNCTION_URL, - EventTypes.ALB, - ] - ] - if str_event_source not in str_http_triggers: + if str_event_source not in _str_http_triggers: return status_code = "200" From f9aca11294d6e386f3ccdb87e5d6aaacb08989bc Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Thu, 11 Apr 2024 11:11:36 -0700 Subject: [PATCH 121/268] Replace builtin json with faster ujson package. (#469) * Replace builtin json with faster ujson package. * Do not escape forward slashes. * Update 3rd party licenses. --- LICENSE-3rdparty.csv | 2 ++ datadog_lambda/metric.py | 5 +++-- datadog_lambda/patch.py | 6 +++--- datadog_lambda/tag_object.py | 2 +- datadog_lambda/tracing.py | 2 +- datadog_lambda/trigger.py | 2 +- datadog_lambda/wrapper.py | 6 ++++-- datadog_lambda/xray.py | 5 +++-- pyproject.toml | 1 + 9 files changed, 19 insertions(+), 12 deletions(-) diff --git a/LICENSE-3rdparty.csv b/LICENSE-3rdparty.csv index 71ac83fb..1cfacb70 100644 --- a/LICENSE-3rdparty.csv +++ b/LICENSE-3rdparty.csv @@ -3,9 +3,11 @@ datadog,github.com/DataDog/datadogpy,BSD-3-Clause,"Copyright (c) 2015-Present Da wrapt,github.com/GrahamDumpleton/wrapt,BSD-2-Clause,"Copyright (c) 2013-2019, Graham Dumpleton" ddtrace,github.com/DataDog/dd-trace-py,BSD-3-Clause,"Copyright (c) 2016, Datadog " urllib3,github.com/urllib3/urllib3,MIT,Copyright (c) 2008-2020 Andrey Petrov and contributors. +ujson,github.com/ultrajson/ultrajson,BSD-3-Clause,"Copyright (c) 2014, Electronic Arts Inc" importlib_metadata,github.com/python/importlib_metadata,Apache-2.0,Copyright © Jason R. Coombs boto3,github.com/boto/boto3,Apache-2.0,"Copyright 2013-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved." typing_extensions,github.com/python/typing_extensions,PSF-2.0,"Copyright (c) 1991 - 1995, Stichting Mathematisch Centrum Amsterdam, The Netherlands. All rights reserved" requests,github.com/psf/requests,Apache-2.0,"Copyright 2018 Kenneth Reitz" pytest,github.com/pytest-dev/pytest,MIT,Copyright (c) 2004 Holger Krekel and others +pytest-benchmark,github.com/ionelmc/pytest-benchmark,BSD-2-Clause,"Copyright (c) 2014-2023, Ionel Cristian Mărieș. All rights reserved." flake8,gitlab.com/pycqa/flake8,MIT,"Copyright (C) 2011-2013 Tarek Ziade . Copyright (C) 2012-2016 Ian Cordasco ." diff --git a/datadog_lambda/metric.py b/datadog_lambda/metric.py index a49c6c14..e3b01a90 100644 --- a/datadog_lambda/metric.py +++ b/datadog_lambda/metric.py @@ -4,9 +4,9 @@ # Copyright 2019 Datadog, Inc. import os -import json import time import logging +import ujson as json from datadog_lambda.extension import should_use_extension from datadog_lambda.tags import get_enhanced_metrics_tags, dd_lambda_layer_tag @@ -85,7 +85,8 @@ def write_metric_point_to_stdout(metric_name, value, timestamp=None, tags=[]): "v": value, "e": timestamp or int(time.time()), "t": tags, - } + }, + escape_forward_slashes=False, ) ) diff --git a/datadog_lambda/patch.py b/datadog_lambda/patch.py index 0f6d28e9..5b8a92c5 100644 --- a/datadog_lambda/patch.py +++ b/datadog_lambda/patch.py @@ -3,11 +3,11 @@ # This product includes software developed at Datadog (https://www.datadoghq.com/). # Copyright 2019 Datadog, Inc. -import json import os import sys import logging import zlib +import ujson as json from wrapt import wrap_function_wrapper as wrap from wrapt.importer import when_imported @@ -144,14 +144,14 @@ def _print_request_string(request): data = zlib.decompress(data) data_dict = json.loads(data) data_dict.get("series", []).sort(key=lambda series: series.get("metric")) - sorted_data = json.dumps(data_dict) + sorted_data = json.dumps(data_dict, escape_forward_slashes=False) # Sort headers to prevent any differences in ordering headers = request.headers or {} sorted_headers = sorted( "{}:{}".format(key, value) for key, value in headers.items() ) - sorted_header_str = json.dumps(sorted_headers) + sorted_header_str = json.dumps(sorted_headers, escape_forward_slashes=False) print( "HTTP {} {} Headers: {} Data: {}".format( method, url, sorted_header_str, sorted_data diff --git a/datadog_lambda/tag_object.py b/datadog_lambda/tag_object.py index 5571bf53..6d82f83b 100644 --- a/datadog_lambda/tag_object.py +++ b/datadog_lambda/tag_object.py @@ -4,8 +4,8 @@ # Copyright 2021 Datadog, Inc. from decimal import Decimal -import json import logging +import ujson as json redactable_keys = ["authorization", "x-authorization", "password", "token"] max_depth = 10 diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 58a45af3..85c63bba 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -5,8 +5,8 @@ import hashlib import logging import os -import json import base64 +import ujson as json from datetime import datetime, timezone from typing import Optional, Dict diff --git a/datadog_lambda/trigger.py b/datadog_lambda/trigger.py index 06a4507c..68531ebf 100644 --- a/datadog_lambda/trigger.py +++ b/datadog_lambda/trigger.py @@ -5,7 +5,7 @@ import base64 import gzip -import json +import ujson as json from io import BytesIO, BufferedReader from enum import Enum from typing import Any diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index 3f6e044b..ba31f2be 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -6,8 +6,8 @@ import os import logging import traceback +import ujson as json from importlib import import_module -import json from time import time_ns from datadog_lambda.extension import should_use_extension, flush_extension @@ -258,7 +258,9 @@ def _inject_authorizer_span_headers(self, request_id): injected_headers[Headers.Parent_Span_Finish_Time] = finish_time_ns if request_id is not None: injected_headers[Headers.Authorizing_Request_Id] = request_id - datadog_data = base64.b64encode(json.dumps(injected_headers).encode()).decode() + datadog_data = base64.b64encode( + json.dumps(injected_headers, escape_forward_slashes=False).encode() + ).decode() self.response.setdefault("context", {}) self.response["context"]["_datadog"] = datadog_data diff --git a/datadog_lambda/xray.py b/datadog_lambda/xray.py index c4fa1643..002d13b1 100644 --- a/datadog_lambda/xray.py +++ b/datadog_lambda/xray.py @@ -1,9 +1,9 @@ import os import logging -import json import binascii import time import socket +import ujson as json from datadog_lambda.constants import XrayDaemon, XraySubsegment, TraceContextSource @@ -102,7 +102,8 @@ def build_segment(context, key, metadata): key: metadata, } }, - } + }, + escape_forward_slashes=False, ) return segment diff --git a/pyproject.toml b/pyproject.toml index 7d77a952..1d15753e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -28,6 +28,7 @@ python = ">=3.8.0,<4" datadog = ">=0.41.0,<1.0.0" wrapt = "^1.11.2" ddtrace = ">=2.7.2" +ujson = ">=5.9.0" urllib3 = [ {version = "<2.0.0", python = "<3.11", optional = true}, {version = "<2.1.0", python = ">=3.11", optional = true}, From 6483fffb1ec0ac310886bb06da8ba511a1c2e151 Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Tue, 16 Apr 2024 09:30:43 -0700 Subject: [PATCH 122/268] Hardcode version to avoid import of importlib.metadata. (#472) * Hardcode version to avoid import of importlib.metadata. * Address test failures. --- datadog_lambda/__init__.py | 9 +-------- datadog_lambda/version.py | 1 + pyproject.toml | 2 -- scripts/publish_prod.sh | 5 +++-- tests/test_version.py | 7 +++++++ tests/test_wrapper.py | 1 + 6 files changed, 13 insertions(+), 12 deletions(-) create mode 100644 datadog_lambda/version.py create mode 100644 tests/test_version.py diff --git a/datadog_lambda/__init__.py b/datadog_lambda/__init__.py index 5063b2f9..378fd15c 100644 --- a/datadog_lambda/__init__.py +++ b/datadog_lambda/__init__.py @@ -12,14 +12,7 @@ # The minor version corresponds to the Lambda layer version. # E.g.,, version 0.5.0 gets packaged into layer version 5. -try: - import importlib.metadata as importlib_metadata -except ModuleNotFoundError: - import importlib_metadata - -__version__ = importlib_metadata.version(__name__) - - +from datadog_lambda.version import __version__ # noqa: E402 F401 from datadog_lambda.logger import initialize_logging # noqa: E402 diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py new file mode 100644 index 00000000..4b94498f --- /dev/null +++ b/datadog_lambda/version.py @@ -0,0 +1 @@ +__version__ = "5.92.0" diff --git a/pyproject.toml b/pyproject.toml index 1d15753e..4385839e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -33,9 +33,7 @@ urllib3 = [ {version = "<2.0.0", python = "<3.11", optional = true}, {version = "<2.1.0", python = ">=3.11", optional = true}, ] -importlib_metadata = {version = "*", python = "<3.8"} boto3 = { version = "^1.28.0", optional = true } -typing_extensions = {version = "^4.0", python = "<3.8"} requests = { version ="^2.22.0", optional = true } pytest = { version= "^8.0.0", optional = true } pytest-benchmark = { version = "^4.0", optional = true } diff --git a/scripts/publish_prod.sh b/scripts/publish_prod.sh index aa53df71..e138e3d8 100755 --- a/scripts/publish_prod.sh +++ b/scripts/publish_prod.sh @@ -53,10 +53,11 @@ if [ "$CONT" != "y" ]; then echo "Skipping updating package.json version" else echo - echo "Replacing version in pyproject.toml" + echo "Replacing version in pyproject.toml and datadog_lambda/version.py" echo poetry version ${NEW_VERSION} + echo "__version__ = \"${NEW_VERSION}\"" > datadog_lambda/version.py fi echo @@ -110,7 +111,7 @@ if [ "$CONT" != "y" ]; then else echo echo 'Publishing updates to github' - git commit pyproject.toml -m "Bump version to ${NEW_VERSION}" + git commit pyproject.toml datadog_lambda/version.py -m "Bump version to ${NEW_VERSION}" git push origin main git tag "v$LAYER_VERSION" git push origin "refs/tags/v$LAYER_VERSION" diff --git a/tests/test_version.py b/tests/test_version.py new file mode 100644 index 00000000..ca3c8f03 --- /dev/null +++ b/tests/test_version.py @@ -0,0 +1,7 @@ +import importlib.metadata +from datadog_lambda import __version__ + + +def test_version(): + # test version in __init__ matches version in pyproject.toml + assert importlib.metadata.version("datadog-lambda") == __version__ diff --git a/tests/test_wrapper.py b/tests/test_wrapper.py index 38c0d9fc..13fef2b6 100644 --- a/tests/test_wrapper.py +++ b/tests/test_wrapper.py @@ -534,6 +534,7 @@ def lambda_handler(event, context): lambda_context = get_mock_context() test_span = tracer.trace("test_span") trace_ctx = tracer.current_trace_context() + trace_ctx.sampling_priority = 1 test_span.finish() lambda_handler.inferred_span = test_span lambda_handler.make_inferred_span = False From f80f83f15fdbc4d07816f143ffcd1d76857494ea Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Mon, 22 Apr 2024 10:55:33 -0700 Subject: [PATCH 123/268] Remove unneeded .dist-info files. (#478) --- Dockerfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Dockerfile b/Dockerfile index 396ef25c..12faa696 100644 --- a/Dockerfile +++ b/Dockerfile @@ -26,6 +26,8 @@ RUN rm ./python/lib/$runtime/site-packages/ddtrace/appsec/_iast/_stacktrace*.so RUN rm ./python/lib/$runtime/site-packages/ddtrace/internal/datadog/profiling/libdd_wrapper.so RUN rm ./python/lib/$runtime/site-packages/ddtrace/internal/datadog/profiling/ddup/_ddup.*.so RUN rm ./python/lib/$runtime/site-packages/ddtrace/internal/datadog/profiling/stack_v2/_stack_v2.*.so +RUN find . -name "*.dist-info" -type d | xargs rm -rf + FROM scratch COPY --from=builder /build/python / From 21012cb8b98a81b96d329583e0bb2fc05a8a9bf5 Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Mon, 22 Apr 2024 11:25:49 -0700 Subject: [PATCH 124/268] Pre-compile all python code and remove original .py files. (#476) * Remove urllib3 dist-info files as well. * Pre-compile all python code and remove original .py files. * Compress at optimization level 2. * Add PYTHONNODEBUGRANGES=1 to compile step. * Add comment. * Use different commandline option to support py3.8 * Update size limits. * Leave __init__.py contrib files. * Remove text like files. * oops --- Dockerfile | 17 +++++++++++++---- scripts/check_layer_size.sh | 5 ++--- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/Dockerfile b/Dockerfile index 12faa696..ed43e237 100644 --- a/Dockerfile +++ b/Dockerfile @@ -11,16 +11,13 @@ WORKDIR /build COPY . . RUN pip install . -t ./python/lib/$runtime/site-packages -# Remove *.pyc files -RUN find ./python/lib/$runtime/site-packages -name \*.pyc -delete - # Remove botocore (40MB) to reduce package size. aws-xray-sdk # installs it, while it's already provided by the Lambda Runtime. RUN rm -rf ./python/lib/$runtime/site-packages/botocore* RUN rm -rf ./python/lib/$runtime/site-packages/setuptools RUN rm -rf ./python/lib/$runtime/site-packages/jsonschema/tests RUN find . -name 'libddwaf.so' -delete -RUN rm -rf ./python/lib/$runtime/site-packages/urllib3 +RUN rm -rf ./python/lib/$runtime/site-packages/urllib3* RUN rm ./python/lib/$runtime/site-packages/ddtrace/appsec/_iast/_taint_tracking/*.so RUN rm ./python/lib/$runtime/site-packages/ddtrace/appsec/_iast/_stacktrace*.so RUN rm ./python/lib/$runtime/site-packages/ddtrace/internal/datadog/profiling/libdd_wrapper.so @@ -28,6 +25,18 @@ RUN rm ./python/lib/$runtime/site-packages/ddtrace/internal/datadog/profiling/dd RUN rm ./python/lib/$runtime/site-packages/ddtrace/internal/datadog/profiling/stack_v2/_stack_v2.*.so RUN find . -name "*.dist-info" -type d | xargs rm -rf +# Precompile all .pyc files and remove .py files. This speeds up load time. +# Compile with optimization level 2 (-OO) and PYTHONNODEBUGRANGES=1 to redtce +# size of .pyc files. +# See https://docs.python.org/3/tutorial/modules.html#compiled-python-files +# https://docs.python.org/3.11/using/cmdline.html#cmdoption-O +# https://docs.python.org/3/using/cmdline.html#envvar-PYTHONNODEBUGRANGES +RUN PYTHONNODEBUGRANGES=1 python -OO -m compileall -b ./python/lib/$runtime/site-packages +# remove all .py files except ddtrace/contrib/*/__init__.py which are necessary +# for ddtrace.patch to discover instrumationation packages. +RUN find ./python/lib/$runtime/site-packages -name \*.py | grep -v ddtrace/contrib | xargs rm -rf +RUN find ./python/lib/$runtime/site-packages/ddtrace/contrib -name \*.py | grep -v __init__ | xargs rm -rf +RUN find ./python/lib/$runtime/site-packages -name __pycache__ -type d -exec rm -r {} \+ FROM scratch COPY --from=builder /build/python / diff --git a/scripts/check_layer_size.sh b/scripts/check_layer_size.sh index 84752fa1..977c0283 100755 --- a/scripts/check_layer_size.sh +++ b/scripts/check_layer_size.sh @@ -7,10 +7,9 @@ # Compares layer size to threshold, and fails if below that threshold -# 7 mb size limit set -e -MAX_LAYER_COMPRESSED_SIZE_KB=$(expr 4 \* 1024) -MAX_LAYER_UNCOMPRESSED_SIZE_KB=$(expr 13 \* 1024) +MAX_LAYER_COMPRESSED_SIZE_KB=$(expr 5 \* 1024) +MAX_LAYER_UNCOMPRESSED_SIZE_KB=$(expr 12 \* 1024) LAYER_FILES_PREFIX="datadog_lambda_py" From 6b54aec36e647be67af229fe1509fa2f3301653e Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Wed, 24 Apr 2024 17:12:25 -0400 Subject: [PATCH 125/268] fix start time of function url inferred span (#383) --- datadog_lambda/tracing.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 85c63bba..1d73de3e 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -746,7 +746,7 @@ def create_inferred_span_from_lambda_function_url_event(event, context): InferredSpanInfo.set_tags(tags, tag_source="self", synchronicity="sync") if span: span.set_tags(tags) - span.start = request_time_epoch / 1000 + span.start_ns = int(request_time_epoch) * 1e6 return span From e1c4edbea26f2133bb20c608ef18627fdfaa384e Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Thu, 25 Apr 2024 10:33:37 -0700 Subject: [PATCH 126/268] Update version to v5.93.0 for release. (#479) --- datadog_lambda/version.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index 4b94498f..c7debb23 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "5.92.0" +__version__ = "5.93.0" diff --git a/pyproject.toml b/pyproject.toml index 4385839e..1db09ba4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "5.92.0" +version = "5.93.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 3c79531b7a7d7fe08a2d7b21fadd0d447bad20bb Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Tue, 30 Apr 2024 10:20:33 -0700 Subject: [PATCH 127/268] Remove extra ddtrace source files. (#481) --- Dockerfile | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Dockerfile b/Dockerfile index ed43e237..488364a4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -38,5 +38,14 @@ RUN find ./python/lib/$runtime/site-packages -name \*.py | grep -v ddtrace/contr RUN find ./python/lib/$runtime/site-packages/ddtrace/contrib -name \*.py | grep -v __init__ | xargs rm -rf RUN find ./python/lib/$runtime/site-packages -name __pycache__ -type d -exec rm -r {} \+ +# When building ddtrace from branch, remove extra source files. These are +# removed by the ddtrace build process before publishing a wheel to PyPI. +RUN find ./python/lib/$runtime/site-packages/ddtrace -name \*.c -delete +RUN find ./python/lib/$runtime/site-packages/ddtrace -name \*.cpp -delete +RUN find ./python/lib/$runtime/site-packages/ddtrace -name \*.cc -delete +RUN find ./python/lib/$runtime/site-packages/ddtrace -name \*.h -delete +RUN find ./python/lib/$runtime/site-packages/ddtrace -name \*.hpp -delete +RUN find ./python/lib/$runtime/site-packages/ddtrace -name \*.pyx -delete + FROM scratch COPY --from=builder /build/python / From a95341ec7f555b38d4ca12be1409422d756c389d Mon Sep 17 00:00:00 2001 From: Tal Usvyatsky <18072279+TalUsvyatsky@users.noreply.github.com> Date: Wed, 1 May 2024 10:15:42 -0400 Subject: [PATCH 128/268] Detect exceptions raised outside of the handler (#475) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * emit enhanced error metric and create span when an exception is raised outside of the handler function * rename handler * move fallback handler to wrapper.py * fix duration * respect DD_TRACE_ENABLED * emit telemetry and raise during init * Update datadog_lambda/tags.py Co-authored-by: jordan gonzález <30836115+duncanista@users.noreply.github.com> --------- Co-authored-by: jordan gonzález <30836115+duncanista@users.noreply.github.com> --- datadog_lambda/handler.py | 19 +++++++++-- datadog_lambda/metric.py | 6 ++-- datadog_lambda/tags.py | 6 ++-- datadog_lambda/tracing.py | 32 +++++++++++++++++ tests/test_handler.py | 72 +++++++++++++++++++++++++++++++++++++++ tests/test_tracing.py | 61 +++++++++++++++++++++++++++++++++ tests/test_wrapper.py | 18 +++++----- 7 files changed, 198 insertions(+), 16 deletions(-) create mode 100644 tests/test_handler.py diff --git a/datadog_lambda/handler.py b/datadog_lambda/handler.py index 777dc492..433d9b92 100644 --- a/datadog_lambda/handler.py +++ b/datadog_lambda/handler.py @@ -7,6 +7,9 @@ from importlib import import_module import os +from time import time_ns + +from datadog_lambda.tracing import emit_telemetry_on_exception_outside_of_handler from datadog_lambda.wrapper import datadog_lambda_wrapper from datadog_lambda.module_name import modify_module_name @@ -27,5 +30,17 @@ class HandlerError(Exception): (mod_name, handler_name) = parts modified_mod_name = modify_module_name(mod_name) -handler_module = import_module(modified_mod_name) -handler = datadog_lambda_wrapper(getattr(handler_module, handler_name)) + +try: + handler_load_start_time_ns = time_ns() + handler_module = import_module(modified_mod_name) + handler_func = getattr(handler_module, handler_name) +except Exception as e: + emit_telemetry_on_exception_outside_of_handler( + e, + modified_mod_name, + handler_load_start_time_ns, + ) + raise + +handler = datadog_lambda_wrapper(handler_func) diff --git a/datadog_lambda/metric.py b/datadog_lambda/metric.py index e3b01a90..bc7391a6 100644 --- a/datadog_lambda/metric.py +++ b/datadog_lambda/metric.py @@ -100,7 +100,7 @@ def submit_enhanced_metric(metric_name, lambda_context): Args: metric_name (str): metric name w/o enhanced prefix i.e. "invocations" or "errors" - lambda_context (dict): Lambda context dict passed to the function by AWS + lambda_context (object): Lambda context dict passed to the function by AWS """ if not enhanced_metrics_enabled: logger.debug( @@ -118,7 +118,7 @@ def submit_invocations_metric(lambda_context): """Increment aws.lambda.enhanced.invocations by 1, applying runtime, layer, and cold_start tags Args: - lambda_context (dict): Lambda context dict passed to the function by AWS + lambda_context (object): Lambda context dict passed to the function by AWS """ submit_enhanced_metric("invocations", lambda_context) @@ -127,6 +127,6 @@ def submit_errors_metric(lambda_context): """Increment aws.lambda.enhanced.errors by 1, applying runtime, layer, and cold_start tags Args: - lambda_context (dict): Lambda context dict passed to the function by AWS + lambda_context (object): Lambda context dict passed to the function by AWS """ submit_enhanced_metric("errors", lambda_context) diff --git a/datadog_lambda/tags.py b/datadog_lambda/tags.py index 695d1a48..5b3fe43e 100644 --- a/datadog_lambda/tags.py +++ b/datadog_lambda/tags.py @@ -55,9 +55,11 @@ def parse_lambda_tags_from_arn(lambda_context): def get_enhanced_metrics_tags(lambda_context): """Get the list of tags to apply to enhanced metrics""" - tags = parse_lambda_tags_from_arn(lambda_context) + tags = [] + if lambda_context: + tags = parse_lambda_tags_from_arn(lambda_context) + tags.append(f"memorysize:{lambda_context.memory_limit_in_mb}") tags.append(get_cold_start_tag()) - tags.append(f"memorysize:{lambda_context.memory_limit_in_mb}") tags.append(runtime_tag) tags.append(library_version_tag) return tags diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 1d73de3e..60b9e726 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -6,6 +6,7 @@ import logging import os import base64 +import traceback import ujson as json from datetime import datetime, timezone from typing import Optional, Dict @@ -1320,3 +1321,34 @@ def is_async(span: Span) -> bool: e, ) return False + + +def emit_telemetry_on_exception_outside_of_handler( + exception, resource_name, handler_load_start_time_ns +): + """ + Emit an enhanced error metric and create a span for exceptions occurring outside the handler + """ + submit_errors_metric(None) + if dd_tracing_enabled: + span = tracer.trace( + "aws.lambda", + service="aws.lambda", + resource=resource_name, + span_type="serverless", + ) + span.start_ns = handler_load_start_time_ns + + tags = { + "error.status": 500, + "error.type": type(exception).__name__, + "error.message": exception, + "error.stack": traceback.format_exc(), + "resource_names": resource_name, + "resource.name": resource_name, + "operation_name": "aws.lambda", + "status": "error", + } + span.set_tags(tags) + span.error = 1 + span.finish() diff --git a/tests/test_handler.py b/tests/test_handler.py new file mode 100644 index 00000000..50f426dc --- /dev/null +++ b/tests/test_handler.py @@ -0,0 +1,72 @@ +import os +import sys +import unittest +from unittest.mock import patch + +from tests.utils import get_mock_context + + +class TestHandler(unittest.TestCase): + def tearDown(self): + for mod in sys.modules.copy(): + if mod.startswith("datadog_lambda.handler"): + del sys.modules[mod] + + def test_dd_lambda_handler_env_var_none(self): + with self.assertRaises(Exception) as context: + import datadog_lambda.handler as handler + + assert context.exception == handler.HandlerError( + "DD_LAMBDA_HANDLER is not defined. Can't use prebuilt datadog handler" + ) + + @patch.dict(os.environ, {"DD_LAMBDA_HANDLER": "malformed"}, clear=True) + def test_dd_lambda_handler_env_var_malformed(self): + with self.assertRaises(Exception) as context: + import datadog_lambda.handler as handler + + assert context.exception == handler.HandlerError( + "Value malformed for DD_LAMBDA_HANDLER has invalid format." + ) + + @patch.dict(os.environ, {"DD_LAMBDA_HANDLER": "nonsense.nonsense"}, clear=True) + @patch("datadog_lambda.tracing.emit_telemetry_on_exception_outside_of_handler") + @patch("time.time_ns", return_value=42) + def test_exception_importing_module(self, mock_time, mock_emit_telemetry): + with self.assertRaises(ModuleNotFoundError) as test_context: + import datadog_lambda.handler + + mock_emit_telemetry.assert_called_once_with( + test_context.exception, "nonsense", 42 + ) + + @patch.dict(os.environ, {"DD_LAMBDA_HANDLER": "nonsense.nonsense"}, clear=True) + @patch("importlib.import_module", return_value=None) + @patch("datadog_lambda.tracing.emit_telemetry_on_exception_outside_of_handler") + @patch("time.time_ns", return_value=42) + def test_exception_getting_handler_func( + self, mock_time, mock_emit_telemetry, mock_import + ): + with self.assertRaises(AttributeError) as test_context: + import datadog_lambda.handler + + mock_emit_telemetry.assert_called_once_with( + test_context.exception, "nonsense", 42 + ) + + @patch.dict(os.environ, {"DD_LAMBDA_HANDLER": "nonsense.nonsense"}, clear=True) + @patch("importlib.import_module") + @patch("datadog_lambda.tracing.emit_telemetry_on_exception_outside_of_handler") + @patch("datadog_lambda.wrapper.datadog_lambda_wrapper") + def test_handler_success( + self, mock_lambda_wrapper, mock_emit_telemetry, mock_import + ): + def nonsense(): + pass + + mock_import.nonsense.return_value = nonsense + + import datadog_lambda.handler + + mock_emit_telemetry.assert_not_called() + mock_lambda_wrapper.assert_called_once_with(mock_import().nonsense) diff --git a/tests/test_tracing.py b/tests/test_tracing.py index 296bd0dc..9629dcab 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -1,6 +1,7 @@ import copy import functools import json +import traceback import pytest import os import unittest @@ -36,6 +37,7 @@ determine_service_name, service_mapping as global_service_mapping, propagator, + emit_telemetry_on_exception_outside_of_handler, ) from datadog_lambda.trigger import EventTypes @@ -1999,3 +2001,62 @@ def test_deterministic_m5_hash__always_leading_with_zero(self): # Leading zeros will be omitted, so only test for full 64 bits present if len(result_in_binary) == 66: # "0b" + 64 bits. self.assertTrue(result_in_binary.startswith("0b0")) + + +class TestExceptionOutsideHandler(unittest.TestCase): + @patch("datadog_lambda.tracing.dd_tracing_enabled", True) + @patch("datadog_lambda.tracing.submit_errors_metric") + @patch("time.time_ns", return_value=42) + def test_exception_outside_handler_tracing_enabled( + self, mock_time, mock_submit_errors_metric + ): + fake_error = ValueError("Some error message") + resource_name = "my_handler" + span_type = "aws.lambda" + mock_span = Mock() + with patch( + "datadog_lambda.tracing.tracer.trace", return_value=mock_span + ) as mock_trace: + emit_telemetry_on_exception_outside_of_handler( + fake_error, resource_name, 42 + ) + + mock_submit_errors_metric.assert_called_once_with(None) + + mock_trace.assert_called_once_with( + span_type, + service="aws.lambda", + resource=resource_name, + span_type="serverless", + ) + mock_span.set_tags.assert_called_once_with( + { + "error.status": 500, + "error.type": "ValueError", + "error.message": fake_error, + "error.stack": traceback.format_exc(), + "resource_names": resource_name, + "resource.name": resource_name, + "operation_name": span_type, + "status": "error", + } + ) + mock_span.finish.assert_called_once() + assert mock_span.error == 1 + assert mock_span.start_ns == 42 + + @patch("datadog_lambda.tracing.dd_tracing_enabled", False) + @patch("datadog_lambda.tracing.submit_errors_metric") + @patch("time.time_ns", return_value=42) + def test_exception_outside_handler_tracing_disabled( + self, mock_time, mock_submit_errors_metric + ): + fake_error = ValueError("Some error message") + resource_name = "my_handler" + with patch("datadog_lambda.tracing.tracer.trace") as mock_trace: + emit_telemetry_on_exception_outside_of_handler( + fake_error, resource_name, 42 + ) + + mock_submit_errors_metric.assert_called_once_with(None) + mock_trace.assert_not_called() diff --git a/tests/test_wrapper.py b/tests/test_wrapper.py index 13fef2b6..db9f0f9e 100644 --- a/tests/test_wrapper.py +++ b/tests/test_wrapper.py @@ -220,8 +220,8 @@ def lambda_handler(event, context): "account_id:123457598159", "functionname:python-layer-test", "resource:python-layer-test", - "cold_start:true", "memorysize:256", + "cold_start:true", "runtime:python3.9", "datadog_lambda:v6.6.6", "dd_lambda_layer:datadog-python39_X.X.X", @@ -251,8 +251,8 @@ def lambda_handler(event, context): "account_id:123457598159", "functionname:python-layer-test", "resource:python-layer-test", - "cold_start:true", "memorysize:256", + "cold_start:true", "runtime:python3.9", "datadog_lambda:v6.6.6", "dd_lambda_layer:datadog-python39_X.X.X", @@ -267,8 +267,8 @@ def lambda_handler(event, context): "account_id:123457598159", "functionname:python-layer-test", "resource:python-layer-test", - "cold_start:true", "memorysize:256", + "cold_start:true", "runtime:python3.9", "datadog_lambda:v6.6.6", "dd_lambda_layer:datadog-python39_X.X.X", @@ -306,8 +306,8 @@ def lambda_handler(event, context): "account_id:123457598159", "functionname:python-layer-test", "resource:python-layer-test", - "cold_start:true", "memorysize:256", + "cold_start:true", "runtime:python3.9", "datadog_lambda:v6.6.6", "dd_lambda_layer:datadog-python39_X.X.X", @@ -322,8 +322,8 @@ def lambda_handler(event, context): "account_id:123457598159", "functionname:python-layer-test", "resource:python-layer-test", - "cold_start:true", "memorysize:256", + "cold_start:true", "runtime:python3.9", "datadog_lambda:v6.6.6", "dd_lambda_layer:datadog-python39_X.X.X", @@ -358,8 +358,8 @@ def lambda_handler(event, context): "account_id:123457598159", "functionname:python-layer-test", "resource:python-layer-test", - "cold_start:true", "memorysize:256", + "cold_start:true", "runtime:python3.9", "datadog_lambda:v6.6.6", "dd_lambda_layer:datadog-python39_X.X.X", @@ -374,8 +374,8 @@ def lambda_handler(event, context): "account_id:123457598159", "functionname:python-layer-test", "resource:python-layer-test", - "cold_start:false", "memorysize:256", + "cold_start:false", "runtime:python3.9", "datadog_lambda:v6.6.6", "dd_lambda_layer:datadog-python39_X.X.X", @@ -408,8 +408,8 @@ def lambda_handler(event, context): "account_id:123457598159", "functionname:python-layer-test", "resource:python-layer-test:Latest", - "cold_start:true", "memorysize:256", + "cold_start:true", "runtime:python3.9", "datadog_lambda:v6.6.6", "dd_lambda_layer:datadog-python39_X.X.X", @@ -442,8 +442,8 @@ def lambda_handler(event, context): "functionname:python-layer-test", "executedversion:1", "resource:python-layer-test:My_alias-1", - "cold_start:true", "memorysize:256", + "cold_start:true", "runtime:python3.9", "datadog_lambda:v6.6.6", "dd_lambda_layer:datadog-python39_X.X.X", From bd1e62590719e94132b0771a310d52ffc4f28454 Mon Sep 17 00:00:00 2001 From: Tal Usvyatsky <18072279+TalUsvyatsky@users.noreply.github.com> Date: Wed, 1 May 2024 13:06:25 -0400 Subject: [PATCH 129/268] v5.94.0 (#482) --- datadog_lambda/version.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index c7debb23..b53aa6a7 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "5.93.0" +__version__ = "5.94.0" diff --git a/pyproject.toml b/pyproject.toml index 1db09ba4..f3663f1d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "5.93.0" +version = "5.94.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 95dd5be5a7fd651b9c5169f3c66498f03f727b2e Mon Sep 17 00:00:00 2001 From: Tal Usvyatsky <18072279+TalUsvyatsky@users.noreply.github.com> Date: Thu, 2 May 2024 09:24:01 -0400 Subject: [PATCH 130/268] remove ddsaml2aws login from release script (#484) --- scripts/publish_prod.sh | 2 -- 1 file changed, 2 deletions(-) diff --git a/scripts/publish_prod.sh b/scripts/publish_prod.sh index e138e3d8..f96c021d 100755 --- a/scripts/publish_prod.sh +++ b/scripts/publish_prod.sh @@ -85,11 +85,9 @@ if [ "$CONT" != "y" ]; then echo "Skipping deployment to GovCloud AWS" else echo "Ensuring you have access to the AWS GovCloud account" - ddsaml2aws login -a govcloud-us1-fed-human-engineering aws-vault exec sso-govcloud-us1-fed-engineering -- aws sts get-caller-identity echo "Publishing layers to GovCloud AWS regions" - ddsaml2aws login -a govcloud-us1-fed-human-engineering VERSION=$LAYER_VERSION aws-vault exec sso-govcloud-us1-fed-engineering -- ./scripts/publish_layers.sh fi From dc03756b120ba40c6b2b941019ceb977a9ce3b36 Mon Sep 17 00:00:00 2001 From: Dylan Yang Date: Thu, 9 May 2024 15:55:25 -0400 Subject: [PATCH 131/268] [SVLS-4422] Support for metrics with timestamps when the Extension is present (#480) use API to send metrics with timestamps when extension is present --- datadog_lambda/api.py | 8 ++------ datadog_lambda/metric.py | 26 +++++++++++++++++++++++--- tests/test_metric.py | 12 ++++++++++++ 3 files changed, 37 insertions(+), 9 deletions(-) diff --git a/datadog_lambda/api.py b/datadog_lambda/api.py index 079f69da..b5414fd9 100644 --- a/datadog_lambda/api.py +++ b/datadog_lambda/api.py @@ -1,7 +1,6 @@ import os import logging import base64 -from datadog_lambda.extension import should_use_extension logger = logging.getLogger(__name__) KMS_ENCRYPTION_CONTEXT_KEY = "LambdaFunctionName" @@ -48,13 +47,10 @@ def decrypt_kms_api_key(kms_client, ciphertext): def init_api(): - if ( - not should_use_extension - and not os.environ.get("DD_FLUSH_TO_LOG", "").lower() == "true" - ): + if not os.environ.get("DD_FLUSH_TO_LOG", "").lower() == "true": # Make sure that this package would always be lazy-loaded/outside from the critical path # since underlying packages are quite heavy to load - # and useless when the extension is present + # and useless with the extension unless sending metrics with timestamps from datadog import api if not api._api_key: diff --git a/datadog_lambda/metric.py b/datadog_lambda/metric.py index bc7391a6..115686af 100644 --- a/datadog_lambda/metric.py +++ b/datadog_lambda/metric.py @@ -10,13 +10,13 @@ from datadog_lambda.extension import should_use_extension from datadog_lambda.tags import get_enhanced_metrics_tags, dd_lambda_layer_tag -from datadog_lambda.api import init_api logger = logging.getLogger(__name__) lambda_stats = None +extension_thread_stats = None -init_api() +flush_in_thread = os.environ.get("DD_FLUSH_IN_THREAD", "").lower() == "true" if should_use_extension: from datadog_lambda.statsd_writer import StatsDWriter @@ -28,8 +28,9 @@ # end of invocation. To make metrics submitted from a long-running Lambda # function available sooner, consider using the Datadog Lambda extension. from datadog_lambda.thread_stats_writer import ThreadStatsWriter + from datadog_lambda.api import init_api - flush_in_thread = os.environ.get("DD_FLUSH_IN_THREAD", "").lower() == "true" + init_api() lambda_stats = ThreadStatsWriter(flush_in_thread) enhanced_metrics_enabled = ( @@ -57,6 +58,22 @@ def lambda_metric(metric_name, value, timestamp=None, tags=None, force_async=Fal tags = [] if tags is None else list(tags) tags.append(dd_lambda_layer_tag) + if should_use_extension and timestamp is not None: + # The extension does not support timestamps for distributions so we create a + # a thread stats writer to submit metrics with timestamps to the API + global extension_thread_stats + if extension_thread_stats is None: + from datadog_lambda.thread_stats_writer import ThreadStatsWriter + from datadog_lambda.api import init_api + + init_api() + extension_thread_stats = ThreadStatsWriter(flush_in_thread) + + extension_thread_stats.distribution( + metric_name, value, tags=tags, timestamp=timestamp + ) + return + if should_use_extension: logger.debug( "Sending metric %s value %s to Datadog via extension", metric_name, value @@ -94,6 +111,9 @@ def write_metric_point_to_stdout(metric_name, value, timestamp=None, tags=[]): def flush_stats(): lambda_stats.flush() + if extension_thread_stats is not None: + extension_thread_stats.flush() + def submit_enhanced_metric(metric_name, lambda_context): """Submits the enhanced metric with the given name diff --git a/tests/test_metric.py b/tests/test_metric.py index 992084b9..f07a4c6a 100644 --- a/tests/test_metric.py +++ b/tests/test_metric.py @@ -43,6 +43,18 @@ def test_lambda_metric_flush_to_log_with_extension(self): ) del os.environ["DD_FLUSH_TO_LOG"] + @patch("datadog_lambda.metric.should_use_extension", True) + def test_lambda_metric_timestamp_with_extension(self): + patcher = patch("datadog_lambda.metric.extension_thread_stats") + self.mock_metric_extension_thread_stats = patcher.start() + self.addCleanup(patcher.stop) + + lambda_metric("test_timestamp", 1, 123) + self.mock_metric_lambda_stats.distribution.assert_not_called() + self.mock_metric_extension_thread_stats.distribution.assert_called_with( + "test_timestamp", 1, timestamp=123, tags=[dd_lambda_layer_tag] + ) + def test_lambda_metric_flush_to_log(self): os.environ["DD_FLUSH_TO_LOG"] = "True" From 87adb4d5ecc5de351e069283bd159754d253c000 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Wed, 15 May 2024 12:30:48 -0400 Subject: [PATCH 132/268] safety check before create cold start spans (#485) --- datadog_lambda/cold_start.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/datadog_lambda/cold_start.py b/datadog_lambda/cold_start.py index d4d4b8c2..8c21420d 100644 --- a/datadog_lambda/cold_start.py +++ b/datadog_lambda/cold_start.py @@ -197,7 +197,8 @@ def trace(self, root_nodes: List[ImportNode] = root_nodes): def trace_tree(self, import_node: ImportNode, parent_span): if ( - import_node.end_time_ns - import_node.start_time_ns + not self.trace_ctx + or import_node.end_time_ns - import_node.start_time_ns < self.min_duration_ms * 1e6 or import_node.module_name in self.ignored_libs ): From 5447d8963e11eba24228145ce583117fc24c4097 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Thu, 16 May 2024 15:37:08 -0400 Subject: [PATCH 133/268] bugfix for sns-sqs non-rawMessageDelivery java upstream (#486) --- datadog_lambda/tracing.py | 2 +- .../event_samples/sns-sqs-java-upstream.json | 32 +++++++++++++++++++ tests/test_tracing.py | 8 +++++ 3 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 tests/event_samples/sns-sqs-java-upstream.json diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 60b9e726..73ac1e5c 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -273,7 +273,7 @@ def extract_context_from_sqs_or_sns_event_or_context(event, lambda_context): else: # Handle case where trace context is injected into attributes.AWSTraceHeader # example: Root=1-654321ab-000000001234567890abcdef;Parent=0123456789abcdef;Sampled=1 - attrs = first_record.get("attributes") + attrs = event.get("Records")[0].get("attributes") if attrs: x_ray_header = attrs.get("AWSTraceHeader") if x_ray_header: diff --git a/tests/event_samples/sns-sqs-java-upstream.json b/tests/event_samples/sns-sqs-java-upstream.json new file mode 100644 index 00000000..bef072c3 --- /dev/null +++ b/tests/event_samples/sns-sqs-java-upstream.json @@ -0,0 +1,32 @@ +{ + "Records": [ + { + "messageId": "892f0033-3a4e-4d61-9e26-70d6f7901cd5", + "receiptHandle": "AQEBa1vYusKmlcrFsXDOh8/il3nFWZt+cGeLSU7cjEEpF+N4dPfHzkFpVXKEZebtXbUGyJ18lpBpRtXMpbL7gNukCv3z3Uj61NQbwTTabhsX0Y0iAbh2TSTNgaC/egNVbl3mwDjtXhmIvQIA8Zzzl4AqIlS7a76QiTeTVAjLb1c2FtJYq+znDb52GNPzZ62fSJtDpjfhFEkHwL+w23NQo/Yx4rCmaygR/F7/5hOFtsOwERpTFBei7fDM0z87HVT0nLkqvtg9wyM1kKSsMX8ltjdI3cwFSMs9aTMGFA3uAee6JKswkMp0HCXxNZZ8lp3T9wdQTBUwS8y01vMxl9e0qtYwUpakBYfdlmGHDIbZGEsf59ZpLYlUek0iFl0pdW+5LquNvlA2hA/J9ENpxJYHN4eguTNwRxxpEyzSwmfNXgukgRqDmcZT84UY9GkeaGJ2f2jfyCE525sqB2CAPcK7zx9MZ2Jt/UxsbX5APdX4skXDgck=", + "body": { + "Type": "Notification", + "MessageId": "6dacdb4e-f8dd-5752-9f49-858ee02bcd55", + "TopicArn": "arn:aws:sns:us-west-2:425362996713:DdTraceXLambda-snssqschecksNestedStacksnssqschecksNestedStackResource58F786C6-11NORKTA1JFML-snsProducerJavaForPythonNonRawsnssqsproducerjavaforpythonnonrawtopicDDBAB6EA-ZBb8uCZzkS0S", + "Message": "hello from DdTraceXLambda-snssqschec-snssqsproducerjavaforpyt-z0t7yDk3zWt1", + "Timestamp": "2024-05-16T14:22:46.902Z", + "SignatureVersion": "1", + "Signature": "HBf+KLJg/1Crvg3T5a8jJwVwIjmiNe1jEZ1QXOw11x8At/nqXUrevdm/j8KR33w4gmW/MG6WPpafH8K5k+M+tmn8Mr4sWfJhzsfV4in8s6qbbesBCVL5TsGkfauBfSeOkvrH+2/MAnexUx1m28m+qLJyeTzozelT9IdEhm1ATg5bASeVQS3mFTWYvnO4DoJdMSS9O15ZUQSitjhB8Lv5/DRLKGIYYwhAqOVBVKBfbEbz/BbaI47dqu+uarxL4+m5wAUQIACncg/mxCIsB+oGdBVvFCd0YS7NahSpIKkL08tC78mvKZGiITPOzXw0VlmryWruNYyIXPPnTDhE31Pw6Q==", + "SigningCertURL": "https://sns.us-west-2.amazonaws.com/SimpleNotificationService-60eadc530605d63b8e62a523676ef735.pem", + "UnsubscribeURL": "https://sns.us-west-2.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-west-2:425362996713:DdTraceXLambda-snssqschecksNestedStacksnssqschecksNestedStackResource58F786C6-11NORKTA1JFML-snsProducerJavaForPythonNonRawsnssqsproducerjavaforpythonnonrawtopicDDBAB6EA-ZBb8uCZzkS0S:d44c53e8-538c-472f-89e1-89c131d9cd26", + "MessageAttributes": {} + }, + "attributes": { + "ApproximateReceiveCount": "1", + "AWSTraceHeader": "Root=1-664616b6-00000000425c5f4f8367f57e;Parent=6b971d513e9f9847;Sampled=1", + "SentTimestamp": "1715869366931", + "SenderId": "AIDAIYLAVTDLUXBIEIX46", + "ApproximateFirstReceiveTimestamp": "1715869366945" + }, + "messageAttributes": {}, + "md5OfBody": "e4f9d1cfee42abb22f764d004e88e7f2", + "eventSource": "aws:sqs", + "eventSourceARN": "arn:aws:sqs:us-west-2:425362996713:DdTraceXLambda-snssqschecksNested-snsProducerJavaForPythonNonRawsns-1vws7QPqW8e6", + "awsRegion": "us-west-2" + } + ] +} diff --git a/tests/test_tracing.py b/tests/test_tracing.py index 9629dcab..a810eb8a 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -213,6 +213,14 @@ def _wrap(*args, **kwargs): sampling_priority=1, ), ), + ( + "sns-sqs-java-upstream", + Context( + trace_id=4781801699472307582, + span_id=7752697518321801287, + sampling_priority=1, + ), + ), ( "sqs-string-msg-attribute", Context( From 4d07a0e81ceb7b5664d377b9873fcf9efa6d929a Mon Sep 17 00:00:00 2001 From: Brett Langdon Date: Tue, 21 May 2024 13:06:04 -0400 Subject: [PATCH 134/268] Add rust compiler to base image builder (#489) This will be needed in order to build dd-trace-py from source in the future --- Dockerfile | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Dockerfile b/Dockerfile index 488364a4..40726556 100644 --- a/Dockerfile +++ b/Dockerfile @@ -7,6 +7,11 @@ ARG runtime RUN mkdir -p /build/python/lib/$runtime/site-packages WORKDIR /build +# Add Rust compiler which is needed to build dd-trace-py from source +RUN curl https://sh.rustup.rs -sSf | \ + sh -s -- --default-toolchain stable -y +ENV PATH=/root/.cargo/bin:$PATH + # Install datadog_lambda and dependencies from local COPY . . RUN pip install . -t ./python/lib/$runtime/site-packages From 32c454d1731aaeb2a57d53fca6357a9f23093a0e Mon Sep 17 00:00:00 2001 From: kimi <47579703+kimi-p@users.noreply.github.com> Date: Thu, 23 May 2024 13:33:02 -0400 Subject: [PATCH 135/268] Pin Serverless to V3 in Python Layer (#491) --- ci/input_files/build.yaml.tpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/input_files/build.yaml.tpl b/ci/input_files/build.yaml.tpl index 57f9ff0e..97e5987f 100644 --- a/ci/input_files/build.yaml.tpl +++ b/ci/input_files/build.yaml.tpl @@ -97,7 +97,7 @@ integration-test ({{ $runtime.name }}-{{ $runtime.arch }}): before_script: - *install-node - EXTERNAL_ID_NAME=integration-test-externalid ROLE_TO_ASSUME=sandbox-integration-test-deployer AWS_ACCOUNT=425362996713 source ./ci/get_secrets.sh - - yarn global add serverless --prefix /usr/local + - yarn global add serverless@^3.38.0 --prefix /usr/local - cd integration_tests && yarn install && cd .. script: - RUNTIME_PARAM={{ $runtime.python_version }} ARCH={{ $runtime.arch }} ./scripts/run_integration_tests.sh From 3f7c439043ce69bd4de76117b1afcca44c039846 Mon Sep 17 00:00:00 2001 From: kimi <47579703+kimi-p@users.noreply.github.com> Date: Tue, 4 Jun 2024 16:51:50 -0400 Subject: [PATCH 136/268] Use sha256 to hash StepFunctions trace id and manually set `_dd.p.tid` (#490) --- datadog_lambda/tracing.py | 48 +++++++++++++++++++++++++++------------ tests/test_tracing.py | 39 ++++++++++++++++++++----------- 2 files changed, 59 insertions(+), 28 deletions(-) diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 73ac1e5c..64a19ccd 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -72,6 +72,8 @@ propagator = HTTPPropagator() DD_TRACE_JAVA_TRACE_ID_PADDING = "00000000" +HIGHER_64_BITS = "HIGHER_64_BITS" +LOWER_64_BITS = "LOWER_64_BITS" def _convert_xray_trace_id(xray_trace_id): @@ -354,14 +356,16 @@ def extract_context_from_kinesis_event(event, lambda_context): return extract_context_from_lambda_context(lambda_context) -def _deterministic_md5_hash(s: str) -> int: - """MD5 here is to generate trace_id, not for any encryption.""" - hex_number = hashlib.md5(s.encode("ascii")).hexdigest() - binary = bin(int(hex_number, 16)) - binary_str = str(binary) - binary_str_remove_0b = binary_str[2:].rjust(128, "0") - most_significant_64_bits_without_leading_1 = "0" + binary_str_remove_0b[1:-64] - result = int(most_significant_64_bits_without_leading_1, 2) +def _deterministic_sha256_hash(s: str, part: str) -> (int, int): + sha256_hash = hashlib.sha256(s.encode()).hexdigest() + + # First two chars is '0b'. zfill to ensure 256 bits, but we only care about the first 128 bits + binary_hash = bin(int(sha256_hash, 16))[2:].zfill(256) + if part == HIGHER_64_BITS: + updated_binary_hash = "0" + binary_hash[1:64] + else: + updated_binary_hash = "0" + binary_hash[65:128] + result = int(updated_binary_hash, 2) if result == 0: return 1 return result @@ -376,13 +380,27 @@ def extract_context_from_step_functions(event, lambda_context): execution_id = event.get("Execution").get("Id") state_name = event.get("State").get("Name") state_entered_time = event.get("State").get("EnteredTime") - trace_id = _deterministic_md5_hash(execution_id) - parent_id = _deterministic_md5_hash( - f"{execution_id}#{state_name}#{state_entered_time}" + # returning 128 bits since 128bit traceId will be break up into + # traditional traceId and _dd.p.tid tag + # https://github.com/DataDog/dd-trace-py/blob/3e34d21cb9b5e1916e549047158cb119317b96ab/ddtrace/propagation/http.py#L232-L240 + trace_id = _deterministic_sha256_hash(execution_id, LOWER_64_BITS) + + parent_id = _deterministic_sha256_hash( + f"{execution_id}#{state_name}#{state_entered_time}", HIGHER_64_BITS ) + sampling_priority = SamplingPriority.AUTO_KEEP return Context( - trace_id=trace_id, span_id=parent_id, sampling_priority=sampling_priority + trace_id=trace_id, + span_id=parent_id, + sampling_priority=sampling_priority, + # take the higher 64 bits as _dd.p.tid tag and use hex to encode + # [2:] to remove '0x' in the hex str + meta={ + "_dd.p.tid": hex( + _deterministic_sha256_hash(execution_id, HIGHER_64_BITS) + )[2:] + }, ) except Exception as e: logger.debug("The Step Functions trace extractor returned with error %s", e) @@ -1246,9 +1264,9 @@ def create_function_execution_span( "function_version": function_version, "request_id": context.aws_request_id, "resource_names": context.function_name, - "functionname": context.function_name.lower() - if context.function_name - else None, + "functionname": ( + context.function_name.lower() if context.function_name else None + ), "datadog_lambda": datadog_lambda_version, "dd_trace": ddtrace_version, "span.name": "aws.lambda", diff --git a/tests/test_tracing.py b/tests/test_tracing.py index a810eb8a..b94e968f 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -20,7 +20,9 @@ XraySubsegment, ) from datadog_lambda.tracing import ( - _deterministic_md5_hash, + HIGHER_64_BITS, + LOWER_64_BITS, + _deterministic_sha256_hash, create_inferred_span, extract_dd_trace_context, create_dd_dummy_metadata_subsegment, @@ -624,17 +626,19 @@ def test_step_function_trace_data(self): ctx, source, event_source = extract_dd_trace_context(sqs_event, lambda_ctx) self.assertEqual(source, "event") expected_context = Context( - trace_id=1074655265866231755, - span_id=4776286484851030060, + trace_id=3675572987363469717, + span_id=6880978411788117524, sampling_priority=1, + meta={"_dd.p.tid": "e987c84b36b11ab"}, ) self.assertEqual(ctx, expected_context) self.assertEqual( get_dd_trace_context(), { - TraceHeader.TRACE_ID: "1074655265866231755", - TraceHeader.PARENT_ID: fake_xray_header_value_parent_decimal, + TraceHeader.TRACE_ID: "3675572987363469717", + TraceHeader.PARENT_ID: "10713633173203262661", TraceHeader.SAMPLING_PRIORITY: "1", + "x-datadog-tags": "_dd.p.tid=e987c84b36b11ab", }, ) create_dd_dummy_metadata_subsegment(ctx, XraySubsegment.TRACE_KEY) @@ -1992,19 +1996,28 @@ def test_mark_trace_as_error_for_5xx_responses_sends_error_metric_and_set_error_ class TestStepFunctionsTraceContext(unittest.TestCase): def test_deterministic_m5_hash(self): - result = _deterministic_md5_hash("some_testing_random_string") - self.assertEqual(2251275791555400689, result) + result = _deterministic_sha256_hash("some_testing_random_string", LOWER_64_BITS) + self.assertEqual(7456137785171041414, result) + + def test_deterministic_m5_hash__result_the_same_as_backend_1(self): + result = _deterministic_sha256_hash( + "arn:aws:states:sa-east-1:425362996713:stateMachine:MyStateMachine-b276uka1j" + "#lambda#1", + HIGHER_64_BITS, + ) + self.assertEqual(3711631873188331089, result) - def test_deterministic_m5_hash__result_the_same_as_backend(self): - result = _deterministic_md5_hash( - "arn:aws:states:sa-east-1:601427271234:express:DatadogStateMachine:acaf1a67-336a-e854-1599-2a627eb2dd8a" - ":c8baf081-31f1-464d-971f-70cb17d01111#step-one#2022-12-08T21:08:19.224Z" + def test_deterministic_m5_hash__result_the_same_as_backend_2(self): + result = _deterministic_sha256_hash( + "arn:aws:states:sa-east-1:425362996713:stateMachine:MyStateMachine-b276uka1j" + "#lambda#2", + HIGHER_64_BITS, ) - self.assertEqual(8034507082463708833, result) + self.assertEqual(5759173372325510050, result) def test_deterministic_m5_hash__always_leading_with_zero(self): for i in range(100): - result = _deterministic_md5_hash(str(i)) + result = _deterministic_sha256_hash(str(i), 64) result_in_binary = bin(int(result)) # Leading zeros will be omitted, so only test for full 64 bits present if len(result_in_binary) == 66: # "0b" + 64 bits. From 350ecf30c0faa560bcc14ac780ba61ca552a11f3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 5 Jun 2024 15:01:38 -0400 Subject: [PATCH 137/268] --- (#487) updated-dependencies: - dependency-name: requests dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 172 ++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 125 insertions(+), 47 deletions(-) diff --git a/poetry.lock b/poetry.lock index 1986c23a..46902234 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,10 +1,9 @@ -# This file is automatically @generated by Poetry 1.4.2 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand. [[package]] name = "attrs" version = "23.2.0" description = "Classes Without Boilerplate" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -24,7 +23,6 @@ tests-no-zope = ["attrs[tests-mypy]", "cloudpickle", "hypothesis", "pympler", "p name = "boto3" version = "1.34.59" description = "The AWS SDK for Python" -category = "main" optional = true python-versions = ">= 3.8" files = [ @@ -44,7 +42,6 @@ crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] name = "botocore" version = "1.34.59" description = "Low-level, data-driven core of boto 3." -category = "main" optional = true python-versions = ">= 3.8" files = [ @@ -67,7 +64,6 @@ crt = ["awscrt (==0.19.19)"] name = "bytecode" version = "0.15.1" description = "Python module to generate and modify bytecode" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -82,7 +78,6 @@ typing-extensions = {version = "*", markers = "python_version < \"3.10\""} name = "cattrs" version = "23.2.3" description = "Composable complex class support for attrs and dataclasses." -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -108,7 +103,6 @@ ujson = ["ujson (>=5.7.0)"] name = "certifi" version = "2024.2.2" description = "Python package for providing Mozilla's CA Bundle." -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -120,7 +114,6 @@ files = [ name = "charset-normalizer" version = "3.3.2" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." -category = "main" optional = false python-versions = ">=3.7.0" files = [ @@ -220,7 +213,6 @@ files = [ name = "colorama" version = "0.4.6" description = "Cross-platform colored terminal text." -category = "main" optional = true python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ @@ -232,7 +224,6 @@ files = [ name = "datadog" version = "0.48.0" description = "The Datadog Python library" -category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ @@ -247,7 +238,6 @@ requests = ">=2.6.0" name = "ddsketch" version = "2.0.4" description = "Distributed quantile sketches" -category = "main" optional = false python-versions = ">=2.7" files = [ @@ -263,7 +253,6 @@ six = "*" name = "ddtrace" version = "2.7.2" description = "Datadog APM client library" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -350,7 +339,6 @@ opentracing = ["opentracing (>=2.0.0)"] name = "deprecated" version = "1.2.14" description = "Python @deprecated decorator to deprecate old python classes, functions or methods." -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -368,7 +356,6 @@ dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "sphinx (<2)", "tox"] name = "envier" version = "0.5.1" description = "Python application configuration via the environment" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -383,7 +370,6 @@ mypy = ["mypy"] name = "exceptiongroup" version = "1.2.0" description = "Backport of PEP 654 (exception groups)" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -398,7 +384,6 @@ test = ["pytest (>=6)"] name = "flake8" version = "5.0.4" description = "the modular source code checker: pep8 pyflakes and co" -category = "main" optional = true python-versions = ">=3.6.1" files = [ @@ -415,7 +400,6 @@ pyflakes = ">=2.5.0,<2.6.0" name = "idna" version = "3.6" description = "Internationalized Domain Names in Applications (IDNA)" -category = "main" optional = false python-versions = ">=3.5" files = [ @@ -427,7 +411,6 @@ files = [ name = "importlib-metadata" version = "6.11.0" description = "Read metadata from Python packages" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -447,7 +430,6 @@ testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs name = "iniconfig" version = "2.0.0" description = "brain-dead simple config-ini parsing" -category = "main" optional = true python-versions = ">=3.7" files = [ @@ -459,7 +441,6 @@ files = [ name = "jmespath" version = "1.0.1" description = "JSON Matching Expressions" -category = "main" optional = true python-versions = ">=3.7" files = [ @@ -471,7 +452,6 @@ files = [ name = "mccabe" version = "0.7.0" description = "McCabe checker, plugin for flake8" -category = "main" optional = true python-versions = ">=3.6" files = [ @@ -483,7 +463,6 @@ files = [ name = "opentelemetry-api" version = "1.23.0" description = "OpenTelemetry Python API" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -499,7 +478,6 @@ importlib-metadata = ">=6.0,<7.0" name = "packaging" version = "24.0" description = "Core utilities for Python packages" -category = "main" optional = true python-versions = ">=3.7" files = [ @@ -511,7 +489,6 @@ files = [ name = "pluggy" version = "1.4.0" description = "plugin and hook calling mechanisms for python" -category = "main" optional = true python-versions = ">=3.8" files = [ @@ -527,7 +504,6 @@ testing = ["pytest", "pytest-benchmark"] name = "protobuf" version = "4.25.3" description = "" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -544,11 +520,21 @@ files = [ {file = "protobuf-4.25.3.tar.gz", hash = "sha256:25b5d0b42fd000320bd7830b349e3b696435f3b329810427a6bcce6a5492cc5c"}, ] +[[package]] +name = "py-cpuinfo" +version = "9.0.0" +description = "Get CPU info with pure Python" +optional = true +python-versions = "*" +files = [ + {file = "py-cpuinfo-9.0.0.tar.gz", hash = "sha256:3cdbbf3fac90dc6f118bfd64384f309edeadd902d7c8fb17f02ffa1fc3f49690"}, + {file = "py_cpuinfo-9.0.0-py3-none-any.whl", hash = "sha256:859625bc251f64e21f077d099d4162689c762b5d6a4c3c97553d56241c9674d5"}, +] + [[package]] name = "pycodestyle" version = "2.9.1" description = "Python style guide checker" -category = "main" optional = true python-versions = ">=3.6" files = [ @@ -560,7 +546,6 @@ files = [ name = "pyflakes" version = "2.5.0" description = "passive checker of Python programs" -category = "main" optional = true python-versions = ">=3.6" files = [ @@ -572,7 +557,6 @@ files = [ name = "pytest" version = "8.1.1" description = "pytest: simple powerful testing with Python" -category = "main" optional = true python-versions = ">=3.8" files = [ @@ -591,11 +575,30 @@ tomli = {version = ">=1", markers = "python_version < \"3.11\""} [package.extras] testing = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] +[[package]] +name = "pytest-benchmark" +version = "4.0.0" +description = "A ``pytest`` fixture for benchmarking code. It will group the tests into rounds that are calibrated to the chosen timer." +optional = true +python-versions = ">=3.7" +files = [ + {file = "pytest-benchmark-4.0.0.tar.gz", hash = "sha256:fb0785b83efe599a6a956361c0691ae1dbb5318018561af10f3e915caa0048d1"}, + {file = "pytest_benchmark-4.0.0-py3-none-any.whl", hash = "sha256:fdb7db64e31c8b277dff9850d2a2556d8b60bcb0ea6524e36e28ffd7c87f71d6"}, +] + +[package.dependencies] +py-cpuinfo = "*" +pytest = ">=3.8" + +[package.extras] +aspect = ["aspectlib"] +elasticsearch = ["elasticsearch"] +histogram = ["pygal", "pygaljs"] + [[package]] name = "python-dateutil" version = "2.9.0.post0" description = "Extensions to the standard Python datetime module" -category = "main" optional = true python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" files = [ @@ -608,14 +611,13 @@ six = ">=1.5" [[package]] name = "requests" -version = "2.31.0" +version = "2.32.0" description = "Python HTTP for Humans." -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"}, - {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"}, + {file = "requests-2.32.0-py3-none-any.whl", hash = "sha256:f2c3881dddb70d056c5bd7600a4fae312b2a300e39be6a118d30b90bd27262b5"}, + {file = "requests-2.32.0.tar.gz", hash = "sha256:fa5490319474c82ef1d2c9bc459d3652e3ae4ef4c4ebdd18a21145a47ca4b6b8"}, ] [package.dependencies] @@ -632,7 +634,6 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] name = "s3transfer" version = "0.10.0" description = "An Amazon S3 Transfer Manager" -category = "main" optional = true python-versions = ">= 3.8" files = [ @@ -650,7 +651,6 @@ crt = ["botocore[crt] (>=1.33.2,<2.0a.0)"] name = "setuptools" version = "69.1.1" description = "Easily download, build, install, upgrade, and uninstall Python packages" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -667,7 +667,6 @@ testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jar name = "six" version = "1.16.0" description = "Python 2 and 3 compatibility utilities" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -679,7 +678,6 @@ files = [ name = "sqlparse" version = "0.4.4" description = "A non-validating SQL parser." -category = "main" optional = false python-versions = ">=3.5" files = [ @@ -696,7 +694,6 @@ test = ["pytest", "pytest-cov"] name = "tomli" version = "2.0.1" description = "A lil' TOML parser" -category = "main" optional = true python-versions = ">=3.7" files = [ @@ -708,7 +705,6 @@ files = [ name = "typing-extensions" version = "4.10.0" description = "Backported and Experimental Type Hints for Python 3.8+" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -716,11 +712,97 @@ files = [ {file = "typing_extensions-4.10.0.tar.gz", hash = "sha256:b0abd7c89e8fb96f98db18d86106ff1d90ab692004eb746cf6eda2682f91b3cb"}, ] +[[package]] +name = "ujson" +version = "5.10.0" +description = "Ultra fast JSON encoder and decoder for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "ujson-5.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2601aa9ecdbee1118a1c2065323bda35e2c5a2cf0797ef4522d485f9d3ef65bd"}, + {file = "ujson-5.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:348898dd702fc1c4f1051bc3aacbf894caa0927fe2c53e68679c073375f732cf"}, + {file = "ujson-5.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22cffecf73391e8abd65ef5f4e4dd523162a3399d5e84faa6aebbf9583df86d6"}, + {file = "ujson-5.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:26b0e2d2366543c1bb4fbd457446f00b0187a2bddf93148ac2da07a53fe51569"}, + {file = "ujson-5.10.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:caf270c6dba1be7a41125cd1e4fc7ba384bf564650beef0df2dd21a00b7f5770"}, + {file = "ujson-5.10.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a245d59f2ffe750446292b0094244df163c3dc96b3ce152a2c837a44e7cda9d1"}, + {file = "ujson-5.10.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:94a87f6e151c5f483d7d54ceef83b45d3a9cca7a9cb453dbdbb3f5a6f64033f5"}, + {file = "ujson-5.10.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:29b443c4c0a113bcbb792c88bea67b675c7ca3ca80c3474784e08bba01c18d51"}, + {file = "ujson-5.10.0-cp310-cp310-win32.whl", hash = "sha256:c18610b9ccd2874950faf474692deee4223a994251bc0a083c114671b64e6518"}, + {file = "ujson-5.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:924f7318c31874d6bb44d9ee1900167ca32aa9b69389b98ecbde34c1698a250f"}, + {file = "ujson-5.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a5b366812c90e69d0f379a53648be10a5db38f9d4ad212b60af00bd4048d0f00"}, + {file = "ujson-5.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:502bf475781e8167f0f9d0e41cd32879d120a524b22358e7f205294224c71126"}, + {file = "ujson-5.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5b91b5d0d9d283e085e821651184a647699430705b15bf274c7896f23fe9c9d8"}, + {file = "ujson-5.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:129e39af3a6d85b9c26d5577169c21d53821d8cf68e079060602e861c6e5da1b"}, + {file = "ujson-5.10.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f77b74475c462cb8b88680471193064d3e715c7c6074b1c8c412cb526466efe9"}, + {file = "ujson-5.10.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7ec0ca8c415e81aa4123501fee7f761abf4b7f386aad348501a26940beb1860f"}, + {file = "ujson-5.10.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:ab13a2a9e0b2865a6c6db9271f4b46af1c7476bfd51af1f64585e919b7c07fd4"}, + {file = "ujson-5.10.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:57aaf98b92d72fc70886b5a0e1a1ca52c2320377360341715dd3933a18e827b1"}, + {file = "ujson-5.10.0-cp311-cp311-win32.whl", hash = "sha256:2987713a490ceb27edff77fb184ed09acdc565db700ee852823c3dc3cffe455f"}, + {file = "ujson-5.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:f00ea7e00447918ee0eff2422c4add4c5752b1b60e88fcb3c067d4a21049a720"}, + {file = "ujson-5.10.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:98ba15d8cbc481ce55695beee9f063189dce91a4b08bc1d03e7f0152cd4bbdd5"}, + {file = "ujson-5.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a9d2edbf1556e4f56e50fab7d8ff993dbad7f54bac68eacdd27a8f55f433578e"}, + {file = "ujson-5.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6627029ae4f52d0e1a2451768c2c37c0c814ffc04f796eb36244cf16b8e57043"}, + {file = "ujson-5.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8ccb77b3e40b151e20519c6ae6d89bfe3f4c14e8e210d910287f778368bb3d1"}, + {file = "ujson-5.10.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3caf9cd64abfeb11a3b661329085c5e167abbe15256b3b68cb5d914ba7396f3"}, + {file = "ujson-5.10.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6e32abdce572e3a8c3d02c886c704a38a1b015a1fb858004e03d20ca7cecbb21"}, + {file = "ujson-5.10.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a65b6af4d903103ee7b6f4f5b85f1bfd0c90ba4eeac6421aae436c9988aa64a2"}, + {file = "ujson-5.10.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:604a046d966457b6cdcacc5aa2ec5314f0e8c42bae52842c1e6fa02ea4bda42e"}, + {file = "ujson-5.10.0-cp312-cp312-win32.whl", hash = "sha256:6dea1c8b4fc921bf78a8ff00bbd2bfe166345f5536c510671bccececb187c80e"}, + {file = "ujson-5.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:38665e7d8290188b1e0d57d584eb8110951a9591363316dd41cf8686ab1d0abc"}, + {file = "ujson-5.10.0-cp313-cp313-macosx_10_9_x86_64.whl", hash = "sha256:618efd84dc1acbd6bff8eaa736bb6c074bfa8b8a98f55b61c38d4ca2c1f7f287"}, + {file = "ujson-5.10.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:38d5d36b4aedfe81dfe251f76c0467399d575d1395a1755de391e58985ab1c2e"}, + {file = "ujson-5.10.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:67079b1f9fb29ed9a2914acf4ef6c02844b3153913eb735d4bf287ee1db6e557"}, + {file = "ujson-5.10.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d7d0e0ceeb8fe2468c70ec0c37b439dd554e2aa539a8a56365fd761edb418988"}, + {file = "ujson-5.10.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:59e02cd37bc7c44d587a0ba45347cc815fb7a5fe48de16bf05caa5f7d0d2e816"}, + {file = "ujson-5.10.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:2a890b706b64e0065f02577bf6d8ca3b66c11a5e81fb75d757233a38c07a1f20"}, + {file = "ujson-5.10.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:621e34b4632c740ecb491efc7f1fcb4f74b48ddb55e65221995e74e2d00bbff0"}, + {file = "ujson-5.10.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b9500e61fce0cfc86168b248104e954fead61f9be213087153d272e817ec7b4f"}, + {file = "ujson-5.10.0-cp313-cp313-win32.whl", hash = "sha256:4c4fc16f11ac1612f05b6f5781b384716719547e142cfd67b65d035bd85af165"}, + {file = "ujson-5.10.0-cp313-cp313-win_amd64.whl", hash = "sha256:4573fd1695932d4f619928fd09d5d03d917274381649ade4328091ceca175539"}, + {file = "ujson-5.10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a984a3131da7f07563057db1c3020b1350a3e27a8ec46ccbfbf21e5928a43050"}, + {file = "ujson-5.10.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:73814cd1b9db6fc3270e9d8fe3b19f9f89e78ee9d71e8bd6c9a626aeaeaf16bd"}, + {file = "ujson-5.10.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:61e1591ed9376e5eddda202ec229eddc56c612b61ac6ad07f96b91460bb6c2fb"}, + {file = "ujson-5.10.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2c75269f8205b2690db4572a4a36fe47cd1338e4368bc73a7a0e48789e2e35a"}, + {file = "ujson-5.10.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7223f41e5bf1f919cd8d073e35b229295aa8e0f7b5de07ed1c8fddac63a6bc5d"}, + {file = "ujson-5.10.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:d4dc2fd6b3067c0782e7002ac3b38cf48608ee6366ff176bbd02cf969c9c20fe"}, + {file = "ujson-5.10.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:232cc85f8ee3c454c115455195a205074a56ff42608fd6b942aa4c378ac14dd7"}, + {file = "ujson-5.10.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:cc6139531f13148055d691e442e4bc6601f6dba1e6d521b1585d4788ab0bfad4"}, + {file = "ujson-5.10.0-cp38-cp38-win32.whl", hash = "sha256:e7ce306a42b6b93ca47ac4a3b96683ca554f6d35dd8adc5acfcd55096c8dfcb8"}, + {file = "ujson-5.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:e82d4bb2138ab05e18f089a83b6564fee28048771eb63cdecf4b9b549de8a2cc"}, + {file = "ujson-5.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:dfef2814c6b3291c3c5f10065f745a1307d86019dbd7ea50e83504950136ed5b"}, + {file = "ujson-5.10.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4734ee0745d5928d0ba3a213647f1c4a74a2a28edc6d27b2d6d5bd9fa4319e27"}, + {file = "ujson-5.10.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d47ebb01bd865fdea43da56254a3930a413f0c5590372a1241514abae8aa7c76"}, + {file = "ujson-5.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dee5e97c2496874acbf1d3e37b521dd1f307349ed955e62d1d2f05382bc36dd5"}, + {file = "ujson-5.10.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7490655a2272a2d0b072ef16b0b58ee462f4973a8f6bbe64917ce5e0a256f9c0"}, + {file = "ujson-5.10.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:ba17799fcddaddf5c1f75a4ba3fd6441f6a4f1e9173f8a786b42450851bd74f1"}, + {file = "ujson-5.10.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:2aff2985cef314f21d0fecc56027505804bc78802c0121343874741650a4d3d1"}, + {file = "ujson-5.10.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:ad88ac75c432674d05b61184178635d44901eb749786c8eb08c102330e6e8996"}, + {file = "ujson-5.10.0-cp39-cp39-win32.whl", hash = "sha256:2544912a71da4ff8c4f7ab5606f947d7299971bdd25a45e008e467ca638d13c9"}, + {file = "ujson-5.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:3ff201d62b1b177a46f113bb43ad300b424b7847f9c5d38b1b4ad8f75d4a282a"}, + {file = "ujson-5.10.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:5b6fee72fa77dc172a28f21693f64d93166534c263adb3f96c413ccc85ef6e64"}, + {file = "ujson-5.10.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:61d0af13a9af01d9f26d2331ce49bb5ac1fb9c814964018ac8df605b5422dcb3"}, + {file = "ujson-5.10.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ecb24f0bdd899d368b715c9e6664166cf694d1e57be73f17759573a6986dd95a"}, + {file = "ujson-5.10.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fbd8fd427f57a03cff3ad6574b5e299131585d9727c8c366da4624a9069ed746"}, + {file = "ujson-5.10.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:beeaf1c48e32f07d8820c705ff8e645f8afa690cca1544adba4ebfa067efdc88"}, + {file = "ujson-5.10.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:baed37ea46d756aca2955e99525cc02d9181de67f25515c468856c38d52b5f3b"}, + {file = "ujson-5.10.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:7663960f08cd5a2bb152f5ee3992e1af7690a64c0e26d31ba7b3ff5b2ee66337"}, + {file = "ujson-5.10.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:d8640fb4072d36b08e95a3a380ba65779d356b2fee8696afeb7794cf0902d0a1"}, + {file = "ujson-5.10.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78778a3aa7aafb11e7ddca4e29f46bc5139131037ad628cc10936764282d6753"}, + {file = "ujson-5.10.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b0111b27f2d5c820e7f2dbad7d48e3338c824e7ac4d2a12da3dc6061cc39c8e6"}, + {file = "ujson-5.10.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:c66962ca7565605b355a9ed478292da628b8f18c0f2793021ca4425abf8b01e5"}, + {file = "ujson-5.10.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:ba43cc34cce49cf2d4bc76401a754a81202d8aa926d0e2b79f0ee258cb15d3a4"}, + {file = "ujson-5.10.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:ac56eb983edce27e7f51d05bc8dd820586c6e6be1c5216a6809b0c668bb312b8"}, + {file = "ujson-5.10.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f44bd4b23a0e723bf8b10628288c2c7c335161d6840013d4d5de20e48551773b"}, + {file = "ujson-5.10.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7c10f4654e5326ec14a46bcdeb2b685d4ada6911050aa8baaf3501e57024b804"}, + {file = "ujson-5.10.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0de4971a89a762398006e844ae394bd46991f7c385d7a6a3b93ba229e6dac17e"}, + {file = "ujson-5.10.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:e1402f0564a97d2a52310ae10a64d25bcef94f8dd643fcf5d310219d915484f7"}, + {file = "ujson-5.10.0.tar.gz", hash = "sha256:b3cd8f3c5d8c7738257f1018880444f7b7d9b66232c64649f562d7ba86ad4bc1"}, +] + [[package]] name = "urllib3" version = "1.26.18" description = "HTTP library with thread-safe connection pooling, file post, and more." -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" files = [ @@ -737,7 +819,6 @@ socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] name = "urllib3" version = "2.0.7" description = "HTTP library with thread-safe connection pooling, file post, and more." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -755,7 +836,6 @@ zstd = ["zstandard (>=0.18.0)"] name = "wrapt" version = "1.16.0" description = "Module for decorators, wrappers and monkey patching." -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -835,7 +915,6 @@ files = [ name = "xmltodict" version = "0.13.0" description = "Makes working with XML feel like you are working with JSON" -category = "main" optional = false python-versions = ">=3.4" files = [ @@ -847,7 +926,6 @@ files = [ name = "zipp" version = "3.17.0" description = "Backport of pathlib-compatible object wrapper for zip files" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -860,9 +938,9 @@ docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.link testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy (>=0.9.1)", "pytest-ruff"] [extras] -dev = ["boto3", "flake8", "pytest", "requests"] +dev = ["boto3", "flake8", "pytest", "pytest-benchmark", "requests"] [metadata] lock-version = "2.0" python-versions = ">=3.8.0,<4" -content-hash = "80b471e42622e7de85a0795ad15cb6c01e61dd65df354b5e289a2cd47536a26b" +content-hash = "00e1c1ca984076195947582442ca262577e8037d16e2e961040d5f8bad084124" From e7eb340b74d40f5660a8c8106c088899d09f098a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?jordan=20gonz=C3=A1lez?= <30836115+duncanista@users.noreply.github.com> Date: Wed, 5 Jun 2024 15:28:46 -0400 Subject: [PATCH 138/268] update version (#493) --- datadog_lambda/version.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index b53aa6a7..a29fe46e 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "5.94.0" +__version__ = "6.95.0" diff --git a/pyproject.toml b/pyproject.toml index f3663f1d..a97959e9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "5.94.0" +version = "6.95.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From c62cab907c2943a379ad98647b63e642972178b1 Mon Sep 17 00:00:00 2001 From: kimi <47579703+kimi-p@users.noreply.github.com> Date: Wed, 5 Jun 2024 20:37:58 -0400 Subject: [PATCH 139/268] Update README for breaking change (#494) --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 39bc4ce0..dc5b8757 100644 --- a/README.md +++ b/README.md @@ -47,6 +47,9 @@ The Continuous Profiler works by spawning a thread which periodically wakes up a ## Major Version Notes +### 6.x / Layer version 95+ +- The release changed how Lambda's traceID is hashed if the incoming payload contains Step Functions context object. This change only affects those who uses inject Step Functions context object into Lambda payload. + ### 5.x / Layer version 86+ - Python3.7 support has been [deprecated](https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html) by AWS, and support removed from this library. From a06975c98447c2ce2322603c2f0961279d47a968 Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Mon, 10 Jun 2024 10:49:00 -0700 Subject: [PATCH 140/268] Bump ddtrace version to latest. (#496) --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index a97959e9..f161de14 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -27,7 +27,7 @@ classifiers = [ python = ">=3.8.0,<4" datadog = ">=0.41.0,<1.0.0" wrapt = "^1.11.2" -ddtrace = ">=2.7.2" +ddtrace = ">=2.9.0" ujson = ">=5.9.0" urllib3 = [ {version = "<2.0.0", python = "<3.11", optional = true}, From 92e625ea61f9244d1d965f5d039c3f5c2be88ace Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Mon, 10 Jun 2024 12:47:33 -0700 Subject: [PATCH 141/268] Bump version for release v6.96.0 (#497) --- datadog_lambda/version.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index a29fe46e..a5490c9a 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "6.95.0" +__version__ = "6.96.0" diff --git a/pyproject.toml b/pyproject.toml index f161de14..cb144c30 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "6.95.0" +version = "6.96.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 82970d1430e9b49a2f3f4cf23abcb635a2dd25d8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 21 Jun 2024 17:29:30 -0400 Subject: [PATCH 142/268] chore(deps): bump urllib3 from 1.26.18 to 1.26.19 (#499) Bumps [urllib3](https://github.com/urllib3/urllib3) from 1.26.18 to 1.26.19. - [Release notes](https://github.com/urllib3/urllib3/releases) - [Changelog](https://github.com/urllib3/urllib3/blob/1.26.19/CHANGES.rst) - [Commits](https://github.com/urllib3/urllib3/compare/1.26.18...1.26.19) --- updated-dependencies: - dependency-name: urllib3 dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 27 +++++---------------------- 1 file changed, 5 insertions(+), 22 deletions(-) diff --git a/poetry.lock b/poetry.lock index 46902234..026dc813 100644 --- a/poetry.lock +++ b/poetry.lock @@ -801,13 +801,13 @@ files = [ [[package]] name = "urllib3" -version = "1.26.18" +version = "1.26.19" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" files = [ - {file = "urllib3-1.26.18-py2.py3-none-any.whl", hash = "sha256:34b97092d7e0a3a8cf7cd10e386f401b3737364026c45e622aa02903dffe0f07"}, - {file = "urllib3-1.26.18.tar.gz", hash = "sha256:f8ecc1bba5667413457c529ab955bf8c67b45db799d159066261719e328580a0"}, + {file = "urllib3-1.26.19-py2.py3-none-any.whl", hash = "sha256:37a0344459b199fce0e80b0d3569837ec6b6937435c5244e7fd73fa6006830f3"}, + {file = "urllib3-1.26.19.tar.gz", hash = "sha256:3e3d753a8618b86d7de333b4223005f68720bcd6a7d2bcb9fbd2229ec7c1e429"}, ] [package.extras] @@ -815,23 +815,6 @@ brotli = ["brotli (==1.0.9)", "brotli (>=1.0.9)", "brotlicffi (>=0.8.0)", "brotl secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress", "pyOpenSSL (>=0.14)", "urllib3-secure-extra"] socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] -[[package]] -name = "urllib3" -version = "2.0.7" -description = "HTTP library with thread-safe connection pooling, file post, and more." -optional = false -python-versions = ">=3.7" -files = [ - {file = "urllib3-2.0.7-py3-none-any.whl", hash = "sha256:fdb6d215c776278489906c2f8916e6e7d4f5a9b602ccbcfdf7f016fc8da0596e"}, - {file = "urllib3-2.0.7.tar.gz", hash = "sha256:c97dfde1f7bd43a71c8d2a58e369e9b2bf692d1334ea9f9cae55add7d0dd0f84"}, -] - -[package.extras] -brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] -secure = ["certifi", "cryptography (>=1.9)", "idna (>=2.0.0)", "pyopenssl (>=17.1.0)", "urllib3-secure-extra"] -socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] -zstd = ["zstandard (>=0.18.0)"] - [[package]] name = "wrapt" version = "1.16.0" @@ -943,4 +926,4 @@ dev = ["boto3", "flake8", "pytest", "pytest-benchmark", "requests"] [metadata] lock-version = "2.0" python-versions = ">=3.8.0,<4" -content-hash = "00e1c1ca984076195947582442ca262577e8037d16e2e961040d5f8bad084124" +content-hash = "e7299f7eef791b1721b37fbc61d325cfe62aa576cb6c9aa7c9db88a23dd41eae" From 4dd3f6278b7101b26f0d985b787334f133455dce Mon Sep 17 00:00:00 2001 From: Sam Brenner <106700075+sabrenner@users.noreply.github.com> Date: Mon, 1 Jul 2024 16:05:53 -0400 Subject: [PATCH 143/268] [MLOB-1009] Auto-Instrument LLM Observability (#500) * add force flush * add enable to init * move flush to after parent aws span finishes * move flushing to be with other flushes --- datadog_lambda/wrapper.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index ba31f2be..35c98496 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -54,6 +54,10 @@ if profiling_env_var: from ddtrace.profiling import profiler +llmobs_env_var = os.environ.get("DD_LLMOBS_ENABLED", "false").lower() in ("true", "1") +if llmobs_env_var: + from ddtrace.llmobs import LLMObs + logger = logging.getLogger(__name__) DD_FLUSH_TO_LOG = "DD_FLUSH_TO_LOG" @@ -221,6 +225,10 @@ def __init__(self, func): # Patch third-party libraries for tracing patch_all() + # Enable LLM Observability + if llmobs_env_var: + LLMObs.enable() + logger.debug("datadog_lambda_wrapper initialized") except Exception as e: logger.error(format_err_with_traceback(e)) @@ -373,6 +381,9 @@ def _after(self, event, context): # logs api flush_extension() + if llmobs_env_var: + LLMObs.flush() + if self.encode_authorizer_context and is_authorizer_response(self.response): self._inject_authorizer_span_headers( event.get("requestContext", {}).get("requestId") From c2fc987f26c3814cd7fe21ada3fb61022a9e0b51 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 9 Jul 2024 15:55:05 -0400 Subject: [PATCH 144/268] chore(deps-dev): bump certifi from 2024.2.2 to 2024.7.4 (#502) Bumps [certifi](https://github.com/certifi/python-certifi) from 2024.2.2 to 2024.7.4. - [Commits](https://github.com/certifi/python-certifi/compare/2024.02.02...2024.07.04) --- updated-dependencies: - dependency-name: certifi dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/poetry.lock b/poetry.lock index 026dc813..6ba3970d 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. [[package]] name = "attrs" @@ -101,13 +101,13 @@ ujson = ["ujson (>=5.7.0)"] [[package]] name = "certifi" -version = "2024.2.2" +version = "2024.7.4" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2024.2.2-py3-none-any.whl", hash = "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1"}, - {file = "certifi-2024.2.2.tar.gz", hash = "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f"}, + {file = "certifi-2024.7.4-py3-none-any.whl", hash = "sha256:c198e21b1289c2ab85ee4e67bb4b4ef3ead0892059901a8d5b622f24a1101e90"}, + {file = "certifi-2024.7.4.tar.gz", hash = "sha256:5a1e7645bc0ec61a09e26c36f6106dd4cf40c6db3a1fb6352b0244e7fb057c7b"}, ] [[package]] From dc964dbaa1b3c5f2e9adfeff191be7dce2e410ff Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 9 Jul 2024 16:44:16 -0400 Subject: [PATCH 145/268] chore(deps-dev): bump zipp from 3.17.0 to 3.19.1 (#503) Bumps [zipp](https://github.com/jaraco/zipp) from 3.17.0 to 3.19.1. - [Release notes](https://github.com/jaraco/zipp/releases) - [Changelog](https://github.com/jaraco/zipp/blob/main/NEWS.rst) - [Commits](https://github.com/jaraco/zipp/compare/v3.17.0...v3.19.1) --- updated-dependencies: - dependency-name: zipp dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/poetry.lock b/poetry.lock index 6ba3970d..a8ba5783 100644 --- a/poetry.lock +++ b/poetry.lock @@ -907,18 +907,18 @@ files = [ [[package]] name = "zipp" -version = "3.17.0" +version = "3.19.1" description = "Backport of pathlib-compatible object wrapper for zip files" optional = false python-versions = ">=3.8" files = [ - {file = "zipp-3.17.0-py3-none-any.whl", hash = "sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31"}, - {file = "zipp-3.17.0.tar.gz", hash = "sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0"}, + {file = "zipp-3.19.1-py3-none-any.whl", hash = "sha256:2828e64edb5386ea6a52e7ba7cdb17bb30a73a858f5eb6eb93d8d36f5ea26091"}, + {file = "zipp-3.19.1.tar.gz", hash = "sha256:35427f6d5594f4acf82d25541438348c26736fa9b3afa2754bcd63cdb99d8e8f"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy (>=0.9.1)", "pytest-ruff"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +test = ["big-O", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-itertools", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy", "pytest-ruff (>=0.2.1)"] [extras] dev = ["boto3", "flake8", "pytest", "pytest-benchmark", "requests"] From dae7a88c9f424982deadd7f9aa01bedaaca1893a Mon Sep 17 00:00:00 2001 From: Dylan Yang Date: Wed, 10 Jul 2024 12:19:47 -0400 Subject: [PATCH 146/268] [SVLS-4999] Add Lambda tags to metrics sent via the API (#501) * add function tags to historical dist metrics * fix * add timestamp ceiling * snake_case * exclude alias when creating arn tag --- datadog_lambda/metric.py | 23 +++++++++++++++++-- datadog_lambda/thread_stats_writer.py | 4 +++- datadog_lambda/wrapper.py | 2 +- tests/test_metric.py | 32 ++++++++++++++++++++++++--- 4 files changed, 54 insertions(+), 7 deletions(-) diff --git a/datadog_lambda/metric.py b/datadog_lambda/metric.py index 115686af..3bc9955f 100644 --- a/datadog_lambda/metric.py +++ b/datadog_lambda/metric.py @@ -7,6 +7,7 @@ import time import logging import ujson as json +from datetime import datetime, timedelta from datadog_lambda.extension import should_use_extension from datadog_lambda.tags import get_enhanced_metrics_tags, dd_lambda_layer_tag @@ -61,6 +62,16 @@ def lambda_metric(metric_name, value, timestamp=None, tags=None, force_async=Fal if should_use_extension and timestamp is not None: # The extension does not support timestamps for distributions so we create a # a thread stats writer to submit metrics with timestamps to the API + timestamp_ceiling = int( + (datetime.now() - timedelta(hours=4)).timestamp() + ) # 4 hours ago + if timestamp_ceiling > timestamp: + logger.warning( + "Timestamp %s is older than 4 hours, not submitting metric %s", + timestamp, + metric_name, + ) + return global extension_thread_stats if extension_thread_stats is None: from datadog_lambda.thread_stats_writer import ThreadStatsWriter @@ -108,11 +119,19 @@ def write_metric_point_to_stdout(metric_name, value, timestamp=None, tags=[]): ) -def flush_stats(): +def flush_stats(lambda_context=None): lambda_stats.flush() if extension_thread_stats is not None: - extension_thread_stats.flush() + if lambda_context is not None: + tags = get_enhanced_metrics_tags(lambda_context) + split_arn = lambda_context.invoked_function_arn.split(":") + if len(split_arn) > 7: + # Get rid of the alias + split_arn.pop() + arn = ":".join(split_arn) + tags.append("function_arn:" + arn) + extension_thread_stats.flush(tags) def submit_enhanced_metric(metric_name, lambda_context): diff --git a/datadog_lambda/thread_stats_writer.py b/datadog_lambda/thread_stats_writer.py index bfcf3c99..367b8b21 100644 --- a/datadog_lambda/thread_stats_writer.py +++ b/datadog_lambda/thread_stats_writer.py @@ -22,11 +22,13 @@ def distribution(self, metric_name, value, tags=[], timestamp=None): metric_name, value, tags=tags, timestamp=timestamp ) - def flush(self): + def flush(self, tags=None): """ "Flush distributions from ThreadStats to Datadog. Modified based on `datadog.threadstats.base.ThreadStats.flush()`, to gain better control over exception handling. """ + if tags: + self.thread_stats.constant_tags = self.thread_stats.constant_tags + tags _, dists = self.thread_stats._get_aggregate_metrics_and_dists(float("inf")) count_dists = len(dists) if not count_dists: diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index 35c98496..ed3d92b4 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -374,7 +374,7 @@ def _after(self, event, context): logger.debug("Failed to create cold start spans. %s", e) if not self.flush_to_log or should_use_extension: - flush_stats() + flush_stats(context) if should_use_extension and self.local_testing_mode: # when testing locally, the extension does not know when an # invocation completes because it does not have access to the diff --git a/tests/test_metric.py b/tests/test_metric.py index f07a4c6a..031b1180 100644 --- a/tests/test_metric.py +++ b/tests/test_metric.py @@ -5,7 +5,7 @@ from botocore.exceptions import ClientError as BotocoreClientError from datadog.api.exceptions import ClientError - +from datetime import datetime, timedelta from datadog_lambda.metric import lambda_metric from datadog_lambda.api import decrypt_kms_api_key, KMS_ENCRYPTION_CONTEXT_KEY @@ -49,12 +49,28 @@ def test_lambda_metric_timestamp_with_extension(self): self.mock_metric_extension_thread_stats = patcher.start() self.addCleanup(patcher.stop) - lambda_metric("test_timestamp", 1, 123) + delta = timedelta(minutes=1) + timestamp = int((datetime.now() - delta).timestamp()) + + lambda_metric("test_timestamp", 1, timestamp) self.mock_metric_lambda_stats.distribution.assert_not_called() self.mock_metric_extension_thread_stats.distribution.assert_called_with( - "test_timestamp", 1, timestamp=123, tags=[dd_lambda_layer_tag] + "test_timestamp", 1, timestamp=timestamp, tags=[dd_lambda_layer_tag] ) + @patch("datadog_lambda.metric.should_use_extension", True) + def test_lambda_metric_invalid_timestamp_with_extension(self): + patcher = patch("datadog_lambda.metric.extension_thread_stats") + self.mock_metric_extension_thread_stats = patcher.start() + self.addCleanup(patcher.stop) + + delta = timedelta(hours=5) + timestamp = int((datetime.now() - delta).timestamp()) + + lambda_metric("test_timestamp", 1, timestamp) + self.mock_metric_lambda_stats.distribution.assert_not_called() + self.mock_metric_extension_thread_stats.distribution.assert_not_called() + def test_lambda_metric_flush_to_log(self): os.environ["DD_FLUSH_TO_LOG"] = "True" @@ -84,6 +100,16 @@ def test_retry_on_remote_disconnected(self): lambda_stats.flush() self.assertEqual(self.mock_threadstats_flush_distributions.call_count, 2) + def test_flush_stats_with_tags(self): + lambda_stats = ThreadStatsWriter(True) + tags = ["tag1:value1", "tag2:value2"] + lambda_stats.flush(tags) + self.mock_threadstats_flush_distributions.assert_called_once_with( + lambda_stats.thread_stats._get_aggregate_metrics_and_dists(float("inf"))[1] + ) + for tag in tags: + self.assertTrue(tag in lambda_stats.thread_stats.constant_tags) + MOCK_FUNCTION_NAME = "myFunction" From 7761a1ef83c7a4a33b3978cedef4ba5cabbfcb34 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 Jul 2024 17:24:18 -0400 Subject: [PATCH 147/268] chore(deps-dev): bump setuptools from 69.1.1 to 70.0.0 (#504) Bumps [setuptools](https://github.com/pypa/setuptools) from 69.1.1 to 70.0.0. - [Release notes](https://github.com/pypa/setuptools/releases) - [Changelog](https://github.com/pypa/setuptools/blob/main/NEWS.rst) - [Commits](https://github.com/pypa/setuptools/compare/v69.1.1...v70.0.0) --- updated-dependencies: - dependency-name: setuptools dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/poetry.lock b/poetry.lock index a8ba5783..2a77ca8f 100644 --- a/poetry.lock +++ b/poetry.lock @@ -649,19 +649,18 @@ crt = ["botocore[crt] (>=1.33.2,<2.0a.0)"] [[package]] name = "setuptools" -version = "69.1.1" +version = "70.0.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "setuptools-69.1.1-py3-none-any.whl", hash = "sha256:02fa291a0471b3a18b2b2481ed902af520c69e8ae0919c13da936542754b4c56"}, - {file = "setuptools-69.1.1.tar.gz", hash = "sha256:5c0806c7d9af348e6dd3777b4f4dbb42c7ad85b190104837488eab9a7c945cf8"}, + {file = "setuptools-70.0.0-py3-none-any.whl", hash = "sha256:54faa7f2e8d2d11bcd2c07bed282eef1046b5c080d1c32add737d7b5817b1ad4"}, + {file = "setuptools-70.0.0.tar.gz", hash = "sha256:f211a66637b8fa059bb28183da127d4e86396c991a942b028c6650d4319c3fd0"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.2)", "pip (>=19.1)", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff (>=0.2.1)", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] -testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.2)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] +testing = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "mypy (==1.9)", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.1)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy", "pytest-perf", "pytest-ruff (>=0.2.1)", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] [[package]] name = "six" From 50fb98707d2c85995e48ca1f98cd58f0ffdb8e1a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?jordan=20gonz=C3=A1lez?= <30836115+duncanista@users.noreply.github.com> Date: Tue, 16 Jul 2024 12:54:56 -0400 Subject: [PATCH 148/268] upgrade dependencies (#505) --- poetry.lock | 333 +++++++++++++++++++++++++------------------------ pyproject.toml | 2 +- 2 files changed, 171 insertions(+), 164 deletions(-) diff --git a/poetry.lock b/poetry.lock index 2a77ca8f..3eed0293 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand. [[package]] name = "attrs" @@ -21,17 +21,17 @@ tests-no-zope = ["attrs[tests-mypy]", "cloudpickle", "hypothesis", "pympler", "p [[package]] name = "boto3" -version = "1.34.59" +version = "1.34.144" description = "The AWS SDK for Python" optional = true -python-versions = ">= 3.8" +python-versions = ">=3.8" files = [ - {file = "boto3-1.34.59-py3-none-any.whl", hash = "sha256:004e67b078be58d34469406f93cc8b95bc43becef4bbe44523a0b8e51f84c668"}, - {file = "boto3-1.34.59.tar.gz", hash = "sha256:162edf182e53c198137a28432a626dba103f787a8f5000ed4758b73ccd203fa0"}, + {file = "boto3-1.34.144-py3-none-any.whl", hash = "sha256:b8433d481d50b68a0162c0379c0dd4aabfc3d1ad901800beb5b87815997511c1"}, + {file = "boto3-1.34.144.tar.gz", hash = "sha256:2f3e88b10b8fcc5f6100a9d74cd28230edc9d4fa226d99dd40a3ab38ac213673"}, ] [package.dependencies] -botocore = ">=1.34.59,<1.35.0" +botocore = ">=1.34.144,<1.35.0" jmespath = ">=0.7.1,<2.0.0" s3transfer = ">=0.10.0,<0.11.0" @@ -40,13 +40,13 @@ crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] [[package]] name = "botocore" -version = "1.34.59" +version = "1.34.144" description = "Low-level, data-driven core of boto 3." optional = true -python-versions = ">= 3.8" +python-versions = ">=3.8" files = [ - {file = "botocore-1.34.59-py3-none-any.whl", hash = "sha256:4bc112dafb1679ab571117593f7656604726a3da0e5ae5bad00ea772fa40e75c"}, - {file = "botocore-1.34.59.tar.gz", hash = "sha256:24edb4d21d7c97dea0c6c4a80d36b3809b1443a30b0bd5e317d6c319dfac823f"}, + {file = "botocore-1.34.144-py3-none-any.whl", hash = "sha256:a2cf26e1bf10d5917a2285e50257bc44e94a1d16574f282f3274f7a5d8d1f08b"}, + {file = "botocore-1.34.144.tar.gz", hash = "sha256:4215db28d25309d59c99507f1f77df9089e5bebbad35f6e19c7c44ec5383a3e8"}, ] [package.dependencies] @@ -54,11 +54,11 @@ jmespath = ">=0.7.1,<2.0.0" python-dateutil = ">=2.1,<3.0.0" urllib3 = [ {version = ">=1.25.4,<1.27", markers = "python_version < \"3.10\""}, - {version = ">=1.25.4,<2.1", markers = "python_version >= \"3.10\""}, + {version = ">=1.25.4,<2.2.0 || >2.2.0,<3", markers = "python_version >= \"3.10\""}, ] [package.extras] -crt = ["awscrt (==0.19.19)"] +crt = ["awscrt (==0.20.11)"] [[package]] name = "bytecode" @@ -222,13 +222,13 @@ files = [ [[package]] name = "datadog" -version = "0.48.0" +version = "0.49.1" description = "The Datadog Python library" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ - {file = "datadog-0.48.0-py2.py3-none-any.whl", hash = "sha256:c3f819e2dc632a546a5b4e8d45409e996d4fa18c60df7814c82eda548e0cca59"}, - {file = "datadog-0.48.0.tar.gz", hash = "sha256:d4d661358c3e7f801fbfe15118f5ccf08b9bd9b1f45b8b910605965283edad64"}, + {file = "datadog-0.49.1-py2.py3-none-any.whl", hash = "sha256:4a56d57490ea699a0dfd9253547485a57b4120e93489defadcf95c66272374d6"}, + {file = "datadog-0.49.1.tar.gz", hash = "sha256:4cb7a7991af6cadb868fe450cd456473e65f11fc678b7d7cf61044ff1c6074d8"}, ] [package.dependencies] @@ -236,103 +236,109 @@ requests = ">=2.6.0" [[package]] name = "ddsketch" -version = "2.0.4" +version = "3.0.1" description = "Distributed quantile sketches" optional = false -python-versions = ">=2.7" +python-versions = ">=3.7" files = [ - {file = "ddsketch-2.0.4-py3-none-any.whl", hash = "sha256:3227a270fd686a29d3a7128f9352ccf852314410380fc11384356f1ae2a75938"}, - {file = "ddsketch-2.0.4.tar.gz", hash = "sha256:32f7314077fec8747d4faebaec2c854b5ffc399c5f552f73fa94024f48d74d64"}, + {file = "ddsketch-3.0.1-py3-none-any.whl", hash = "sha256:6d047b455fe2837c43d366ff1ae6ba0c3166e15499de8688437a75cea914224e"}, + {file = "ddsketch-3.0.1.tar.gz", hash = "sha256:aa8f20b2965e61731ca4fee2ca9c209f397f5bbb23f9d192ec8bd7a2f5bd9824"}, ] [package.dependencies] -protobuf = {version = ">=3.0.0", markers = "python_version >= \"3.7\""} six = "*" +[package.extras] +serialization = ["protobuf (>=3.0.0)"] + [[package]] name = "ddtrace" -version = "2.7.2" +version = "2.9.2" description = "Datadog APM client library" optional = false python-versions = ">=3.7" files = [ - {file = "ddtrace-2.7.2-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:31a0a4ffefdc6c20e9e4ef663b411ea66bd2a4113bec7f10292df00b75e883f3"}, - {file = "ddtrace-2.7.2-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:fd148fce8c18a278b055f7e1b4c56e5b3214cd17fc42882dfb987826a00197d6"}, - {file = "ddtrace-2.7.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce0febe3be1c06b7b3ea64aa21d0a37bc06f9a4c3291e833e95687c10be459a2"}, - {file = "ddtrace-2.7.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6cc7663f1c7d42f47266ae135b4ee16773e125417597e24da86bb78ecc82f85b"}, - {file = "ddtrace-2.7.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:06c6b7e6f153fb739de3da62cb9d99283a2669f8ebeb92238d272803939c7433"}, - {file = "ddtrace-2.7.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:a7879965428bb7c6abd020031ef3a5ffcc0104b7c15f021dcc0315bc421a721a"}, - {file = "ddtrace-2.7.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:5e3d33c43e8302c72d1b2b7a854d4a17c787973e61ec76cd7fc6434839aefc7c"}, - {file = "ddtrace-2.7.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fcbb686d0ffe47df42fe092e020302c912c956da742cf4787e616c8f73a26c8b"}, - {file = "ddtrace-2.7.2-cp310-cp310-win32.whl", hash = "sha256:f9a76c303cec59216b706186e2de38ae1d650405660277fed121c7658f320cf7"}, - {file = "ddtrace-2.7.2-cp310-cp310-win_amd64.whl", hash = "sha256:4385b4f4f8ec7313ead4d852d8dd50cae4c45f49b3893cc6aa4a64a3b3be93b8"}, - {file = "ddtrace-2.7.2-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:4dd90dc7c173edc32283b4f70937ea01ec43924a1b0af7ef6bbaa22076210860"}, - {file = "ddtrace-2.7.2-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:923462adde72f363821c0c165ac78aa76236ae12022d44ad7c51b8870595bbaa"}, - {file = "ddtrace-2.7.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:190c4eefc1e3c0a7befd995bf10b51451ddd497fb636fd825d7f8527e28c5864"}, - {file = "ddtrace-2.7.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c5016bc73e92adef4017e8cf7fff8a49a2c0fad8dcac600459fa30f63dbab8be"}, - {file = "ddtrace-2.7.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c230035c714ed9ea3dd16d65813f539ba9c30c87294107d5f77cdddad430a086"}, - {file = "ddtrace-2.7.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:1689277365728d5735931b98ef64115d958ab76fb698472e7d92a1f71bf0000b"}, - {file = "ddtrace-2.7.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:3e3a19ae9e8e2e6aff56aa93d73a0d72ce5530c1f0347b7ebba68b5c437efe49"}, - {file = "ddtrace-2.7.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e03cf1787728ae01cb8cd0b474b09461d47afb15a2146b1753bee80a27568d86"}, - {file = "ddtrace-2.7.2-cp311-cp311-win32.whl", hash = "sha256:081ba7c3d876c6dde6d3f8078205e3ae06932f0dbe5cb283f9bdc99052c262de"}, - {file = "ddtrace-2.7.2-cp311-cp311-win_amd64.whl", hash = "sha256:0299654ce610fe4d0f73b9c599bfaacd17537d1193cc7be95fb8e5238bed0ffa"}, - {file = "ddtrace-2.7.2-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:283d1ed0d496e07b80ef372f5e78d5a5aa86a70b59b1a0039d655d5796d8cd37"}, - {file = "ddtrace-2.7.2-cp312-cp312-macosx_11_0_x86_64.whl", hash = "sha256:a0e0ad2f20ce6942b3ceca0578be72416aacd6f63a7ef07de5a86ea524b16ad4"}, - {file = "ddtrace-2.7.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2094747698d8ffd50339b4c8142923371272a4e919a1f56cc75e8cce868ff638"}, - {file = "ddtrace-2.7.2-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dd239ba8a9762ef1defb7bb5c70e8b488987b462936f6f9f70a6613b35376178"}, - {file = "ddtrace-2.7.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82170d1d5153554dcfd475c0c1ab64f315cc7f00c5cf6c6bb471025b661ecc41"}, - {file = "ddtrace-2.7.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3140f5db9313f6a14d02a9036f16a1d5311261daec2d90160db829d08593ce1e"}, - {file = "ddtrace-2.7.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:134194fa8e8c14798374074c5472f33479cf5220dfccea79e1abaea7f57bdef2"}, - {file = "ddtrace-2.7.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5ce6f31d785762b80a8a8d346bdd302f15977cf0b0e13f81f4fdbf7815bae2c4"}, - {file = "ddtrace-2.7.2-cp312-cp312-win32.whl", hash = "sha256:0e6cd36d2373345863b3664f440b0255c1313e4f7ea3ac343de38ffe5402fa90"}, - {file = "ddtrace-2.7.2-cp312-cp312-win_amd64.whl", hash = "sha256:8ee761d7dfa01ccfeeb81215d16da27d0cfcc47a58a6b582dfd5816bccb64005"}, - {file = "ddtrace-2.7.2-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:c3b55cb4fc6ec1994f7f1e44dfbf62f46069b16cebe8b26781a3b198c821591d"}, - {file = "ddtrace-2.7.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7aa91a2c729f9187a75084b2a0fce23c63a8d3181e9c33a640e9e638ddbc7079"}, - {file = "ddtrace-2.7.2-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b4ce51a957f21ae997795a9a2e9f11fb988718417012e2a5765f74e157f3099a"}, - {file = "ddtrace-2.7.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0fb0adacd1116b1043f92382fd3dc9e7deabd6d788c15c2b1e3b0f75c4adb711"}, - {file = "ddtrace-2.7.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:99a6cf91b3ab290afac26fa61b81b746677b1627df12373919219fd562881c2d"}, - {file = "ddtrace-2.7.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:d4f8ac0ac0970d65223247c879729c4c489e3cc69529b54e9dd2051efc68a007"}, - {file = "ddtrace-2.7.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:6052dd35bb0ec6d1023f0c4de9b0426a9e16d80fd8152d8eb8135e34bf41e1df"}, - {file = "ddtrace-2.7.2-cp37-cp37m-win32.whl", hash = "sha256:641e440ac175bb04e03e34543ed48a3ddfe4a393712c62deb2f2c78adb48db90"}, - {file = "ddtrace-2.7.2-cp37-cp37m-win_amd64.whl", hash = "sha256:1687a40014873860b8c87a9a3e18dee51fa6a593e4758f973ed4cb8832b4e53a"}, - {file = "ddtrace-2.7.2-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:d5529a7e4a083ec1388872c5a9b41b38622a7146d27d3bdee81d701f0ac6fc38"}, - {file = "ddtrace-2.7.2-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:df4b51f39b260d8706fdf5417f3f94277f76b951cbbeabdb2b3a597d5f6cd0c1"}, - {file = "ddtrace-2.7.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:27c6e8c3b1bf642ca74afe985985450f2ca18e686ecb4f2e0ab978ae5fc03f8f"}, - {file = "ddtrace-2.7.2-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c0399c670229651517338c456304a2a65ce54387b8ddecf2da7011b259c0817d"}, - {file = "ddtrace-2.7.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c81a89236f3ea91ad0e9da1fef32d9420c0d4614a44ef0a2cab168444cdb0d8"}, - {file = "ddtrace-2.7.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:06d840db3283999ddacc3c9d8f5e5f0e0692ce635500d51f5e7e7ed2109c989a"}, - {file = "ddtrace-2.7.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:0e242cab1c2a153e418060f66e477e21b45cd33843959a6d000f3f9ea8a9c06a"}, - {file = "ddtrace-2.7.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b51e2230d805873974af882c19026030f40aee14a8d1b55d378443659ff4463f"}, - {file = "ddtrace-2.7.2-cp38-cp38-win32.whl", hash = "sha256:7c589ee49644d6c022928ebe49e4586b22ac40f8f841d67e01eeda4a6f61cea0"}, - {file = "ddtrace-2.7.2-cp38-cp38-win_amd64.whl", hash = "sha256:0974c8f36f0f1be229befede438ba91c1da715abd68091c0c0e21ec4d3d85f79"}, - {file = "ddtrace-2.7.2-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:b602703fff34f3397df22fdc1184fc039d89e8c5b07cc2bcc330c9b83bcc6ad6"}, - {file = "ddtrace-2.7.2-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:81ff83a9cdc033175780379d83af4bb03785bfd3c71672954f00c5a7f8d0d63b"}, - {file = "ddtrace-2.7.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d6f7e2fa06c61f9a26b253898654a97b49b805942aee19fb7c4b95e17105c6a5"}, - {file = "ddtrace-2.7.2-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d0140acfd73449e8cfa090e322f76ff85f385ce4337111ed2780cd2ee62e5e4b"}, - {file = "ddtrace-2.7.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9af429e4c48cae2fb6a9a51cdb6ccc2dc0cabbc9905c1ce6e9062335da0b9db"}, - {file = "ddtrace-2.7.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:09330db7a2c0ed91d244ef653f0aa261153dc0820874923c325058352b5278fd"}, - {file = "ddtrace-2.7.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:8638ddb94d77bdf55cc64718af66b172c4ff677b57c9e59dfd9dc8f630fb3169"}, - {file = "ddtrace-2.7.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0ba0668e439134b3f258ddcc3e5c1d1d8848a40954087288312557b455b6967e"}, - {file = "ddtrace-2.7.2-cp39-cp39-win32.whl", hash = "sha256:aa3c927299aa134ccaf8821eb7284366c60e29a542d0e7738e0b7dd9182b2025"}, - {file = "ddtrace-2.7.2-cp39-cp39-win_amd64.whl", hash = "sha256:7e3f36e91d1a91fb083258b09fa7f887a295321b4dc928630ce748ec664e70be"}, - {file = "ddtrace-2.7.2.tar.gz", hash = "sha256:89a0b4b30220aeb68c2845fa21e51ec9bf915a1893cf003850b9d8022e7cb72a"}, + {file = "ddtrace-2.9.2-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:aaa4c4c0d001e5695d8d8f03361e25fbba62716bd4dbc861daa45bc71802a165"}, + {file = "ddtrace-2.9.2-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:99fa4f3437dd908622d015fd0a92015eb2bb718554fd6e9cb3c8984737ca8173"}, + {file = "ddtrace-2.9.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c3be4f5ea1378138f26b6a84b23048a681e705e602f5f4a2db6c9f1ae6f52c9"}, + {file = "ddtrace-2.9.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b79f44ebd64496e8d2c85250290486f08cf338b02cb484a24d17204d11af39d6"}, + {file = "ddtrace-2.9.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e0f9bcf9dc2fee145c1fa295e451898dd0b6fbdbdd7cc205b5c226c945369238"}, + {file = "ddtrace-2.9.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:6418399be4eb0100d8c25e7154d94032dafb08f3387864db6ea64ae6b01044a4"}, + {file = "ddtrace-2.9.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:72a3d3cdca7508b787e6bd0d09a75f1cb7cba9580f91591be51af22c9d9bf9bf"}, + {file = "ddtrace-2.9.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:93efef2f0b88792fefe5840c47c9f262fc94471078c0cf10f54831b44ea422b6"}, + {file = "ddtrace-2.9.2-cp310-cp310-win32.whl", hash = "sha256:5ad725a61da4b4d76368b7e205ae327ae39cab5ec64d8c6e16760bc86d6a6507"}, + {file = "ddtrace-2.9.2-cp310-cp310-win_amd64.whl", hash = "sha256:9a31c9a2d714b3d45fb5ae24b912521d4569d1dac3fd3fc3c77ec9fcba5dfd26"}, + {file = "ddtrace-2.9.2-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:358ccb1b7bf9ec39658e00aa1ba4972712603deefb5562219ce0ccc5e7521e52"}, + {file = "ddtrace-2.9.2-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:98b44e28151b07a9ce8ae27951978ac340f66640c833dee9b396831ddf06a9a6"}, + {file = "ddtrace-2.9.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c9d409e6d061bbe3d026696403edd37b390a4a8bc661b7490c02199a8a9da7e9"}, + {file = "ddtrace-2.9.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6a26ecdf3f7666e604bb15e20d32b63d948e85bcde6c63b2f1d45af0681079bf"}, + {file = "ddtrace-2.9.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:519e2a9e6daf592bf4a9993ae782621016770b5182ed7567fba0ef23812ca6d7"}, + {file = "ddtrace-2.9.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:2243582de6aef14fc87621169d586679572cf3f39c79cef6f898963f37a6a296"}, + {file = "ddtrace-2.9.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c176c0ea15e2b94f139ca68ba3d5ee48430c717ae785cd9e51eeb59634629c94"}, + {file = "ddtrace-2.9.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e9befe7b40141a686f991fd98780b9dfe31e55b9ed3cf685a5fcfa256789b879"}, + {file = "ddtrace-2.9.2-cp311-cp311-win32.whl", hash = "sha256:84f1a7b517f1790374ad1079e783cd893634518521ae6e2ed41a4e343227830b"}, + {file = "ddtrace-2.9.2-cp311-cp311-win_amd64.whl", hash = "sha256:4c34823c3ed3e1da5fe11de483c4091179f21fb4f255144a5082af2f52a1e02e"}, + {file = "ddtrace-2.9.2-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:b5b749b609036917cab6ae9187aaf4e83051e0396bd0d4d9f2af4bfbaf866bf2"}, + {file = "ddtrace-2.9.2-cp312-cp312-macosx_11_0_x86_64.whl", hash = "sha256:b1f21076ecb3a7736e92dc288ff6437337098f9acc6dcbbebfcfb7a1ce7aabff"}, + {file = "ddtrace-2.9.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8bb857a7a66ac56d041f2e40778f88cea51db55d0611beb36b6a45b52504c90d"}, + {file = "ddtrace-2.9.2-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f1f7e403b77f6c26d2f813712c38cda09d4b5c2e07e5e6e578eb71ce674382ce"}, + {file = "ddtrace-2.9.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dace336a9c14f6f8953732806d4fccee489d670aac6b2b75a3fa9eb94c32fda6"}, + {file = "ddtrace-2.9.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:e7c59ce06f887db4a6a0309bdc504beada8969979876dc8f54681e10d1993426"}, + {file = "ddtrace-2.9.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:0b7c81323a952da21e7a85b20334bb33ba47600c7b7604f4267022217c7025e3"}, + {file = "ddtrace-2.9.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:07aa83c4a6e6822fd365a92f972576980badc3d426d257d9814212d0a2a5f837"}, + {file = "ddtrace-2.9.2-cp312-cp312-win32.whl", hash = "sha256:5fe686fe657b9871f6faf2f7f7e97e659421c17dc5903b43ff174f8866726a21"}, + {file = "ddtrace-2.9.2-cp312-cp312-win_amd64.whl", hash = "sha256:858b61e57cb11c5c467907add391ce8ad2dec823bc326c8e1505368c4f0ac7d4"}, + {file = "ddtrace-2.9.2-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:28ee6dee988609f1d720934d52f6a29b7c9b914a39fb70528a51a194d1ab3b8d"}, + {file = "ddtrace-2.9.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:07ade55550c3b1debb96f9ffdb716eae5bd48335d3ca54e9c5b9e492a7dc91f2"}, + {file = "ddtrace-2.9.2-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:41cf398da7a28a78c108cccfc87abe33d7e8936f99462f6fee3877fb180913c0"}, + {file = "ddtrace-2.9.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2d79259e140070dc2533c3bc5776df7731baa9e2f078daf4ce708efd33ac00d3"}, + {file = "ddtrace-2.9.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:753f845308d97f8290d4ff7ce92e7875b83efa4eb5ff3fac8e2042caf6761bfb"}, + {file = "ddtrace-2.9.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:28c88f5efc946dddefc320c682c93bb65001ee38e78569e496b20823f21ef745"}, + {file = "ddtrace-2.9.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:765d7c031b54da32fc18cbeafadd3c22cd1a6f98317e6e0498bf2898fbeae350"}, + {file = "ddtrace-2.9.2-cp37-cp37m-win32.whl", hash = "sha256:7b5dddfbd23646a16ad9b991fd2866628dc56b7abe8dd7100962ce0681b738c9"}, + {file = "ddtrace-2.9.2-cp37-cp37m-win_amd64.whl", hash = "sha256:c8c17f5f57f65ea95d6bf61511869abfaa10fb555e81b0294e30226afa047115"}, + {file = "ddtrace-2.9.2-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:aa329ace4909bd402de3d9dbaaaff9e3545fd5a9fad1c72a39e075743c673099"}, + {file = "ddtrace-2.9.2-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:afebe7e5467a743795a878cad3e9658f704c5572ca398a70a840da034a571f67"}, + {file = "ddtrace-2.9.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd1271c597f088b1ff7e5881138a1317a799025c834bd496cecfdcb816748e51"}, + {file = "ddtrace-2.9.2-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:24da863c984d3261c7dae9362cf48c01fc0dc1557c92de336a1bbeb08452e046"}, + {file = "ddtrace-2.9.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e68014fa46b4be6e58cc64feb3516ec856df714ce3d4576f3d6df9079ddfba8f"}, + {file = "ddtrace-2.9.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:10824581a708c643515747e814c6b146bed6d91e687a825111858a198eee75e6"}, + {file = "ddtrace-2.9.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:03c6874475db7d7b1fb563cd6aa3ba0c22ee72bb8c6cceb36c84dba6ca21e2f4"}, + {file = "ddtrace-2.9.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b91b8cfc7239317fe6b185beb0b8153769b43bf11fb2cda9e6e2996962e4b820"}, + {file = "ddtrace-2.9.2-cp38-cp38-win32.whl", hash = "sha256:0d9456defb679d6225d32967902853cd4d8b01f55e4da18089a9ffa9d6495328"}, + {file = "ddtrace-2.9.2-cp38-cp38-win_amd64.whl", hash = "sha256:d39c2da38c295aba1810083ce63d37041e3e40a06add960f6edf5a33517f743c"}, + {file = "ddtrace-2.9.2-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:c251e684c9e3a7828308a74d2be073d88cf28b4be457a5c201a2755ef9205d24"}, + {file = "ddtrace-2.9.2-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:707151d2aa4f04388af4e3e8b0783e99b110fa0f2f1db775f64667c62bd249c2"}, + {file = "ddtrace-2.9.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c536a53d628e8d96812edea10d84e9df2f9022a7e932beb10e187c98f4471ec"}, + {file = "ddtrace-2.9.2-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9c093fbabdeb6ecc6a749b1b5f80ebe557dcf768984bb42aadf66c57f04f3b85"}, + {file = "ddtrace-2.9.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4d5b6c58d4ebc988f61a5f81e8953531ee59490240d69463592ff63dd2f6e00b"}, + {file = "ddtrace-2.9.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:85511fade95b21ca29e9ba314eeb5847733a81128d8cbdbc43012caba45c03c8"}, + {file = "ddtrace-2.9.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:8b3b2f64414c57742e7be924079e80576110abf8725f70e56bce0603877d08bf"}, + {file = "ddtrace-2.9.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ad04028487d7cdb44318323ab4438c873e01855c3391a3c47a4400ff499bcbfc"}, + {file = "ddtrace-2.9.2-cp39-cp39-win32.whl", hash = "sha256:206759c2847ee7174e14c4a2cffd3086ad55aca10d73f50b24cc2e00ec22e871"}, + {file = "ddtrace-2.9.2-cp39-cp39-win_amd64.whl", hash = "sha256:d916dbfeeebb38cd48c64c771b74276b716902471f6bf9c02e8d5c278f0baad1"}, + {file = "ddtrace-2.9.2.tar.gz", hash = "sha256:40775def3f3fc01d1c4c5eec64f7f624621eb394fe62d107c27e181123443716"}, ] [package.dependencies] attrs = ">=20" -bytecode = {version = "*", markers = "python_version >= \"3.8\""} +bytecode = [ + {version = ">=0.13.0", markers = "python_version < \"3.11.0\""}, + {version = ">=0.15.0", markers = "python_version >= \"3.12.0\""}, + {version = ">=0.14.0", markers = "python_version ~= \"3.11.0\""}, +] cattrs = "*" -ddsketch = ">=2.0.1" -envier = "*" +ddsketch = ">=3.0.0" +envier = ">=0.5,<1.0" opentelemetry-api = ">=1" protobuf = ">=3" setuptools = {version = "*", markers = "python_version >= \"3.12\""} six = ">=1.12.0" -sqlparse = ">=0.2.2" typing-extensions = "*" xmltodict = ">=0.12" [package.extras] +openai = ["tiktoken"] opentracing = ["opentracing (>=2.0.0)"] [[package]] @@ -354,13 +360,13 @@ dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "sphinx (<2)", "tox"] [[package]] name = "envier" -version = "0.5.1" +version = "0.5.2" description = "Python application configuration via the environment" optional = false python-versions = ">=3.7" files = [ - {file = "envier-0.5.1-py3-none-any.whl", hash = "sha256:b45ef6051fea33d0c32a64e186bff2cfb446e2242d6781216c9bc9ce708c5909"}, - {file = "envier-0.5.1.tar.gz", hash = "sha256:bd5ccf707447973ea0f4125b7df202ba415ad888bcdcb8df80e0b002ee11ffdb"}, + {file = "envier-0.5.2-py3-none-any.whl", hash = "sha256:65099cf3aa9b3b3b4b92db2f7d29e2910672e085b76f7e587d2167561a834add"}, + {file = "envier-0.5.2.tar.gz", hash = "sha256:4e7e398cb09a8dd360508ef7e12511a152355426d2544b8487a34dad27cc20ad"}, ] [package.extras] @@ -368,13 +374,13 @@ mypy = ["mypy"] [[package]] name = "exceptiongroup" -version = "1.2.0" +version = "1.2.2" description = "Backport of PEP 654 (exception groups)" optional = false python-versions = ">=3.7" files = [ - {file = "exceptiongroup-1.2.0-py3-none-any.whl", hash = "sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14"}, - {file = "exceptiongroup-1.2.0.tar.gz", hash = "sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68"}, + {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"}, + {file = "exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"}, ] [package.extras] @@ -398,33 +404,33 @@ pyflakes = ">=2.5.0,<2.6.0" [[package]] name = "idna" -version = "3.6" +version = "3.7" description = "Internationalized Domain Names in Applications (IDNA)" optional = false python-versions = ">=3.5" files = [ - {file = "idna-3.6-py3-none-any.whl", hash = "sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f"}, - {file = "idna-3.6.tar.gz", hash = "sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca"}, + {file = "idna-3.7-py3-none-any.whl", hash = "sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0"}, + {file = "idna-3.7.tar.gz", hash = "sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc"}, ] [[package]] name = "importlib-metadata" -version = "6.11.0" +version = "7.1.0" description = "Read metadata from Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "importlib_metadata-6.11.0-py3-none-any.whl", hash = "sha256:f0afba6205ad8f8947c7d338b5342d5db2afbfd82f9cbef7879a9539cc12eb9b"}, - {file = "importlib_metadata-6.11.0.tar.gz", hash = "sha256:1231cf92d825c9e03cfc4da076a16de6422c863558229ea0b22b675657463443"}, + {file = "importlib_metadata-7.1.0-py3-none-any.whl", hash = "sha256:30962b96c0c223483ed6cc7280e7f0199feb01a0e40cfae4d4450fc6fab1f570"}, + {file = "importlib_metadata-7.1.0.tar.gz", hash = "sha256:b78938b926ee8d5f020fc4772d487045805a55ddbad2ecf21c6d60938dc7fcd2"}, ] [package.dependencies] zipp = ">=0.5" [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] perf = ["ipython"] -testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)", "pytest-ruff"] +testing = ["flufl.flake8", "importlib-resources (>=1.3)", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy", "pytest-perf (>=0.9.2)", "pytest-ruff (>=0.2.1)"] [[package]] name = "iniconfig" @@ -461,39 +467,39 @@ files = [ [[package]] name = "opentelemetry-api" -version = "1.23.0" +version = "1.25.0" description = "OpenTelemetry Python API" optional = false python-versions = ">=3.8" files = [ - {file = "opentelemetry_api-1.23.0-py3-none-any.whl", hash = "sha256:cc03ea4025353048aadb9c64919099663664672ea1c6be6ddd8fee8e4cd5e774"}, - {file = "opentelemetry_api-1.23.0.tar.gz", hash = "sha256:14a766548c8dd2eb4dfc349739eb4c3893712a0daa996e5dbf945f9da665da9d"}, + {file = "opentelemetry_api-1.25.0-py3-none-any.whl", hash = "sha256:757fa1aa020a0f8fa139f8959e53dec2051cc26b832e76fa839a6d76ecefd737"}, + {file = "opentelemetry_api-1.25.0.tar.gz", hash = "sha256:77c4985f62f2614e42ce77ee4c9da5fa5f0bc1e1821085e9a47533a9323ae869"}, ] [package.dependencies] deprecated = ">=1.2.6" -importlib-metadata = ">=6.0,<7.0" +importlib-metadata = ">=6.0,<=7.1" [[package]] name = "packaging" -version = "24.0" +version = "24.1" description = "Core utilities for Python packages" optional = true -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "packaging-24.0-py3-none-any.whl", hash = "sha256:2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5"}, - {file = "packaging-24.0.tar.gz", hash = "sha256:eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9"}, + {file = "packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124"}, + {file = "packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002"}, ] [[package]] name = "pluggy" -version = "1.4.0" +version = "1.5.0" description = "plugin and hook calling mechanisms for python" optional = true python-versions = ">=3.8" files = [ - {file = "pluggy-1.4.0-py3-none-any.whl", hash = "sha256:7db9f7b503d67d1c5b95f59773ebb58a8c1c288129a88665838012cfb07b8981"}, - {file = "pluggy-1.4.0.tar.gz", hash = "sha256:8c85c2876142a764e5b7548e7d9a0e0ddb46f5185161049a79b7e974454223be"}, + {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, + {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, ] [package.extras] @@ -502,22 +508,22 @@ testing = ["pytest", "pytest-benchmark"] [[package]] name = "protobuf" -version = "4.25.3" +version = "5.27.2" description = "" optional = false python-versions = ">=3.8" files = [ - {file = "protobuf-4.25.3-cp310-abi3-win32.whl", hash = "sha256:d4198877797a83cbfe9bffa3803602bbe1625dc30d8a097365dbc762e5790faa"}, - {file = "protobuf-4.25.3-cp310-abi3-win_amd64.whl", hash = "sha256:209ba4cc916bab46f64e56b85b090607a676f66b473e6b762e6f1d9d591eb2e8"}, - {file = "protobuf-4.25.3-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:f1279ab38ecbfae7e456a108c5c0681e4956d5b1090027c1de0f934dfdb4b35c"}, - {file = "protobuf-4.25.3-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:e7cb0ae90dd83727f0c0718634ed56837bfeeee29a5f82a7514c03ee1364c019"}, - {file = "protobuf-4.25.3-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:7c8daa26095f82482307bc717364e7c13f4f1c99659be82890dcfc215194554d"}, - {file = "protobuf-4.25.3-cp38-cp38-win32.whl", hash = "sha256:f4f118245c4a087776e0a8408be33cf09f6c547442c00395fbfb116fac2f8ac2"}, - {file = "protobuf-4.25.3-cp38-cp38-win_amd64.whl", hash = "sha256:c053062984e61144385022e53678fbded7aea14ebb3e0305ae3592fb219ccfa4"}, - {file = "protobuf-4.25.3-cp39-cp39-win32.whl", hash = "sha256:19b270aeaa0099f16d3ca02628546b8baefe2955bbe23224aaf856134eccf1e4"}, - {file = "protobuf-4.25.3-cp39-cp39-win_amd64.whl", hash = "sha256:e3c97a1555fd6388f857770ff8b9703083de6bf1f9274a002a332d65fbb56c8c"}, - {file = "protobuf-4.25.3-py3-none-any.whl", hash = "sha256:f0700d54bcf45424477e46a9f0944155b46fb0639d69728739c0e47bab83f2b9"}, - {file = "protobuf-4.25.3.tar.gz", hash = "sha256:25b5d0b42fd000320bd7830b349e3b696435f3b329810427a6bcce6a5492cc5c"}, + {file = "protobuf-5.27.2-cp310-abi3-win32.whl", hash = "sha256:354d84fac2b0d76062e9b3221f4abbbacdfd2a4d8af36bab0474f3a0bb30ab38"}, + {file = "protobuf-5.27.2-cp310-abi3-win_amd64.whl", hash = "sha256:0e341109c609749d501986b835f667c6e1e24531096cff9d34ae411595e26505"}, + {file = "protobuf-5.27.2-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:a109916aaac42bff84702fb5187f3edadbc7c97fc2c99c5ff81dd15dcce0d1e5"}, + {file = "protobuf-5.27.2-cp38-abi3-manylinux2014_aarch64.whl", hash = "sha256:176c12b1f1c880bf7a76d9f7c75822b6a2bc3db2d28baa4d300e8ce4cde7409b"}, + {file = "protobuf-5.27.2-cp38-abi3-manylinux2014_x86_64.whl", hash = "sha256:b848dbe1d57ed7c191dfc4ea64b8b004a3f9ece4bf4d0d80a367b76df20bf36e"}, + {file = "protobuf-5.27.2-cp38-cp38-win32.whl", hash = "sha256:4fadd8d83e1992eed0248bc50a4a6361dc31bcccc84388c54c86e530b7f58863"}, + {file = "protobuf-5.27.2-cp38-cp38-win_amd64.whl", hash = "sha256:610e700f02469c4a997e58e328cac6f305f649826853813177e6290416e846c6"}, + {file = "protobuf-5.27.2-cp39-cp39-win32.whl", hash = "sha256:9e8f199bf7f97bd7ecebffcae45ebf9527603549b2b562df0fbc6d4d688f14ca"}, + {file = "protobuf-5.27.2-cp39-cp39-win_amd64.whl", hash = "sha256:7fc3add9e6003e026da5fc9e59b131b8f22b428b991ccd53e2af8071687b4fce"}, + {file = "protobuf-5.27.2-py3-none-any.whl", hash = "sha256:54330f07e4949d09614707c48b06d1a22f8ffb5763c159efd5c0928326a91470"}, + {file = "protobuf-5.27.2.tar.gz", hash = "sha256:f3ecdef226b9af856075f28227ff2c90ce3a594d092c39bee5513573f25e2714"}, ] [[package]] @@ -555,13 +561,13 @@ files = [ [[package]] name = "pytest" -version = "8.1.1" +version = "8.2.2" description = "pytest: simple powerful testing with Python" optional = true python-versions = ">=3.8" files = [ - {file = "pytest-8.1.1-py3-none-any.whl", hash = "sha256:2a8386cfc11fa9d2c50ee7b2a57e7d898ef90470a7a34c4b949ff59662bb78b7"}, - {file = "pytest-8.1.1.tar.gz", hash = "sha256:ac978141a75948948817d360297b7aae0fcb9d6ff6bc9ec6d514b85d5a65c044"}, + {file = "pytest-8.2.2-py3-none-any.whl", hash = "sha256:c434598117762e2bd304e526244f67bf66bbd7b5d6cf22138be51ff661980343"}, + {file = "pytest-8.2.2.tar.gz", hash = "sha256:de4bb8104e201939ccdc688b27a89a7be2079b22e2bd2b07f806b6ba71117977"}, ] [package.dependencies] @@ -569,11 +575,11 @@ colorama = {version = "*", markers = "sys_platform == \"win32\""} exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""} iniconfig = "*" packaging = "*" -pluggy = ">=1.4,<2.0" +pluggy = ">=1.5,<2.0" tomli = {version = ">=1", markers = "python_version < \"3.11\""} [package.extras] -testing = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] +dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] [[package]] name = "pytest-benchmark" @@ -611,13 +617,13 @@ six = ">=1.5" [[package]] name = "requests" -version = "2.32.0" +version = "2.32.3" description = "Python HTTP for Humans." optional = false python-versions = ">=3.8" files = [ - {file = "requests-2.32.0-py3-none-any.whl", hash = "sha256:f2c3881dddb70d056c5bd7600a4fae312b2a300e39be6a118d30b90bd27262b5"}, - {file = "requests-2.32.0.tar.gz", hash = "sha256:fa5490319474c82ef1d2c9bc459d3652e3ae4ef4c4ebdd18a21145a47ca4b6b8"}, + {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, + {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, ] [package.dependencies] @@ -632,13 +638,13 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] [[package]] name = "s3transfer" -version = "0.10.0" +version = "0.10.2" description = "An Amazon S3 Transfer Manager" optional = true -python-versions = ">= 3.8" +python-versions = ">=3.8" files = [ - {file = "s3transfer-0.10.0-py3-none-any.whl", hash = "sha256:3cdb40f5cfa6966e812209d0994f2a4709b561c88e90cf00c2696d2df4e56b2e"}, - {file = "s3transfer-0.10.0.tar.gz", hash = "sha256:d0c8bbf672d5eebbe4e57945e23b972d963f07d82f661cabf678a5c88831595b"}, + {file = "s3transfer-0.10.2-py3-none-any.whl", hash = "sha256:eca1c20de70a39daee580aef4986996620f365c4e0fda6a86100231d62f1bf69"}, + {file = "s3transfer-0.10.2.tar.gz", hash = "sha256:0711534e9356d3cc692fdde846b4a1e4b0cb6519971860796e6bc4c7aea00ef6"}, ] [package.dependencies] @@ -649,18 +655,18 @@ crt = ["botocore[crt] (>=1.33.2,<2.0a.0)"] [[package]] name = "setuptools" -version = "70.0.0" +version = "70.3.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "setuptools-70.0.0-py3-none-any.whl", hash = "sha256:54faa7f2e8d2d11bcd2c07bed282eef1046b5c080d1c32add737d7b5817b1ad4"}, - {file = "setuptools-70.0.0.tar.gz", hash = "sha256:f211a66637b8fa059bb28183da127d4e86396c991a942b028c6650d4319c3fd0"}, + {file = "setuptools-70.3.0-py3-none-any.whl", hash = "sha256:fe384da74336c398e0d956d1cae0669bc02eed936cdb1d49b57de1990dc11ffc"}, + {file = "setuptools-70.3.0.tar.gz", hash = "sha256:f171bab1dfbc86b132997f26a119f6056a57950d058587841a0082e8830f9dc5"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -testing = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "mypy (==1.9)", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.1)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy", "pytest-perf", "pytest-ruff (>=0.2.1)", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] +test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "jaraco.test", "mypy (==1.10.0)", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy", "pytest-perf", "pytest-ruff (>=0.3.2)", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] [[package]] name = "six" @@ -673,22 +679,6 @@ files = [ {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, ] -[[package]] -name = "sqlparse" -version = "0.4.4" -description = "A non-validating SQL parser." -optional = false -python-versions = ">=3.5" -files = [ - {file = "sqlparse-0.4.4-py3-none-any.whl", hash = "sha256:5430a4fe2ac7d0f93e66f1efc6e1338a41884b7ddf2a350cedd20ccc4d9d28f3"}, - {file = "sqlparse-0.4.4.tar.gz", hash = "sha256:d446183e84b8349fa3061f0fe7f06ca94ba65b426946ffebe6e3e8295332420c"}, -] - -[package.extras] -dev = ["build", "flake8"] -doc = ["sphinx"] -test = ["pytest", "pytest-cov"] - [[package]] name = "tomli" version = "2.0.1" @@ -702,13 +692,13 @@ files = [ [[package]] name = "typing-extensions" -version = "4.10.0" +version = "4.12.2" description = "Backported and Experimental Type Hints for Python 3.8+" optional = false python-versions = ">=3.8" files = [ - {file = "typing_extensions-4.10.0-py3-none-any.whl", hash = "sha256:69b1a937c3a517342112fb4c6df7e72fc39a38e7891a5730ed4985b5214b5475"}, - {file = "typing_extensions-4.10.0.tar.gz", hash = "sha256:b0abd7c89e8fb96f98db18d86106ff1d90ab692004eb746cf6eda2682f91b3cb"}, + {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, + {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, ] [[package]] @@ -814,6 +804,23 @@ brotli = ["brotli (==1.0.9)", "brotli (>=1.0.9)", "brotlicffi (>=0.8.0)", "brotl secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress", "pyOpenSSL (>=0.14)", "urllib3-secure-extra"] socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] +[[package]] +name = "urllib3" +version = "2.0.7" +description = "HTTP library with thread-safe connection pooling, file post, and more." +optional = false +python-versions = ">=3.7" +files = [ + {file = "urllib3-2.0.7-py3-none-any.whl", hash = "sha256:fdb6d215c776278489906c2f8916e6e7d4f5a9b602ccbcfdf7f016fc8da0596e"}, + {file = "urllib3-2.0.7.tar.gz", hash = "sha256:c97dfde1f7bd43a71c8d2a58e369e9b2bf692d1334ea9f9cae55add7d0dd0f84"}, +] + +[package.extras] +brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] +secure = ["certifi", "cryptography (>=1.9)", "idna (>=2.0.0)", "pyopenssl (>=17.1.0)", "urllib3-secure-extra"] +socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] +zstd = ["zstandard (>=0.18.0)"] + [[package]] name = "wrapt" version = "1.16.0" @@ -906,18 +913,18 @@ files = [ [[package]] name = "zipp" -version = "3.19.1" +version = "3.19.2" description = "Backport of pathlib-compatible object wrapper for zip files" optional = false python-versions = ">=3.8" files = [ - {file = "zipp-3.19.1-py3-none-any.whl", hash = "sha256:2828e64edb5386ea6a52e7ba7cdb17bb30a73a858f5eb6eb93d8d36f5ea26091"}, - {file = "zipp-3.19.1.tar.gz", hash = "sha256:35427f6d5594f4acf82d25541438348c26736fa9b3afa2754bcd63cdb99d8e8f"}, + {file = "zipp-3.19.2-py3-none-any.whl", hash = "sha256:f091755f667055f2d02b32c53771a7a6c8b47e1fdbc4b72a8b9072b3eef8015c"}, + {file = "zipp-3.19.2.tar.gz", hash = "sha256:bf1dcf6450f873a13e952a29504887c89e6de7506209e5b1bcc3460135d4de19"}, ] [package.extras] doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -test = ["big-O", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-itertools", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy", "pytest-ruff (>=0.2.1)"] +test = ["big-O", "importlib-resources", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-itertools", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy", "pytest-ruff (>=0.2.1)"] [extras] dev = ["boto3", "flake8", "pytest", "pytest-benchmark", "requests"] @@ -925,4 +932,4 @@ dev = ["boto3", "flake8", "pytest", "pytest-benchmark", "requests"] [metadata] lock-version = "2.0" python-versions = ">=3.8.0,<4" -content-hash = "e7299f7eef791b1721b37fbc61d325cfe62aa576cb6c9aa7c9db88a23dd41eae" +content-hash = "0164e61d15369d5902be37ac38aecddbeb1a991cfe06a98c23e613d57911b961" diff --git a/pyproject.toml b/pyproject.toml index cb144c30..cf96f930 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -27,7 +27,7 @@ classifiers = [ python = ">=3.8.0,<4" datadog = ">=0.41.0,<1.0.0" wrapt = "^1.11.2" -ddtrace = ">=2.9.0" +ddtrace = ">=2.9.2" ujson = ">=5.9.0" urllib3 = [ {version = "<2.0.0", python = "<3.11", optional = true}, From 7b5abe4abb2ada8bdcf4800a648b47d8d70e4ba6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?jordan=20gonz=C3=A1lez?= <30836115+duncanista@users.noreply.github.com> Date: Tue, 16 Jul 2024 13:25:22 -0400 Subject: [PATCH 149/268] v6.97.0 (#506) --- datadog_lambda/version.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index a5490c9a..d85fbb51 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "6.96.0" +__version__ = "6.97.0" diff --git a/pyproject.toml b/pyproject.toml index cf96f930..d137450a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "6.96.0" +version = "6.97.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From d4b411eb4731fcd48a4dd1bafd889b72abf1600c Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Thu, 8 Aug 2024 15:22:40 -0400 Subject: [PATCH 150/268] feat: Remove urllib3 pin (#510) * feat: Remove urllib3 pin * fix: increase size limit * feat: Split into dev dependencies. Update boto3 * fix: resolve conflicts. bump ddtrace * go back to optional dep instead of dev dep because poetry and pip dont play nice * feat: ints --- poetry.lock | 229 +++++++++--------- pyproject.toml | 9 +- scripts/check_layer_size.sh | 2 +- .../logs/async-metrics_python310.log | 68 +++--- .../logs/async-metrics_python311.log | 70 +++--- .../logs/async-metrics_python312.log | 68 +++--- .../snapshots/logs/async-metrics_python38.log | 68 +++--- .../snapshots/logs/async-metrics_python39.log | 70 +++--- .../snapshots/logs/sync-metrics_python310.log | 88 +++---- .../snapshots/logs/sync-metrics_python311.log | 90 +++---- .../snapshots/logs/sync-metrics_python312.log | 88 +++---- .../snapshots/logs/sync-metrics_python38.log | 88 +++---- .../snapshots/logs/sync-metrics_python39.log | 88 +++---- 13 files changed, 511 insertions(+), 515 deletions(-) diff --git a/poetry.lock b/poetry.lock index 3eed0293..6a8bda88 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,37 +1,37 @@ -# This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. [[package]] name = "attrs" -version = "23.2.0" +version = "24.2.0" description = "Classes Without Boilerplate" optional = false python-versions = ">=3.7" files = [ - {file = "attrs-23.2.0-py3-none-any.whl", hash = "sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1"}, - {file = "attrs-23.2.0.tar.gz", hash = "sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30"}, + {file = "attrs-24.2.0-py3-none-any.whl", hash = "sha256:81921eb96de3191c8258c199618104dd27ac608d9366f5e35d011eae1867ede2"}, + {file = "attrs-24.2.0.tar.gz", hash = "sha256:5cfb1b9148b5b086569baec03f20d7b6bf3bcacc9a42bebf87ffaaca362f6346"}, ] [package.extras] -cov = ["attrs[tests]", "coverage[toml] (>=5.3)"] -dev = ["attrs[tests]", "pre-commit"] -docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope-interface"] -tests = ["attrs[tests-no-zope]", "zope-interface"] -tests-mypy = ["mypy (>=1.6)", "pytest-mypy-plugins"] -tests-no-zope = ["attrs[tests-mypy]", "cloudpickle", "hypothesis", "pympler", "pytest (>=4.3.0)", "pytest-xdist[psutil]"] +benchmark = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-codspeed", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +cov = ["cloudpickle", "coverage[toml] (>=5.3)", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +dev = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +docs = ["cogapp", "furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier (<24.7)"] +tests = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +tests-mypy = ["mypy (>=1.11.1)", "pytest-mypy-plugins"] [[package]] name = "boto3" -version = "1.34.144" +version = "1.34.156" description = "The AWS SDK for Python" optional = true python-versions = ">=3.8" files = [ - {file = "boto3-1.34.144-py3-none-any.whl", hash = "sha256:b8433d481d50b68a0162c0379c0dd4aabfc3d1ad901800beb5b87815997511c1"}, - {file = "boto3-1.34.144.tar.gz", hash = "sha256:2f3e88b10b8fcc5f6100a9d74cd28230edc9d4fa226d99dd40a3ab38ac213673"}, + {file = "boto3-1.34.156-py3-none-any.whl", hash = "sha256:cbbd453270b8ce94ef9da60dfbb6f9ceeb3eeee226b635aa9ec44b1def98cc96"}, + {file = "boto3-1.34.156.tar.gz", hash = "sha256:b33e9a8f8be80d3053b8418836a7c1900410b23a30c7cb040927d601a1082e68"}, ] [package.dependencies] -botocore = ">=1.34.144,<1.35.0" +botocore = ">=1.34.156,<1.35.0" jmespath = ">=0.7.1,<2.0.0" s3transfer = ">=0.10.0,<0.11.0" @@ -40,13 +40,13 @@ crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] [[package]] name = "botocore" -version = "1.34.144" +version = "1.34.156" description = "Low-level, data-driven core of boto 3." optional = true python-versions = ">=3.8" files = [ - {file = "botocore-1.34.144-py3-none-any.whl", hash = "sha256:a2cf26e1bf10d5917a2285e50257bc44e94a1d16574f282f3274f7a5d8d1f08b"}, - {file = "botocore-1.34.144.tar.gz", hash = "sha256:4215db28d25309d59c99507f1f77df9089e5bebbad35f6e19c7c44ec5383a3e8"}, + {file = "botocore-1.34.156-py3-none-any.whl", hash = "sha256:c48f8c8996216dfdeeb0aa6d3c0f2c7ae25234766434a2ea3e57bdc08494bdda"}, + {file = "botocore-1.34.156.tar.gz", hash = "sha256:5d1478c41ab9681e660b3322432fe09c4055759c317984b7b8d3af9557ff769a"}, ] [package.dependencies] @@ -58,7 +58,7 @@ urllib3 = [ ] [package.extras] -crt = ["awscrt (==0.20.11)"] +crt = ["awscrt (==0.21.2)"] [[package]] name = "bytecode" @@ -253,71 +253,71 @@ serialization = ["protobuf (>=3.0.0)"] [[package]] name = "ddtrace" -version = "2.9.2" +version = "2.10.4" description = "Datadog APM client library" optional = false python-versions = ">=3.7" files = [ - {file = "ddtrace-2.9.2-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:aaa4c4c0d001e5695d8d8f03361e25fbba62716bd4dbc861daa45bc71802a165"}, - {file = "ddtrace-2.9.2-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:99fa4f3437dd908622d015fd0a92015eb2bb718554fd6e9cb3c8984737ca8173"}, - {file = "ddtrace-2.9.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c3be4f5ea1378138f26b6a84b23048a681e705e602f5f4a2db6c9f1ae6f52c9"}, - {file = "ddtrace-2.9.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b79f44ebd64496e8d2c85250290486f08cf338b02cb484a24d17204d11af39d6"}, - {file = "ddtrace-2.9.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e0f9bcf9dc2fee145c1fa295e451898dd0b6fbdbdd7cc205b5c226c945369238"}, - {file = "ddtrace-2.9.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:6418399be4eb0100d8c25e7154d94032dafb08f3387864db6ea64ae6b01044a4"}, - {file = "ddtrace-2.9.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:72a3d3cdca7508b787e6bd0d09a75f1cb7cba9580f91591be51af22c9d9bf9bf"}, - {file = "ddtrace-2.9.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:93efef2f0b88792fefe5840c47c9f262fc94471078c0cf10f54831b44ea422b6"}, - {file = "ddtrace-2.9.2-cp310-cp310-win32.whl", hash = "sha256:5ad725a61da4b4d76368b7e205ae327ae39cab5ec64d8c6e16760bc86d6a6507"}, - {file = "ddtrace-2.9.2-cp310-cp310-win_amd64.whl", hash = "sha256:9a31c9a2d714b3d45fb5ae24b912521d4569d1dac3fd3fc3c77ec9fcba5dfd26"}, - {file = "ddtrace-2.9.2-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:358ccb1b7bf9ec39658e00aa1ba4972712603deefb5562219ce0ccc5e7521e52"}, - {file = "ddtrace-2.9.2-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:98b44e28151b07a9ce8ae27951978ac340f66640c833dee9b396831ddf06a9a6"}, - {file = "ddtrace-2.9.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c9d409e6d061bbe3d026696403edd37b390a4a8bc661b7490c02199a8a9da7e9"}, - {file = "ddtrace-2.9.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6a26ecdf3f7666e604bb15e20d32b63d948e85bcde6c63b2f1d45af0681079bf"}, - {file = "ddtrace-2.9.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:519e2a9e6daf592bf4a9993ae782621016770b5182ed7567fba0ef23812ca6d7"}, - {file = "ddtrace-2.9.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:2243582de6aef14fc87621169d586679572cf3f39c79cef6f898963f37a6a296"}, - {file = "ddtrace-2.9.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c176c0ea15e2b94f139ca68ba3d5ee48430c717ae785cd9e51eeb59634629c94"}, - {file = "ddtrace-2.9.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e9befe7b40141a686f991fd98780b9dfe31e55b9ed3cf685a5fcfa256789b879"}, - {file = "ddtrace-2.9.2-cp311-cp311-win32.whl", hash = "sha256:84f1a7b517f1790374ad1079e783cd893634518521ae6e2ed41a4e343227830b"}, - {file = "ddtrace-2.9.2-cp311-cp311-win_amd64.whl", hash = "sha256:4c34823c3ed3e1da5fe11de483c4091179f21fb4f255144a5082af2f52a1e02e"}, - {file = "ddtrace-2.9.2-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:b5b749b609036917cab6ae9187aaf4e83051e0396bd0d4d9f2af4bfbaf866bf2"}, - {file = "ddtrace-2.9.2-cp312-cp312-macosx_11_0_x86_64.whl", hash = "sha256:b1f21076ecb3a7736e92dc288ff6437337098f9acc6dcbbebfcfb7a1ce7aabff"}, - {file = "ddtrace-2.9.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8bb857a7a66ac56d041f2e40778f88cea51db55d0611beb36b6a45b52504c90d"}, - {file = "ddtrace-2.9.2-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f1f7e403b77f6c26d2f813712c38cda09d4b5c2e07e5e6e578eb71ce674382ce"}, - {file = "ddtrace-2.9.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dace336a9c14f6f8953732806d4fccee489d670aac6b2b75a3fa9eb94c32fda6"}, - {file = "ddtrace-2.9.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:e7c59ce06f887db4a6a0309bdc504beada8969979876dc8f54681e10d1993426"}, - {file = "ddtrace-2.9.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:0b7c81323a952da21e7a85b20334bb33ba47600c7b7604f4267022217c7025e3"}, - {file = "ddtrace-2.9.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:07aa83c4a6e6822fd365a92f972576980badc3d426d257d9814212d0a2a5f837"}, - {file = "ddtrace-2.9.2-cp312-cp312-win32.whl", hash = "sha256:5fe686fe657b9871f6faf2f7f7e97e659421c17dc5903b43ff174f8866726a21"}, - {file = "ddtrace-2.9.2-cp312-cp312-win_amd64.whl", hash = "sha256:858b61e57cb11c5c467907add391ce8ad2dec823bc326c8e1505368c4f0ac7d4"}, - {file = "ddtrace-2.9.2-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:28ee6dee988609f1d720934d52f6a29b7c9b914a39fb70528a51a194d1ab3b8d"}, - {file = "ddtrace-2.9.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:07ade55550c3b1debb96f9ffdb716eae5bd48335d3ca54e9c5b9e492a7dc91f2"}, - {file = "ddtrace-2.9.2-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:41cf398da7a28a78c108cccfc87abe33d7e8936f99462f6fee3877fb180913c0"}, - {file = "ddtrace-2.9.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2d79259e140070dc2533c3bc5776df7731baa9e2f078daf4ce708efd33ac00d3"}, - {file = "ddtrace-2.9.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:753f845308d97f8290d4ff7ce92e7875b83efa4eb5ff3fac8e2042caf6761bfb"}, - {file = "ddtrace-2.9.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:28c88f5efc946dddefc320c682c93bb65001ee38e78569e496b20823f21ef745"}, - {file = "ddtrace-2.9.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:765d7c031b54da32fc18cbeafadd3c22cd1a6f98317e6e0498bf2898fbeae350"}, - {file = "ddtrace-2.9.2-cp37-cp37m-win32.whl", hash = "sha256:7b5dddfbd23646a16ad9b991fd2866628dc56b7abe8dd7100962ce0681b738c9"}, - {file = "ddtrace-2.9.2-cp37-cp37m-win_amd64.whl", hash = "sha256:c8c17f5f57f65ea95d6bf61511869abfaa10fb555e81b0294e30226afa047115"}, - {file = "ddtrace-2.9.2-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:aa329ace4909bd402de3d9dbaaaff9e3545fd5a9fad1c72a39e075743c673099"}, - {file = "ddtrace-2.9.2-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:afebe7e5467a743795a878cad3e9658f704c5572ca398a70a840da034a571f67"}, - {file = "ddtrace-2.9.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd1271c597f088b1ff7e5881138a1317a799025c834bd496cecfdcb816748e51"}, - {file = "ddtrace-2.9.2-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:24da863c984d3261c7dae9362cf48c01fc0dc1557c92de336a1bbeb08452e046"}, - {file = "ddtrace-2.9.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e68014fa46b4be6e58cc64feb3516ec856df714ce3d4576f3d6df9079ddfba8f"}, - {file = "ddtrace-2.9.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:10824581a708c643515747e814c6b146bed6d91e687a825111858a198eee75e6"}, - {file = "ddtrace-2.9.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:03c6874475db7d7b1fb563cd6aa3ba0c22ee72bb8c6cceb36c84dba6ca21e2f4"}, - {file = "ddtrace-2.9.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b91b8cfc7239317fe6b185beb0b8153769b43bf11fb2cda9e6e2996962e4b820"}, - {file = "ddtrace-2.9.2-cp38-cp38-win32.whl", hash = "sha256:0d9456defb679d6225d32967902853cd4d8b01f55e4da18089a9ffa9d6495328"}, - {file = "ddtrace-2.9.2-cp38-cp38-win_amd64.whl", hash = "sha256:d39c2da38c295aba1810083ce63d37041e3e40a06add960f6edf5a33517f743c"}, - {file = "ddtrace-2.9.2-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:c251e684c9e3a7828308a74d2be073d88cf28b4be457a5c201a2755ef9205d24"}, - {file = "ddtrace-2.9.2-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:707151d2aa4f04388af4e3e8b0783e99b110fa0f2f1db775f64667c62bd249c2"}, - {file = "ddtrace-2.9.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c536a53d628e8d96812edea10d84e9df2f9022a7e932beb10e187c98f4471ec"}, - {file = "ddtrace-2.9.2-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9c093fbabdeb6ecc6a749b1b5f80ebe557dcf768984bb42aadf66c57f04f3b85"}, - {file = "ddtrace-2.9.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4d5b6c58d4ebc988f61a5f81e8953531ee59490240d69463592ff63dd2f6e00b"}, - {file = "ddtrace-2.9.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:85511fade95b21ca29e9ba314eeb5847733a81128d8cbdbc43012caba45c03c8"}, - {file = "ddtrace-2.9.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:8b3b2f64414c57742e7be924079e80576110abf8725f70e56bce0603877d08bf"}, - {file = "ddtrace-2.9.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ad04028487d7cdb44318323ab4438c873e01855c3391a3c47a4400ff499bcbfc"}, - {file = "ddtrace-2.9.2-cp39-cp39-win32.whl", hash = "sha256:206759c2847ee7174e14c4a2cffd3086ad55aca10d73f50b24cc2e00ec22e871"}, - {file = "ddtrace-2.9.2-cp39-cp39-win_amd64.whl", hash = "sha256:d916dbfeeebb38cd48c64c771b74276b716902471f6bf9c02e8d5c278f0baad1"}, - {file = "ddtrace-2.9.2.tar.gz", hash = "sha256:40775def3f3fc01d1c4c5eec64f7f624621eb394fe62d107c27e181123443716"}, + {file = "ddtrace-2.10.4-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:a7c5604654682aa0f5a717d93d36d1a1737cda4ca107c272ca477acf8c6fe076"}, + {file = "ddtrace-2.10.4-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:a0d9c6f0d91a97c71596787df80e0ecc582d42a584679a587b8e3e6fa8e5aa54"}, + {file = "ddtrace-2.10.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:70c9c6452bb052e26ce6799024205c37ac76b3554d31b5ede7df90e00d7bbbb4"}, + {file = "ddtrace-2.10.4-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a764002f486794760817396095376f4cfb88b5571b5b6c75ae8a27cf3609d881"}, + {file = "ddtrace-2.10.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b87219b9f49828357fa70fcb2a2cb18981896d44175fc687b65ff906c663f26"}, + {file = "ddtrace-2.10.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:65fe081b385e43b86d061dbfda9582308287f17c3f1ad2fe38305765079dd825"}, + {file = "ddtrace-2.10.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d8903c4eb54b6b690abe138275811492bc288791f488f39c1d779e279b06d312"}, + {file = "ddtrace-2.10.4-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:39b2b08a96f2715fa57d441fcd2ba4b49eee4d23fa8d162032f98ec5a652b74c"}, + {file = "ddtrace-2.10.4-cp310-cp310-win32.whl", hash = "sha256:f364f0b2ec96cad163a6943dcb9ec6c3262da6d261a0c2057a4524bee8b07166"}, + {file = "ddtrace-2.10.4-cp310-cp310-win_amd64.whl", hash = "sha256:dc6b0179f169e3b7424441e0af55a08795491e35ab9e9586a8970e66a11ac14f"}, + {file = "ddtrace-2.10.4-cp311-cp311-macosx_12_0_universal2.whl", hash = "sha256:7a4f9d6ec5cb9cbb0fbfdb3b47873e160716fbc7a98c863d6e6a260b882ef18f"}, + {file = "ddtrace-2.10.4-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:9d69c965bd4c7448d4a6dbb92736c7bc16c4bd3168ec1a5ee31afbb02be9b846"}, + {file = "ddtrace-2.10.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3f84810d4f4423864c41efb1586aa573b074a9179aa2b4416a3d249aec91f679"}, + {file = "ddtrace-2.10.4-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7775e90338ee8d8e0c65a92edb88f9a477977cad7b27436581a2b9368440960b"}, + {file = "ddtrace-2.10.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eb0e72eb97e0cc18ffa4e5f7bb34c7738c0af1aa05f26e72c9e4467266061442"}, + {file = "ddtrace-2.10.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:3f003822488bca7f8d2c245a80adce02118fba76e567f3818b042fd7ef132d57"}, + {file = "ddtrace-2.10.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:beb9a9a9adc8627a1b6487f2b350b418c5188d5b9c83be19a15403e708c62280"}, + {file = "ddtrace-2.10.4-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:41880b06ea7720b75df6d1703190e0bb0e5eb478c1ffcec6711a1a5c44503596"}, + {file = "ddtrace-2.10.4-cp311-cp311-win32.whl", hash = "sha256:b538db5512aac530d46bd2f438324d4c6cb950363d865c264dcd5f844a3c56ad"}, + {file = "ddtrace-2.10.4-cp311-cp311-win_amd64.whl", hash = "sha256:45c98313d0572d7dd3a493d5b53ccb5798691dbe785e0245dc057cd30939cbb2"}, + {file = "ddtrace-2.10.4-cp312-cp312-macosx_12_0_universal2.whl", hash = "sha256:3d9f90f84a83d53c9c363b3c3673606b1066f4ea0d09edf4d5684ed1a64bf131"}, + {file = "ddtrace-2.10.4-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:2cfc3737fd79e13ba786b29e7fb5d9a48899779d1f62bb13cfc9065df43dd049"}, + {file = "ddtrace-2.10.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ee686cd9c311e204a2c40e8102b17a7fe2226e9a29a99585f0bcf515527b6f9"}, + {file = "ddtrace-2.10.4-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b5cd07d2e9b6148067bec473982a95c724049eeae036d9156df677ea4b181483"}, + {file = "ddtrace-2.10.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e001982c0b01dc6905103be11d00c81ff743e28cc42eb6484f422f2cc2b1d6db"}, + {file = "ddtrace-2.10.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:f6626f79264e0bce443864b4582de7983080e772942f3f5db08f1ff0262f8371"}, + {file = "ddtrace-2.10.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a6fded075f195e7c922a43c2fd13243e25272cafd866853f6e9a9ce4ac647721"}, + {file = "ddtrace-2.10.4-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:872259fdc12448f6e8b7cfe7b20e58467847c2ef579962134772b41909858b0e"}, + {file = "ddtrace-2.10.4-cp312-cp312-win32.whl", hash = "sha256:2c19868446d0a9ea9473847b335bdcfc69e9adc9fea7469c1ecbbb2decc8ab2e"}, + {file = "ddtrace-2.10.4-cp312-cp312-win_amd64.whl", hash = "sha256:826586f0d3f7363f1c406d4caeb3b8a0db84348c0b9f12e1e61c29d79a03b26e"}, + {file = "ddtrace-2.10.4-cp37-cp37m-macosx_12_0_x86_64.whl", hash = "sha256:001f626335a6bbe7bacbc11b545956fc82c00eb8993831fc5dc7e5898e01bc10"}, + {file = "ddtrace-2.10.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6a5179e4d66061cf566c622a8f099497c50ea9e57f4f6bc1dfa0fc25dd6f5111"}, + {file = "ddtrace-2.10.4-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3dae175bcd1e3634db576059dfdc76f304212e31794d45351ed643f3c32a3913"}, + {file = "ddtrace-2.10.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:64db1467c4aaa55c828daa9db380737608959ed9a5f883bd53db5acd95c1d7c6"}, + {file = "ddtrace-2.10.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:e21ce02e8f5c415f94748ac6ad406ba4f0f1e84a5416a14e14772495af98ac5a"}, + {file = "ddtrace-2.10.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:9e4a69b60dd60da6dbee88599560903af71f34b9891ab9f0e71a33ac210b71de"}, + {file = "ddtrace-2.10.4-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:41f865c1babe7a8b48e1393251ac91b6a0d856a6544e3c2da01981c342dcc750"}, + {file = "ddtrace-2.10.4-cp37-cp37m-win32.whl", hash = "sha256:15e766fdb525065e03c370ef511cb86f861712c46f34f82290fd0bb8a1ffb724"}, + {file = "ddtrace-2.10.4-cp37-cp37m-win_amd64.whl", hash = "sha256:32cdefb83ff9426a701ad8eb507d54d277526037b1a9e69366f8c03928980939"}, + {file = "ddtrace-2.10.4-cp38-cp38-macosx_12_0_universal2.whl", hash = "sha256:445725d19d95a7526c46678f364b1a107d3c5be7ab10f0f78edc362a2d258c56"}, + {file = "ddtrace-2.10.4-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:ab923631245e40b55474f3c86e5c44fb324e3dc8d99ce58d66ba972ed4a2f92e"}, + {file = "ddtrace-2.10.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:032e46dbad09668d7dc8ebaa70772ea326b41101cc8200394d7a8cf246f43aca"}, + {file = "ddtrace-2.10.4-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:41a621029079780420bfeffac559bed963808844d8aecbdab62c1e2294ece299"}, + {file = "ddtrace-2.10.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e731f76657caa42c6d773ce6ec0674c9ac5c5e01ddd8ada96f48ff8f1267e562"}, + {file = "ddtrace-2.10.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:30b9ef3fd8ccba20d671a0f33330202d563988e33fc382a9d5ffa586a46dbe1b"}, + {file = "ddtrace-2.10.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:9402df23b894f32eb92cd20531f1c336824f4b82c56167baf2666bd6c42cba09"}, + {file = "ddtrace-2.10.4-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:9aa7015bc6375705e5fb2ee7eb1ca4be6298dcc976d5c066e2afecc0c6dbb498"}, + {file = "ddtrace-2.10.4-cp38-cp38-win32.whl", hash = "sha256:16f7a843fc8fcec9a49ca4f164353a88a1370f90f1b42a094bd22cf082a9b3c2"}, + {file = "ddtrace-2.10.4-cp38-cp38-win_amd64.whl", hash = "sha256:b855914ddeb8a80ec63f830cb5ac1e1a4cb3b11b9cb03dcb056da1924d4a28a3"}, + {file = "ddtrace-2.10.4-cp39-cp39-macosx_12_0_universal2.whl", hash = "sha256:75b0d8d6980f76dac1e9d56800c343b9cd3c5504ec8d821deaa3a52e3eccb11e"}, + {file = "ddtrace-2.10.4-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:8b1b9c2da530f6da01624ea5f5a9121198d96fa06c59d9b20dd1540122c19889"}, + {file = "ddtrace-2.10.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:02f1e292a45fed6bce8289241877c825279fb981f773ad3a82205523a27a8458"}, + {file = "ddtrace-2.10.4-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a08d40f0fd126ad09916fccee0f85c20395907aa7961900d5ad67bfcd6d12afd"}, + {file = "ddtrace-2.10.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ff8a5648db09d9c2736f88a3eb641a665bec0adbd24db4bfd8cb00a9cc84200"}, + {file = "ddtrace-2.10.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a3409973b9bfe7c1c3ed568ce78a80b760bad8bb964983835b6b90d787166f11"}, + {file = "ddtrace-2.10.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9b0db4567b7dce7339c29d302da6430917d5c4ffd9eb8cca76c54dd870b61205"}, + {file = "ddtrace-2.10.4-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:c987c5ff4863b9acf2de8eb395dbf06dad928cd8d962618823809ae778702ad9"}, + {file = "ddtrace-2.10.4-cp39-cp39-win32.whl", hash = "sha256:f9c2e5c551c48b07b416d4dba73011c04d462b024ad4b7dfe38e65dcc9bde6b3"}, + {file = "ddtrace-2.10.4-cp39-cp39-win_amd64.whl", hash = "sha256:40f5c918fefb83a27bfd6665cb96a8a2ae264c1b01d2b8c54e3bfacd04de4c44"}, + {file = "ddtrace-2.10.4.tar.gz", hash = "sha256:d55a4e45b98d0f16adaefb6d95dc942bfadc9e9651ca884f5f70f8f098f6a893"}, ] [package.dependencies] @@ -415,22 +415,22 @@ files = [ [[package]] name = "importlib-metadata" -version = "7.1.0" +version = "8.0.0" description = "Read metadata from Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "importlib_metadata-7.1.0-py3-none-any.whl", hash = "sha256:30962b96c0c223483ed6cc7280e7f0199feb01a0e40cfae4d4450fc6fab1f570"}, - {file = "importlib_metadata-7.1.0.tar.gz", hash = "sha256:b78938b926ee8d5f020fc4772d487045805a55ddbad2ecf21c6d60938dc7fcd2"}, + {file = "importlib_metadata-8.0.0-py3-none-any.whl", hash = "sha256:15584cf2b1bf449d98ff8a6ff1abef57bf20f3ac6454f431736cd3e660921b2f"}, + {file = "importlib_metadata-8.0.0.tar.gz", hash = "sha256:188bd24e4c346d3f0a933f275c2fec67050326a856b9a359881d7c2a697e8812"}, ] [package.dependencies] zipp = ">=0.5" [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] perf = ["ipython"] -testing = ["flufl.flake8", "importlib-resources (>=1.3)", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy", "pytest-perf (>=0.9.2)", "pytest-ruff (>=0.2.1)"] +test = ["flufl.flake8", "importlib-resources (>=1.3)", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy", "pytest-perf (>=0.9.2)", "pytest-ruff (>=0.2.1)"] [[package]] name = "iniconfig" @@ -467,18 +467,18 @@ files = [ [[package]] name = "opentelemetry-api" -version = "1.25.0" +version = "1.26.0" description = "OpenTelemetry Python API" optional = false python-versions = ">=3.8" files = [ - {file = "opentelemetry_api-1.25.0-py3-none-any.whl", hash = "sha256:757fa1aa020a0f8fa139f8959e53dec2051cc26b832e76fa839a6d76ecefd737"}, - {file = "opentelemetry_api-1.25.0.tar.gz", hash = "sha256:77c4985f62f2614e42ce77ee4c9da5fa5f0bc1e1821085e9a47533a9323ae869"}, + {file = "opentelemetry_api-1.26.0-py3-none-any.whl", hash = "sha256:7d7ea33adf2ceda2dd680b18b1677e4152000b37ca76e679da71ff103b943064"}, + {file = "opentelemetry_api-1.26.0.tar.gz", hash = "sha256:2bd639e4bed5b18486fef0b5a520aaffde5a18fc225e808a1ac4df363f43a1ce"}, ] [package.dependencies] deprecated = ">=1.2.6" -importlib-metadata = ">=6.0,<=7.1" +importlib-metadata = ">=6.0,<=8.0.0" [[package]] name = "packaging" @@ -508,22 +508,22 @@ testing = ["pytest", "pytest-benchmark"] [[package]] name = "protobuf" -version = "5.27.2" +version = "5.27.3" description = "" optional = false python-versions = ">=3.8" files = [ - {file = "protobuf-5.27.2-cp310-abi3-win32.whl", hash = "sha256:354d84fac2b0d76062e9b3221f4abbbacdfd2a4d8af36bab0474f3a0bb30ab38"}, - {file = "protobuf-5.27.2-cp310-abi3-win_amd64.whl", hash = "sha256:0e341109c609749d501986b835f667c6e1e24531096cff9d34ae411595e26505"}, - {file = "protobuf-5.27.2-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:a109916aaac42bff84702fb5187f3edadbc7c97fc2c99c5ff81dd15dcce0d1e5"}, - {file = "protobuf-5.27.2-cp38-abi3-manylinux2014_aarch64.whl", hash = "sha256:176c12b1f1c880bf7a76d9f7c75822b6a2bc3db2d28baa4d300e8ce4cde7409b"}, - {file = "protobuf-5.27.2-cp38-abi3-manylinux2014_x86_64.whl", hash = "sha256:b848dbe1d57ed7c191dfc4ea64b8b004a3f9ece4bf4d0d80a367b76df20bf36e"}, - {file = "protobuf-5.27.2-cp38-cp38-win32.whl", hash = "sha256:4fadd8d83e1992eed0248bc50a4a6361dc31bcccc84388c54c86e530b7f58863"}, - {file = "protobuf-5.27.2-cp38-cp38-win_amd64.whl", hash = "sha256:610e700f02469c4a997e58e328cac6f305f649826853813177e6290416e846c6"}, - {file = "protobuf-5.27.2-cp39-cp39-win32.whl", hash = "sha256:9e8f199bf7f97bd7ecebffcae45ebf9527603549b2b562df0fbc6d4d688f14ca"}, - {file = "protobuf-5.27.2-cp39-cp39-win_amd64.whl", hash = "sha256:7fc3add9e6003e026da5fc9e59b131b8f22b428b991ccd53e2af8071687b4fce"}, - {file = "protobuf-5.27.2-py3-none-any.whl", hash = "sha256:54330f07e4949d09614707c48b06d1a22f8ffb5763c159efd5c0928326a91470"}, - {file = "protobuf-5.27.2.tar.gz", hash = "sha256:f3ecdef226b9af856075f28227ff2c90ce3a594d092c39bee5513573f25e2714"}, + {file = "protobuf-5.27.3-cp310-abi3-win32.whl", hash = "sha256:dcb307cd4ef8fec0cf52cb9105a03d06fbb5275ce6d84a6ae33bc6cf84e0a07b"}, + {file = "protobuf-5.27.3-cp310-abi3-win_amd64.whl", hash = "sha256:16ddf3f8c6c41e1e803da7abea17b1793a97ef079a912e42351eabb19b2cffe7"}, + {file = "protobuf-5.27.3-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:68248c60d53f6168f565a8c76dc58ba4fa2ade31c2d1ebdae6d80f969cdc2d4f"}, + {file = "protobuf-5.27.3-cp38-abi3-manylinux2014_aarch64.whl", hash = "sha256:b8a994fb3d1c11156e7d1e427186662b64694a62b55936b2b9348f0a7c6625ce"}, + {file = "protobuf-5.27.3-cp38-abi3-manylinux2014_x86_64.whl", hash = "sha256:a55c48f2a2092d8e213bd143474df33a6ae751b781dd1d1f4d953c128a415b25"}, + {file = "protobuf-5.27.3-cp38-cp38-win32.whl", hash = "sha256:043853dcb55cc262bf2e116215ad43fa0859caab79bb0b2d31b708f128ece035"}, + {file = "protobuf-5.27.3-cp38-cp38-win_amd64.whl", hash = "sha256:c2a105c24f08b1e53d6c7ffe69cb09d0031512f0b72f812dd4005b8112dbe91e"}, + {file = "protobuf-5.27.3-cp39-cp39-win32.whl", hash = "sha256:c84eee2c71ed83704f1afbf1a85c3171eab0fd1ade3b399b3fad0884cbcca8bf"}, + {file = "protobuf-5.27.3-cp39-cp39-win_amd64.whl", hash = "sha256:af7c0b7cfbbb649ad26132e53faa348580f844d9ca46fd3ec7ca48a1ea5db8a1"}, + {file = "protobuf-5.27.3-py3-none-any.whl", hash = "sha256:8572c6533e544ebf6899c360e91d6bcbbee2549251643d32c52cf8a5de295ba5"}, + {file = "protobuf-5.27.3.tar.gz", hash = "sha256:82460903e640f2b7e34ee81a947fdaad89de796d324bcbc38ff5430bcdead82c"}, ] [[package]] @@ -561,13 +561,13 @@ files = [ [[package]] name = "pytest" -version = "8.2.2" +version = "8.3.2" description = "pytest: simple powerful testing with Python" optional = true python-versions = ">=3.8" files = [ - {file = "pytest-8.2.2-py3-none-any.whl", hash = "sha256:c434598117762e2bd304e526244f67bf66bbd7b5d6cf22138be51ff661980343"}, - {file = "pytest-8.2.2.tar.gz", hash = "sha256:de4bb8104e201939ccdc688b27a89a7be2079b22e2bd2b07f806b6ba71117977"}, + {file = "pytest-8.3.2-py3-none-any.whl", hash = "sha256:4ba08f9ae7dcf84ded419494d229b48d0903ea6407b030eaec46df5e6a73bba5"}, + {file = "pytest-8.3.2.tar.gz", hash = "sha256:c132345d12ce551242c87269de812483f5bcc87cdbb4722e48487ba194f9fdce"}, ] [package.dependencies] @@ -575,7 +575,7 @@ colorama = {version = "*", markers = "sys_platform == \"win32\""} exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""} iniconfig = "*" packaging = "*" -pluggy = ">=1.5,<2.0" +pluggy = ">=1.5,<2" tomli = {version = ">=1", markers = "python_version < \"3.11\""} [package.extras] @@ -655,18 +655,19 @@ crt = ["botocore[crt] (>=1.33.2,<2.0a.0)"] [[package]] name = "setuptools" -version = "70.3.0" +version = "72.1.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "setuptools-70.3.0-py3-none-any.whl", hash = "sha256:fe384da74336c398e0d956d1cae0669bc02eed936cdb1d49b57de1990dc11ffc"}, - {file = "setuptools-70.3.0.tar.gz", hash = "sha256:f171bab1dfbc86b132997f26a119f6056a57950d058587841a0082e8830f9dc5"}, + {file = "setuptools-72.1.0-py3-none-any.whl", hash = "sha256:5a03e1860cf56bb6ef48ce186b0e557fdba433237481a9a625176c2831be15d1"}, + {file = "setuptools-72.1.0.tar.gz", hash = "sha256:8d243eff56d095e5817f796ede6ae32941278f542e0f941867cc05ae52b162ec"}, ] [package.extras] +core = ["importlib-metadata (>=6)", "importlib-resources (>=5.10.2)", "jaraco.text (>=3.7)", "more-itertools (>=8.8)", "ordered-set (>=3.1.1)", "packaging (>=24)", "platformdirs (>=2.6.2)", "tomli (>=2.0.1)", "wheel (>=0.43.0)"] doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "jaraco.test", "mypy (==1.10.0)", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy", "pytest-perf", "pytest-ruff (>=0.3.2)", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] +test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "jaraco.test", "mypy (==1.11.*)", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy", "pytest-perf", "pytest-ruff (<0.4)", "pytest-ruff (>=0.2.1)", "pytest-ruff (>=0.3.2)", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] [[package]] name = "six" @@ -806,18 +807,18 @@ socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] [[package]] name = "urllib3" -version = "2.0.7" +version = "2.2.2" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "urllib3-2.0.7-py3-none-any.whl", hash = "sha256:fdb6d215c776278489906c2f8916e6e7d4f5a9b602ccbcfdf7f016fc8da0596e"}, - {file = "urllib3-2.0.7.tar.gz", hash = "sha256:c97dfde1f7bd43a71c8d2a58e369e9b2bf692d1334ea9f9cae55add7d0dd0f84"}, + {file = "urllib3-2.2.2-py3-none-any.whl", hash = "sha256:a448b2f64d686155468037e1ace9f2d2199776e17f0a46610480d311f73e3472"}, + {file = "urllib3-2.2.2.tar.gz", hash = "sha256:dd505485549a7a552833da5e6063639d0d177c04f23bc3864e41e5dc5f612168"}, ] [package.extras] brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] -secure = ["certifi", "cryptography (>=1.9)", "idna (>=2.0.0)", "pyopenssl (>=17.1.0)", "urllib3-secure-extra"] +h2 = ["h2 (>=4,<5)"] socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] zstd = ["zstandard (>=0.18.0)"] @@ -932,4 +933,4 @@ dev = ["boto3", "flake8", "pytest", "pytest-benchmark", "requests"] [metadata] lock-version = "2.0" python-versions = ">=3.8.0,<4" -content-hash = "0164e61d15369d5902be37ac38aecddbeb1a991cfe06a98c23e613d57911b961" +content-hash = "bf1aca9cf4f75b18197105ef45c4ef035790dbe8ad10598becad6f31340c4442" diff --git a/pyproject.toml b/pyproject.toml index d137450a..710faa67 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -27,19 +27,14 @@ classifiers = [ python = ">=3.8.0,<4" datadog = ">=0.41.0,<1.0.0" wrapt = "^1.11.2" -ddtrace = ">=2.9.2" +ddtrace = ">=2.10.0" ujson = ">=5.9.0" -urllib3 = [ - {version = "<2.0.0", python = "<3.11", optional = true}, - {version = "<2.1.0", python = ">=3.11", optional = true}, -] -boto3 = { version = "^1.28.0", optional = true } +boto3 = { version = "^1.34.0", optional = true } requests = { version ="^2.22.0", optional = true } pytest = { version= "^8.0.0", optional = true } pytest-benchmark = { version = "^4.0", optional = true } flake8 = { version = "^5.0.4", optional = true } - [tool.poetry.extras] dev = [ "boto3", diff --git a/scripts/check_layer_size.sh b/scripts/check_layer_size.sh index 977c0283..90d5861b 100755 --- a/scripts/check_layer_size.sh +++ b/scripts/check_layer_size.sh @@ -9,7 +9,7 @@ set -e MAX_LAYER_COMPRESSED_SIZE_KB=$(expr 5 \* 1024) -MAX_LAYER_UNCOMPRESSED_SIZE_KB=$(expr 12 \* 1024) +MAX_LAYER_UNCOMPRESSED_SIZE_KB=$(expr 13 \* 1024) LAYER_FILES_PREFIX="datadog_lambda_py" diff --git a/tests/integration/snapshots/logs/async-metrics_python310.log b/tests/integration/snapshots/logs/async-metrics_python310.log index bec8aa8a..704e89b5 100644 --- a/tests/integration/snapshots/logs/async-metrics_python310.log +++ b/tests/integration/snapshots/logs/async-metrics_python310.log @@ -9,8 +9,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python310", "resource:integration-tests-python-XXXX-async-metrics_python310", - "cold_start:true", "memorysize:1024", + "cold_start:true", "runtime:python3.10", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python310_X.X.X" @@ -36,8 +36,8 @@ START "dd_lambda_layer:datadog-python310_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -180,8 +180,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python310", "resource:integration-tests-python-XXXX-async-metrics_python310", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.10", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python310_X.X.X" @@ -207,8 +207,8 @@ START "dd_lambda_layer:datadog-python310_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -246,7 +246,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -346,8 +346,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python310", "resource:integration-tests-python-XXXX-async-metrics_python310", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.10", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python310_X.X.X" @@ -373,8 +373,8 @@ START "dd_lambda_layer:datadog-python310_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -505,8 +505,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python310", "resource:integration-tests-python-XXXX-async-metrics_python310", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.10", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python310_X.X.X" @@ -532,8 +532,8 @@ START "dd_lambda_layer:datadog-python310_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -575,7 +575,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "http" }, @@ -679,8 +679,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python310", "resource:integration-tests-python-XXXX-async-metrics_python310", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.10", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python310_X.X.X" @@ -706,8 +706,8 @@ START "dd_lambda_layer:datadog-python310_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -745,7 +745,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -845,8 +845,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python310", "resource:integration-tests-python-XXXX-async-metrics_python310", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.10", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python310_X.X.X" @@ -872,8 +872,8 @@ START "dd_lambda_layer:datadog-python310_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -908,7 +908,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1008,8 +1008,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python310", "resource:integration-tests-python-XXXX-async-metrics_python310", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.10", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python310_X.X.X" @@ -1035,8 +1035,8 @@ START "dd_lambda_layer:datadog-python310_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1072,7 +1072,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1172,8 +1172,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python310", "resource:integration-tests-python-XXXX-async-metrics_python310", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.10", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python310_X.X.X" @@ -1199,8 +1199,8 @@ START "dd_lambda_layer:datadog-python310_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1235,7 +1235,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1335,8 +1335,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python310", "resource:integration-tests-python-XXXX-async-metrics_python310", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.10", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python310_X.X.X" @@ -1362,8 +1362,8 @@ START "dd_lambda_layer:datadog-python310_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1404,7 +1404,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python311.log b/tests/integration/snapshots/logs/async-metrics_python311.log index 1e6a384d..b97628ac 100644 --- a/tests/integration/snapshots/logs/async-metrics_python311.log +++ b/tests/integration/snapshots/logs/async-metrics_python311.log @@ -9,8 +9,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python311", "resource:integration-tests-python-XXXX-async-metrics_python311", - "cold_start:true", "memorysize:1024", + "cold_start:true", "runtime:python3.11", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python311_X.X.X" @@ -36,8 +36,8 @@ START "dd_lambda_layer:datadog-python311_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -180,8 +180,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python311", "resource:integration-tests-python-XXXX-async-metrics_python311", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.11", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python311_X.X.X" @@ -207,8 +207,8 @@ START "dd_lambda_layer:datadog-python311_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -246,7 +246,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -346,8 +346,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python311", "resource:integration-tests-python-XXXX-async-metrics_python311", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.11", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python311_X.X.X" @@ -373,8 +373,8 @@ START "dd_lambda_layer:datadog-python311_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -505,8 +505,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python311", "resource:integration-tests-python-XXXX-async-metrics_python311", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.11", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python311_X.X.X" @@ -532,8 +532,8 @@ START "dd_lambda_layer:datadog-python311_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -575,7 +575,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "http" }, @@ -679,8 +679,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python311", "resource:integration-tests-python-XXXX-async-metrics_python311", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.11", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python311_X.X.X" @@ -706,9 +706,8 @@ START "dd_lambda_layer:datadog-python311_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -END Duration: XXXX ms Memory Used: XXXX MB +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -746,7 +745,7 @@ END Duration: XXXX ms Memory Used: XXXX MB "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -835,6 +834,7 @@ END Duration: XXXX ms Memory Used: XXXX MB ] ] } +END Duration: XXXX ms Memory Used: XXXX MB START { "m": "aws.lambda.enhanced.invocations", @@ -845,8 +845,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python311", "resource:integration-tests-python-XXXX-async-metrics_python311", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.11", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python311_X.X.X" @@ -872,8 +872,8 @@ START "dd_lambda_layer:datadog-python311_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -908,7 +908,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1008,8 +1008,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python311", "resource:integration-tests-python-XXXX-async-metrics_python311", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.11", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python311_X.X.X" @@ -1035,8 +1035,8 @@ START "dd_lambda_layer:datadog-python311_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1072,7 +1072,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1172,8 +1172,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python311", "resource:integration-tests-python-XXXX-async-metrics_python311", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.11", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python311_X.X.X" @@ -1199,8 +1199,8 @@ START "dd_lambda_layer:datadog-python311_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1235,7 +1235,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1335,8 +1335,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python311", "resource:integration-tests-python-XXXX-async-metrics_python311", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.11", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python311_X.X.X" @@ -1362,8 +1362,8 @@ START "dd_lambda_layer:datadog-python311_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1404,7 +1404,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python312.log b/tests/integration/snapshots/logs/async-metrics_python312.log index fdf90e98..79dbefc1 100644 --- a/tests/integration/snapshots/logs/async-metrics_python312.log +++ b/tests/integration/snapshots/logs/async-metrics_python312.log @@ -9,8 +9,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python312", "resource:integration-tests-python-XXXX-async-metrics_python312", - "cold_start:true", "memorysize:1024", + "cold_start:true", "runtime:python3.12", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python312_X.X.X" @@ -36,8 +36,8 @@ START "dd_lambda_layer:datadog-python312_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -180,8 +180,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python312", "resource:integration-tests-python-XXXX-async-metrics_python312", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.12", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python312_X.X.X" @@ -207,8 +207,8 @@ START "dd_lambda_layer:datadog-python312_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -246,7 +246,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -346,8 +346,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python312", "resource:integration-tests-python-XXXX-async-metrics_python312", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.12", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python312_X.X.X" @@ -373,8 +373,8 @@ START "dd_lambda_layer:datadog-python312_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -505,8 +505,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python312", "resource:integration-tests-python-XXXX-async-metrics_python312", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.12", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python312_X.X.X" @@ -532,8 +532,8 @@ START "dd_lambda_layer:datadog-python312_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -575,7 +575,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "http" }, @@ -679,8 +679,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python312", "resource:integration-tests-python-XXXX-async-metrics_python312", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.12", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python312_X.X.X" @@ -706,8 +706,8 @@ START "dd_lambda_layer:datadog-python312_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -745,7 +745,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -845,8 +845,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python312", "resource:integration-tests-python-XXXX-async-metrics_python312", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.12", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python312_X.X.X" @@ -872,8 +872,8 @@ START "dd_lambda_layer:datadog-python312_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -908,7 +908,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1008,8 +1008,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python312", "resource:integration-tests-python-XXXX-async-metrics_python312", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.12", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python312_X.X.X" @@ -1035,8 +1035,8 @@ START "dd_lambda_layer:datadog-python312_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1072,7 +1072,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1172,8 +1172,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python312", "resource:integration-tests-python-XXXX-async-metrics_python312", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.12", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python312_X.X.X" @@ -1199,8 +1199,8 @@ START "dd_lambda_layer:datadog-python312_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1235,7 +1235,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1335,8 +1335,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python312", "resource:integration-tests-python-XXXX-async-metrics_python312", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.12", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python312_X.X.X" @@ -1362,8 +1362,8 @@ START "dd_lambda_layer:datadog-python312_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1404,7 +1404,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python38.log b/tests/integration/snapshots/logs/async-metrics_python38.log index 50a9f700..3b9d7c76 100644 --- a/tests/integration/snapshots/logs/async-metrics_python38.log +++ b/tests/integration/snapshots/logs/async-metrics_python38.log @@ -9,8 +9,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python38", "resource:integration-tests-python-XXXX-async-metrics_python38", - "cold_start:true", "memorysize:1024", + "cold_start:true", "runtime:python3.8", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python38_X.X.X" @@ -36,8 +36,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -180,8 +180,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python38", "resource:integration-tests-python-XXXX-async-metrics_python38", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.8", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python38_X.X.X" @@ -207,8 +207,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -246,7 +246,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -346,8 +346,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python38", "resource:integration-tests-python-XXXX-async-metrics_python38", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.8", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python38_X.X.X" @@ -373,8 +373,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -505,8 +505,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python38", "resource:integration-tests-python-XXXX-async-metrics_python38", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.8", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python38_X.X.X" @@ -532,8 +532,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -575,7 +575,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "http" }, @@ -679,8 +679,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python38", "resource:integration-tests-python-XXXX-async-metrics_python38", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.8", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python38_X.X.X" @@ -706,8 +706,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -745,7 +745,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -845,8 +845,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python38", "resource:integration-tests-python-XXXX-async-metrics_python38", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.8", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python38_X.X.X" @@ -872,8 +872,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -908,7 +908,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1008,8 +1008,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python38", "resource:integration-tests-python-XXXX-async-metrics_python38", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.8", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python38_X.X.X" @@ -1035,8 +1035,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1072,7 +1072,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1172,8 +1172,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python38", "resource:integration-tests-python-XXXX-async-metrics_python38", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.8", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python38_X.X.X" @@ -1199,8 +1199,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1235,7 +1235,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1335,8 +1335,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python38", "resource:integration-tests-python-XXXX-async-metrics_python38", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.8", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python38_X.X.X" @@ -1362,8 +1362,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1404,7 +1404,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python39.log b/tests/integration/snapshots/logs/async-metrics_python39.log index d411dd1e..4e820246 100644 --- a/tests/integration/snapshots/logs/async-metrics_python39.log +++ b/tests/integration/snapshots/logs/async-metrics_python39.log @@ -9,8 +9,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python39", "resource:integration-tests-python-XXXX-async-metrics_python39", - "cold_start:true", "memorysize:1024", + "cold_start:true", "runtime:python3.9", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python39_X.X.X" @@ -36,8 +36,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -180,8 +180,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python39", "resource:integration-tests-python-XXXX-async-metrics_python39", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.9", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python39_X.X.X" @@ -207,8 +207,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -246,7 +246,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -346,8 +346,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python39", "resource:integration-tests-python-XXXX-async-metrics_python39", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.9", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python39_X.X.X" @@ -373,8 +373,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -505,8 +505,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python39", "resource:integration-tests-python-XXXX-async-metrics_python39", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.9", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python39_X.X.X" @@ -532,8 +532,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -575,7 +575,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "http" }, @@ -679,8 +679,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python39", "resource:integration-tests-python-XXXX-async-metrics_python39", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.9", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python39_X.X.X" @@ -706,8 +706,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -745,7 +745,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -845,8 +845,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python39", "resource:integration-tests-python-XXXX-async-metrics_python39", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.9", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python39_X.X.X" @@ -872,8 +872,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -908,7 +908,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1008,8 +1008,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python39", "resource:integration-tests-python-XXXX-async-metrics_python39", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.9", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python39_X.X.X" @@ -1035,9 +1035,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -END Duration: XXXX ms Memory Used: XXXX MB +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1073,7 +1072,7 @@ END Duration: XXXX ms Memory Used: XXXX MB "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1162,6 +1161,7 @@ END Duration: XXXX ms Memory Used: XXXX MB ] ] } +END Duration: XXXX ms Memory Used: XXXX MB START { "m": "aws.lambda.enhanced.invocations", @@ -1172,8 +1172,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python39", "resource:integration-tests-python-XXXX-async-metrics_python39", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.9", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python39_X.X.X" @@ -1199,8 +1199,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1235,7 +1235,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1335,8 +1335,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python39", "resource:integration-tests-python-XXXX-async-metrics_python39", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.9", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python39_X.X.X" @@ -1362,8 +1362,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1404,7 +1404,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, diff --git a/tests/integration/snapshots/logs/sync-metrics_python310.log b/tests/integration/snapshots/logs/sync-metrics_python310.log index 97a0cf4d..339c821c 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python310.log +++ b/tests/integration/snapshots/logs/sync-metrics_python310.log @@ -9,15 +9,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python310", "resource:integration-tests-python-XXXX-sync-metrics_python310", - "cold_start:true", "memorysize:1024", + "cold_start:true", "runtime:python3.10", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python310_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -149,7 +149,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -199,15 +199,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python310", "resource:integration-tests-python-XXXX-sync-metrics_python310", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.10", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python310_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -245,7 +245,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -334,7 +334,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -384,15 +384,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python310", "resource:integration-tests-python-XXXX-sync-metrics_python310", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.10", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python310_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -424,7 +424,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -512,7 +512,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -562,15 +562,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python310", "resource:integration-tests-python-XXXX-sync-metrics_python310", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.10", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python310_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -612,7 +612,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "http" }, @@ -705,7 +705,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -755,15 +755,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python310", "resource:integration-tests-python-XXXX-sync-metrics_python310", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.10", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python310_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -801,7 +801,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -890,7 +890,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -940,15 +940,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python310", "resource:integration-tests-python-XXXX-sync-metrics_python310", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.10", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python310_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -983,7 +983,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1072,7 +1072,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1122,15 +1122,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python310", "resource:integration-tests-python-XXXX-sync-metrics_python310", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.10", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python310_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1166,7 +1166,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1255,7 +1255,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1305,15 +1305,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python310", "resource:integration-tests-python-XXXX-sync-metrics_python310", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.10", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python310_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1348,7 +1348,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1437,7 +1437,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1487,15 +1487,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python310", "resource:integration-tests-python-XXXX-sync-metrics_python310", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.10", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python310_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1536,7 +1536,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1627,7 +1627,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ diff --git a/tests/integration/snapshots/logs/sync-metrics_python311.log b/tests/integration/snapshots/logs/sync-metrics_python311.log index bfb38df9..878b0d64 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python311.log +++ b/tests/integration/snapshots/logs/sync-metrics_python311.log @@ -9,15 +9,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python311", "resource:integration-tests-python-XXXX-sync-metrics_python311", - "cold_start:true", "memorysize:1024", + "cold_start:true", "runtime:python3.11", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python311_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -149,7 +149,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -199,15 +199,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python311", "resource:integration-tests-python-XXXX-sync-metrics_python311", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.11", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python311_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -245,7 +245,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -334,7 +334,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -384,15 +384,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python311", "resource:integration-tests-python-XXXX-sync-metrics_python311", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.11", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python311_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -424,7 +424,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -512,7 +512,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -562,15 +562,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python311", "resource:integration-tests-python-XXXX-sync-metrics_python311", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.11", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python311_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -612,7 +612,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "http" }, @@ -705,7 +705,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -755,15 +755,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python311", "resource:integration-tests-python-XXXX-sync-metrics_python311", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.11", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python311_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -801,7 +801,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -890,7 +890,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -940,15 +940,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python311", "resource:integration-tests-python-XXXX-sync-metrics_python311", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.11", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python311_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -983,7 +983,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1072,8 +1072,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX -END Duration: XXXX ms Memory Used: XXXX MB +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1112,6 +1111,7 @@ END Duration: XXXX ms Memory Used: XXXX MB ] ] } +END Duration: XXXX ms Memory Used: XXXX MB START { "m": "aws.lambda.enhanced.invocations", @@ -1122,15 +1122,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python311", "resource:integration-tests-python-XXXX-sync-metrics_python311", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.11", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python311_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1166,7 +1166,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1255,7 +1255,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1305,15 +1305,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python311", "resource:integration-tests-python-XXXX-sync-metrics_python311", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.11", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python311_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1348,7 +1348,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1437,7 +1437,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1487,15 +1487,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python311", "resource:integration-tests-python-XXXX-sync-metrics_python311", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.11", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python311_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1536,7 +1536,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1627,7 +1627,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ diff --git a/tests/integration/snapshots/logs/sync-metrics_python312.log b/tests/integration/snapshots/logs/sync-metrics_python312.log index e9e3e339..c4dc17bc 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python312.log +++ b/tests/integration/snapshots/logs/sync-metrics_python312.log @@ -9,15 +9,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python312", "resource:integration-tests-python-XXXX-sync-metrics_python312", - "cold_start:true", "memorysize:1024", + "cold_start:true", "runtime:python3.12", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python312_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -149,7 +149,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -199,15 +199,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python312", "resource:integration-tests-python-XXXX-sync-metrics_python312", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.12", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python312_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -245,7 +245,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -334,7 +334,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -384,15 +384,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python312", "resource:integration-tests-python-XXXX-sync-metrics_python312", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.12", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python312_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -424,7 +424,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -512,7 +512,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -562,15 +562,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python312", "resource:integration-tests-python-XXXX-sync-metrics_python312", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.12", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python312_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -612,7 +612,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "http" }, @@ -705,7 +705,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -755,15 +755,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python312", "resource:integration-tests-python-XXXX-sync-metrics_python312", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.12", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python312_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -801,7 +801,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -890,7 +890,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -940,15 +940,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python312", "resource:integration-tests-python-XXXX-sync-metrics_python312", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.12", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python312_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -983,7 +983,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1072,7 +1072,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1122,15 +1122,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python312", "resource:integration-tests-python-XXXX-sync-metrics_python312", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.12", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python312_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1166,7 +1166,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1255,7 +1255,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1305,15 +1305,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python312", "resource:integration-tests-python-XXXX-sync-metrics_python312", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.12", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python312_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1348,7 +1348,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1437,7 +1437,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1487,15 +1487,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python312", "resource:integration-tests-python-XXXX-sync-metrics_python312", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.12", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python312_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1536,7 +1536,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1627,7 +1627,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ diff --git a/tests/integration/snapshots/logs/sync-metrics_python38.log b/tests/integration/snapshots/logs/sync-metrics_python38.log index e9e6eea6..3e756430 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python38.log +++ b/tests/integration/snapshots/logs/sync-metrics_python38.log @@ -9,15 +9,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python38", "resource:integration-tests-python-XXXX-sync-metrics_python38", - "cold_start:true", "memorysize:1024", + "cold_start:true", "runtime:python3.8", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -149,7 +149,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -199,15 +199,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python38", "resource:integration-tests-python-XXXX-sync-metrics_python38", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.8", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -245,7 +245,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -334,7 +334,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -384,15 +384,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python38", "resource:integration-tests-python-XXXX-sync-metrics_python38", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.8", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -424,7 +424,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -512,7 +512,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -562,15 +562,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python38", "resource:integration-tests-python-XXXX-sync-metrics_python38", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.8", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -612,7 +612,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "http" }, @@ -705,7 +705,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -755,15 +755,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python38", "resource:integration-tests-python-XXXX-sync-metrics_python38", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.8", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -801,7 +801,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -890,7 +890,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -940,15 +940,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python38", "resource:integration-tests-python-XXXX-sync-metrics_python38", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.8", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -983,7 +983,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1072,7 +1072,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1122,15 +1122,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python38", "resource:integration-tests-python-XXXX-sync-metrics_python38", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.8", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1166,7 +1166,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1255,7 +1255,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1305,15 +1305,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python38", "resource:integration-tests-python-XXXX-sync-metrics_python38", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.8", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1348,7 +1348,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1437,7 +1437,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1487,15 +1487,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python38", "resource:integration-tests-python-XXXX-sync-metrics_python38", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.8", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1536,7 +1536,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1627,7 +1627,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ diff --git a/tests/integration/snapshots/logs/sync-metrics_python39.log b/tests/integration/snapshots/logs/sync-metrics_python39.log index ebc39ab5..ceffe679 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python39.log +++ b/tests/integration/snapshots/logs/sync-metrics_python39.log @@ -9,15 +9,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python39", "resource:integration-tests-python-XXXX-sync-metrics_python39", - "cold_start:true", "memorysize:1024", + "cold_start:true", "runtime:python3.9", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -149,7 +149,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -199,15 +199,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python39", "resource:integration-tests-python-XXXX-sync-metrics_python39", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.9", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -245,7 +245,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -334,7 +334,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -384,15 +384,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python39", "resource:integration-tests-python-XXXX-sync-metrics_python39", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.9", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -424,7 +424,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -512,7 +512,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -562,15 +562,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python39", "resource:integration-tests-python-XXXX-sync-metrics_python39", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.9", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -612,7 +612,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "http" }, @@ -705,7 +705,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -755,15 +755,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python39", "resource:integration-tests-python-XXXX-sync-metrics_python39", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.9", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -801,7 +801,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -890,7 +890,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -940,15 +940,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python39", "resource:integration-tests-python-XXXX-sync-metrics_python39", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.9", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -983,7 +983,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1072,7 +1072,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1122,15 +1122,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python39", "resource:integration-tests-python-XXXX-sync-metrics_python39", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.9", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1166,7 +1166,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1255,7 +1255,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1305,15 +1305,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python39", "resource:integration-tests-python-XXXX-sync-metrics_python39", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.9", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1348,7 +1348,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1437,7 +1437,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1487,15 +1487,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python39", "resource:integration-tests-python-XXXX-sync-metrics_python39", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.9", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1536,7 +1536,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1627,7 +1627,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ From 8ac32edf792c78766dc0fb1459aaa8de1a314e3f Mon Sep 17 00:00:00 2001 From: Dylan Yang Date: Thu, 8 Aug 2024 15:34:27 -0400 Subject: [PATCH 151/268] Handle datetime parameter for historical custom metrics submitted to the API (#509) handle datetime params --- datadog_lambda/metric.py | 2 ++ tests/test_metric.py | 13 +++++++++++++ 2 files changed, 15 insertions(+) diff --git a/datadog_lambda/metric.py b/datadog_lambda/metric.py index 3bc9955f..44f8e377 100644 --- a/datadog_lambda/metric.py +++ b/datadog_lambda/metric.py @@ -65,6 +65,8 @@ def lambda_metric(metric_name, value, timestamp=None, tags=None, force_async=Fal timestamp_ceiling = int( (datetime.now() - timedelta(hours=4)).timestamp() ) # 4 hours ago + if isinstance(timestamp, datetime): + timestamp = int(timestamp.timestamp()) if timestamp_ceiling > timestamp: logger.warning( "Timestamp %s is older than 4 hours, not submitting metric %s", diff --git a/tests/test_metric.py b/tests/test_metric.py index 031b1180..10ef9191 100644 --- a/tests/test_metric.py +++ b/tests/test_metric.py @@ -58,6 +58,19 @@ def test_lambda_metric_timestamp_with_extension(self): "test_timestamp", 1, timestamp=timestamp, tags=[dd_lambda_layer_tag] ) + @patch("datadog_lambda.metric.should_use_extension", True) + def test_lambda_metric_datetime_with_extension(self): + patcher = patch("datadog_lambda.metric.extension_thread_stats") + self.mock_metric_extension_thread_stats = patcher.start() + self.addCleanup(patcher.stop) + + delta = timedelta(hours=5) + timestamp = datetime.now() - delta + + lambda_metric("test_timestamp", 1, timestamp) + self.mock_metric_lambda_stats.distribution.assert_not_called() + self.mock_metric_extension_thread_stats.distribution.assert_not_called() + @patch("datadog_lambda.metric.should_use_extension", True) def test_lambda_metric_invalid_timestamp_with_extension(self): patcher = patch("datadog_lambda.metric.extension_thread_stats") From 692b9c91029447b610d31df27298ef6ff4282e65 Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Mon, 12 Aug 2024 10:40:12 -0400 Subject: [PATCH 152/268] v6.98.0 (#512) --- datadog_lambda/version.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index d85fbb51..d29698b5 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "6.97.0" +__version__ = "6.98.0" diff --git a/pyproject.toml b/pyproject.toml index 710faa67..db2bd0a8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "6.97.0" +version = "6.98.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From d97d9bbb81d6aaed9260c1e37bd1398a3a91f12b Mon Sep 17 00:00:00 2001 From: Abhinav Vedmala Date: Mon, 12 Aug 2024 13:48:38 -0400 Subject: [PATCH 153/268] Step Functions Legacy Lambda Span Linking (#511) This change will check if events fall into the Legacy Lambda case and parse them accordingly so that we can extract the trace context and infer a span link between the Step Function and the downstream Legacy Lambda --- datadog_lambda/tracing.py | 8 ++++++++ datadog_lambda/wrapper.py | 3 +++ tests/test_tracing.py | 28 ++++++++++++++++++++++++++++ 3 files changed, 39 insertions(+) diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 64a19ccd..2a696046 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -407,6 +407,14 @@ def extract_context_from_step_functions(event, lambda_context): return extract_context_from_lambda_context(lambda_context) +def is_legacy_lambda_step_function(event): + """ + Check if the event is a step function that called a legacy lambda + """ + event = event.get("Payload", {}) + return "Execution" in event and "StateMachine" in event and "State" in event + + def extract_context_custom_extractor(extractor, event, lambda_context): """ Extract Datadog trace context using a custom trace extractor function diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index ed3d92b4..e97c0ebe 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -44,6 +44,7 @@ is_authorizer_response, tracer, propagator, + is_legacy_lambda_step_function, ) from datadog_lambda.trigger import ( extract_trigger_tags, @@ -277,6 +278,8 @@ def _before(self, event, context): self.response = None set_cold_start(init_timestamp_ns) submit_invocations_metric(context) + if is_legacy_lambda_step_function(event): + event = event["Payload"] self.trigger_tags = extract_trigger_tags(event, context) # Extract Datadog trace context and source from incoming requests dd_context, trace_context_source, event_source = extract_dd_trace_context( diff --git a/tests/test_tracing.py b/tests/test_tracing.py index b94e968f..b21b9337 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -40,6 +40,7 @@ service_mapping as global_service_mapping, propagator, emit_telemetry_on_exception_outside_of_handler, + is_legacy_lambda_step_function, ) from datadog_lambda.trigger import EventTypes @@ -647,6 +648,33 @@ def test_step_function_trace_data(self): expected_context, ) + def test_is_legacy_lambda_step_function(self): + sf_event = { + "Payload": { + "Execution": { + "Id": "665c417c-1237-4742-aaca-8b3becbb9e75", + }, + "StateMachine": {}, + "State": { + "Name": "my-awesome-state", + "EnteredTime": "Mon Nov 13 12:43:33 PST 2023", + }, + } + } + self.assertTrue(is_legacy_lambda_step_function(sf_event)) + + sf_event = { + "Execution": { + "Id": "665c417c-1237-4742-aaca-8b3becbb9e75", + }, + "StateMachine": {}, + "State": { + "Name": "my-awesome-state", + "EnteredTime": "Mon Nov 13 12:43:33 PST 2023", + }, + } + self.assertFalse(is_legacy_lambda_step_function(sf_event)) + class TestXRayContextConversion(unittest.TestCase): def test_convert_xray_trace_id(self): From c52970ffb97aee30a0378be9f15a3f19c265ecdf Mon Sep 17 00:00:00 2001 From: Aleksandr Pasechnik Date: Fri, 27 Sep 2024 12:42:23 -0400 Subject: [PATCH 154/268] [SVLS-5265] S3 Event Handler Span Pointers (#513) Adding Span Pointers for the upstream S3 objects when a lambda is triggered by an S3 ObjectCreated event. --- datadog_lambda/span_pointers.py | 91 +++++++++ datadog_lambda/tracing.py | 9 + datadog_lambda/wrapper.py | 16 +- poetry.lock | 318 ++++++++++++------------------- pyproject.toml | 2 +- scripts/run_integration_tests.sh | 4 +- tests/test_span_pointers.py | 93 +++++++++ tests/test_tracing.py | 86 ++++++++- 8 files changed, 403 insertions(+), 216 deletions(-) create mode 100644 datadog_lambda/span_pointers.py create mode 100644 tests/test_span_pointers.py diff --git a/datadog_lambda/span_pointers.py b/datadog_lambda/span_pointers.py new file mode 100644 index 00000000..4c33975f --- /dev/null +++ b/datadog_lambda/span_pointers.py @@ -0,0 +1,91 @@ +from itertools import chain +import logging +from typing import List + +from ddtrace._trace.utils_botocore.span_pointers import ( + _aws_s3_object_span_pointer_description, +) +from ddtrace._trace._span_pointer import _SpanPointerDirection +from ddtrace._trace._span_pointer import _SpanPointerDescription +from datadog_lambda.trigger import EventTypes + + +logger = logging.getLogger(__name__) + + +def calculate_span_pointers( + event_source, + event, +) -> List[_SpanPointerDescription]: + try: + if event_source.equals(EventTypes.S3): + return _calculate_s3_span_pointers_for_event(event) + + except Exception as e: + logger.warning( + "failed to calculate span pointers for event: %s", + str(e), + ) + + return [] + + +def _calculate_s3_span_pointers_for_event(event) -> List[_SpanPointerDescription]: + # Example event: + # https://docs.aws.amazon.com/lambda/latest/dg/with-s3.html + + return list( + chain.from_iterable( + _calculate_s3_span_pointers_for_event_record(record) + for record in event.get("Records", []) + ) + ) + + +def _calculate_s3_span_pointers_for_event_record( + record, +) -> List[_SpanPointerDescription]: + # Event types: + # https://docs.aws.amazon.com/AmazonS3/latest/userguide/notification-how-to-event-types-and-destinations.html + + if record.get("eventName").startswith("ObjectCreated:"): + s3_information = record.get("s3", None) + if s3_information is not None: + return _calculate_s3_span_pointers_for_object_created_s3_information( + s3_information + ) + + return [] + + +def _calculate_s3_span_pointers_for_object_created_s3_information( + s3_information, +) -> List[_SpanPointerDescription]: + try: + bucket = s3_information["bucket"]["name"] + key = s3_information["object"]["key"] + etag = s3_information["object"]["eTag"] + + except KeyError as e: + logger.warning( + "missing s3 information required to make a span pointer: %s", + str(e), + ) + return [] + + try: + return [ + _aws_s3_object_span_pointer_description( + pointer_direction=_SpanPointerDirection.UPSTREAM, + bucket=bucket, + key=key, + etag=etag, + ) + ] + + except Exception as e: + logger.warning( + "failed to generate S3 span pointer: %s", + str(e), + ) + return [] diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 2a696046..0aded4de 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -1259,6 +1259,7 @@ def create_function_execution_span( merge_xray_traces, trigger_tags, parent_span=None, + span_pointers=None, ): tags = None if context: @@ -1296,6 +1297,14 @@ def create_function_execution_span( span.set_tags(tags) if parent_span: span.parent_id = parent_span.span_id + if span_pointers: + for span_pointer_description in span_pointers: + span._add_span_pointer( + pointer_kind=span_pointer_description.pointer_kind, + pointer_direction=span_pointer_description.pointer_direction, + pointer_hash=span_pointer_description.pointer_hash, + extra_attributes=span_pointer_description.extra_attributes, + ) return span diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index e97c0ebe..2632d22e 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -30,6 +30,7 @@ ) from datadog_lambda.module_name import modify_module_name from datadog_lambda.patch import patch_all +from datadog_lambda.span_pointers import calculate_span_pointers from datadog_lambda.tracing import ( extract_dd_trace_context, create_dd_dummy_metadata_subsegment, @@ -307,14 +308,15 @@ def _before(self, event, context): event, context, event_source, self.decode_authorizer_context ) self.span = create_function_execution_span( - context, - self.function_name, - is_cold_start(), - is_proactive_init(), - trace_context_source, - self.merge_xray_traces, - self.trigger_tags, + context=context, + function_name=self.function_name, + is_cold_start=is_cold_start(), + is_proactive_init=is_proactive_init(), + trace_context_source=trace_context_source, + merge_xray_traces=self.merge_xray_traces, + trigger_tags=self.trigger_tags, parent_span=self.inferred_span, + span_pointers=calculate_span_pointers(event_source, event), ) else: set_correlation_ids() diff --git a/poetry.lock b/poetry.lock index 6a8bda88..dcac5c82 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,37 +1,18 @@ # This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. -[[package]] -name = "attrs" -version = "24.2.0" -description = "Classes Without Boilerplate" -optional = false -python-versions = ">=3.7" -files = [ - {file = "attrs-24.2.0-py3-none-any.whl", hash = "sha256:81921eb96de3191c8258c199618104dd27ac608d9366f5e35d011eae1867ede2"}, - {file = "attrs-24.2.0.tar.gz", hash = "sha256:5cfb1b9148b5b086569baec03f20d7b6bf3bcacc9a42bebf87ffaaca362f6346"}, -] - -[package.extras] -benchmark = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-codspeed", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -cov = ["cloudpickle", "coverage[toml] (>=5.3)", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -dev = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -docs = ["cogapp", "furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier (<24.7)"] -tests = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -tests-mypy = ["mypy (>=1.11.1)", "pytest-mypy-plugins"] - [[package]] name = "boto3" -version = "1.34.156" +version = "1.35.28" description = "The AWS SDK for Python" optional = true python-versions = ">=3.8" files = [ - {file = "boto3-1.34.156-py3-none-any.whl", hash = "sha256:cbbd453270b8ce94ef9da60dfbb6f9ceeb3eeee226b635aa9ec44b1def98cc96"}, - {file = "boto3-1.34.156.tar.gz", hash = "sha256:b33e9a8f8be80d3053b8418836a7c1900410b23a30c7cb040927d601a1082e68"}, + {file = "boto3-1.35.28-py3-none-any.whl", hash = "sha256:dc088b86a14f17d3cd2e96915c6ccfd31bce640dfe9180df579ed311bc6bf0fc"}, + {file = "boto3-1.35.28.tar.gz", hash = "sha256:8960fc458b9ba3c8a9890a607c31cee375db821f39aefaec9ff638248e81644a"}, ] [package.dependencies] -botocore = ">=1.34.156,<1.35.0" +botocore = ">=1.35.28,<1.36.0" jmespath = ">=0.7.1,<2.0.0" s3transfer = ">=0.10.0,<0.11.0" @@ -40,13 +21,13 @@ crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] [[package]] name = "botocore" -version = "1.34.156" +version = "1.35.28" description = "Low-level, data-driven core of boto 3." optional = true python-versions = ">=3.8" files = [ - {file = "botocore-1.34.156-py3-none-any.whl", hash = "sha256:c48f8c8996216dfdeeb0aa6d3c0f2c7ae25234766434a2ea3e57bdc08494bdda"}, - {file = "botocore-1.34.156.tar.gz", hash = "sha256:5d1478c41ab9681e660b3322432fe09c4055759c317984b7b8d3af9557ff769a"}, + {file = "botocore-1.35.28-py3-none-any.whl", hash = "sha256:b66c78f3d6379bd16f0362f07168fa7699cdda3921fc880047192d96f2c8c527"}, + {file = "botocore-1.35.28.tar.gz", hash = "sha256:115d13f2172d8e9fa92e8d913f0e80092b97624d190f46772ed2930d4a355d55"}, ] [package.dependencies] @@ -58,7 +39,7 @@ urllib3 = [ ] [package.extras] -crt = ["awscrt (==0.21.2)"] +crt = ["awscrt (==0.21.5)"] [[package]] name = "bytecode" @@ -74,40 +55,15 @@ files = [ [package.dependencies] typing-extensions = {version = "*", markers = "python_version < \"3.10\""} -[[package]] -name = "cattrs" -version = "23.2.3" -description = "Composable complex class support for attrs and dataclasses." -optional = false -python-versions = ">=3.8" -files = [ - {file = "cattrs-23.2.3-py3-none-any.whl", hash = "sha256:0341994d94971052e9ee70662542699a3162ea1e0c62f7ce1b4a57f563685108"}, - {file = "cattrs-23.2.3.tar.gz", hash = "sha256:a934090d95abaa9e911dac357e3a8699e0b4b14f8529bcc7d2b1ad9d51672b9f"}, -] - -[package.dependencies] -attrs = ">=23.1.0" -exceptiongroup = {version = ">=1.1.1", markers = "python_version < \"3.11\""} -typing-extensions = {version = ">=4.1.0,<4.6.3 || >4.6.3", markers = "python_version < \"3.11\""} - -[package.extras] -bson = ["pymongo (>=4.4.0)"] -cbor2 = ["cbor2 (>=5.4.6)"] -msgpack = ["msgpack (>=1.0.5)"] -orjson = ["orjson (>=3.9.2)"] -pyyaml = ["pyyaml (>=6.0)"] -tomlkit = ["tomlkit (>=0.11.8)"] -ujson = ["ujson (>=5.7.0)"] - [[package]] name = "certifi" -version = "2024.7.4" +version = "2024.8.30" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2024.7.4-py3-none-any.whl", hash = "sha256:c198e21b1289c2ab85ee4e67bb4b4ef3ead0892059901a8d5b622f24a1101e90"}, - {file = "certifi-2024.7.4.tar.gz", hash = "sha256:5a1e7645bc0ec61a09e26c36f6106dd4cf40c6db3a1fb6352b0244e7fb057c7b"}, + {file = "certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8"}, + {file = "certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9"}, ] [[package]] @@ -222,119 +178,98 @@ files = [ [[package]] name = "datadog" -version = "0.49.1" +version = "0.50.1" description = "The Datadog Python library" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ - {file = "datadog-0.49.1-py2.py3-none-any.whl", hash = "sha256:4a56d57490ea699a0dfd9253547485a57b4120e93489defadcf95c66272374d6"}, - {file = "datadog-0.49.1.tar.gz", hash = "sha256:4cb7a7991af6cadb868fe450cd456473e65f11fc678b7d7cf61044ff1c6074d8"}, + {file = "datadog-0.50.1-py2.py3-none-any.whl", hash = "sha256:eb101abee34fe6c1121558fd5ea48f592eb661604abb7914c4f693d8ad25a515"}, + {file = "datadog-0.50.1.tar.gz", hash = "sha256:579d4db54bd6ef918c5250217edb15b80b7b11582b8e24fce43702768c3f2e2d"}, ] [package.dependencies] requests = ">=2.6.0" -[[package]] -name = "ddsketch" -version = "3.0.1" -description = "Distributed quantile sketches" -optional = false -python-versions = ">=3.7" -files = [ - {file = "ddsketch-3.0.1-py3-none-any.whl", hash = "sha256:6d047b455fe2837c43d366ff1ae6ba0c3166e15499de8688437a75cea914224e"}, - {file = "ddsketch-3.0.1.tar.gz", hash = "sha256:aa8f20b2965e61731ca4fee2ca9c209f397f5bbb23f9d192ec8bd7a2f5bd9824"}, -] - -[package.dependencies] -six = "*" - -[package.extras] -serialization = ["protobuf (>=3.0.0)"] - [[package]] name = "ddtrace" -version = "2.10.4" +version = "2.14.0" description = "Datadog APM client library" optional = false python-versions = ">=3.7" files = [ - {file = "ddtrace-2.10.4-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:a7c5604654682aa0f5a717d93d36d1a1737cda4ca107c272ca477acf8c6fe076"}, - {file = "ddtrace-2.10.4-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:a0d9c6f0d91a97c71596787df80e0ecc582d42a584679a587b8e3e6fa8e5aa54"}, - {file = "ddtrace-2.10.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:70c9c6452bb052e26ce6799024205c37ac76b3554d31b5ede7df90e00d7bbbb4"}, - {file = "ddtrace-2.10.4-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a764002f486794760817396095376f4cfb88b5571b5b6c75ae8a27cf3609d881"}, - {file = "ddtrace-2.10.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b87219b9f49828357fa70fcb2a2cb18981896d44175fc687b65ff906c663f26"}, - {file = "ddtrace-2.10.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:65fe081b385e43b86d061dbfda9582308287f17c3f1ad2fe38305765079dd825"}, - {file = "ddtrace-2.10.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d8903c4eb54b6b690abe138275811492bc288791f488f39c1d779e279b06d312"}, - {file = "ddtrace-2.10.4-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:39b2b08a96f2715fa57d441fcd2ba4b49eee4d23fa8d162032f98ec5a652b74c"}, - {file = "ddtrace-2.10.4-cp310-cp310-win32.whl", hash = "sha256:f364f0b2ec96cad163a6943dcb9ec6c3262da6d261a0c2057a4524bee8b07166"}, - {file = "ddtrace-2.10.4-cp310-cp310-win_amd64.whl", hash = "sha256:dc6b0179f169e3b7424441e0af55a08795491e35ab9e9586a8970e66a11ac14f"}, - {file = "ddtrace-2.10.4-cp311-cp311-macosx_12_0_universal2.whl", hash = "sha256:7a4f9d6ec5cb9cbb0fbfdb3b47873e160716fbc7a98c863d6e6a260b882ef18f"}, - {file = "ddtrace-2.10.4-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:9d69c965bd4c7448d4a6dbb92736c7bc16c4bd3168ec1a5ee31afbb02be9b846"}, - {file = "ddtrace-2.10.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3f84810d4f4423864c41efb1586aa573b074a9179aa2b4416a3d249aec91f679"}, - {file = "ddtrace-2.10.4-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7775e90338ee8d8e0c65a92edb88f9a477977cad7b27436581a2b9368440960b"}, - {file = "ddtrace-2.10.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eb0e72eb97e0cc18ffa4e5f7bb34c7738c0af1aa05f26e72c9e4467266061442"}, - {file = "ddtrace-2.10.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:3f003822488bca7f8d2c245a80adce02118fba76e567f3818b042fd7ef132d57"}, - {file = "ddtrace-2.10.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:beb9a9a9adc8627a1b6487f2b350b418c5188d5b9c83be19a15403e708c62280"}, - {file = "ddtrace-2.10.4-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:41880b06ea7720b75df6d1703190e0bb0e5eb478c1ffcec6711a1a5c44503596"}, - {file = "ddtrace-2.10.4-cp311-cp311-win32.whl", hash = "sha256:b538db5512aac530d46bd2f438324d4c6cb950363d865c264dcd5f844a3c56ad"}, - {file = "ddtrace-2.10.4-cp311-cp311-win_amd64.whl", hash = "sha256:45c98313d0572d7dd3a493d5b53ccb5798691dbe785e0245dc057cd30939cbb2"}, - {file = "ddtrace-2.10.4-cp312-cp312-macosx_12_0_universal2.whl", hash = "sha256:3d9f90f84a83d53c9c363b3c3673606b1066f4ea0d09edf4d5684ed1a64bf131"}, - {file = "ddtrace-2.10.4-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:2cfc3737fd79e13ba786b29e7fb5d9a48899779d1f62bb13cfc9065df43dd049"}, - {file = "ddtrace-2.10.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ee686cd9c311e204a2c40e8102b17a7fe2226e9a29a99585f0bcf515527b6f9"}, - {file = "ddtrace-2.10.4-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b5cd07d2e9b6148067bec473982a95c724049eeae036d9156df677ea4b181483"}, - {file = "ddtrace-2.10.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e001982c0b01dc6905103be11d00c81ff743e28cc42eb6484f422f2cc2b1d6db"}, - {file = "ddtrace-2.10.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:f6626f79264e0bce443864b4582de7983080e772942f3f5db08f1ff0262f8371"}, - {file = "ddtrace-2.10.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a6fded075f195e7c922a43c2fd13243e25272cafd866853f6e9a9ce4ac647721"}, - {file = "ddtrace-2.10.4-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:872259fdc12448f6e8b7cfe7b20e58467847c2ef579962134772b41909858b0e"}, - {file = "ddtrace-2.10.4-cp312-cp312-win32.whl", hash = "sha256:2c19868446d0a9ea9473847b335bdcfc69e9adc9fea7469c1ecbbb2decc8ab2e"}, - {file = "ddtrace-2.10.4-cp312-cp312-win_amd64.whl", hash = "sha256:826586f0d3f7363f1c406d4caeb3b8a0db84348c0b9f12e1e61c29d79a03b26e"}, - {file = "ddtrace-2.10.4-cp37-cp37m-macosx_12_0_x86_64.whl", hash = "sha256:001f626335a6bbe7bacbc11b545956fc82c00eb8993831fc5dc7e5898e01bc10"}, - {file = "ddtrace-2.10.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6a5179e4d66061cf566c622a8f099497c50ea9e57f4f6bc1dfa0fc25dd6f5111"}, - {file = "ddtrace-2.10.4-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3dae175bcd1e3634db576059dfdc76f304212e31794d45351ed643f3c32a3913"}, - {file = "ddtrace-2.10.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:64db1467c4aaa55c828daa9db380737608959ed9a5f883bd53db5acd95c1d7c6"}, - {file = "ddtrace-2.10.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:e21ce02e8f5c415f94748ac6ad406ba4f0f1e84a5416a14e14772495af98ac5a"}, - {file = "ddtrace-2.10.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:9e4a69b60dd60da6dbee88599560903af71f34b9891ab9f0e71a33ac210b71de"}, - {file = "ddtrace-2.10.4-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:41f865c1babe7a8b48e1393251ac91b6a0d856a6544e3c2da01981c342dcc750"}, - {file = "ddtrace-2.10.4-cp37-cp37m-win32.whl", hash = "sha256:15e766fdb525065e03c370ef511cb86f861712c46f34f82290fd0bb8a1ffb724"}, - {file = "ddtrace-2.10.4-cp37-cp37m-win_amd64.whl", hash = "sha256:32cdefb83ff9426a701ad8eb507d54d277526037b1a9e69366f8c03928980939"}, - {file = "ddtrace-2.10.4-cp38-cp38-macosx_12_0_universal2.whl", hash = "sha256:445725d19d95a7526c46678f364b1a107d3c5be7ab10f0f78edc362a2d258c56"}, - {file = "ddtrace-2.10.4-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:ab923631245e40b55474f3c86e5c44fb324e3dc8d99ce58d66ba972ed4a2f92e"}, - {file = "ddtrace-2.10.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:032e46dbad09668d7dc8ebaa70772ea326b41101cc8200394d7a8cf246f43aca"}, - {file = "ddtrace-2.10.4-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:41a621029079780420bfeffac559bed963808844d8aecbdab62c1e2294ece299"}, - {file = "ddtrace-2.10.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e731f76657caa42c6d773ce6ec0674c9ac5c5e01ddd8ada96f48ff8f1267e562"}, - {file = "ddtrace-2.10.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:30b9ef3fd8ccba20d671a0f33330202d563988e33fc382a9d5ffa586a46dbe1b"}, - {file = "ddtrace-2.10.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:9402df23b894f32eb92cd20531f1c336824f4b82c56167baf2666bd6c42cba09"}, - {file = "ddtrace-2.10.4-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:9aa7015bc6375705e5fb2ee7eb1ca4be6298dcc976d5c066e2afecc0c6dbb498"}, - {file = "ddtrace-2.10.4-cp38-cp38-win32.whl", hash = "sha256:16f7a843fc8fcec9a49ca4f164353a88a1370f90f1b42a094bd22cf082a9b3c2"}, - {file = "ddtrace-2.10.4-cp38-cp38-win_amd64.whl", hash = "sha256:b855914ddeb8a80ec63f830cb5ac1e1a4cb3b11b9cb03dcb056da1924d4a28a3"}, - {file = "ddtrace-2.10.4-cp39-cp39-macosx_12_0_universal2.whl", hash = "sha256:75b0d8d6980f76dac1e9d56800c343b9cd3c5504ec8d821deaa3a52e3eccb11e"}, - {file = "ddtrace-2.10.4-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:8b1b9c2da530f6da01624ea5f5a9121198d96fa06c59d9b20dd1540122c19889"}, - {file = "ddtrace-2.10.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:02f1e292a45fed6bce8289241877c825279fb981f773ad3a82205523a27a8458"}, - {file = "ddtrace-2.10.4-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a08d40f0fd126ad09916fccee0f85c20395907aa7961900d5ad67bfcd6d12afd"}, - {file = "ddtrace-2.10.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ff8a5648db09d9c2736f88a3eb641a665bec0adbd24db4bfd8cb00a9cc84200"}, - {file = "ddtrace-2.10.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a3409973b9bfe7c1c3ed568ce78a80b760bad8bb964983835b6b90d787166f11"}, - {file = "ddtrace-2.10.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9b0db4567b7dce7339c29d302da6430917d5c4ffd9eb8cca76c54dd870b61205"}, - {file = "ddtrace-2.10.4-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:c987c5ff4863b9acf2de8eb395dbf06dad928cd8d962618823809ae778702ad9"}, - {file = "ddtrace-2.10.4-cp39-cp39-win32.whl", hash = "sha256:f9c2e5c551c48b07b416d4dba73011c04d462b024ad4b7dfe38e65dcc9bde6b3"}, - {file = "ddtrace-2.10.4-cp39-cp39-win_amd64.whl", hash = "sha256:40f5c918fefb83a27bfd6665cb96a8a2ae264c1b01d2b8c54e3bfacd04de4c44"}, - {file = "ddtrace-2.10.4.tar.gz", hash = "sha256:d55a4e45b98d0f16adaefb6d95dc942bfadc9e9651ca884f5f70f8f098f6a893"}, + {file = "ddtrace-2.14.0-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:c55bf165b923a12a1386fbf951735a4b8335a0cfa1558833d2b78abdd289c783"}, + {file = "ddtrace-2.14.0-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:b6abaec1263e0ed19fe48d068e02907b7cc6bd312049c4d562f3fe80fcb9e8e5"}, + {file = "ddtrace-2.14.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:84aff2e9a98172c44b187616838705c7abd4c6e2122e595eb324ba0f269cc7cf"}, + {file = "ddtrace-2.14.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:82c5147d9b27604ac642de32e05fc2d5bac76b15a9ad98b530a585fed347ca86"}, + {file = "ddtrace-2.14.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cfb54abfb7b1b1c33a794d926df76e8161bd284a3b15ad55d13290c41b734e95"}, + {file = "ddtrace-2.14.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e89d31f3871bee63322dc5d0168d57cfb07ff2581e240510f7103a27e5608046"}, + {file = "ddtrace-2.14.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:75ce4fce7be384bdaae2a4d8600104397352ca71afea6a37a3243f6013031f5d"}, + {file = "ddtrace-2.14.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:81c093b8ad180ce55aec1e6d257de9729a2a2c09dec0fcddc2e7aaede102c32c"}, + {file = "ddtrace-2.14.0-cp310-cp310-win32.whl", hash = "sha256:b22e13c25af867d92c3b5898e3c01c7dc05ec2ec9975ee54f1ed1ed7ac05969a"}, + {file = "ddtrace-2.14.0-cp310-cp310-win_amd64.whl", hash = "sha256:d0faab57ee36e054d01fe0684418f20235532411fe470837cce91b60c8aa48a7"}, + {file = "ddtrace-2.14.0-cp311-cp311-macosx_12_0_universal2.whl", hash = "sha256:1f28dbfc35e8e4b3885d55552ef85aa49f66d64291df6212dae878eb057e92e7"}, + {file = "ddtrace-2.14.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:80cf740482b6f1c65c394e54a6ed269785bfb6319bcd51b91275d671a0d3d2b2"}, + {file = "ddtrace-2.14.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7f0d07c561238baa8d1d667f315409b9f74a64e77cc2bbad416df6c08d3e9e86"}, + {file = "ddtrace-2.14.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bbf1c209f5c9b5b505524fe0c5cb3a0f19ece72680d090240af30a6e5172ae23"}, + {file = "ddtrace-2.14.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:03d7883787db4cd302ebcf6121421d38f3022d98cd04e57473953f0e320f8f4c"}, + {file = "ddtrace-2.14.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:8cbe7b8848c46e5d7c2efaa4428ea5be9fda699bd69d1d271a8fe805b5554246"}, + {file = "ddtrace-2.14.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:2286245dc4bfee011851d7e96d4cf15ec59260b54693cae7ffd688ba6d5562a7"}, + {file = "ddtrace-2.14.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:49214fbfb675f69369339389eea5f399706e9df222b5aba0d92f84f078918074"}, + {file = "ddtrace-2.14.0-cp311-cp311-win32.whl", hash = "sha256:f8900a124e56e2232c5a34624b45ce7d8e1bba9cad214f2d16dc73a64b30ce09"}, + {file = "ddtrace-2.14.0-cp311-cp311-win_amd64.whl", hash = "sha256:5f4d340f8c438f6ceb510b4f1fa1a22db14b536420acf8f9d68d5acd95d2e543"}, + {file = "ddtrace-2.14.0-cp312-cp312-macosx_12_0_universal2.whl", hash = "sha256:567cb2254abd0e1e36251ed5a8395c6da6a7f808a854a9fe69ff5a410ab0e586"}, + {file = "ddtrace-2.14.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:3737025a28090e48eb8c087608b5620056c2b63460889028723bb4918e663293"}, + {file = "ddtrace-2.14.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ef5f8a4bbe25c9d175c4cf239d63b48a7d26c9ad190b52ac3c27494ff78fc048"}, + {file = "ddtrace-2.14.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7d6581d6684afa3d8661e6aff4771edc2b87fcc19628bc0e72724b794a551d3d"}, + {file = "ddtrace-2.14.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c3c3d834e7e0175c51c2a0fe37ef0bba7f80a00915c000826550ea94e570e5b0"}, + {file = "ddtrace-2.14.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:5843b6cc83395979f3a17ecb14e14a446795bac64cb4e05bc6eff30be55d014a"}, + {file = "ddtrace-2.14.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:0209386ee86c95a1ceb245539f81746d4986110c6c974ce1152afbb114531b9a"}, + {file = "ddtrace-2.14.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:2f1d475562ca82ed79616614a1f11880e580920566fd5ba35b777d738f93affb"}, + {file = "ddtrace-2.14.0-cp312-cp312-win32.whl", hash = "sha256:83f63720fe40d930b614137d45dc1df5942a440779478f1a192c05ab20fbbbac"}, + {file = "ddtrace-2.14.0-cp312-cp312-win_amd64.whl", hash = "sha256:0f8bf0a20e9a9094262c59f7237a743cf5aefd20dc29722912a4782e09b2ce1f"}, + {file = "ddtrace-2.14.0-cp37-cp37m-macosx_12_0_x86_64.whl", hash = "sha256:d7006a90a2200e0692d0c307147020365f244f2043e994aeac9d1c3476d5056f"}, + {file = "ddtrace-2.14.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a375825022164fab9230b5d51662503953c3d3ef4ae0928f72d3429b8d82067a"}, + {file = "ddtrace-2.14.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:088f0e67af81096594065327a98058e4b3555a37458214289ddafe0636b752bb"}, + {file = "ddtrace-2.14.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ffa219e3fa22403e615be2e0669cc1d1d2ca1afa6ef141079ae5e6973306181"}, + {file = "ddtrace-2.14.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:3cd1ffa14bcfc66f3cee0d191ca4681fae602334d9a8044bd5a73b2fc4693454"}, + {file = "ddtrace-2.14.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:7c111498a85693c31ff3e9bd43994ce6734ab960057b36b87e7cbb14e4e90df0"}, + {file = "ddtrace-2.14.0-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:4ea1f947b128075c42f1df90f447172a07775cb6c2701698ceaad671dfc71bc7"}, + {file = "ddtrace-2.14.0-cp37-cp37m-win32.whl", hash = "sha256:de373d0e7cb0a37ee9ff452f344dcca2d525f3d3ec500f175237456d78472d20"}, + {file = "ddtrace-2.14.0-cp37-cp37m-win_amd64.whl", hash = "sha256:a9880134d03f732503d46b2f75e3febea817827b7d025b7a963bc4d0db892edd"}, + {file = "ddtrace-2.14.0-cp38-cp38-macosx_12_0_universal2.whl", hash = "sha256:8a02903585ae581a3b40ad01e062535d8affb3968a408fd96eb48f70615381a4"}, + {file = "ddtrace-2.14.0-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:b8a1fba689370e5fe956dab6e48f67cb37679fcd26d09fa402f8f4a99472140a"}, + {file = "ddtrace-2.14.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:073b5cf02bc9302c8132f9ff9db000448a3fd7ba3c3139fc1fb92cd3207d6d96"}, + {file = "ddtrace-2.14.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:86bf04c50fa5ae351c50e716befc5f114993936c18a553d4e177c6272f9df3a4"}, + {file = "ddtrace-2.14.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2dd8d22e61261a04849e89590f4aa81c8a39bd2b7355babf77213fe8c94608bd"}, + {file = "ddtrace-2.14.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6bb4f00aef805d4e21b16c288823a158f203728e4855f7c8eb7e527c8e49c5c1"}, + {file = "ddtrace-2.14.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:a15180012c57b60469a65be8b6c1f7bdf9372a51b8e8e4de622802f13d770ed1"}, + {file = "ddtrace-2.14.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:206a01ae3986e09777f0d3d1dc65f1a39d29a77194af07467f3cc9679a60373c"}, + {file = "ddtrace-2.14.0-cp38-cp38-win32.whl", hash = "sha256:852ca5bb6b5c5bdf8accaf45fda78171d0deecf378ac1efddf69e0f098196807"}, + {file = "ddtrace-2.14.0-cp38-cp38-win_amd64.whl", hash = "sha256:7ba1c9de72e059db44b018743c1abee9c4e50f8538567359312595554d3a427e"}, + {file = "ddtrace-2.14.0-cp39-cp39-macosx_12_0_universal2.whl", hash = "sha256:a426098d703548802f8d80a76e7740d42b40061493e82b9ab055154dd9837c8f"}, + {file = "ddtrace-2.14.0-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:5e72740fcdab45ed919b130f6ae2e5a26c6aaa7a13be94673dee0bce11a561a6"}, + {file = "ddtrace-2.14.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:70b5c386ff3c5b76ad96812fdaf4206660efd51e5ebe98ec46e4eaf8bae5440c"}, + {file = "ddtrace-2.14.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b262463a46fa178d0257798b84439810dac5de8e81ffc7f6c14350b5a1b9be3e"}, + {file = "ddtrace-2.14.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf628b5588ea8b14e4bbd0187b7adc7c1fc493bd98df354e9f1da5bd8e8b4e15"}, + {file = "ddtrace-2.14.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:2256ab35a9fc9190fe14bb2af95b769e6c08f872efbeb4ae3ffd7e1ce0a2c650"}, + {file = "ddtrace-2.14.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:77b73b0878ddfa1a91f74c03b2b9b739fb296b9624ccfe743525d8190e434a6d"}, + {file = "ddtrace-2.14.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:5c3a34ddc9b8f63d46e32e2b9d52f5ab23e373ae90395f09aef60edb0e6238cb"}, + {file = "ddtrace-2.14.0-cp39-cp39-win32.whl", hash = "sha256:8a3f5facc044e016ff0529b44ba16d54e56868eb48c6249c03e15cd9407562e5"}, + {file = "ddtrace-2.14.0-cp39-cp39-win_amd64.whl", hash = "sha256:e9f48394d2a2d1d2ac48fb955d8637b2dd7b055b9033bd686008c12d41b37552"}, + {file = "ddtrace-2.14.0.tar.gz", hash = "sha256:fb8e851164a4b1f64002d1f76b720281d5cf63eb904f1d04a36bf3c4955b6693"}, ] [package.dependencies] -attrs = ">=20" bytecode = [ {version = ">=0.13.0", markers = "python_version < \"3.11.0\""}, {version = ">=0.15.0", markers = "python_version >= \"3.12.0\""}, {version = ">=0.14.0", markers = "python_version ~= \"3.11.0\""}, ] -cattrs = "*" -ddsketch = ">=3.0.0" envier = ">=0.5,<1.0" opentelemetry-api = ">=1" protobuf = ">=3" -setuptools = {version = "*", markers = "python_version >= \"3.12\""} -six = ">=1.12.0" typing-extensions = "*" +wrapt = ">=1" xmltodict = ">=0.12" [package.extras] @@ -376,7 +311,7 @@ mypy = ["mypy"] name = "exceptiongroup" version = "1.2.2" description = "Backport of PEP 654 (exception groups)" -optional = false +optional = true python-versions = ">=3.7" files = [ {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"}, @@ -404,24 +339,27 @@ pyflakes = ">=2.5.0,<2.6.0" [[package]] name = "idna" -version = "3.7" +version = "3.10" description = "Internationalized Domain Names in Applications (IDNA)" optional = false -python-versions = ">=3.5" +python-versions = ">=3.6" files = [ - {file = "idna-3.7-py3-none-any.whl", hash = "sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0"}, - {file = "idna-3.7.tar.gz", hash = "sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc"}, + {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, + {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, ] +[package.extras] +all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"] + [[package]] name = "importlib-metadata" -version = "8.0.0" +version = "8.4.0" description = "Read metadata from Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "importlib_metadata-8.0.0-py3-none-any.whl", hash = "sha256:15584cf2b1bf449d98ff8a6ff1abef57bf20f3ac6454f431736cd3e660921b2f"}, - {file = "importlib_metadata-8.0.0.tar.gz", hash = "sha256:188bd24e4c346d3f0a933f275c2fec67050326a856b9a359881d7c2a697e8812"}, + {file = "importlib_metadata-8.4.0-py3-none-any.whl", hash = "sha256:66f342cc6ac9818fc6ff340576acd24d65ba0b3efabb2b4ac08b598965a4a2f1"}, + {file = "importlib_metadata-8.4.0.tar.gz", hash = "sha256:9a547d3bc3608b025f93d403fdd1aae741c24fbb8314df4b155675742ce303c5"}, ] [package.dependencies] @@ -467,18 +405,18 @@ files = [ [[package]] name = "opentelemetry-api" -version = "1.26.0" +version = "1.27.0" description = "OpenTelemetry Python API" optional = false python-versions = ">=3.8" files = [ - {file = "opentelemetry_api-1.26.0-py3-none-any.whl", hash = "sha256:7d7ea33adf2ceda2dd680b18b1677e4152000b37ca76e679da71ff103b943064"}, - {file = "opentelemetry_api-1.26.0.tar.gz", hash = "sha256:2bd639e4bed5b18486fef0b5a520aaffde5a18fc225e808a1ac4df363f43a1ce"}, + {file = "opentelemetry_api-1.27.0-py3-none-any.whl", hash = "sha256:953d5871815e7c30c81b56d910c707588000fff7a3ca1c73e6531911d53065e7"}, + {file = "opentelemetry_api-1.27.0.tar.gz", hash = "sha256:ed673583eaa5f81b5ce5e86ef7cdaf622f88ef65f0b9aab40b843dcae5bef342"}, ] [package.dependencies] deprecated = ">=1.2.6" -importlib-metadata = ">=6.0,<=8.0.0" +importlib-metadata = ">=6.0,<=8.4.0" [[package]] name = "packaging" @@ -508,22 +446,22 @@ testing = ["pytest", "pytest-benchmark"] [[package]] name = "protobuf" -version = "5.27.3" +version = "5.28.2" description = "" optional = false python-versions = ">=3.8" files = [ - {file = "protobuf-5.27.3-cp310-abi3-win32.whl", hash = "sha256:dcb307cd4ef8fec0cf52cb9105a03d06fbb5275ce6d84a6ae33bc6cf84e0a07b"}, - {file = "protobuf-5.27.3-cp310-abi3-win_amd64.whl", hash = "sha256:16ddf3f8c6c41e1e803da7abea17b1793a97ef079a912e42351eabb19b2cffe7"}, - {file = "protobuf-5.27.3-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:68248c60d53f6168f565a8c76dc58ba4fa2ade31c2d1ebdae6d80f969cdc2d4f"}, - {file = "protobuf-5.27.3-cp38-abi3-manylinux2014_aarch64.whl", hash = "sha256:b8a994fb3d1c11156e7d1e427186662b64694a62b55936b2b9348f0a7c6625ce"}, - {file = "protobuf-5.27.3-cp38-abi3-manylinux2014_x86_64.whl", hash = "sha256:a55c48f2a2092d8e213bd143474df33a6ae751b781dd1d1f4d953c128a415b25"}, - {file = "protobuf-5.27.3-cp38-cp38-win32.whl", hash = "sha256:043853dcb55cc262bf2e116215ad43fa0859caab79bb0b2d31b708f128ece035"}, - {file = "protobuf-5.27.3-cp38-cp38-win_amd64.whl", hash = "sha256:c2a105c24f08b1e53d6c7ffe69cb09d0031512f0b72f812dd4005b8112dbe91e"}, - {file = "protobuf-5.27.3-cp39-cp39-win32.whl", hash = "sha256:c84eee2c71ed83704f1afbf1a85c3171eab0fd1ade3b399b3fad0884cbcca8bf"}, - {file = "protobuf-5.27.3-cp39-cp39-win_amd64.whl", hash = "sha256:af7c0b7cfbbb649ad26132e53faa348580f844d9ca46fd3ec7ca48a1ea5db8a1"}, - {file = "protobuf-5.27.3-py3-none-any.whl", hash = "sha256:8572c6533e544ebf6899c360e91d6bcbbee2549251643d32c52cf8a5de295ba5"}, - {file = "protobuf-5.27.3.tar.gz", hash = "sha256:82460903e640f2b7e34ee81a947fdaad89de796d324bcbc38ff5430bcdead82c"}, + {file = "protobuf-5.28.2-cp310-abi3-win32.whl", hash = "sha256:eeea10f3dc0ac7e6b4933d32db20662902b4ab81bf28df12218aa389e9c2102d"}, + {file = "protobuf-5.28.2-cp310-abi3-win_amd64.whl", hash = "sha256:2c69461a7fcc8e24be697624c09a839976d82ae75062b11a0972e41fd2cd9132"}, + {file = "protobuf-5.28.2-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:a8b9403fc70764b08d2f593ce44f1d2920c5077bf7d311fefec999f8c40f78b7"}, + {file = "protobuf-5.28.2-cp38-abi3-manylinux2014_aarch64.whl", hash = "sha256:35cfcb15f213449af7ff6198d6eb5f739c37d7e4f1c09b5d0641babf2cc0c68f"}, + {file = "protobuf-5.28.2-cp38-abi3-manylinux2014_x86_64.whl", hash = "sha256:5e8a95246d581eef20471b5d5ba010d55f66740942b95ba9b872d918c459452f"}, + {file = "protobuf-5.28.2-cp38-cp38-win32.whl", hash = "sha256:87317e9bcda04a32f2ee82089a204d3a2f0d3c8aeed16568c7daf4756e4f1fe0"}, + {file = "protobuf-5.28.2-cp38-cp38-win_amd64.whl", hash = "sha256:c0ea0123dac3399a2eeb1a1443d82b7afc9ff40241433296769f7da42d142ec3"}, + {file = "protobuf-5.28.2-cp39-cp39-win32.whl", hash = "sha256:ca53faf29896c526863366a52a8f4d88e69cd04ec9571ed6082fa117fac3ab36"}, + {file = "protobuf-5.28.2-cp39-cp39-win_amd64.whl", hash = "sha256:8ddc60bf374785fb7cb12510b267f59067fa10087325b8e1855b898a0d81d276"}, + {file = "protobuf-5.28.2-py3-none-any.whl", hash = "sha256:52235802093bd8a2811abbe8bf0ab9c5f54cca0a751fdd3f6ac2a21438bffece"}, + {file = "protobuf-5.28.2.tar.gz", hash = "sha256:59379674ff119717404f7454647913787034f03fe7049cbef1d74a97bb4593f0"}, ] [[package]] @@ -561,13 +499,13 @@ files = [ [[package]] name = "pytest" -version = "8.3.2" +version = "8.3.3" description = "pytest: simple powerful testing with Python" optional = true python-versions = ">=3.8" files = [ - {file = "pytest-8.3.2-py3-none-any.whl", hash = "sha256:4ba08f9ae7dcf84ded419494d229b48d0903ea6407b030eaec46df5e6a73bba5"}, - {file = "pytest-8.3.2.tar.gz", hash = "sha256:c132345d12ce551242c87269de812483f5bcc87cdbb4722e48487ba194f9fdce"}, + {file = "pytest-8.3.3-py3-none-any.whl", hash = "sha256:a6853c7375b2663155079443d2e45de913a911a11d669df02a50814944db57b2"}, + {file = "pytest-8.3.3.tar.gz", hash = "sha256:70b98107bd648308a7952b06e6ca9a50bc660be218d53c257cc1fc94fda10181"}, ] [package.dependencies] @@ -653,27 +591,11 @@ botocore = ">=1.33.2,<2.0a.0" [package.extras] crt = ["botocore[crt] (>=1.33.2,<2.0a.0)"] -[[package]] -name = "setuptools" -version = "72.1.0" -description = "Easily download, build, install, upgrade, and uninstall Python packages" -optional = false -python-versions = ">=3.8" -files = [ - {file = "setuptools-72.1.0-py3-none-any.whl", hash = "sha256:5a03e1860cf56bb6ef48ce186b0e557fdba433237481a9a625176c2831be15d1"}, - {file = "setuptools-72.1.0.tar.gz", hash = "sha256:8d243eff56d095e5817f796ede6ae32941278f542e0f941867cc05ae52b162ec"}, -] - -[package.extras] -core = ["importlib-metadata (>=6)", "importlib-resources (>=5.10.2)", "jaraco.text (>=3.7)", "more-itertools (>=8.8)", "ordered-set (>=3.1.1)", "packaging (>=24)", "platformdirs (>=2.6.2)", "tomli (>=2.0.1)", "wheel (>=0.43.0)"] -doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "jaraco.test", "mypy (==1.11.*)", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy", "pytest-perf", "pytest-ruff (<0.4)", "pytest-ruff (>=0.2.1)", "pytest-ruff (>=0.3.2)", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] - [[package]] name = "six" version = "1.16.0" description = "Python 2 and 3 compatibility utilities" -optional = false +optional = true python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" files = [ {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, @@ -791,13 +713,13 @@ files = [ [[package]] name = "urllib3" -version = "1.26.19" +version = "1.26.20" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" files = [ - {file = "urllib3-1.26.19-py2.py3-none-any.whl", hash = "sha256:37a0344459b199fce0e80b0d3569837ec6b6937435c5244e7fd73fa6006830f3"}, - {file = "urllib3-1.26.19.tar.gz", hash = "sha256:3e3d753a8618b86d7de333b4223005f68720bcd6a7d2bcb9fbd2229ec7c1e429"}, + {file = "urllib3-1.26.20-py2.py3-none-any.whl", hash = "sha256:0ed14ccfbf1c30a9072c7ca157e4319b70d65f623e91e7b32fadb2853431016e"}, + {file = "urllib3-1.26.20.tar.gz", hash = "sha256:40c2dc0c681e47eb8f90e7e27bf6ff7df2e677421fd46756da1161c39ca70d32"}, ] [package.extras] @@ -807,13 +729,13 @@ socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] [[package]] name = "urllib3" -version = "2.2.2" +version = "2.2.3" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.8" files = [ - {file = "urllib3-2.2.2-py3-none-any.whl", hash = "sha256:a448b2f64d686155468037e1ace9f2d2199776e17f0a46610480d311f73e3472"}, - {file = "urllib3-2.2.2.tar.gz", hash = "sha256:dd505485549a7a552833da5e6063639d0d177c04f23bc3864e41e5dc5f612168"}, + {file = "urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac"}, + {file = "urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9"}, ] [package.extras] @@ -914,18 +836,22 @@ files = [ [[package]] name = "zipp" -version = "3.19.2" +version = "3.20.2" description = "Backport of pathlib-compatible object wrapper for zip files" optional = false python-versions = ">=3.8" files = [ - {file = "zipp-3.19.2-py3-none-any.whl", hash = "sha256:f091755f667055f2d02b32c53771a7a6c8b47e1fdbc4b72a8b9072b3eef8015c"}, - {file = "zipp-3.19.2.tar.gz", hash = "sha256:bf1dcf6450f873a13e952a29504887c89e6de7506209e5b1bcc3460135d4de19"}, + {file = "zipp-3.20.2-py3-none-any.whl", hash = "sha256:a817ac80d6cf4b23bf7f2828b7cabf326f15a001bea8b1f9b49631780ba28350"}, + {file = "zipp-3.20.2.tar.gz", hash = "sha256:bc9eb26f4506fda01b81bcde0ca78103b6e62f991b381fec825435c836edbc29"}, ] [package.extras] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)"] +cover = ["pytest-cov"] doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -test = ["big-O", "importlib-resources", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-itertools", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy", "pytest-ruff (>=0.2.1)"] +enabler = ["pytest-enabler (>=2.2)"] +test = ["big-O", "importlib-resources", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-itertools", "pytest (>=6,!=8.1.*)", "pytest-ignore-flaky"] +type = ["pytest-mypy"] [extras] dev = ["boto3", "flake8", "pytest", "pytest-benchmark", "requests"] @@ -933,4 +859,4 @@ dev = ["boto3", "flake8", "pytest", "pytest-benchmark", "requests"] [metadata] lock-version = "2.0" python-versions = ">=3.8.0,<4" -content-hash = "bf1aca9cf4f75b18197105ef45c4ef035790dbe8ad10598becad6f31340c4442" +content-hash = "a6aec85347838ba30c70f912ff0d9de03f3089cb658024c1f8d3214baaead760" diff --git a/pyproject.toml b/pyproject.toml index db2bd0a8..d74fd9fc 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -27,7 +27,7 @@ classifiers = [ python = ">=3.8.0,<4" datadog = ">=0.41.0,<1.0.0" wrapt = "^1.11.2" -ddtrace = ">=2.10.0" +ddtrace = ">=2.14.0" ujson = ">=5.9.0" boto3 = { version = "^1.34.0", optional = true } requests = { version ="^2.22.0", optional = true } diff --git a/scripts/run_integration_tests.sh b/scripts/run_integration_tests.sh index cc36698b..5e8c5f67 100755 --- a/scripts/run_integration_tests.sh +++ b/scripts/run_integration_tests.sh @@ -2,9 +2,9 @@ # Usage - run commands from repo root: # To check if new changes to the layer cause changes to any snapshots: -# BUILD_LAYERS=true DD_API_KEY=XXXX aws-vault exec sso-serverless-sandbox-account-admin -- ./scripts/run_integration_tests +# BUILD_LAYERS=true DD_API_KEY=XXXX aws-vault exec sso-serverless-sandbox-account-admin -- ./scripts/run_integration_tests.sh # To regenerate snapshots: -# UPDATE_SNAPSHOTS=true DD_API_KEY=XXXX aws-vault exec sso-serverless-sandbox-account-admin -- ./scripts/run_integration_tests +# UPDATE_SNAPSHOTS=true DD_API_KEY=XXXX aws-vault exec sso-serverless-sandbox-account-admin -- ./scripts/run_integration_tests.sh set -e diff --git a/tests/test_span_pointers.py b/tests/test_span_pointers.py new file mode 100644 index 00000000..f8181d44 --- /dev/null +++ b/tests/test_span_pointers.py @@ -0,0 +1,93 @@ +from typing import List +from typing import NamedTuple + +from ddtrace._trace._span_pointer import _SpanPointerDirection +from ddtrace._trace._span_pointer import _SpanPointerDescription +from datadog_lambda.trigger import _EventSource +from datadog_lambda.trigger import EventTypes +from datadog_lambda.span_pointers import calculate_span_pointers +import pytest + + +class TestCalculateSpanPointers: + class SpanPointersCase(NamedTuple): + name: str + event_source: _EventSource + event: dict + span_pointers: List[_SpanPointerDescription] + + @pytest.mark.parametrize( + "test_case", + [ + SpanPointersCase( + name="some unsupported event", + event_source=_EventSource(EventTypes.UNKNOWN), + event={}, + span_pointers=[], + ), + SpanPointersCase( + name="empty s3 event", + event_source=_EventSource(EventTypes.S3), + event={}, + span_pointers=[], + ), + SpanPointersCase( + name="sensible s3 event", + event_source=_EventSource(EventTypes.S3), + event={ + "Records": [ + { + "eventName": "ObjectCreated:Put", + "s3": { + "bucket": { + "name": "mybucket", + }, + "object": { + "key": "mykey", + "eTag": "123abc", + }, + }, + }, + ], + }, + span_pointers=[ + _SpanPointerDescription( + pointer_kind="aws.s3.object", + pointer_direction=_SpanPointerDirection.UPSTREAM, + pointer_hash="8d49f5b0b742484159d4cd572bae1ce5", + extra_attributes={}, + ), + ], + ), + SpanPointersCase( + name="malformed s3 event", + event_source=_EventSource(EventTypes.S3), + event={ + "Records": [ + { + "eventName": "ObjectCreated:Put", + "s3": { + "bucket": { + "name": "mybucket", + }, + "object": { + "key": "mykey", + # missing eTag + }, + }, + }, + ], + }, + span_pointers=[], + ), + ], + ids=lambda test_case: test_case.name, + ) + def test_calculate_span_pointers(self, test_case: SpanPointersCase): + assert ( + calculate_span_pointers( + test_case.event_source, + test_case.event, + ) + == test_case.span_pointers + ) diff --git a/tests/test_tracing.py b/tests/test_tracing.py index b21b9337..0fb2ee31 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -12,6 +12,9 @@ from ddtrace import tracer from ddtrace.context import Context +from ddtrace._trace._span_pointer import _SpanPointer +from ddtrace._trace._span_pointer import _SpanPointerDirection +from ddtrace._trace._span_pointer import _SpanPointerDescription from datadog_lambda.constants import ( SamplingPriority, @@ -746,12 +749,20 @@ class TestFunctionSpanTags(unittest.TestCase): def test_function(self): ctx = get_mock_context() span = create_function_execution_span( - ctx, "", False, False, {"source": ""}, False, {} + context=ctx, + function_name="", + is_cold_start=False, + is_proactive_init=False, + trace_context_source={"source": ""}, + merge_xray_traces=False, + trigger_tags={}, + span_pointers=None, ) self.assertEqual(span.get_tag("function_arn"), function_arn) self.assertEqual(span.get_tag("function_version"), "$LATEST") self.assertEqual(span.get_tag("resource_names"), "Function") self.assertEqual(span.get_tag("functionname"), "function") + self.assertEqual(span._links, []) def test_function_with_version(self): function_version = "1" @@ -759,7 +770,13 @@ def test_function_with_version(self): invoked_function_arn=function_arn + ":" + function_version ) span = create_function_execution_span( - ctx, "", False, False, {"source": ""}, False, {} + context=ctx, + function_name="", + is_cold_start=False, + is_proactive_init=False, + trace_context_source={"source": ""}, + merge_xray_traces=False, + trigger_tags={}, ) self.assertEqual(span.get_tag("function_arn"), function_arn) self.assertEqual(span.get_tag("function_version"), function_version) @@ -770,7 +787,13 @@ def test_function_with_alias(self): function_alias = "alias" ctx = get_mock_context(invoked_function_arn=function_arn + ":" + function_alias) span = create_function_execution_span( - ctx, "", False, False, {"source": ""}, False, {} + context=ctx, + function_name="", + is_cold_start=False, + is_proactive_init=False, + trace_context_source={"source": ""}, + merge_xray_traces=False, + trigger_tags={}, ) self.assertEqual(span.get_tag("function_arn"), function_arn) self.assertEqual(span.get_tag("function_version"), function_alias) @@ -780,13 +803,13 @@ def test_function_with_alias(self): def test_function_with_trigger_tags(self): ctx = get_mock_context() span = create_function_execution_span( - ctx, - "", - False, - False, - {"source": ""}, - False, - {"function_trigger.event_source": "cloudwatch-logs"}, + context=ctx, + function_name="", + is_cold_start=False, + is_proactive_init=False, + trace_context_source={"source": ""}, + merge_xray_traces=False, + trigger_tags={"function_trigger.event_source": "cloudwatch-logs"}, ) self.assertEqual(span.get_tag("function_arn"), function_arn) self.assertEqual(span.get_tag("resource_names"), "Function") @@ -795,6 +818,49 @@ def test_function_with_trigger_tags(self): span.get_tag("function_trigger.event_source"), "cloudwatch-logs" ) + def test_function_with_span_pointers(self): + ctx = get_mock_context() + span = create_function_execution_span( + context=ctx, + function_name="", + is_cold_start=False, + is_proactive_init=False, + trace_context_source={"source": ""}, + merge_xray_traces=False, + trigger_tags={}, + span_pointers=[ + _SpanPointerDescription( + pointer_kind="some.kind", + pointer_direction=_SpanPointerDirection.UPSTREAM, + pointer_hash="some.hash", + extra_attributes={}, + ), + _SpanPointerDescription( + pointer_kind="other.kind", + pointer_direction=_SpanPointerDirection.DOWNSTREAM, + pointer_hash="other.hash", + extra_attributes={"extra": "stuff"}, + ), + ], + ) + self.assertEqual( + span._links, + [ + _SpanPointer( + pointer_kind="some.kind", + pointer_direction=_SpanPointerDirection.UPSTREAM, + pointer_hash="some.hash", + extra_attributes={}, + ), + _SpanPointer( + pointer_kind="other.kind", + pointer_direction=_SpanPointerDirection.DOWNSTREAM, + pointer_hash="other.hash", + extra_attributes={"extra": "stuff"}, + ), + ], + ) + class TestSetTraceRootSpan(unittest.TestCase): def setUp(self): From adfc9e8495e0ca37d5bd5368883eb0af0f4c5e9f Mon Sep 17 00:00:00 2001 From: Brett Langdon Date: Fri, 27 Sep 2024 13:55:12 -0400 Subject: [PATCH 155/268] fix: support dynamic libdd_wrapper.so filename (#516) --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 40726556..610fef38 100644 --- a/Dockerfile +++ b/Dockerfile @@ -25,7 +25,7 @@ RUN find . -name 'libddwaf.so' -delete RUN rm -rf ./python/lib/$runtime/site-packages/urllib3* RUN rm ./python/lib/$runtime/site-packages/ddtrace/appsec/_iast/_taint_tracking/*.so RUN rm ./python/lib/$runtime/site-packages/ddtrace/appsec/_iast/_stacktrace*.so -RUN rm ./python/lib/$runtime/site-packages/ddtrace/internal/datadog/profiling/libdd_wrapper.so +RUN rm ./python/lib/$runtime/site-packages/ddtrace/internal/datadog/profiling/libdd_wrapper*.so RUN rm ./python/lib/$runtime/site-packages/ddtrace/internal/datadog/profiling/ddup/_ddup.*.so RUN rm ./python/lib/$runtime/site-packages/ddtrace/internal/datadog/profiling/stack_v2/_stack_v2.*.so RUN find . -name "*.dist-info" -type d | xargs rm -rf From de6b4ffcb974e8d305fd81ef76e4413ac785bb16 Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Mon, 30 Sep 2024 19:17:45 +0200 Subject: [PATCH 156/268] Support calling flush_stats with None context. (#518) * Support calling flush_stats with None context. * Fix lint error. --- datadog_lambda/metric.py | 1 + tests/test_metric.py | 10 +++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/datadog_lambda/metric.py b/datadog_lambda/metric.py index 44f8e377..d312e3bb 100644 --- a/datadog_lambda/metric.py +++ b/datadog_lambda/metric.py @@ -125,6 +125,7 @@ def flush_stats(lambda_context=None): lambda_stats.flush() if extension_thread_stats is not None: + tags = None if lambda_context is not None: tags = get_enhanced_metrics_tags(lambda_context) split_arn = lambda_context.invoked_function_arn.split(":") diff --git a/tests/test_metric.py b/tests/test_metric.py index 10ef9191..241f563b 100644 --- a/tests/test_metric.py +++ b/tests/test_metric.py @@ -7,7 +7,7 @@ from datadog.api.exceptions import ClientError from datetime import datetime, timedelta -from datadog_lambda.metric import lambda_metric +from datadog_lambda.metric import lambda_metric, flush_stats from datadog_lambda.api import decrypt_kms_api_key, KMS_ENCRYPTION_CONTEXT_KEY from datadog_lambda.thread_stats_writer import ThreadStatsWriter from datadog_lambda.tags import dd_lambda_layer_tag @@ -101,6 +101,10 @@ def setUp(self): self.mock_threadstats_flush_distributions = patcher.start() self.addCleanup(patcher.stop) + patcher = patch("datadog_lambda.metric.extension_thread_stats") + self.mock_extension_thread_stats = patcher.start() + self.addCleanup(patcher.stop) + def test_retry_on_remote_disconnected(self): # Raise the RemoteDisconnected error lambda_stats = ThreadStatsWriter(True) @@ -123,6 +127,10 @@ def test_flush_stats_with_tags(self): for tag in tags: self.assertTrue(tag in lambda_stats.thread_stats.constant_tags) + def test_flush_stats_without_context(self): + flush_stats(lambda_context=None) + self.mock_extension_thread_stats.flush.assert_called_with(None) + MOCK_FUNCTION_NAME = "myFunction" From 10da76bf64530ca626f47f8971427b7e4f5d89c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?jordan=20gonz=C3=A1lez?= <30836115+duncanista@users.noreply.github.com> Date: Tue, 1 Oct 2024 17:57:51 -0400 Subject: [PATCH 157/268] add `ap-southeast-5` (#517) --- ci/datasources/regions.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/ci/datasources/regions.yaml b/ci/datasources/regions.yaml index 9f12a011..93816ce9 100644 --- a/ci/datasources/regions.yaml +++ b/ci/datasources/regions.yaml @@ -11,6 +11,7 @@ regions: - code: "ap-southeast-2" - code: "ap-southeast-3" - code: "ap-southeast-4" + - code: "ap-southeast-5" - code: "ap-northeast-1" - code: "ap-northeast-2" - code: "ap-northeast-3" From 66b85d1b8e394db5db8b74ad13fb4f30b0b00173 Mon Sep 17 00:00:00 2001 From: Aleksandr Pasechnik Date: Thu, 3 Oct 2024 11:42:09 -0400 Subject: [PATCH 158/268] Upgrade dd-trace-py to v2.14.1 (#520) --- poetry.lock | 146 ++++++++++++++++++++++++------------------------- pyproject.toml | 2 +- 2 files changed, 74 insertions(+), 74 deletions(-) diff --git a/poetry.lock b/poetry.lock index dcac5c82..e9557200 100644 --- a/poetry.lock +++ b/poetry.lock @@ -2,17 +2,17 @@ [[package]] name = "boto3" -version = "1.35.28" +version = "1.35.31" description = "The AWS SDK for Python" optional = true python-versions = ">=3.8" files = [ - {file = "boto3-1.35.28-py3-none-any.whl", hash = "sha256:dc088b86a14f17d3cd2e96915c6ccfd31bce640dfe9180df579ed311bc6bf0fc"}, - {file = "boto3-1.35.28.tar.gz", hash = "sha256:8960fc458b9ba3c8a9890a607c31cee375db821f39aefaec9ff638248e81644a"}, + {file = "boto3-1.35.31-py3-none-any.whl", hash = "sha256:2e9af74d10d8af7610a8d8468d2914961f116912a024fce17351825260385a52"}, + {file = "boto3-1.35.31.tar.gz", hash = "sha256:8c593af260c4ea3eb6f079c09908f94494ca2222aa4e40a7ff490fab1cee8b39"}, ] [package.dependencies] -botocore = ">=1.35.28,<1.36.0" +botocore = ">=1.35.31,<1.36.0" jmespath = ">=0.7.1,<2.0.0" s3transfer = ">=0.10.0,<0.11.0" @@ -21,13 +21,13 @@ crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] [[package]] name = "botocore" -version = "1.35.28" +version = "1.35.31" description = "Low-level, data-driven core of boto 3." optional = true python-versions = ">=3.8" files = [ - {file = "botocore-1.35.28-py3-none-any.whl", hash = "sha256:b66c78f3d6379bd16f0362f07168fa7699cdda3921fc880047192d96f2c8c527"}, - {file = "botocore-1.35.28.tar.gz", hash = "sha256:115d13f2172d8e9fa92e8d913f0e80092b97624d190f46772ed2930d4a355d55"}, + {file = "botocore-1.35.31-py3-none-any.whl", hash = "sha256:4cee814875bc78656aef4011d3d6b2231e96f53ea3661ee428201afb579d5c31"}, + {file = "botocore-1.35.31.tar.gz", hash = "sha256:f7bfa910cf2cbcc8c2307c1cf7b93495d614c2d699883417893e0a337fe4eb63"}, ] [package.dependencies] @@ -192,71 +192,71 @@ requests = ">=2.6.0" [[package]] name = "ddtrace" -version = "2.14.0" +version = "2.14.1" description = "Datadog APM client library" optional = false python-versions = ">=3.7" files = [ - {file = "ddtrace-2.14.0-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:c55bf165b923a12a1386fbf951735a4b8335a0cfa1558833d2b78abdd289c783"}, - {file = "ddtrace-2.14.0-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:b6abaec1263e0ed19fe48d068e02907b7cc6bd312049c4d562f3fe80fcb9e8e5"}, - {file = "ddtrace-2.14.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:84aff2e9a98172c44b187616838705c7abd4c6e2122e595eb324ba0f269cc7cf"}, - {file = "ddtrace-2.14.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:82c5147d9b27604ac642de32e05fc2d5bac76b15a9ad98b530a585fed347ca86"}, - {file = "ddtrace-2.14.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cfb54abfb7b1b1c33a794d926df76e8161bd284a3b15ad55d13290c41b734e95"}, - {file = "ddtrace-2.14.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e89d31f3871bee63322dc5d0168d57cfb07ff2581e240510f7103a27e5608046"}, - {file = "ddtrace-2.14.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:75ce4fce7be384bdaae2a4d8600104397352ca71afea6a37a3243f6013031f5d"}, - {file = "ddtrace-2.14.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:81c093b8ad180ce55aec1e6d257de9729a2a2c09dec0fcddc2e7aaede102c32c"}, - {file = "ddtrace-2.14.0-cp310-cp310-win32.whl", hash = "sha256:b22e13c25af867d92c3b5898e3c01c7dc05ec2ec9975ee54f1ed1ed7ac05969a"}, - {file = "ddtrace-2.14.0-cp310-cp310-win_amd64.whl", hash = "sha256:d0faab57ee36e054d01fe0684418f20235532411fe470837cce91b60c8aa48a7"}, - {file = "ddtrace-2.14.0-cp311-cp311-macosx_12_0_universal2.whl", hash = "sha256:1f28dbfc35e8e4b3885d55552ef85aa49f66d64291df6212dae878eb057e92e7"}, - {file = "ddtrace-2.14.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:80cf740482b6f1c65c394e54a6ed269785bfb6319bcd51b91275d671a0d3d2b2"}, - {file = "ddtrace-2.14.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7f0d07c561238baa8d1d667f315409b9f74a64e77cc2bbad416df6c08d3e9e86"}, - {file = "ddtrace-2.14.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bbf1c209f5c9b5b505524fe0c5cb3a0f19ece72680d090240af30a6e5172ae23"}, - {file = "ddtrace-2.14.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:03d7883787db4cd302ebcf6121421d38f3022d98cd04e57473953f0e320f8f4c"}, - {file = "ddtrace-2.14.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:8cbe7b8848c46e5d7c2efaa4428ea5be9fda699bd69d1d271a8fe805b5554246"}, - {file = "ddtrace-2.14.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:2286245dc4bfee011851d7e96d4cf15ec59260b54693cae7ffd688ba6d5562a7"}, - {file = "ddtrace-2.14.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:49214fbfb675f69369339389eea5f399706e9df222b5aba0d92f84f078918074"}, - {file = "ddtrace-2.14.0-cp311-cp311-win32.whl", hash = "sha256:f8900a124e56e2232c5a34624b45ce7d8e1bba9cad214f2d16dc73a64b30ce09"}, - {file = "ddtrace-2.14.0-cp311-cp311-win_amd64.whl", hash = "sha256:5f4d340f8c438f6ceb510b4f1fa1a22db14b536420acf8f9d68d5acd95d2e543"}, - {file = "ddtrace-2.14.0-cp312-cp312-macosx_12_0_universal2.whl", hash = "sha256:567cb2254abd0e1e36251ed5a8395c6da6a7f808a854a9fe69ff5a410ab0e586"}, - {file = "ddtrace-2.14.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:3737025a28090e48eb8c087608b5620056c2b63460889028723bb4918e663293"}, - {file = "ddtrace-2.14.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ef5f8a4bbe25c9d175c4cf239d63b48a7d26c9ad190b52ac3c27494ff78fc048"}, - {file = "ddtrace-2.14.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7d6581d6684afa3d8661e6aff4771edc2b87fcc19628bc0e72724b794a551d3d"}, - {file = "ddtrace-2.14.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c3c3d834e7e0175c51c2a0fe37ef0bba7f80a00915c000826550ea94e570e5b0"}, - {file = "ddtrace-2.14.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:5843b6cc83395979f3a17ecb14e14a446795bac64cb4e05bc6eff30be55d014a"}, - {file = "ddtrace-2.14.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:0209386ee86c95a1ceb245539f81746d4986110c6c974ce1152afbb114531b9a"}, - {file = "ddtrace-2.14.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:2f1d475562ca82ed79616614a1f11880e580920566fd5ba35b777d738f93affb"}, - {file = "ddtrace-2.14.0-cp312-cp312-win32.whl", hash = "sha256:83f63720fe40d930b614137d45dc1df5942a440779478f1a192c05ab20fbbbac"}, - {file = "ddtrace-2.14.0-cp312-cp312-win_amd64.whl", hash = "sha256:0f8bf0a20e9a9094262c59f7237a743cf5aefd20dc29722912a4782e09b2ce1f"}, - {file = "ddtrace-2.14.0-cp37-cp37m-macosx_12_0_x86_64.whl", hash = "sha256:d7006a90a2200e0692d0c307147020365f244f2043e994aeac9d1c3476d5056f"}, - {file = "ddtrace-2.14.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a375825022164fab9230b5d51662503953c3d3ef4ae0928f72d3429b8d82067a"}, - {file = "ddtrace-2.14.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:088f0e67af81096594065327a98058e4b3555a37458214289ddafe0636b752bb"}, - {file = "ddtrace-2.14.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ffa219e3fa22403e615be2e0669cc1d1d2ca1afa6ef141079ae5e6973306181"}, - {file = "ddtrace-2.14.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:3cd1ffa14bcfc66f3cee0d191ca4681fae602334d9a8044bd5a73b2fc4693454"}, - {file = "ddtrace-2.14.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:7c111498a85693c31ff3e9bd43994ce6734ab960057b36b87e7cbb14e4e90df0"}, - {file = "ddtrace-2.14.0-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:4ea1f947b128075c42f1df90f447172a07775cb6c2701698ceaad671dfc71bc7"}, - {file = "ddtrace-2.14.0-cp37-cp37m-win32.whl", hash = "sha256:de373d0e7cb0a37ee9ff452f344dcca2d525f3d3ec500f175237456d78472d20"}, - {file = "ddtrace-2.14.0-cp37-cp37m-win_amd64.whl", hash = "sha256:a9880134d03f732503d46b2f75e3febea817827b7d025b7a963bc4d0db892edd"}, - {file = "ddtrace-2.14.0-cp38-cp38-macosx_12_0_universal2.whl", hash = "sha256:8a02903585ae581a3b40ad01e062535d8affb3968a408fd96eb48f70615381a4"}, - {file = "ddtrace-2.14.0-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:b8a1fba689370e5fe956dab6e48f67cb37679fcd26d09fa402f8f4a99472140a"}, - {file = "ddtrace-2.14.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:073b5cf02bc9302c8132f9ff9db000448a3fd7ba3c3139fc1fb92cd3207d6d96"}, - {file = "ddtrace-2.14.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:86bf04c50fa5ae351c50e716befc5f114993936c18a553d4e177c6272f9df3a4"}, - {file = "ddtrace-2.14.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2dd8d22e61261a04849e89590f4aa81c8a39bd2b7355babf77213fe8c94608bd"}, - {file = "ddtrace-2.14.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6bb4f00aef805d4e21b16c288823a158f203728e4855f7c8eb7e527c8e49c5c1"}, - {file = "ddtrace-2.14.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:a15180012c57b60469a65be8b6c1f7bdf9372a51b8e8e4de622802f13d770ed1"}, - {file = "ddtrace-2.14.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:206a01ae3986e09777f0d3d1dc65f1a39d29a77194af07467f3cc9679a60373c"}, - {file = "ddtrace-2.14.0-cp38-cp38-win32.whl", hash = "sha256:852ca5bb6b5c5bdf8accaf45fda78171d0deecf378ac1efddf69e0f098196807"}, - {file = "ddtrace-2.14.0-cp38-cp38-win_amd64.whl", hash = "sha256:7ba1c9de72e059db44b018743c1abee9c4e50f8538567359312595554d3a427e"}, - {file = "ddtrace-2.14.0-cp39-cp39-macosx_12_0_universal2.whl", hash = "sha256:a426098d703548802f8d80a76e7740d42b40061493e82b9ab055154dd9837c8f"}, - {file = "ddtrace-2.14.0-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:5e72740fcdab45ed919b130f6ae2e5a26c6aaa7a13be94673dee0bce11a561a6"}, - {file = "ddtrace-2.14.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:70b5c386ff3c5b76ad96812fdaf4206660efd51e5ebe98ec46e4eaf8bae5440c"}, - {file = "ddtrace-2.14.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b262463a46fa178d0257798b84439810dac5de8e81ffc7f6c14350b5a1b9be3e"}, - {file = "ddtrace-2.14.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf628b5588ea8b14e4bbd0187b7adc7c1fc493bd98df354e9f1da5bd8e8b4e15"}, - {file = "ddtrace-2.14.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:2256ab35a9fc9190fe14bb2af95b769e6c08f872efbeb4ae3ffd7e1ce0a2c650"}, - {file = "ddtrace-2.14.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:77b73b0878ddfa1a91f74c03b2b9b739fb296b9624ccfe743525d8190e434a6d"}, - {file = "ddtrace-2.14.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:5c3a34ddc9b8f63d46e32e2b9d52f5ab23e373ae90395f09aef60edb0e6238cb"}, - {file = "ddtrace-2.14.0-cp39-cp39-win32.whl", hash = "sha256:8a3f5facc044e016ff0529b44ba16d54e56868eb48c6249c03e15cd9407562e5"}, - {file = "ddtrace-2.14.0-cp39-cp39-win_amd64.whl", hash = "sha256:e9f48394d2a2d1d2ac48fb955d8637b2dd7b055b9033bd686008c12d41b37552"}, - {file = "ddtrace-2.14.0.tar.gz", hash = "sha256:fb8e851164a4b1f64002d1f76b720281d5cf63eb904f1d04a36bf3c4955b6693"}, + {file = "ddtrace-2.14.1-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:45006561033362ae3bf8619e4e23b5f044c1d85ab75f60bfada9cb26b50f3136"}, + {file = "ddtrace-2.14.1-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:ec918f63a49f426f0b8507ed045752d31a4fbac6058861dab37e59ea21ec14e6"}, + {file = "ddtrace-2.14.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6dbef64063312afac39fe3c46aa848e0191b741a31664ce994445c76beb49aa5"}, + {file = "ddtrace-2.14.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aff1e0749d8bda9e7ec68a3d7c847a02fc6cca8f8a0444c7d33d8c11d6cb9d28"}, + {file = "ddtrace-2.14.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9cec95ed8e442efdab682e54b4d200d100c028207a2597fc0e879518f08495b2"}, + {file = "ddtrace-2.14.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:33d0437a4a4e71ae1defb58d940d3efddb3372201bc5ae0ecb960bc5b1684453"}, + {file = "ddtrace-2.14.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:66e07bca5bcdb16231bdaf6f848b9d2ab677ab6569185cf33ffceac1406123fb"}, + {file = "ddtrace-2.14.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:6257295f04950773929ab2586a6b1193015dffdf2e1f915decfb8cce99e7be3e"}, + {file = "ddtrace-2.14.1-cp310-cp310-win32.whl", hash = "sha256:e57d43bb848a40f4b5efacb3ebece41ddfc4d40b4fb9e5d1b49d43fd33565666"}, + {file = "ddtrace-2.14.1-cp310-cp310-win_amd64.whl", hash = "sha256:e595d2acba589f2881809c3a1e8302a8ddbfc9d49a546eadf9fb57ee18e39472"}, + {file = "ddtrace-2.14.1-cp311-cp311-macosx_12_0_universal2.whl", hash = "sha256:bd5c7274978625688b4eece12deb19704c2ba16187e1e8c35a76b312b6ee587f"}, + {file = "ddtrace-2.14.1-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:901e57ed636fbf5b5d002b0348f33d502779cc31d75ac703b63e0b6a84085c07"}, + {file = "ddtrace-2.14.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:20c4cd8ae87bef85542984ac203f5dd20359daf3a5d7f3f6f7f69736adb0c79e"}, + {file = "ddtrace-2.14.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5ad1fbb0705ff096184e3e5013c6e8f3b7181847ddfb18ea7f8311c3913a5734"}, + {file = "ddtrace-2.14.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5a57bb3f8e1bce2e19e3e7effa244bd6cf34a8203692f222c775d8b7d0cd17fa"}, + {file = "ddtrace-2.14.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c8e071118dc999d66b94bbe4d927967c76f97a6d10579d75881ee0ecde97baa8"}, + {file = "ddtrace-2.14.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:08edf6315429f7b46c760f8726e1f4dd1538c9afd2c02861b5341fd78c39ae5a"}, + {file = "ddtrace-2.14.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:707a7c4a0af62234b0d0a8480d9b0c534d57f25a22f554842bceacbd6ad11f96"}, + {file = "ddtrace-2.14.1-cp311-cp311-win32.whl", hash = "sha256:d52e5cecfddd9b0155792f8f2dc8060337d692a37b24cf8dd862b3026797c1cb"}, + {file = "ddtrace-2.14.1-cp311-cp311-win_amd64.whl", hash = "sha256:761cbfc629636d38a166f8b8eb5425bdbb29aeaad093095230078257e75572cc"}, + {file = "ddtrace-2.14.1-cp312-cp312-macosx_12_0_universal2.whl", hash = "sha256:b7e128001653ad1e24a6705251110c49f8017cb22071de3b77b43bf77978d90b"}, + {file = "ddtrace-2.14.1-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:18133ea923613214dfff790a48f4a0cfdfc642804bdb4e3b3e7176848f6b1d8f"}, + {file = "ddtrace-2.14.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40d59eb2995eec053a7301a07c34795db06ce12b1b86ce787afa3c67ec3bcf6a"}, + {file = "ddtrace-2.14.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8b4aa9aa17f64f2f8e33b9133c5929eebc82773bdf4f739472a4308595bede1e"}, + {file = "ddtrace-2.14.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70f78d588a8a11c5b5b12612100fd0e05eb6e85d9c33848555e151b20fa5f2c3"}, + {file = "ddtrace-2.14.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3cafa9a6663bef1a3caee783f21f5a94c6bb77cf9ab62b9ec6f7c160cdd012aa"}, + {file = "ddtrace-2.14.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4a9385b52405d069a7cf0d17917a9efafb7261e3d77fe6a3366840e4978e70d9"}, + {file = "ddtrace-2.14.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:219ccfd16c0117ab2b26249acb0c88cc0eb0d9543d422ac0ba8f0bfaddb1be2f"}, + {file = "ddtrace-2.14.1-cp312-cp312-win32.whl", hash = "sha256:97c154e3fb9312fdc926d42204f6aa6966d51a834ef48b5f1655ad8d37b8ee32"}, + {file = "ddtrace-2.14.1-cp312-cp312-win_amd64.whl", hash = "sha256:0286787a6d883606351b2c59ea21deefdeb80cf07f80d37cf86aef8dd1f17637"}, + {file = "ddtrace-2.14.1-cp37-cp37m-macosx_12_0_x86_64.whl", hash = "sha256:294583ef333a9cbe5f8ec4906f37dd9dad27d5007a848d291908c1f6df5dabbe"}, + {file = "ddtrace-2.14.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e863f82f3911242bbcac1c1f9575ba025dae0fc00c57d949b14ca62a27f6dc10"}, + {file = "ddtrace-2.14.1-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8fee112bd030daf73a26845ebeeb94d2fbdd6aff716643cbad2cf7c68fe722c1"}, + {file = "ddtrace-2.14.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6705f094130d39f9024831273790d240d1af00c18055377fd7084af693ada600"}, + {file = "ddtrace-2.14.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:ae3461dac55604e035e8fecaf1ae5ef65a3bb0cd6c212966df54316ed46c144e"}, + {file = "ddtrace-2.14.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:7bd0d58fd9b06c1c8b07ce8dd186261f5c102d1c56cebff740874e01dc5936ae"}, + {file = "ddtrace-2.14.1-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:5a67f9e97571de6f942f20d6d2f2882b7f257b182a73837ae9dd2b9e1376882b"}, + {file = "ddtrace-2.14.1-cp37-cp37m-win32.whl", hash = "sha256:0a823207f4b9035cc879d58e9b2121b20d803bf6b5ac1d9359393298625aae10"}, + {file = "ddtrace-2.14.1-cp37-cp37m-win_amd64.whl", hash = "sha256:9c33cae0222ade654a77a371ed00d8f62cf37c556effebe19a4e0bfb036775a4"}, + {file = "ddtrace-2.14.1-cp38-cp38-macosx_12_0_universal2.whl", hash = "sha256:2bf270159b34c665cdfb9aaac1f7f449dae8665006302a82c97960b74d00dadd"}, + {file = "ddtrace-2.14.1-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:177ebdb00433aedeefb827e62b65900b8f80781d4b787cd26d219360cebfc1cc"}, + {file = "ddtrace-2.14.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a189b7b4645056cca7e60bd7c66bd88d8561a61326214f6ba7b0299c1b192f74"}, + {file = "ddtrace-2.14.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e444b5d398fb93270740ae43e181ba2693529feb0bbef196525cc6a8981cd0b4"}, + {file = "ddtrace-2.14.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39085a8499dbf078081a0ab48fb9e3912386a99325fa70875c07b93325c8e22e"}, + {file = "ddtrace-2.14.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:c60cba86266502635e0078e0017884c2d685381ce4f009884e49a384bbec100b"}, + {file = "ddtrace-2.14.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8a777b6579ca47b7111481d16d1b7fb83ce4356ffc15d3baf38cc5fd28ec1ff0"}, + {file = "ddtrace-2.14.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:8061bad8fc33981c5d1bd424047595016cc1bf08329492852dd737fcd19516c0"}, + {file = "ddtrace-2.14.1-cp38-cp38-win32.whl", hash = "sha256:1cfc9200b68f48eaa1382efcb73a66757d44891d2b35707d92b2787d0a710277"}, + {file = "ddtrace-2.14.1-cp38-cp38-win_amd64.whl", hash = "sha256:9e4ca8d072412d9a1052130cb163f665d01b2314c741bb4809e5bcb1621a9ea3"}, + {file = "ddtrace-2.14.1-cp39-cp39-macosx_12_0_universal2.whl", hash = "sha256:2d5d333050abad107eabf2a322753869e0cda4a7daef58b1704ea19cb7b60649"}, + {file = "ddtrace-2.14.1-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:3dc5731a22a35726c1e32873e86972e0b36ad44bf4d0c848d4ea0970995889bc"}, + {file = "ddtrace-2.14.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3acb996ea7096f6ceebee9e4c84d61e583c7c3f222de6f2ee55981234d74338"}, + {file = "ddtrace-2.14.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4cbe96ca1985b10e26a920e1a201416fe247f80abb534833a74a43c927c0d69b"}, + {file = "ddtrace-2.14.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b7f2483b46a973a1b2271ac2dbf537d3d9e1ab1ed529fc1d3a82cc7b2643dd6"}, + {file = "ddtrace-2.14.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:019e0606b2bb38a2d38695165195bf18b23334bd9083a2805bbbec1a48a952d5"}, + {file = "ddtrace-2.14.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:55cbb14cd48548ebbacc6abff1b5a226531bc5a36dd063e235b0da8b544ee04f"}, + {file = "ddtrace-2.14.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:79b01d499a2cf34d8bdf871c82b33d295f4a3d8ab1b25b2e650094d8b0ad7b07"}, + {file = "ddtrace-2.14.1-cp39-cp39-win32.whl", hash = "sha256:55c9a18c8d1443a6ffa788427f6d7450676eb54619631b31f0220fd16351b4c6"}, + {file = "ddtrace-2.14.1-cp39-cp39-win_amd64.whl", hash = "sha256:905c7c84681e6ffd59680a8cb9ac5883699a7c4f3ed00b4c8cc25a8b50a60633"}, + {file = "ddtrace-2.14.1.tar.gz", hash = "sha256:9d7a443824ed84eac2923b8655c45d07aff374088f562dedbb4e7734122bbad5"}, ] [package.dependencies] @@ -604,13 +604,13 @@ files = [ [[package]] name = "tomli" -version = "2.0.1" +version = "2.0.2" description = "A lil' TOML parser" optional = true -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, - {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, + {file = "tomli-2.0.2-py3-none-any.whl", hash = "sha256:2ebe24485c53d303f690b0ec092806a085f07af5a5aa1464f3931eec36caaa38"}, + {file = "tomli-2.0.2.tar.gz", hash = "sha256:d46d457a85337051c36524bc5349dd91b1877838e2979ac5ced3e710ed8a60ed"}, ] [[package]] @@ -859,4 +859,4 @@ dev = ["boto3", "flake8", "pytest", "pytest-benchmark", "requests"] [metadata] lock-version = "2.0" python-versions = ">=3.8.0,<4" -content-hash = "a6aec85347838ba30c70f912ff0d9de03f3089cb658024c1f8d3214baaead760" +content-hash = "46554f78374b2b0f1d4ea85f984b2a35ffe481f981c360c2f16d534d6c9eb660" diff --git a/pyproject.toml b/pyproject.toml index d74fd9fc..edbd6259 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -27,7 +27,7 @@ classifiers = [ python = ">=3.8.0,<4" datadog = ">=0.41.0,<1.0.0" wrapt = "^1.11.2" -ddtrace = ">=2.14.0" +ddtrace = ">=2.14.1" ujson = ">=5.9.0" boto3 = { version = "^1.34.0", optional = true } requests = { version ="^2.22.0", optional = true } From 88f209920b5901789d17991a6e2fe675fceb60d6 Mon Sep 17 00:00:00 2001 From: Aleksandr Pasechnik Date: Fri, 4 Oct 2024 11:04:07 -0400 Subject: [PATCH 159/268] v6.99.0 (#519) --- datadog_lambda/version.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index d29698b5..54fd99d2 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "6.98.0" +__version__ = "6.99.0" diff --git a/pyproject.toml b/pyproject.toml index edbd6259..396b731e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "6.98.0" +version = "6.99.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 2b85536bbc24cef46bd61381ec62f57011e0633f Mon Sep 17 00:00:00 2001 From: Nicholas Hulston Date: Tue, 29 Oct 2024 14:12:38 -0400 Subject: [PATCH 160/268] Add `http.route` tags for API Gateway (#524) Add route tags --- datadog_lambda/trigger.py | 6 ++++++ .../integration/snapshots/logs/async-metrics_python310.log | 2 ++ .../integration/snapshots/logs/async-metrics_python311.log | 2 ++ .../integration/snapshots/logs/async-metrics_python312.log | 2 ++ tests/integration/snapshots/logs/async-metrics_python38.log | 2 ++ tests/integration/snapshots/logs/async-metrics_python39.log | 2 ++ tests/integration/snapshots/logs/sync-metrics_python310.log | 2 ++ tests/integration/snapshots/logs/sync-metrics_python311.log | 2 ++ tests/integration/snapshots/logs/sync-metrics_python312.log | 2 ++ tests/integration/snapshots/logs/sync-metrics_python38.log | 2 ++ tests/integration/snapshots/logs/sync-metrics_python39.log | 2 ++ tests/test_trigger.py | 3 +++ 12 files changed, 29 insertions(+) diff --git a/datadog_lambda/trigger.py b/datadog_lambda/trigger.py index 68531ebf..64eff1a0 100644 --- a/datadog_lambda/trigger.py +++ b/datadog_lambda/trigger.py @@ -299,6 +299,12 @@ def extract_http_tags(event): if headers and headers.get("Referer"): http_tags["http.referer"] = headers.get("Referer") + # Try to get `routeKey` from API GW v2; otherwise try to get `resource` from API GW v1 + route = event.get("routeKey") or event.get("resource") + if route: + # "GET /my/endpoint" = > "/my/endpoint" + http_tags["http.route"] = route.split(" ")[-1] + return http_tags diff --git a/tests/integration/snapshots/logs/async-metrics_python310.log b/tests/integration/snapshots/logs/async-metrics_python310.log index 704e89b5..40c23c68 100644 --- a/tests/integration/snapshots/logs/async-metrics_python310.log +++ b/tests/integration/snapshots/logs/async-metrics_python310.log @@ -106,6 +106,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", "http.url_details.path": "/Prod/", "http.method": "GET", + "http.route": "/", "http.status_code": "200", "_dd.base_service": "integration-tests-python" }, @@ -605,6 +606,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/httpapi/get", "http.method": "GET", + "http.route": "/httpapi/get", "http.status_code": "200", "_dd.base_service": "integration-tests-python" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python311.log b/tests/integration/snapshots/logs/async-metrics_python311.log index b97628ac..f1f12db4 100644 --- a/tests/integration/snapshots/logs/async-metrics_python311.log +++ b/tests/integration/snapshots/logs/async-metrics_python311.log @@ -106,6 +106,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", "http.url_details.path": "/Prod/", "http.method": "GET", + "http.route": "/", "http.status_code": "200", "_dd.base_service": "integration-tests-python" }, @@ -605,6 +606,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/httpapi/get", "http.method": "GET", + "http.route": "/httpapi/get", "http.status_code": "200", "_dd.base_service": "integration-tests-python" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python312.log b/tests/integration/snapshots/logs/async-metrics_python312.log index 79dbefc1..3bc69cca 100644 --- a/tests/integration/snapshots/logs/async-metrics_python312.log +++ b/tests/integration/snapshots/logs/async-metrics_python312.log @@ -106,6 +106,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", "http.url_details.path": "/Prod/", "http.method": "GET", + "http.route": "/", "http.status_code": "200", "_dd.base_service": "integration-tests-python" }, @@ -605,6 +606,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/httpapi/get", "http.method": "GET", + "http.route": "/httpapi/get", "http.status_code": "200", "_dd.base_service": "integration-tests-python" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python38.log b/tests/integration/snapshots/logs/async-metrics_python38.log index 3b9d7c76..fdc6b192 100644 --- a/tests/integration/snapshots/logs/async-metrics_python38.log +++ b/tests/integration/snapshots/logs/async-metrics_python38.log @@ -106,6 +106,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", "http.url_details.path": "/Prod/", "http.method": "GET", + "http.route": "/", "http.status_code": "200", "_dd.base_service": "integration-tests-python" }, @@ -605,6 +606,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/httpapi/get", "http.method": "GET", + "http.route": "/httpapi/get", "http.status_code": "200", "_dd.base_service": "integration-tests-python" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python39.log b/tests/integration/snapshots/logs/async-metrics_python39.log index 4e820246..c6c68290 100644 --- a/tests/integration/snapshots/logs/async-metrics_python39.log +++ b/tests/integration/snapshots/logs/async-metrics_python39.log @@ -106,6 +106,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", "http.url_details.path": "/Prod/", "http.method": "GET", + "http.route": "/", "http.status_code": "200", "_dd.base_service": "integration-tests-python" }, @@ -605,6 +606,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/httpapi/get", "http.method": "GET", + "http.route": "/httpapi/get", "http.status_code": "200", "_dd.base_service": "integration-tests-python" }, diff --git a/tests/integration/snapshots/logs/sync-metrics_python310.log b/tests/integration/snapshots/logs/sync-metrics_python310.log index 339c821c..5d9262ce 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python310.log +++ b/tests/integration/snapshots/logs/sync-metrics_python310.log @@ -86,6 +86,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", "http.url_details.path": "/Prod/", "http.method": "GET", + "http.route": "/", "http.status_code": "200", "_dd.base_service": "integration-tests-python" }, @@ -642,6 +643,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/httpapi/get", "http.method": "GET", + "http.route": "/httpapi/get", "http.status_code": "200", "_dd.base_service": "integration-tests-python" }, diff --git a/tests/integration/snapshots/logs/sync-metrics_python311.log b/tests/integration/snapshots/logs/sync-metrics_python311.log index 878b0d64..e93a4d0e 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python311.log +++ b/tests/integration/snapshots/logs/sync-metrics_python311.log @@ -86,6 +86,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", "http.url_details.path": "/Prod/", "http.method": "GET", + "http.route": "/", "http.status_code": "200", "_dd.base_service": "integration-tests-python" }, @@ -642,6 +643,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/httpapi/get", "http.method": "GET", + "http.route": "/httpapi/get", "http.status_code": "200", "_dd.base_service": "integration-tests-python" }, diff --git a/tests/integration/snapshots/logs/sync-metrics_python312.log b/tests/integration/snapshots/logs/sync-metrics_python312.log index c4dc17bc..c912cede 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python312.log +++ b/tests/integration/snapshots/logs/sync-metrics_python312.log @@ -86,6 +86,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", "http.url_details.path": "/Prod/", "http.method": "GET", + "http.route": "/", "http.status_code": "200", "_dd.base_service": "integration-tests-python" }, @@ -642,6 +643,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/httpapi/get", "http.method": "GET", + "http.route": "/httpapi/get", "http.status_code": "200", "_dd.base_service": "integration-tests-python" }, diff --git a/tests/integration/snapshots/logs/sync-metrics_python38.log b/tests/integration/snapshots/logs/sync-metrics_python38.log index 3e756430..74a1e06b 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python38.log +++ b/tests/integration/snapshots/logs/sync-metrics_python38.log @@ -86,6 +86,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", "http.url_details.path": "/Prod/", "http.method": "GET", + "http.route": "/", "http.status_code": "200", "_dd.base_service": "integration-tests-python" }, @@ -642,6 +643,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/httpapi/get", "http.method": "GET", + "http.route": "/httpapi/get", "http.status_code": "200", "_dd.base_service": "integration-tests-python" }, diff --git a/tests/integration/snapshots/logs/sync-metrics_python39.log b/tests/integration/snapshots/logs/sync-metrics_python39.log index ceffe679..19f0e84c 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python39.log +++ b/tests/integration/snapshots/logs/sync-metrics_python39.log @@ -86,6 +86,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", "http.url_details.path": "/Prod/", "http.method": "GET", + "http.route": "/", "http.status_code": "200", "_dd.base_service": "integration-tests-python" }, @@ -642,6 +643,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/httpapi/get", "http.method": "GET", + "http.route": "/httpapi/get", "http.status_code": "200", "_dd.base_service": "integration-tests-python" }, diff --git a/tests/test_trigger.py b/tests/test_trigger.py index 59178b1e..c1e7f5d7 100644 --- a/tests/test_trigger.py +++ b/tests/test_trigger.py @@ -258,6 +258,7 @@ def test_extract_trigger_tags_api_gateway(self): "http.url": "70ixmpl4fl.execute-api.us-east-2.amazonaws.com", "http.url_details.path": "/prod/path/to/resource", "http.method": "POST", + "http.route": "/{proxy+}", }, ) @@ -276,6 +277,7 @@ def test_extract_trigger_tags_api_gateway_non_proxy(self): "http.url": "lgxbo6a518.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/dev/http/get", "http.method": "GET", + "http.route": "/http/get", }, ) @@ -342,6 +344,7 @@ def test_extract_trigger_tags_api_gateway_http_api(self): "http.url": "x02yirxc7a.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/httpapi/get", "http.method": "GET", + "http.route": "/httpapi/get", }, ) From 02cc8c61e1b043bf46147b6d5b3ff64c4b52f716 Mon Sep 17 00:00:00 2001 From: Aleksandr Pasechnik Date: Wed, 30 Oct 2024 15:17:11 -0400 Subject: [PATCH 161/268] feat: [SVLS-5677] DynamoDB Stream event span pointers (#522) --- datadog_lambda/span_pointers.py | 75 +++- poetry.lock | 387 +++++++++--------- pyproject.toml | 2 +- tests/Dockerfile | 5 + .../logs/async-metrics_python310.log | 48 ++- .../logs/async-metrics_python311.log | 48 ++- .../logs/async-metrics_python312.log | 48 ++- .../snapshots/logs/async-metrics_python38.log | 48 ++- .../snapshots/logs/async-metrics_python39.log | 48 ++- .../snapshots/logs/sync-metrics_python310.log | 48 ++- .../snapshots/logs/sync-metrics_python311.log | 48 ++- .../snapshots/logs/sync-metrics_python312.log | 48 ++- .../snapshots/logs/sync-metrics_python38.log | 48 ++- .../snapshots/logs/sync-metrics_python39.log | 48 ++- tests/test_span_pointers.py | 61 +++ 15 files changed, 799 insertions(+), 211 deletions(-) diff --git a/datadog_lambda/span_pointers.py b/datadog_lambda/span_pointers.py index 4c33975f..669257bd 100644 --- a/datadog_lambda/span_pointers.py +++ b/datadog_lambda/span_pointers.py @@ -2,7 +2,10 @@ import logging from typing import List -from ddtrace._trace.utils_botocore.span_pointers import ( +from ddtrace._trace.utils_botocore.span_pointers.dynamodb import ( + _aws_dynamodb_item_span_pointer_description, +) +from ddtrace._trace.utils_botocore.span_pointers.s3 import ( _aws_s3_object_span_pointer_description, ) from ddtrace._trace._span_pointer import _SpanPointerDirection @@ -21,10 +24,13 @@ def calculate_span_pointers( if event_source.equals(EventTypes.S3): return _calculate_s3_span_pointers_for_event(event) + elif event_source.equals(EventTypes.DYNAMODB): + return _calculate_dynamodb_span_pointers_for_event(event) + except Exception as e: logger.warning( "failed to calculate span pointers for event: %s", - str(e), + e, ) return [] @@ -69,7 +75,7 @@ def _calculate_s3_span_pointers_for_object_created_s3_information( except KeyError as e: logger.warning( "missing s3 information required to make a span pointer: %s", - str(e), + e, ) return [] @@ -86,6 +92,67 @@ def _calculate_s3_span_pointers_for_object_created_s3_information( except Exception as e: logger.warning( "failed to generate S3 span pointer: %s", - str(e), + e, + ) + return [] + + +def _calculate_dynamodb_span_pointers_for_event(event) -> List[_SpanPointerDescription]: + # Example event: + # https://docs.aws.amazon.com/lambda/latest/dg/with-ddb.html + + return list( + chain.from_iterable( + _calculate_dynamodb_span_pointers_for_event_record(record) + for record in event.get("Records", []) + ) + ) + + +def _calculate_dynamodb_span_pointers_for_event_record( + record, +) -> List[_SpanPointerDescription]: + try: + table_name = _extract_table_name_from_dynamodb_stream_record(record) + primary_key = record["dynamodb"]["Keys"] + + except Exception as e: + logger.warning( + "missing DynamoDB information required to make a span pointer: %s", + e, ) return [] + + try: + return [ + _aws_dynamodb_item_span_pointer_description( + pointer_direction=_SpanPointerDirection.UPSTREAM, + table_name=table_name, + primary_key=primary_key, + ) + ] + + except Exception as e: + logger.warning( + "failed to generate DynamoDB span pointer: %s", + e, + ) + return [] + + +def _extract_table_name_from_dynamodb_stream_record(record) -> str: + # Example eventSourceARN: + # arn:aws:dynamodb:us-east-2:123456789012:table/my-table/stream/2024-06-10T19:26:16.525 + event_source_arn = record["eventSourceARN"] + + [_arn, _aws, _dynamodb, _region, _account, dynamodb_info] = event_source_arn.split( + ":", maxsplit=5 + ) + if _arn != "arn" or _aws != "aws" or _dynamodb != "dynamodb": + raise ValueError(f"unexpected eventSourceARN format: {event_source_arn}") + + [_table, table_name, _stream, _timestamp] = dynamodb_info.split("/") + if _table != "table" or _stream != "stream": + raise ValueError(f"unexpected eventSourceARN format: {event_source_arn}") + + return table_name diff --git a/poetry.lock b/poetry.lock index e9557200..c87fea84 100644 --- a/poetry.lock +++ b/poetry.lock @@ -2,17 +2,17 @@ [[package]] name = "boto3" -version = "1.35.31" +version = "1.35.51" description = "The AWS SDK for Python" optional = true python-versions = ">=3.8" files = [ - {file = "boto3-1.35.31-py3-none-any.whl", hash = "sha256:2e9af74d10d8af7610a8d8468d2914961f116912a024fce17351825260385a52"}, - {file = "boto3-1.35.31.tar.gz", hash = "sha256:8c593af260c4ea3eb6f079c09908f94494ca2222aa4e40a7ff490fab1cee8b39"}, + {file = "boto3-1.35.51-py3-none-any.whl", hash = "sha256:c922f6a18958af9d8af0489d6d8503b517029d8159b26aa4859a8294561c72e9"}, + {file = "boto3-1.35.51.tar.gz", hash = "sha256:a57c6c7012ecb40c43e565a6f7a891f39efa990ff933eab63cd456f7501c2731"}, ] [package.dependencies] -botocore = ">=1.35.31,<1.36.0" +botocore = ">=1.35.51,<1.36.0" jmespath = ">=0.7.1,<2.0.0" s3transfer = ">=0.10.0,<0.11.0" @@ -21,13 +21,13 @@ crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] [[package]] name = "botocore" -version = "1.35.31" +version = "1.35.51" description = "Low-level, data-driven core of boto 3." optional = true python-versions = ">=3.8" files = [ - {file = "botocore-1.35.31-py3-none-any.whl", hash = "sha256:4cee814875bc78656aef4011d3d6b2231e96f53ea3661ee428201afb579d5c31"}, - {file = "botocore-1.35.31.tar.gz", hash = "sha256:f7bfa910cf2cbcc8c2307c1cf7b93495d614c2d699883417893e0a337fe4eb63"}, + {file = "botocore-1.35.51-py3-none-any.whl", hash = "sha256:4d65b00111bd12b98e9f920ecab602cf619cc6a6d0be6e5dd53f517e4b92901c"}, + {file = "botocore-1.35.51.tar.gz", hash = "sha256:a9b3d1da76b3e896ad74605c01d88f596324a3337393d4bfbfa0d6c35822ca9c"}, ] [package.dependencies] @@ -39,17 +39,17 @@ urllib3 = [ ] [package.extras] -crt = ["awscrt (==0.21.5)"] +crt = ["awscrt (==0.22.0)"] [[package]] name = "bytecode" -version = "0.15.1" +version = "0.16.0" description = "Python module to generate and modify bytecode" optional = false python-versions = ">=3.8" files = [ - {file = "bytecode-0.15.1-py3-none-any.whl", hash = "sha256:0a1dc340cac823cff605609b8b214f7f9bf80418c6b9e0fc8c6db1793c27137d"}, - {file = "bytecode-0.15.1.tar.gz", hash = "sha256:7263239a8d3f70fc7c303862b20cd2c6788052e37ce0a26e67309d280e985984"}, + {file = "bytecode-0.16.0-py3-none-any.whl", hash = "sha256:76080b7c0eb9e7e17f961d61fd06e933aa47f3b753770a3249537439d8203a25"}, + {file = "bytecode-0.16.0.tar.gz", hash = "sha256:06676a3c3bccc9d3dc73ee625650ea57df2bc117358826f4f290f0e1faa42292"}, ] [package.dependencies] @@ -68,101 +68,116 @@ files = [ [[package]] name = "charset-normalizer" -version = "3.3.2" +version = "3.4.0" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." optional = false python-versions = ">=3.7.0" files = [ - {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"}, - {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:4f9fc98dad6c2eaa32fc3af1417d95b5e3d08aff968df0cd320066def971f9a6"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0de7b687289d3c1b3e8660d0741874abe7888100efe14bd0f9fd7141bcbda92b"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5ed2e36c3e9b4f21dd9422f6893dec0abf2cca553af509b10cd630f878d3eb99"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40d3ff7fc90b98c637bda91c89d51264a3dcf210cade3a2c6f838c7268d7a4ca"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1110e22af8ca26b90bd6364fe4c763329b0ebf1ee213ba32b68c73de5752323d"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:86f4e8cca779080f66ff4f191a685ced73d2f72d50216f7112185dc02b90b9b7"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f683ddc7eedd742e2889d2bfb96d69573fde1d92fcb811979cdb7165bb9c7d3"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:27623ba66c183eca01bf9ff833875b459cad267aeeb044477fedac35e19ba907"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f606a1881d2663630ea5b8ce2efe2111740df4b687bd78b34a8131baa007f79b"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:0b309d1747110feb25d7ed6b01afdec269c647d382c857ef4663bbe6ad95a912"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:136815f06a3ae311fae551c3df1f998a1ebd01ddd424aa5603a4336997629e95"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:14215b71a762336254351b00ec720a8e85cada43b987da5a042e4ce3e82bd68e"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:79983512b108e4a164b9c8d34de3992f76d48cadc9554c9e60b43f308988aabe"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-win32.whl", hash = "sha256:c94057af19bc953643a33581844649a7fdab902624d2eb739738a30e2b3e60fc"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:55f56e2ebd4e3bc50442fbc0888c9d8c94e4e06a933804e2af3e89e2f9c1c749"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0d99dd8ff461990f12d6e42c7347fd9ab2532fb70e9621ba520f9e8637161d7c"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c57516e58fd17d03ebe67e181a4e4e2ccab1168f8c2976c6a334d4f819fe5944"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6dba5d19c4dfab08e58d5b36304b3f92f3bd5d42c1a3fa37b5ba5cdf6dfcbcee"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf4475b82be41b07cc5e5ff94810e6a01f276e37c2d55571e3fe175e467a1a1c"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce031db0408e487fd2775d745ce30a7cd2923667cf3b69d48d219f1d8f5ddeb6"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8ff4e7cdfdb1ab5698e675ca622e72d58a6fa2a8aa58195de0c0061288e6e3ea"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3710a9751938947e6327ea9f3ea6332a09bf0ba0c09cae9cb1f250bd1f1549bc"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:82357d85de703176b5587dbe6ade8ff67f9f69a41c0733cf2425378b49954de5"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:47334db71978b23ebcf3c0f9f5ee98b8d65992b65c9c4f2d34c2eaf5bcaf0594"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8ce7fd6767a1cc5a92a639b391891bf1c268b03ec7e021c7d6d902285259685c"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:f1a2f519ae173b5b6a2c9d5fa3116ce16e48b3462c8b96dfdded11055e3d6365"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:63bc5c4ae26e4bc6be6469943b8253c0fd4e4186c43ad46e713ea61a0ba49129"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bcb4f8ea87d03bc51ad04add8ceaf9b0f085ac045ab4d74e73bbc2dc033f0236"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-win32.whl", hash = "sha256:9ae4ef0b3f6b41bad6366fb0ea4fc1d7ed051528e113a60fa2a65a9abb5b1d99"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:cee4373f4d3ad28f1ab6290684d8e2ebdb9e7a1b74fdc39e4c211995f77bec27"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0713f3adb9d03d49d365b70b84775d0a0d18e4ab08d12bc46baa6132ba78aaf6"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:de7376c29d95d6719048c194a9cf1a1b0393fbe8488a22008610b0361d834ecf"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4a51b48f42d9358460b78725283f04bddaf44a9358197b889657deba38f329db"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b295729485b06c1a0683af02a9e42d2caa9db04a373dc38a6a58cdd1e8abddf1"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ee803480535c44e7f5ad00788526da7d85525cfefaf8acf8ab9a310000be4b03"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d59d125ffbd6d552765510e3f31ed75ebac2c7470c7274195b9161a32350284"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8cda06946eac330cbe6598f77bb54e690b4ca93f593dee1568ad22b04f347c15"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07afec21bbbbf8a5cc3651aa96b980afe2526e7f048fdfb7f1014d84acc8b6d8"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6b40e8d38afe634559e398cc32b1472f376a4099c75fe6299ae607e404c033b2"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b8dcd239c743aa2f9c22ce674a145e0a25cb1566c495928440a181ca1ccf6719"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:84450ba661fb96e9fd67629b93d2941c871ca86fc38d835d19d4225ff946a631"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:44aeb140295a2f0659e113b31cfe92c9061622cadbc9e2a2f7b8ef6b1e29ef4b"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1db4e7fefefd0f548d73e2e2e041f9df5c59e178b4c72fbac4cc6f535cfb1565"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-win32.whl", hash = "sha256:5726cf76c982532c1863fb64d8c6dd0e4c90b6ece9feb06c9f202417a31f7dd7"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:b197e7094f232959f8f20541ead1d9862ac5ebea1d58e9849c1bf979255dfac9"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:dd4eda173a9fcccb5f2e2bd2a9f423d180194b1bf17cf59e3269899235b2a114"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e9e3c4c9e1ed40ea53acf11e2a386383c3304212c965773704e4603d589343ed"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:92a7e36b000bf022ef3dbb9c46bfe2d52c047d5e3f3343f43204263c5addc250"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:54b6a92d009cbe2fb11054ba694bc9e284dad30a26757b1e372a1fdddaf21920"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ffd9493de4c922f2a38c2bf62b831dcec90ac673ed1ca182fe11b4d8e9f2a64"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:35c404d74c2926d0287fbd63ed5d27eb911eb9e4a3bb2c6d294f3cfd4a9e0c23"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4796efc4faf6b53a18e3d46343535caed491776a22af773f366534056c4e1fbc"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e7fdd52961feb4c96507aa649550ec2a0d527c086d284749b2f582f2d40a2e0d"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:92db3c28b5b2a273346bebb24857fda45601aef6ae1c011c0a997106581e8a88"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ab973df98fc99ab39080bfb0eb3a925181454d7c3ac8a1e695fddfae696d9e90"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:4b67fdab07fdd3c10bb21edab3cbfe8cf5696f453afce75d815d9d7223fbe88b"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:aa41e526a5d4a9dfcfbab0716c7e8a1b215abd3f3df5a45cf18a12721d31cb5d"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ffc519621dce0c767e96b9c53f09c5d215578e10b02c285809f76509a3931482"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-win32.whl", hash = "sha256:f19c1585933c82098c2a520f8ec1227f20e339e33aca8fa6f956f6691b784e67"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:707b82d19e65c9bd28b81dde95249b07bf9f5b90ebe1ef17d9b57473f8a64b7b"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:dbe03226baf438ac4fda9e2d0715022fd579cb641c4cf639fa40d53b2fe6f3e2"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd9a8bd8900e65504a305bf8ae6fa9fbc66de94178c420791d0293702fce2df7"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8831399554b92b72af5932cdbbd4ddc55c55f631bb13ff8fe4e6536a06c5c51"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a14969b8691f7998e74663b77b4c36c0337cb1df552da83d5c9004a93afdb574"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dcaf7c1524c0542ee2fc82cc8ec337f7a9f7edee2532421ab200d2b920fc97cf"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:425c5f215d0eecee9a56cdb703203dda90423247421bf0d67125add85d0c4455"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:d5b054862739d276e09928de37c79ddeec42a6e1bfc55863be96a36ba22926f6"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:f3e73a4255342d4eb26ef6df01e3962e73aa29baa3124a8e824c5d3364a65748"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:2f6c34da58ea9c1a9515621f4d9ac379871a8f21168ba1b5e09d74250de5ad62"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_s390x.whl", hash = "sha256:f09cb5a7bbe1ecae6e87901a2eb23e0256bb524a79ccc53eb0b7629fbe7677c4"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:0099d79bdfcf5c1f0c2c72f91516702ebf8b0b8ddd8905f97a8aecf49712c621"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-win32.whl", hash = "sha256:9c98230f5042f4945f957d006edccc2af1e03ed5e37ce7c373f00a5a4daa6149"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-win_amd64.whl", hash = "sha256:62f60aebecfc7f4b82e3f639a7d1433a20ec32824db2199a11ad4f5e146ef5ee"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:af73657b7a68211996527dbfeffbb0864e043d270580c5aef06dc4b659a4b578"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cab5d0b79d987c67f3b9e9c53f54a61360422a5a0bc075f43cab5621d530c3b6"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:9289fd5dddcf57bab41d044f1756550f9e7cf0c8e373b8cdf0ce8773dc4bd417"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b493a043635eb376e50eedf7818f2f322eabbaa974e948bd8bdd29eb7ef2a51"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9fa2566ca27d67c86569e8c85297aaf413ffab85a8960500f12ea34ff98e4c41"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a8e538f46104c815be19c975572d74afb53f29650ea2025bbfaef359d2de2f7f"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fd30dc99682dc2c603c2b315bded2799019cea829f8bf57dc6b61efde6611c8"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2006769bd1640bdf4d5641c69a3d63b71b81445473cac5ded39740a226fa88ab"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:dc15e99b2d8a656f8e666854404f1ba54765871104e50c8e9813af8a7db07f12"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:ab2e5bef076f5a235c3774b4f4028a680432cded7cad37bba0fd90d64b187d19"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:4ec9dd88a5b71abfc74e9df5ebe7921c35cbb3b641181a531ca65cdb5e8e4dea"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:43193c5cda5d612f247172016c4bb71251c784d7a4d9314677186a838ad34858"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:aa693779a8b50cd97570e5a0f343538a8dbd3e496fa5dcb87e29406ad0299654"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-win32.whl", hash = "sha256:7706f5850360ac01d80c89bcef1640683cc12ed87f42579dab6c5d3ed6888613"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:c3e446d253bd88f6377260d07c895816ebf33ffffd56c1c792b13bff9c3e1ade"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:980b4f289d1d90ca5efcf07958d3eb38ed9c0b7676bf2831a54d4f66f9c27dfa"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f28f891ccd15c514a0981f3b9db9aa23d62fe1a99997512b0491d2ed323d229a"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8aacce6e2e1edcb6ac625fb0f8c3a9570ccc7bfba1f63419b3769ccf6a00ed0"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd7af3717683bea4c87acd8c0d3d5b44d56120b26fd3f8a692bdd2d5260c620a"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5ff2ed8194587faf56555927b3aa10e6fb69d931e33953943bc4f837dfee2242"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e91f541a85298cf35433bf66f3fab2a4a2cff05c127eeca4af174f6d497f0d4b"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:309a7de0a0ff3040acaebb35ec45d18db4b28232f21998851cfa709eeff49d62"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:285e96d9d53422efc0d7a17c60e59f37fbf3dfa942073f666db4ac71e8d726d0"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:5d447056e2ca60382d460a604b6302d8db69476fd2015c81e7c35417cfabe4cd"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:20587d20f557fe189b7947d8e7ec5afa110ccf72a3128d61a2a387c3313f46be"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:130272c698667a982a5d0e626851ceff662565379baf0ff2cc58067b81d4f11d"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:ab22fbd9765e6954bc0bcff24c25ff71dcbfdb185fcdaca49e81bac68fe724d3"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:7782afc9b6b42200f7362858f9e73b1f8316afb276d316336c0ec3bd73312742"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-win32.whl", hash = "sha256:2de62e8801ddfff069cd5c504ce3bc9672b23266597d4e4f50eda28846c322f2"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:95c3c157765b031331dd4db3c775e58deaee050a3042fcad72cbc4189d7c8dca"}, + {file = "charset_normalizer-3.4.0-py3-none-any.whl", hash = "sha256:fe9f97feb71aa9896b81973a7bbada8c49501dc73e58a10fcef6663af95e5079"}, + {file = "charset_normalizer-3.4.0.tar.gz", hash = "sha256:223217c3d4f82c3ac5e29032b3f1c2eb0fb591b72161f86d93f5719079dae93e"}, ] [[package]] @@ -192,71 +207,71 @@ requests = ">=2.6.0" [[package]] name = "ddtrace" -version = "2.14.1" +version = "2.15.0" description = "Datadog APM client library" optional = false python-versions = ">=3.7" files = [ - {file = "ddtrace-2.14.1-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:45006561033362ae3bf8619e4e23b5f044c1d85ab75f60bfada9cb26b50f3136"}, - {file = "ddtrace-2.14.1-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:ec918f63a49f426f0b8507ed045752d31a4fbac6058861dab37e59ea21ec14e6"}, - {file = "ddtrace-2.14.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6dbef64063312afac39fe3c46aa848e0191b741a31664ce994445c76beb49aa5"}, - {file = "ddtrace-2.14.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aff1e0749d8bda9e7ec68a3d7c847a02fc6cca8f8a0444c7d33d8c11d6cb9d28"}, - {file = "ddtrace-2.14.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9cec95ed8e442efdab682e54b4d200d100c028207a2597fc0e879518f08495b2"}, - {file = "ddtrace-2.14.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:33d0437a4a4e71ae1defb58d940d3efddb3372201bc5ae0ecb960bc5b1684453"}, - {file = "ddtrace-2.14.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:66e07bca5bcdb16231bdaf6f848b9d2ab677ab6569185cf33ffceac1406123fb"}, - {file = "ddtrace-2.14.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:6257295f04950773929ab2586a6b1193015dffdf2e1f915decfb8cce99e7be3e"}, - {file = "ddtrace-2.14.1-cp310-cp310-win32.whl", hash = "sha256:e57d43bb848a40f4b5efacb3ebece41ddfc4d40b4fb9e5d1b49d43fd33565666"}, - {file = "ddtrace-2.14.1-cp310-cp310-win_amd64.whl", hash = "sha256:e595d2acba589f2881809c3a1e8302a8ddbfc9d49a546eadf9fb57ee18e39472"}, - {file = "ddtrace-2.14.1-cp311-cp311-macosx_12_0_universal2.whl", hash = "sha256:bd5c7274978625688b4eece12deb19704c2ba16187e1e8c35a76b312b6ee587f"}, - {file = "ddtrace-2.14.1-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:901e57ed636fbf5b5d002b0348f33d502779cc31d75ac703b63e0b6a84085c07"}, - {file = "ddtrace-2.14.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:20c4cd8ae87bef85542984ac203f5dd20359daf3a5d7f3f6f7f69736adb0c79e"}, - {file = "ddtrace-2.14.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5ad1fbb0705ff096184e3e5013c6e8f3b7181847ddfb18ea7f8311c3913a5734"}, - {file = "ddtrace-2.14.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5a57bb3f8e1bce2e19e3e7effa244bd6cf34a8203692f222c775d8b7d0cd17fa"}, - {file = "ddtrace-2.14.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c8e071118dc999d66b94bbe4d927967c76f97a6d10579d75881ee0ecde97baa8"}, - {file = "ddtrace-2.14.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:08edf6315429f7b46c760f8726e1f4dd1538c9afd2c02861b5341fd78c39ae5a"}, - {file = "ddtrace-2.14.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:707a7c4a0af62234b0d0a8480d9b0c534d57f25a22f554842bceacbd6ad11f96"}, - {file = "ddtrace-2.14.1-cp311-cp311-win32.whl", hash = "sha256:d52e5cecfddd9b0155792f8f2dc8060337d692a37b24cf8dd862b3026797c1cb"}, - {file = "ddtrace-2.14.1-cp311-cp311-win_amd64.whl", hash = "sha256:761cbfc629636d38a166f8b8eb5425bdbb29aeaad093095230078257e75572cc"}, - {file = "ddtrace-2.14.1-cp312-cp312-macosx_12_0_universal2.whl", hash = "sha256:b7e128001653ad1e24a6705251110c49f8017cb22071de3b77b43bf77978d90b"}, - {file = "ddtrace-2.14.1-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:18133ea923613214dfff790a48f4a0cfdfc642804bdb4e3b3e7176848f6b1d8f"}, - {file = "ddtrace-2.14.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40d59eb2995eec053a7301a07c34795db06ce12b1b86ce787afa3c67ec3bcf6a"}, - {file = "ddtrace-2.14.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8b4aa9aa17f64f2f8e33b9133c5929eebc82773bdf4f739472a4308595bede1e"}, - {file = "ddtrace-2.14.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70f78d588a8a11c5b5b12612100fd0e05eb6e85d9c33848555e151b20fa5f2c3"}, - {file = "ddtrace-2.14.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3cafa9a6663bef1a3caee783f21f5a94c6bb77cf9ab62b9ec6f7c160cdd012aa"}, - {file = "ddtrace-2.14.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4a9385b52405d069a7cf0d17917a9efafb7261e3d77fe6a3366840e4978e70d9"}, - {file = "ddtrace-2.14.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:219ccfd16c0117ab2b26249acb0c88cc0eb0d9543d422ac0ba8f0bfaddb1be2f"}, - {file = "ddtrace-2.14.1-cp312-cp312-win32.whl", hash = "sha256:97c154e3fb9312fdc926d42204f6aa6966d51a834ef48b5f1655ad8d37b8ee32"}, - {file = "ddtrace-2.14.1-cp312-cp312-win_amd64.whl", hash = "sha256:0286787a6d883606351b2c59ea21deefdeb80cf07f80d37cf86aef8dd1f17637"}, - {file = "ddtrace-2.14.1-cp37-cp37m-macosx_12_0_x86_64.whl", hash = "sha256:294583ef333a9cbe5f8ec4906f37dd9dad27d5007a848d291908c1f6df5dabbe"}, - {file = "ddtrace-2.14.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e863f82f3911242bbcac1c1f9575ba025dae0fc00c57d949b14ca62a27f6dc10"}, - {file = "ddtrace-2.14.1-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8fee112bd030daf73a26845ebeeb94d2fbdd6aff716643cbad2cf7c68fe722c1"}, - {file = "ddtrace-2.14.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6705f094130d39f9024831273790d240d1af00c18055377fd7084af693ada600"}, - {file = "ddtrace-2.14.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:ae3461dac55604e035e8fecaf1ae5ef65a3bb0cd6c212966df54316ed46c144e"}, - {file = "ddtrace-2.14.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:7bd0d58fd9b06c1c8b07ce8dd186261f5c102d1c56cebff740874e01dc5936ae"}, - {file = "ddtrace-2.14.1-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:5a67f9e97571de6f942f20d6d2f2882b7f257b182a73837ae9dd2b9e1376882b"}, - {file = "ddtrace-2.14.1-cp37-cp37m-win32.whl", hash = "sha256:0a823207f4b9035cc879d58e9b2121b20d803bf6b5ac1d9359393298625aae10"}, - {file = "ddtrace-2.14.1-cp37-cp37m-win_amd64.whl", hash = "sha256:9c33cae0222ade654a77a371ed00d8f62cf37c556effebe19a4e0bfb036775a4"}, - {file = "ddtrace-2.14.1-cp38-cp38-macosx_12_0_universal2.whl", hash = "sha256:2bf270159b34c665cdfb9aaac1f7f449dae8665006302a82c97960b74d00dadd"}, - {file = "ddtrace-2.14.1-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:177ebdb00433aedeefb827e62b65900b8f80781d4b787cd26d219360cebfc1cc"}, - {file = "ddtrace-2.14.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a189b7b4645056cca7e60bd7c66bd88d8561a61326214f6ba7b0299c1b192f74"}, - {file = "ddtrace-2.14.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e444b5d398fb93270740ae43e181ba2693529feb0bbef196525cc6a8981cd0b4"}, - {file = "ddtrace-2.14.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39085a8499dbf078081a0ab48fb9e3912386a99325fa70875c07b93325c8e22e"}, - {file = "ddtrace-2.14.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:c60cba86266502635e0078e0017884c2d685381ce4f009884e49a384bbec100b"}, - {file = "ddtrace-2.14.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8a777b6579ca47b7111481d16d1b7fb83ce4356ffc15d3baf38cc5fd28ec1ff0"}, - {file = "ddtrace-2.14.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:8061bad8fc33981c5d1bd424047595016cc1bf08329492852dd737fcd19516c0"}, - {file = "ddtrace-2.14.1-cp38-cp38-win32.whl", hash = "sha256:1cfc9200b68f48eaa1382efcb73a66757d44891d2b35707d92b2787d0a710277"}, - {file = "ddtrace-2.14.1-cp38-cp38-win_amd64.whl", hash = "sha256:9e4ca8d072412d9a1052130cb163f665d01b2314c741bb4809e5bcb1621a9ea3"}, - {file = "ddtrace-2.14.1-cp39-cp39-macosx_12_0_universal2.whl", hash = "sha256:2d5d333050abad107eabf2a322753869e0cda4a7daef58b1704ea19cb7b60649"}, - {file = "ddtrace-2.14.1-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:3dc5731a22a35726c1e32873e86972e0b36ad44bf4d0c848d4ea0970995889bc"}, - {file = "ddtrace-2.14.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3acb996ea7096f6ceebee9e4c84d61e583c7c3f222de6f2ee55981234d74338"}, - {file = "ddtrace-2.14.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4cbe96ca1985b10e26a920e1a201416fe247f80abb534833a74a43c927c0d69b"}, - {file = "ddtrace-2.14.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b7f2483b46a973a1b2271ac2dbf537d3d9e1ab1ed529fc1d3a82cc7b2643dd6"}, - {file = "ddtrace-2.14.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:019e0606b2bb38a2d38695165195bf18b23334bd9083a2805bbbec1a48a952d5"}, - {file = "ddtrace-2.14.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:55cbb14cd48548ebbacc6abff1b5a226531bc5a36dd063e235b0da8b544ee04f"}, - {file = "ddtrace-2.14.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:79b01d499a2cf34d8bdf871c82b33d295f4a3d8ab1b25b2e650094d8b0ad7b07"}, - {file = "ddtrace-2.14.1-cp39-cp39-win32.whl", hash = "sha256:55c9a18c8d1443a6ffa788427f6d7450676eb54619631b31f0220fd16351b4c6"}, - {file = "ddtrace-2.14.1-cp39-cp39-win_amd64.whl", hash = "sha256:905c7c84681e6ffd59680a8cb9ac5883699a7c4f3ed00b4c8cc25a8b50a60633"}, - {file = "ddtrace-2.14.1.tar.gz", hash = "sha256:9d7a443824ed84eac2923b8655c45d07aff374088f562dedbb4e7734122bbad5"}, + {file = "ddtrace-2.15.0-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:8e95399bcbbef7653329ca34f4ec47b49c8364f90097b781982b41ad39c9d9cc"}, + {file = "ddtrace-2.15.0-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:42f34571041e92f6326819c543d114059ab381a4e73a4f90c803a74aff750421"}, + {file = "ddtrace-2.15.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1e9a043a0c8e4f4ad2ef5820ad5a75e66eff0f10223768a697302c27b0f3fbed"}, + {file = "ddtrace-2.15.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:20706878d973b046a032d7e44b4314f9c6fbf3329942664ca5f4949119625644"}, + {file = "ddtrace-2.15.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:22a51d604d1f647eff82f5ae2a14c924a2164ded3d2217dbf5b2787f2384a11a"}, + {file = "ddtrace-2.15.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:c3ccb04acddf37dcc6458949dbe91a1f230deaf30cf386501c2e6b20986a37bf"}, + {file = "ddtrace-2.15.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6004a1fc48ff6f564d35c790e002bdb7ce39a904126d9d3ce3696b9586ce6ad8"}, + {file = "ddtrace-2.15.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e4a676ddb3c03149545a21d874ae846d3a467dbc37ba253681deecccb5cfae03"}, + {file = "ddtrace-2.15.0-cp310-cp310-win32.whl", hash = "sha256:cfa81e4d7897dd335a79c0c727001797f9a3ffea6c4f1444335fd6bb7694cd97"}, + {file = "ddtrace-2.15.0-cp310-cp310-win_amd64.whl", hash = "sha256:0ad47afc29f66bece98a166e808dc07d197a78098c81546417e0455d3cf10b31"}, + {file = "ddtrace-2.15.0-cp311-cp311-macosx_12_0_universal2.whl", hash = "sha256:8e2da75e5bd550fc04415a2446536a3d31c2c28bbfc44ecb2435058693e71329"}, + {file = "ddtrace-2.15.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:d41abf53aeab1248ef5a4c58366fe5e67522cc1995727724f1c8e3c5acdd0150"}, + {file = "ddtrace-2.15.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:30a8960cc062eabbaf4a37febcf5e68e9984100cd345bce4fa1c65366290d0eb"}, + {file = "ddtrace-2.15.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8fbf939613d2c81bcd04b7d9e854b4391e26b9c21c6b719ecfbdeb19e6c35089"}, + {file = "ddtrace-2.15.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f528fe2d90f2f549ce9ca699b45889b92698005f8d356d54cdff2730ee608798"}, + {file = "ddtrace-2.15.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:721eddd72f5d062a7da5bcd6f9f06010368b75648b6b54661949ee22ee5b0fe5"}, + {file = "ddtrace-2.15.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9d0649f0b3e590e119c63ed553120acaea54e511ee495f4ab7d7c1ef2d2ec778"}, + {file = "ddtrace-2.15.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:7c21f909aec4d666ad08dd26e42afa07ec560e2e157b4abdbec92b9f3ffa2ab4"}, + {file = "ddtrace-2.15.0-cp311-cp311-win32.whl", hash = "sha256:dc0b0d42f96da8f70a5bd64247392c3a10c16e03633098f6ad5fef8894655d6a"}, + {file = "ddtrace-2.15.0-cp311-cp311-win_amd64.whl", hash = "sha256:09953ad48275eb5281c642454d3403db413eb957cb7935d80951580982339831"}, + {file = "ddtrace-2.15.0-cp312-cp312-macosx_12_0_universal2.whl", hash = "sha256:29cc10454b4c3ea25dfd41b008916d37d19b87f18145a47e7a82bb8dce696ba1"}, + {file = "ddtrace-2.15.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:1ecebd2ac49395a58e7649bcb8e2a65055b2edc35a347350cb71c062f2031bf2"}, + {file = "ddtrace-2.15.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7e2e6fa42b99093205dec28f0be320f537ce8e70caca00e61e49d9d0898639e0"}, + {file = "ddtrace-2.15.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a69a43621052a82fa832ca005cc20d1408d94f5822e0a1484a48c94b1fd25654"}, + {file = "ddtrace-2.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:456ff1ed2f844d44be33429becfb6175252399d1f97507972ab02146a6b694b2"}, + {file = "ddtrace-2.15.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0872179e321986b7b67c6192469fdfe6b394c08e86852d21907ff8d7f1c212d5"}, + {file = "ddtrace-2.15.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4125abc8a11add44c15a5f57f71e25fd5dca02af5696ec49336ec8ad9c11b15e"}, + {file = "ddtrace-2.15.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0363c2aaf59b0421ed3717989c65f8104e95c2007a656333f9cccd2f10d310a1"}, + {file = "ddtrace-2.15.0-cp312-cp312-win32.whl", hash = "sha256:d7c48d8532ff54e6ce9dd9ff018390cbca2b8bb17d2c9dc190fafdd397ce5395"}, + {file = "ddtrace-2.15.0-cp312-cp312-win_amd64.whl", hash = "sha256:ad891608cbe28749600ddd279cb48aec8b756a87152405fac7e625e535cf0a53"}, + {file = "ddtrace-2.15.0-cp37-cp37m-macosx_12_0_x86_64.whl", hash = "sha256:5a41317eefd81ba33a779b96841508727791ee70c02d39bdaf90815a4c008c93"}, + {file = "ddtrace-2.15.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7b89cf3b05fd858586651dc9db0037345c82bcd57369259620ea0681c56dcdf2"}, + {file = "ddtrace-2.15.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:24091734498774cf733611904d5619c07753c4fcc97e3fd52ff0716b74bc1aeb"}, + {file = "ddtrace-2.15.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ddbae2ebcc54cfbd9c8fa58555e7f74ee290ff2aa4ade3b3832b48e5426402c"}, + {file = "ddtrace-2.15.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:a137e538166c195dd2f2052860c5798c5cfdba87c6113eab8b86d34810a1d938"}, + {file = "ddtrace-2.15.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:23339bf3f6ba951cbfedbe6b126c66241872d699fc2a34e5e73c5f90f496755d"}, + {file = "ddtrace-2.15.0-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:15e2a0edb5ca42b56ee1be36183c11148884e97a8dacb1f7fe7dedd3d68fd423"}, + {file = "ddtrace-2.15.0-cp37-cp37m-win32.whl", hash = "sha256:74a0ea0e109171274728a6820b4476fbe33224a6e8e46d600f572fb8fcd93af8"}, + {file = "ddtrace-2.15.0-cp37-cp37m-win_amd64.whl", hash = "sha256:edf49f1c4dd975cf44e8f6fc33442e78f2c356bdca59edc8df0c0294238dbb9f"}, + {file = "ddtrace-2.15.0-cp38-cp38-macosx_12_0_universal2.whl", hash = "sha256:970271047fccaed427e6b8d23904e530377338de2fdef7e81ce643eae23e022b"}, + {file = "ddtrace-2.15.0-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:656e92c4be00ffffea588541999151131af225aa73c28ce208fb280f2bdcc559"}, + {file = "ddtrace-2.15.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4f665047da8e23b5d94cb7aabdb9176240e2108ac2f0e034677ce81be2372729"}, + {file = "ddtrace-2.15.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9a59d17228af3eb1f7f9ef8a08f20f0485628f1b2b9e104811e3182bab982ed9"}, + {file = "ddtrace-2.15.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f4c8271621eeaee5b4f30e8dd03f61de1bbca30cfd0da7ad57dd468ff46bbb6"}, + {file = "ddtrace-2.15.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:830471742c76fc77412e432c4d396318c0146e7f9dc8cb24a03043cf956bb034"}, + {file = "ddtrace-2.15.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:db7520b1234fcc78c12323ddb436703100754524607a104459f0063c343418e3"}, + {file = "ddtrace-2.15.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:490e34dd2ff15b08856c9b496cad3ffa0f3a1ad3501c21d0541acd0eb27f6603"}, + {file = "ddtrace-2.15.0-cp38-cp38-win32.whl", hash = "sha256:b0202d9e2ea76d9004dc25f09cc80e861ef2c8ded36179496db5a910be67665f"}, + {file = "ddtrace-2.15.0-cp38-cp38-win_amd64.whl", hash = "sha256:a996c2965f8533596e0c873eba26b68272e494127b5acb07f8040f3a5d906fbe"}, + {file = "ddtrace-2.15.0-cp39-cp39-macosx_12_0_universal2.whl", hash = "sha256:87307d9d55b786c67eebec93274cfeed9326c2608161ad9202dee7da4a6ef9a5"}, + {file = "ddtrace-2.15.0-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:181de5041b0490e70a294f0e6c5014bb9bdba7e31cf031f13f2c21687088a3d0"}, + {file = "ddtrace-2.15.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8564cbab6571e396d11d7876f34fb99faa5d68ce38774f92825dd1c76001fca"}, + {file = "ddtrace-2.15.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4af2510ce33adf71235c2d80873afa093d1f360976969cdd068c08c86692b253"}, + {file = "ddtrace-2.15.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:588d5eda7bfa9eb8296af86c089f8b7ec2e4e641e5af1e46d1204115b376d7ee"}, + {file = "ddtrace-2.15.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0653b483c55cac027e0fe2fd4e0cadcad966bc8b0d3d1a90b0ef820cad8d8d27"}, + {file = "ddtrace-2.15.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:856222d9237ba6281f39b242e1e840b0434c2008e91c27cb2a7cb3cf0d32fc94"}, + {file = "ddtrace-2.15.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:90da30ee34163fd85a7f021244cd0282905e50d6651a176d4f8a886e2fad5a21"}, + {file = "ddtrace-2.15.0-cp39-cp39-win32.whl", hash = "sha256:38d184fff1fb1d65d61ae7594d364e1acfd57b50fa2e0ce62096959b2c61c316"}, + {file = "ddtrace-2.15.0-cp39-cp39-win_amd64.whl", hash = "sha256:b635d086070fd34548de7bb72f2537243415259db7ed97bbe9f4515172dec0ad"}, + {file = "ddtrace-2.15.0.tar.gz", hash = "sha256:45101c2fa0db8eb67516a66f6cd8ac77a624c3736389d8b75fce0273af4d2e97"}, ] [package.dependencies] @@ -295,13 +310,13 @@ dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "sphinx (<2)", "tox"] [[package]] name = "envier" -version = "0.5.2" +version = "0.6.1" description = "Python application configuration via the environment" optional = false python-versions = ">=3.7" files = [ - {file = "envier-0.5.2-py3-none-any.whl", hash = "sha256:65099cf3aa9b3b3b4b92db2f7d29e2910672e085b76f7e587d2167561a834add"}, - {file = "envier-0.5.2.tar.gz", hash = "sha256:4e7e398cb09a8dd360508ef7e12511a152355426d2544b8487a34dad27cc20ad"}, + {file = "envier-0.6.1-py3-none-any.whl", hash = "sha256:73609040a76be48bbcb97074d9969666484aa0de706183a6e9ef773156a8a6a9"}, + {file = "envier-0.6.1.tar.gz", hash = "sha256:3309a01bb3d8850c9e7a31a5166d5a836846db2faecb79b9cb32654dd50ca9f9"}, ] [package.extras] @@ -446,22 +461,22 @@ testing = ["pytest", "pytest-benchmark"] [[package]] name = "protobuf" -version = "5.28.2" +version = "5.28.3" description = "" optional = false python-versions = ">=3.8" files = [ - {file = "protobuf-5.28.2-cp310-abi3-win32.whl", hash = "sha256:eeea10f3dc0ac7e6b4933d32db20662902b4ab81bf28df12218aa389e9c2102d"}, - {file = "protobuf-5.28.2-cp310-abi3-win_amd64.whl", hash = "sha256:2c69461a7fcc8e24be697624c09a839976d82ae75062b11a0972e41fd2cd9132"}, - {file = "protobuf-5.28.2-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:a8b9403fc70764b08d2f593ce44f1d2920c5077bf7d311fefec999f8c40f78b7"}, - {file = "protobuf-5.28.2-cp38-abi3-manylinux2014_aarch64.whl", hash = "sha256:35cfcb15f213449af7ff6198d6eb5f739c37d7e4f1c09b5d0641babf2cc0c68f"}, - {file = "protobuf-5.28.2-cp38-abi3-manylinux2014_x86_64.whl", hash = "sha256:5e8a95246d581eef20471b5d5ba010d55f66740942b95ba9b872d918c459452f"}, - {file = "protobuf-5.28.2-cp38-cp38-win32.whl", hash = "sha256:87317e9bcda04a32f2ee82089a204d3a2f0d3c8aeed16568c7daf4756e4f1fe0"}, - {file = "protobuf-5.28.2-cp38-cp38-win_amd64.whl", hash = "sha256:c0ea0123dac3399a2eeb1a1443d82b7afc9ff40241433296769f7da42d142ec3"}, - {file = "protobuf-5.28.2-cp39-cp39-win32.whl", hash = "sha256:ca53faf29896c526863366a52a8f4d88e69cd04ec9571ed6082fa117fac3ab36"}, - {file = "protobuf-5.28.2-cp39-cp39-win_amd64.whl", hash = "sha256:8ddc60bf374785fb7cb12510b267f59067fa10087325b8e1855b898a0d81d276"}, - {file = "protobuf-5.28.2-py3-none-any.whl", hash = "sha256:52235802093bd8a2811abbe8bf0ab9c5f54cca0a751fdd3f6ac2a21438bffece"}, - {file = "protobuf-5.28.2.tar.gz", hash = "sha256:59379674ff119717404f7454647913787034f03fe7049cbef1d74a97bb4593f0"}, + {file = "protobuf-5.28.3-cp310-abi3-win32.whl", hash = "sha256:0c4eec6f987338617072592b97943fdbe30d019c56126493111cf24344c1cc24"}, + {file = "protobuf-5.28.3-cp310-abi3-win_amd64.whl", hash = "sha256:91fba8f445723fcf400fdbe9ca796b19d3b1242cd873907979b9ed71e4afe868"}, + {file = "protobuf-5.28.3-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:a3f6857551e53ce35e60b403b8a27b0295f7d6eb63d10484f12bc6879c715687"}, + {file = "protobuf-5.28.3-cp38-abi3-manylinux2014_aarch64.whl", hash = "sha256:3fa2de6b8b29d12c61911505d893afe7320ce7ccba4df913e2971461fa36d584"}, + {file = "protobuf-5.28.3-cp38-abi3-manylinux2014_x86_64.whl", hash = "sha256:712319fbdddb46f21abb66cd33cb9e491a5763b2febd8f228251add221981135"}, + {file = "protobuf-5.28.3-cp38-cp38-win32.whl", hash = "sha256:3e6101d095dfd119513cde7259aa703d16c6bbdfae2554dfe5cfdbe94e32d548"}, + {file = "protobuf-5.28.3-cp38-cp38-win_amd64.whl", hash = "sha256:27b246b3723692bf1068d5734ddaf2fccc2cdd6e0c9b47fe099244d80200593b"}, + {file = "protobuf-5.28.3-cp39-cp39-win32.whl", hash = "sha256:135658402f71bbd49500322c0f736145731b16fc79dc8f367ab544a17eab4535"}, + {file = "protobuf-5.28.3-cp39-cp39-win_amd64.whl", hash = "sha256:70585a70fc2dd4818c51287ceef5bdba6387f88a578c86d47bb34669b5552c36"}, + {file = "protobuf-5.28.3-py3-none-any.whl", hash = "sha256:cee1757663fa32a1ee673434fcf3bf24dd54763c79690201208bafec62f19eed"}, + {file = "protobuf-5.28.3.tar.gz", hash = "sha256:64badbc49180a5e401f373f9ce7ab1d18b63f7dd4a9cdc43c92b9f0b481cef7b"}, ] [[package]] @@ -576,13 +591,13 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] [[package]] name = "s3transfer" -version = "0.10.2" +version = "0.10.3" description = "An Amazon S3 Transfer Manager" optional = true python-versions = ">=3.8" files = [ - {file = "s3transfer-0.10.2-py3-none-any.whl", hash = "sha256:eca1c20de70a39daee580aef4986996620f365c4e0fda6a86100231d62f1bf69"}, - {file = "s3transfer-0.10.2.tar.gz", hash = "sha256:0711534e9356d3cc692fdde846b4a1e4b0cb6519971860796e6bc4c7aea00ef6"}, + {file = "s3transfer-0.10.3-py3-none-any.whl", hash = "sha256:263ed587a5803c6c708d3ce44dc4dfedaab4c1a32e8329bab818933d79ddcf5d"}, + {file = "s3transfer-0.10.3.tar.gz", hash = "sha256:4f50ed74ab84d474ce614475e0b8d5047ff080810aac5d01ea25231cfc944b0c"}, ] [package.dependencies] @@ -825,13 +840,13 @@ files = [ [[package]] name = "xmltodict" -version = "0.13.0" +version = "0.14.2" description = "Makes working with XML feel like you are working with JSON" optional = false -python-versions = ">=3.4" +python-versions = ">=3.6" files = [ - {file = "xmltodict-0.13.0-py2.py3-none-any.whl", hash = "sha256:aa89e8fd76320154a40d19a0df04a4695fb9dc5ba977cbb68ab3e4eb225e7852"}, - {file = "xmltodict-0.13.0.tar.gz", hash = "sha256:341595a488e3e01a85a9d8911d8912fd922ede5fecc4dce437eb4b6c8d037e56"}, + {file = "xmltodict-0.14.2-py2.py3-none-any.whl", hash = "sha256:20cc7d723ed729276e808f26fb6b3599f786cbc37e06c65e192ba77c40f20aac"}, + {file = "xmltodict-0.14.2.tar.gz", hash = "sha256:201e7c28bb210e374999d1dde6382923ab0ed1a8a5faeece48ab525b7810a553"}, ] [[package]] @@ -859,4 +874,4 @@ dev = ["boto3", "flake8", "pytest", "pytest-benchmark", "requests"] [metadata] lock-version = "2.0" python-versions = ">=3.8.0,<4" -content-hash = "46554f78374b2b0f1d4ea85f984b2a35ffe481f981c360c2f16d534d6c9eb660" +content-hash = "10fb256b161b7afe015b278c9c937cfbf4f5c53227455ded8251ae62d5f6c587" diff --git a/pyproject.toml b/pyproject.toml index 396b731e..3dab65a7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -27,7 +27,7 @@ classifiers = [ python = ">=3.8.0,<4" datadog = ">=0.41.0,<1.0.0" wrapt = "^1.11.2" -ddtrace = ">=2.14.1" +ddtrace = ">=2.15.0" ujson = ">=5.9.0" boto3 = { version = "^1.34.0", optional = true } requests = { version ="^2.22.0", optional = true } diff --git a/tests/Dockerfile b/tests/Dockerfile index 948de1bc..7b96ab89 100644 --- a/tests/Dockerfile +++ b/tests/Dockerfile @@ -3,6 +3,11 @@ FROM python:$python_version ENV PYTHONDONTWRITEBYTECODE True +# Add Rust compiler which is needed to build dd-trace-py from source +RUN curl https://sh.rustup.rs -sSf | \ + sh -s -- --default-toolchain stable -y +ENV PATH=/root/.cargo/bin:$PATH + RUN mkdir -p /test/datadog_lambda WORKDIR /test diff --git a/tests/integration/snapshots/logs/async-metrics_python310.log b/tests/integration/snapshots/logs/async-metrics_python310.log index 40c23c68..b3b94ca4 100644 --- a/tests/integration/snapshots/logs/async-metrics_python310.log +++ b/tests/integration/snapshots/logs/async-metrics_python310.log @@ -279,7 +279,39 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "metrics": { "_dd.top_level": 1 }, - "type": "serverless" + "type": "serverless", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + }, + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + }, + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + } + ] }, { "trace_id": "XXXX", @@ -942,7 +974,19 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "metrics": { "_dd.top_level": 1 }, - "type": "serverless" + "type": "serverless", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.s3.object", + "ptr.dir": "u", + "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", + "link.kind": "span-pointer" + } + } + ] }, { "trace_id": "XXXX", diff --git a/tests/integration/snapshots/logs/async-metrics_python311.log b/tests/integration/snapshots/logs/async-metrics_python311.log index f1f12db4..5ea440b3 100644 --- a/tests/integration/snapshots/logs/async-metrics_python311.log +++ b/tests/integration/snapshots/logs/async-metrics_python311.log @@ -279,7 +279,39 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "metrics": { "_dd.top_level": 1 }, - "type": "serverless" + "type": "serverless", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + }, + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + }, + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + } + ] }, { "trace_id": "XXXX", @@ -942,7 +974,19 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "metrics": { "_dd.top_level": 1 }, - "type": "serverless" + "type": "serverless", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.s3.object", + "ptr.dir": "u", + "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", + "link.kind": "span-pointer" + } + } + ] }, { "trace_id": "XXXX", diff --git a/tests/integration/snapshots/logs/async-metrics_python312.log b/tests/integration/snapshots/logs/async-metrics_python312.log index 3bc69cca..ceaaa759 100644 --- a/tests/integration/snapshots/logs/async-metrics_python312.log +++ b/tests/integration/snapshots/logs/async-metrics_python312.log @@ -279,7 +279,39 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "metrics": { "_dd.top_level": 1 }, - "type": "serverless" + "type": "serverless", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + }, + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + }, + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + } + ] }, { "trace_id": "XXXX", @@ -942,7 +974,19 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "metrics": { "_dd.top_level": 1 }, - "type": "serverless" + "type": "serverless", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.s3.object", + "ptr.dir": "u", + "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", + "link.kind": "span-pointer" + } + } + ] }, { "trace_id": "XXXX", diff --git a/tests/integration/snapshots/logs/async-metrics_python38.log b/tests/integration/snapshots/logs/async-metrics_python38.log index fdc6b192..3ce5c99d 100644 --- a/tests/integration/snapshots/logs/async-metrics_python38.log +++ b/tests/integration/snapshots/logs/async-metrics_python38.log @@ -279,7 +279,39 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "metrics": { "_dd.top_level": 1 }, - "type": "serverless" + "type": "serverless", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + }, + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + }, + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + } + ] }, { "trace_id": "XXXX", @@ -942,7 +974,19 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "metrics": { "_dd.top_level": 1 }, - "type": "serverless" + "type": "serverless", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.s3.object", + "ptr.dir": "u", + "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", + "link.kind": "span-pointer" + } + } + ] }, { "trace_id": "XXXX", diff --git a/tests/integration/snapshots/logs/async-metrics_python39.log b/tests/integration/snapshots/logs/async-metrics_python39.log index c6c68290..ede453ff 100644 --- a/tests/integration/snapshots/logs/async-metrics_python39.log +++ b/tests/integration/snapshots/logs/async-metrics_python39.log @@ -279,7 +279,39 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "metrics": { "_dd.top_level": 1 }, - "type": "serverless" + "type": "serverless", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + }, + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + }, + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + } + ] }, { "trace_id": "XXXX", @@ -942,7 +974,19 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "metrics": { "_dd.top_level": 1 }, - "type": "serverless" + "type": "serverless", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.s3.object", + "ptr.dir": "u", + "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", + "link.kind": "span-pointer" + } + } + ] }, { "trace_id": "XXXX", diff --git a/tests/integration/snapshots/logs/sync-metrics_python310.log b/tests/integration/snapshots/logs/sync-metrics_python310.log index 5d9262ce..540ce081 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python310.log +++ b/tests/integration/snapshots/logs/sync-metrics_python310.log @@ -278,7 +278,39 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "metrics": { "_dd.top_level": 1 }, - "type": "serverless" + "type": "serverless", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + }, + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + }, + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + } + ] }, { "trace_id": "XXXX", @@ -1017,7 +1049,19 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "metrics": { "_dd.top_level": 1 }, - "type": "serverless" + "type": "serverless", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.s3.object", + "ptr.dir": "u", + "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", + "link.kind": "span-pointer" + } + } + ] }, { "trace_id": "XXXX", diff --git a/tests/integration/snapshots/logs/sync-metrics_python311.log b/tests/integration/snapshots/logs/sync-metrics_python311.log index e93a4d0e..68b930db 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python311.log +++ b/tests/integration/snapshots/logs/sync-metrics_python311.log @@ -278,7 +278,39 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "metrics": { "_dd.top_level": 1 }, - "type": "serverless" + "type": "serverless", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + }, + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + }, + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + } + ] }, { "trace_id": "XXXX", @@ -1017,7 +1049,19 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "metrics": { "_dd.top_level": 1 }, - "type": "serverless" + "type": "serverless", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.s3.object", + "ptr.dir": "u", + "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", + "link.kind": "span-pointer" + } + } + ] }, { "trace_id": "XXXX", diff --git a/tests/integration/snapshots/logs/sync-metrics_python312.log b/tests/integration/snapshots/logs/sync-metrics_python312.log index c912cede..9e4d916e 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python312.log +++ b/tests/integration/snapshots/logs/sync-metrics_python312.log @@ -278,7 +278,39 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "metrics": { "_dd.top_level": 1 }, - "type": "serverless" + "type": "serverless", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + }, + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + }, + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + } + ] }, { "trace_id": "XXXX", @@ -1017,7 +1049,19 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "metrics": { "_dd.top_level": 1 }, - "type": "serverless" + "type": "serverless", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.s3.object", + "ptr.dir": "u", + "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", + "link.kind": "span-pointer" + } + } + ] }, { "trace_id": "XXXX", diff --git a/tests/integration/snapshots/logs/sync-metrics_python38.log b/tests/integration/snapshots/logs/sync-metrics_python38.log index 74a1e06b..6c7b3c50 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python38.log +++ b/tests/integration/snapshots/logs/sync-metrics_python38.log @@ -278,7 +278,39 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "metrics": { "_dd.top_level": 1 }, - "type": "serverless" + "type": "serverless", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + }, + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + }, + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + } + ] }, { "trace_id": "XXXX", @@ -1017,7 +1049,19 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "metrics": { "_dd.top_level": 1 }, - "type": "serverless" + "type": "serverless", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.s3.object", + "ptr.dir": "u", + "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", + "link.kind": "span-pointer" + } + } + ] }, { "trace_id": "XXXX", diff --git a/tests/integration/snapshots/logs/sync-metrics_python39.log b/tests/integration/snapshots/logs/sync-metrics_python39.log index 19f0e84c..26db0d4b 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python39.log +++ b/tests/integration/snapshots/logs/sync-metrics_python39.log @@ -278,7 +278,39 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "metrics": { "_dd.top_level": 1 }, - "type": "serverless" + "type": "serverless", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + }, + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + }, + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + } + ] }, { "trace_id": "XXXX", @@ -1017,7 +1049,19 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "metrics": { "_dd.top_level": 1 }, - "type": "serverless" + "type": "serverless", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.s3.object", + "ptr.dir": "u", + "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", + "link.kind": "span-pointer" + } + } + ] }, { "trace_id": "XXXX", diff --git a/tests/test_span_pointers.py b/tests/test_span_pointers.py index f8181d44..8073a704 100644 --- a/tests/test_span_pointers.py +++ b/tests/test_span_pointers.py @@ -80,6 +80,67 @@ class SpanPointersCase(NamedTuple): }, span_pointers=[], ), + SpanPointersCase( + name="empty dynamodb event", + event_source=_EventSource(EventTypes.DYNAMODB), + event={}, + span_pointers=[], + ), + SpanPointersCase( + name="sensible dynamodb event", + event_source=_EventSource(EventTypes.DYNAMODB), + event={ + "Records": [ + { + "eventSourceARN": "arn:aws:dynamodb:us-west-2:123456789012:table/some-table/stream/2015-06-27T00:48:05.899", + "dynamodb": { + "Keys": { + "some-key": {"S": "some-value"}, + }, + }, + }, + { + "eventSourceARN": "arn:aws:dynamodb:us-west-2:123456789012:table/some-table/stream/2015-06-27T00:48:05.899", + "dynamodb": { + "Keys": { + "some-key": {"S": "some-other-value"}, + }, + }, + }, + ], + }, + span_pointers=[ + _SpanPointerDescription( + pointer_kind="aws.dynamodb.item", + pointer_direction=_SpanPointerDirection.UPSTREAM, + pointer_hash="7f1aee721472bcb48701d45c7c7f7821", + extra_attributes={}, + ), + _SpanPointerDescription( + pointer_kind="aws.dynamodb.item", + pointer_direction=_SpanPointerDirection.UPSTREAM, + pointer_hash="36b820424312a6069bd3f2185f1af584", + extra_attributes={}, + ), + ], + ), + SpanPointersCase( + name="malformed dynamodb event", + event_source=_EventSource(EventTypes.DYNAMODB), + event={ + "Records": [ + { + "eventSourceARN": "arn:aws:dynamodb:us-west-2:123456789012:table/some-table", # missing stream info + "dynamodb": { + "Keys": { + "some-key": {"S": "some-value"}, + }, + }, + }, + ], + }, + span_pointers=[], + ), ], ids=lambda test_case: test_case.name, ) From 59e6e7c01019a80f3cb425c1c75ae58b404db6b5 Mon Sep 17 00:00:00 2001 From: Nicholas Hulston Date: Thu, 31 Oct 2024 09:15:11 -0400 Subject: [PATCH 162/268] Fix lossiness when submitting timestamped custom metrics (#527) --- datadog_lambda/thread_stats_writer.py | 8 +++- tests/test_metric.py | 68 ++++++++++++++++++++++++--- 2 files changed, 69 insertions(+), 7 deletions(-) diff --git a/datadog_lambda/thread_stats_writer.py b/datadog_lambda/thread_stats_writer.py index 367b8b21..422a9a0a 100644 --- a/datadog_lambda/thread_stats_writer.py +++ b/datadog_lambda/thread_stats_writer.py @@ -27,8 +27,11 @@ def flush(self, tags=None): Modified based on `datadog.threadstats.base.ThreadStats.flush()`, to gain better control over exception handling. """ + original_constant_tags = self.thread_stats.constant_tags.copy() if tags: - self.thread_stats.constant_tags = self.thread_stats.constant_tags + tags + # Temporarily add tags for this flush + self.thread_stats.constant_tags = original_constant_tags + tags + _, dists = self.thread_stats._get_aggregate_metrics_and_dists(float("inf")) count_dists = len(dists) if not count_dists: @@ -62,6 +65,9 @@ def flush(self, tags=None): logger.debug( "Flush #%s failed", self.thread_stats.flush_count, exc_info=True ) + finally: + # Reset constant_tags to its original state + self.thread_stats.constant_tags = original_constant_tags def stop(self): self.thread_stats.stop() diff --git a/tests/test_metric.py b/tests/test_metric.py index 241f563b..345740a4 100644 --- a/tests/test_metric.py +++ b/tests/test_metric.py @@ -119,13 +119,69 @@ def test_retry_on_remote_disconnected(self): def test_flush_stats_with_tags(self): lambda_stats = ThreadStatsWriter(True) + original_constant_tags = lambda_stats.thread_stats.constant_tags.copy() tags = ["tag1:value1", "tag2:value2"] - lambda_stats.flush(tags) - self.mock_threadstats_flush_distributions.assert_called_once_with( - lambda_stats.thread_stats._get_aggregate_metrics_and_dists(float("inf"))[1] - ) - for tag in tags: - self.assertTrue(tag in lambda_stats.thread_stats.constant_tags) + + # Add a metric to be flushed + lambda_stats.distribution("test.metric", 1, tags=["metric:tag"]) + + with patch.object( + lambda_stats.thread_stats.reporter, "flush_distributions" + ) as mock_flush_distributions: + lambda_stats.flush(tags) + mock_flush_distributions.assert_called_once() + # Verify that after flush, constant_tags is reset to original + self.assertEqual( + lambda_stats.thread_stats.constant_tags, original_constant_tags + ) + + def test_flush_temp_constant_tags(self): + lambda_stats = ThreadStatsWriter(flush_in_thread=True) + lambda_stats.thread_stats.constant_tags = ["initial:tag"] + original_constant_tags = lambda_stats.thread_stats.constant_tags.copy() + + lambda_stats.distribution("test.metric", 1, tags=["metric:tag"]) + flush_tags = ["flush:tag1", "flush:tag2"] + + with patch.object( + lambda_stats.thread_stats.reporter, "flush_distributions" + ) as mock_flush_distributions: + lambda_stats.flush(tags=flush_tags) + mock_flush_distributions.assert_called_once() + flushed_dists = mock_flush_distributions.call_args[0][0] + + # Expected tags: original constant_tags + flush_tags + metric tags + expected_tags = original_constant_tags + flush_tags + ["metric:tag"] + + # Verify the tags on the metric + self.assertEqual(len(flushed_dists), 1) + metric = flushed_dists[0] + self.assertEqual(sorted(metric["tags"]), sorted(expected_tags)) + + # Verify that constant_tags is reset after flush + self.assertEqual( + lambda_stats.thread_stats.constant_tags, original_constant_tags + ) + + # Repeat to ensure tags do not accumulate over multiple flushes + new_flush_tags = ["flush:tag3"] + lambda_stats.distribution("test.metric2", 2, tags=["metric2:tag"]) + + with patch.object( + lambda_stats.thread_stats.reporter, "flush_distributions" + ) as mock_flush_distributions: + lambda_stats.flush(tags=new_flush_tags) + mock_flush_distributions.assert_called_once() + flushed_dists = mock_flush_distributions.call_args[0][0] + # Expected tags for the new metric + expected_tags = original_constant_tags + new_flush_tags + ["metric2:tag"] + + self.assertEqual(len(flushed_dists), 1) + metric = flushed_dists[0] + self.assertEqual(sorted(metric["tags"]), sorted(expected_tags)) + self.assertEqual( + lambda_stats.thread_stats.constant_tags, original_constant_tags + ) def test_flush_stats_without_context(self): flush_stats(lambda_context=None) From f15a6dc6375b31761483636fefb069ff122ababd Mon Sep 17 00:00:00 2001 From: Aleksandr Pasechnik Date: Thu, 31 Oct 2024 16:08:42 -0400 Subject: [PATCH 163/268] v6.100.0 (#530) * v6.100.0 * chore: also update version.py --- datadog_lambda/version.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index 54fd99d2..1357787d 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "6.99.0" +__version__ = "6.100.0" diff --git a/pyproject.toml b/pyproject.toml index 3dab65a7..c31f8f5f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "6.99.0" +version = "6.100.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 2cda2089688c181f70381acfc5294d763920762d Mon Sep 17 00:00:00 2001 From: Aleksandr Pasechnik Date: Mon, 4 Nov 2024 12:07:31 -0500 Subject: [PATCH 164/268] chore: move aws span pointer helper imports (#529) --- datadog_lambda/span_pointers.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/datadog_lambda/span_pointers.py b/datadog_lambda/span_pointers.py index 669257bd..d5c8bde7 100644 --- a/datadog_lambda/span_pointers.py +++ b/datadog_lambda/span_pointers.py @@ -2,12 +2,6 @@ import logging from typing import List -from ddtrace._trace.utils_botocore.span_pointers.dynamodb import ( - _aws_dynamodb_item_span_pointer_description, -) -from ddtrace._trace.utils_botocore.span_pointers.s3 import ( - _aws_s3_object_span_pointer_description, -) from ddtrace._trace._span_pointer import _SpanPointerDirection from ddtrace._trace._span_pointer import _SpanPointerDescription from datadog_lambda.trigger import EventTypes @@ -80,6 +74,10 @@ def _calculate_s3_span_pointers_for_object_created_s3_information( return [] try: + from ddtrace._trace.utils_botocore.span_pointers.s3 import ( + _aws_s3_object_span_pointer_description, + ) + return [ _aws_s3_object_span_pointer_description( pointer_direction=_SpanPointerDirection.UPSTREAM, @@ -124,6 +122,10 @@ def _calculate_dynamodb_span_pointers_for_event_record( return [] try: + from ddtrace._trace.utils_botocore.span_pointers.dynamodb import ( + _aws_dynamodb_item_span_pointer_description, + ) + return [ _aws_dynamodb_item_span_pointer_description( pointer_direction=_SpanPointerDirection.UPSTREAM, From ea0a09efbdc95813b1760b1b388cac7dcff1985a Mon Sep 17 00:00:00 2001 From: Aleksandr Pasechnik Date: Mon, 4 Nov 2024 14:28:14 -0500 Subject: [PATCH 165/268] feat: [SVLS-5765] use DD_BOTOCORE_ADD_SPAN_POINTERS (#531) --- datadog_lambda/span_pointers.py | 16 ++++++++++++---- tests/test_span_pointers.py | 33 ++++++++++++++++++++++++++++++++- 2 files changed, 44 insertions(+), 5 deletions(-) diff --git a/datadog_lambda/span_pointers.py b/datadog_lambda/span_pointers.py index d5c8bde7..86c9e60b 100644 --- a/datadog_lambda/span_pointers.py +++ b/datadog_lambda/span_pointers.py @@ -1,5 +1,6 @@ from itertools import chain import logging +import os from typing import List from ddtrace._trace._span_pointer import _SpanPointerDirection @@ -10,16 +11,23 @@ logger = logging.getLogger(__name__) +dd_botocore_add_span_pointers = os.environ.get( + "DD_BOTOCORE_ADD_SPAN_POINTERS", "true" +).lower() in ("true", "1") + + def calculate_span_pointers( event_source, event, + botocore_add_span_pointers=dd_botocore_add_span_pointers, ) -> List[_SpanPointerDescription]: try: - if event_source.equals(EventTypes.S3): - return _calculate_s3_span_pointers_for_event(event) + if botocore_add_span_pointers: + if event_source.equals(EventTypes.S3): + return _calculate_s3_span_pointers_for_event(event) - elif event_source.equals(EventTypes.DYNAMODB): - return _calculate_dynamodb_span_pointers_for_event(event) + elif event_source.equals(EventTypes.DYNAMODB): + return _calculate_dynamodb_span_pointers_for_event(event) except Exception as e: logger.warning( diff --git a/tests/test_span_pointers.py b/tests/test_span_pointers.py index 8073a704..f4cd1b26 100644 --- a/tests/test_span_pointers.py +++ b/tests/test_span_pointers.py @@ -14,6 +14,7 @@ class SpanPointersCase(NamedTuple): name: str event_source: _EventSource event: dict + dd_botocore_span_pointers: bool span_pointers: List[_SpanPointerDescription] @pytest.mark.parametrize( @@ -23,12 +24,14 @@ class SpanPointersCase(NamedTuple): name="some unsupported event", event_source=_EventSource(EventTypes.UNKNOWN), event={}, + dd_botocore_span_pointers=True, span_pointers=[], ), SpanPointersCase( name="empty s3 event", event_source=_EventSource(EventTypes.S3), event={}, + dd_botocore_span_pointers=True, span_pointers=[], ), SpanPointersCase( @@ -50,6 +53,7 @@ class SpanPointersCase(NamedTuple): }, ], }, + dd_botocore_span_pointers=True, span_pointers=[ _SpanPointerDescription( pointer_kind="aws.s3.object", @@ -59,6 +63,28 @@ class SpanPointersCase(NamedTuple): ), ], ), + SpanPointersCase( + name="sensible s3 event with dd_botocore_span_pointers disabled", + event_source=_EventSource(EventTypes.S3), + event={ + "Records": [ + { + "eventName": "ObjectCreated:Put", + "s3": { + "bucket": { + "name": "mybucket", + }, + "object": { + "key": "mykey", + "eTag": "123abc", + }, + }, + }, + ], + }, + dd_botocore_span_pointers=False, + span_pointers=[], + ), SpanPointersCase( name="malformed s3 event", event_source=_EventSource(EventTypes.S3), @@ -78,12 +104,14 @@ class SpanPointersCase(NamedTuple): }, ], }, + dd_botocore_span_pointers=True, span_pointers=[], ), SpanPointersCase( name="empty dynamodb event", event_source=_EventSource(EventTypes.DYNAMODB), event={}, + dd_botocore_span_pointers=True, span_pointers=[], ), SpanPointersCase( @@ -109,6 +137,7 @@ class SpanPointersCase(NamedTuple): }, ], }, + dd_botocore_span_pointers=True, span_pointers=[ _SpanPointerDescription( pointer_kind="aws.dynamodb.item", @@ -139,16 +168,18 @@ class SpanPointersCase(NamedTuple): }, ], }, + dd_botocore_span_pointers=True, span_pointers=[], ), ], ids=lambda test_case: test_case.name, ) - def test_calculate_span_pointers(self, test_case: SpanPointersCase): + def test_calculate_span_pointers(self, test_case: SpanPointersCase) -> None: assert ( calculate_span_pointers( test_case.event_source, test_case.event, + botocore_add_span_pointers=test_case.dd_botocore_span_pointers, ) == test_case.span_pointers ) From 3e92292b587d2f51f9943a294cae3fc166d4eddb Mon Sep 17 00:00:00 2001 From: Aleksandr Pasechnik Date: Tue, 5 Nov 2024 13:27:35 -0500 Subject: [PATCH 166/268] chore: upgrade dd-trace-py to 2.16.0 (#534) --- poetry.lock | 138 ++++++++++++++++++++++++------------------------- pyproject.toml | 2 +- 2 files changed, 70 insertions(+), 70 deletions(-) diff --git a/poetry.lock b/poetry.lock index c87fea84..a0ba70c8 100644 --- a/poetry.lock +++ b/poetry.lock @@ -2,17 +2,17 @@ [[package]] name = "boto3" -version = "1.35.51" +version = "1.35.54" description = "The AWS SDK for Python" optional = true python-versions = ">=3.8" files = [ - {file = "boto3-1.35.51-py3-none-any.whl", hash = "sha256:c922f6a18958af9d8af0489d6d8503b517029d8159b26aa4859a8294561c72e9"}, - {file = "boto3-1.35.51.tar.gz", hash = "sha256:a57c6c7012ecb40c43e565a6f7a891f39efa990ff933eab63cd456f7501c2731"}, + {file = "boto3-1.35.54-py3-none-any.whl", hash = "sha256:2d5e160b614db55fbee7981001c54476cb827c441cef65b2fcb2c52a62019909"}, + {file = "boto3-1.35.54.tar.gz", hash = "sha256:7d9c359bbbc858a60b51c86328db813353c8bd1940212cdbd0a7da835291c2e1"}, ] [package.dependencies] -botocore = ">=1.35.51,<1.36.0" +botocore = ">=1.35.54,<1.36.0" jmespath = ">=0.7.1,<2.0.0" s3transfer = ">=0.10.0,<0.11.0" @@ -21,13 +21,13 @@ crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] [[package]] name = "botocore" -version = "1.35.51" +version = "1.35.54" description = "Low-level, data-driven core of boto 3." optional = true python-versions = ">=3.8" files = [ - {file = "botocore-1.35.51-py3-none-any.whl", hash = "sha256:4d65b00111bd12b98e9f920ecab602cf619cc6a6d0be6e5dd53f517e4b92901c"}, - {file = "botocore-1.35.51.tar.gz", hash = "sha256:a9b3d1da76b3e896ad74605c01d88f596324a3337393d4bfbfa0d6c35822ca9c"}, + {file = "botocore-1.35.54-py3-none-any.whl", hash = "sha256:9cca1811094b6cdc144c2c063a3ec2db6d7c88194b04d4277cd34fc8e3473aff"}, + {file = "botocore-1.35.54.tar.gz", hash = "sha256:131bb59ce59c8a939b31e8e647242d70cf11d32d4529fa4dca01feea1e891a76"}, ] [package.dependencies] @@ -207,71 +207,71 @@ requests = ">=2.6.0" [[package]] name = "ddtrace" -version = "2.15.0" +version = "2.16.0" description = "Datadog APM client library" optional = false python-versions = ">=3.7" files = [ - {file = "ddtrace-2.15.0-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:8e95399bcbbef7653329ca34f4ec47b49c8364f90097b781982b41ad39c9d9cc"}, - {file = "ddtrace-2.15.0-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:42f34571041e92f6326819c543d114059ab381a4e73a4f90c803a74aff750421"}, - {file = "ddtrace-2.15.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1e9a043a0c8e4f4ad2ef5820ad5a75e66eff0f10223768a697302c27b0f3fbed"}, - {file = "ddtrace-2.15.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:20706878d973b046a032d7e44b4314f9c6fbf3329942664ca5f4949119625644"}, - {file = "ddtrace-2.15.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:22a51d604d1f647eff82f5ae2a14c924a2164ded3d2217dbf5b2787f2384a11a"}, - {file = "ddtrace-2.15.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:c3ccb04acddf37dcc6458949dbe91a1f230deaf30cf386501c2e6b20986a37bf"}, - {file = "ddtrace-2.15.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6004a1fc48ff6f564d35c790e002bdb7ce39a904126d9d3ce3696b9586ce6ad8"}, - {file = "ddtrace-2.15.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e4a676ddb3c03149545a21d874ae846d3a467dbc37ba253681deecccb5cfae03"}, - {file = "ddtrace-2.15.0-cp310-cp310-win32.whl", hash = "sha256:cfa81e4d7897dd335a79c0c727001797f9a3ffea6c4f1444335fd6bb7694cd97"}, - {file = "ddtrace-2.15.0-cp310-cp310-win_amd64.whl", hash = "sha256:0ad47afc29f66bece98a166e808dc07d197a78098c81546417e0455d3cf10b31"}, - {file = "ddtrace-2.15.0-cp311-cp311-macosx_12_0_universal2.whl", hash = "sha256:8e2da75e5bd550fc04415a2446536a3d31c2c28bbfc44ecb2435058693e71329"}, - {file = "ddtrace-2.15.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:d41abf53aeab1248ef5a4c58366fe5e67522cc1995727724f1c8e3c5acdd0150"}, - {file = "ddtrace-2.15.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:30a8960cc062eabbaf4a37febcf5e68e9984100cd345bce4fa1c65366290d0eb"}, - {file = "ddtrace-2.15.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8fbf939613d2c81bcd04b7d9e854b4391e26b9c21c6b719ecfbdeb19e6c35089"}, - {file = "ddtrace-2.15.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f528fe2d90f2f549ce9ca699b45889b92698005f8d356d54cdff2730ee608798"}, - {file = "ddtrace-2.15.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:721eddd72f5d062a7da5bcd6f9f06010368b75648b6b54661949ee22ee5b0fe5"}, - {file = "ddtrace-2.15.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9d0649f0b3e590e119c63ed553120acaea54e511ee495f4ab7d7c1ef2d2ec778"}, - {file = "ddtrace-2.15.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:7c21f909aec4d666ad08dd26e42afa07ec560e2e157b4abdbec92b9f3ffa2ab4"}, - {file = "ddtrace-2.15.0-cp311-cp311-win32.whl", hash = "sha256:dc0b0d42f96da8f70a5bd64247392c3a10c16e03633098f6ad5fef8894655d6a"}, - {file = "ddtrace-2.15.0-cp311-cp311-win_amd64.whl", hash = "sha256:09953ad48275eb5281c642454d3403db413eb957cb7935d80951580982339831"}, - {file = "ddtrace-2.15.0-cp312-cp312-macosx_12_0_universal2.whl", hash = "sha256:29cc10454b4c3ea25dfd41b008916d37d19b87f18145a47e7a82bb8dce696ba1"}, - {file = "ddtrace-2.15.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:1ecebd2ac49395a58e7649bcb8e2a65055b2edc35a347350cb71c062f2031bf2"}, - {file = "ddtrace-2.15.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7e2e6fa42b99093205dec28f0be320f537ce8e70caca00e61e49d9d0898639e0"}, - {file = "ddtrace-2.15.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a69a43621052a82fa832ca005cc20d1408d94f5822e0a1484a48c94b1fd25654"}, - {file = "ddtrace-2.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:456ff1ed2f844d44be33429becfb6175252399d1f97507972ab02146a6b694b2"}, - {file = "ddtrace-2.15.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0872179e321986b7b67c6192469fdfe6b394c08e86852d21907ff8d7f1c212d5"}, - {file = "ddtrace-2.15.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4125abc8a11add44c15a5f57f71e25fd5dca02af5696ec49336ec8ad9c11b15e"}, - {file = "ddtrace-2.15.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0363c2aaf59b0421ed3717989c65f8104e95c2007a656333f9cccd2f10d310a1"}, - {file = "ddtrace-2.15.0-cp312-cp312-win32.whl", hash = "sha256:d7c48d8532ff54e6ce9dd9ff018390cbca2b8bb17d2c9dc190fafdd397ce5395"}, - {file = "ddtrace-2.15.0-cp312-cp312-win_amd64.whl", hash = "sha256:ad891608cbe28749600ddd279cb48aec8b756a87152405fac7e625e535cf0a53"}, - {file = "ddtrace-2.15.0-cp37-cp37m-macosx_12_0_x86_64.whl", hash = "sha256:5a41317eefd81ba33a779b96841508727791ee70c02d39bdaf90815a4c008c93"}, - {file = "ddtrace-2.15.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7b89cf3b05fd858586651dc9db0037345c82bcd57369259620ea0681c56dcdf2"}, - {file = "ddtrace-2.15.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:24091734498774cf733611904d5619c07753c4fcc97e3fd52ff0716b74bc1aeb"}, - {file = "ddtrace-2.15.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ddbae2ebcc54cfbd9c8fa58555e7f74ee290ff2aa4ade3b3832b48e5426402c"}, - {file = "ddtrace-2.15.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:a137e538166c195dd2f2052860c5798c5cfdba87c6113eab8b86d34810a1d938"}, - {file = "ddtrace-2.15.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:23339bf3f6ba951cbfedbe6b126c66241872d699fc2a34e5e73c5f90f496755d"}, - {file = "ddtrace-2.15.0-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:15e2a0edb5ca42b56ee1be36183c11148884e97a8dacb1f7fe7dedd3d68fd423"}, - {file = "ddtrace-2.15.0-cp37-cp37m-win32.whl", hash = "sha256:74a0ea0e109171274728a6820b4476fbe33224a6e8e46d600f572fb8fcd93af8"}, - {file = "ddtrace-2.15.0-cp37-cp37m-win_amd64.whl", hash = "sha256:edf49f1c4dd975cf44e8f6fc33442e78f2c356bdca59edc8df0c0294238dbb9f"}, - {file = "ddtrace-2.15.0-cp38-cp38-macosx_12_0_universal2.whl", hash = "sha256:970271047fccaed427e6b8d23904e530377338de2fdef7e81ce643eae23e022b"}, - {file = "ddtrace-2.15.0-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:656e92c4be00ffffea588541999151131af225aa73c28ce208fb280f2bdcc559"}, - {file = "ddtrace-2.15.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4f665047da8e23b5d94cb7aabdb9176240e2108ac2f0e034677ce81be2372729"}, - {file = "ddtrace-2.15.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9a59d17228af3eb1f7f9ef8a08f20f0485628f1b2b9e104811e3182bab982ed9"}, - {file = "ddtrace-2.15.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f4c8271621eeaee5b4f30e8dd03f61de1bbca30cfd0da7ad57dd468ff46bbb6"}, - {file = "ddtrace-2.15.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:830471742c76fc77412e432c4d396318c0146e7f9dc8cb24a03043cf956bb034"}, - {file = "ddtrace-2.15.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:db7520b1234fcc78c12323ddb436703100754524607a104459f0063c343418e3"}, - {file = "ddtrace-2.15.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:490e34dd2ff15b08856c9b496cad3ffa0f3a1ad3501c21d0541acd0eb27f6603"}, - {file = "ddtrace-2.15.0-cp38-cp38-win32.whl", hash = "sha256:b0202d9e2ea76d9004dc25f09cc80e861ef2c8ded36179496db5a910be67665f"}, - {file = "ddtrace-2.15.0-cp38-cp38-win_amd64.whl", hash = "sha256:a996c2965f8533596e0c873eba26b68272e494127b5acb07f8040f3a5d906fbe"}, - {file = "ddtrace-2.15.0-cp39-cp39-macosx_12_0_universal2.whl", hash = "sha256:87307d9d55b786c67eebec93274cfeed9326c2608161ad9202dee7da4a6ef9a5"}, - {file = "ddtrace-2.15.0-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:181de5041b0490e70a294f0e6c5014bb9bdba7e31cf031f13f2c21687088a3d0"}, - {file = "ddtrace-2.15.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8564cbab6571e396d11d7876f34fb99faa5d68ce38774f92825dd1c76001fca"}, - {file = "ddtrace-2.15.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4af2510ce33adf71235c2d80873afa093d1f360976969cdd068c08c86692b253"}, - {file = "ddtrace-2.15.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:588d5eda7bfa9eb8296af86c089f8b7ec2e4e641e5af1e46d1204115b376d7ee"}, - {file = "ddtrace-2.15.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0653b483c55cac027e0fe2fd4e0cadcad966bc8b0d3d1a90b0ef820cad8d8d27"}, - {file = "ddtrace-2.15.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:856222d9237ba6281f39b242e1e840b0434c2008e91c27cb2a7cb3cf0d32fc94"}, - {file = "ddtrace-2.15.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:90da30ee34163fd85a7f021244cd0282905e50d6651a176d4f8a886e2fad5a21"}, - {file = "ddtrace-2.15.0-cp39-cp39-win32.whl", hash = "sha256:38d184fff1fb1d65d61ae7594d364e1acfd57b50fa2e0ce62096959b2c61c316"}, - {file = "ddtrace-2.15.0-cp39-cp39-win_amd64.whl", hash = "sha256:b635d086070fd34548de7bb72f2537243415259db7ed97bbe9f4515172dec0ad"}, - {file = "ddtrace-2.15.0.tar.gz", hash = "sha256:45101c2fa0db8eb67516a66f6cd8ac77a624c3736389d8b75fce0273af4d2e97"}, + {file = "ddtrace-2.16.0-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:f76359344de807ade173fcb723c6a25d65949c81412848ace248eb9d0be9b101"}, + {file = "ddtrace-2.16.0-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:d0d011263ba88ccde6d74d2f32cc97e639c43f0ebafcb0c2efe3a4f94c0f1488"}, + {file = "ddtrace-2.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3b518566e35dcd30b2ccf84736d431d31c0b16a0c26d435df3992223ca0fc1c7"}, + {file = "ddtrace-2.16.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:82f0d2c418edc6bf8d258a58b678a9f655447fdfd5088a1bd0e1ba296fd422a1"}, + {file = "ddtrace-2.16.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dfa7f9ff5d897a2b4634b3aac2247fabd1fcb4efc0ccfa6123f77be7779c635a"}, + {file = "ddtrace-2.16.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:36e595b201efeeddfb627ecd4f1ecf8668aafcd5a5421808c0b2c70d5ca9ee06"}, + {file = "ddtrace-2.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:faf0b4e0fdad003aeb4b389dafb3bc1703f66f25f0ee14c1683a565011211f7a"}, + {file = "ddtrace-2.16.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:957e2c14e017365bd418d5db09cb0560fd82d63bc93dce2bc150438b9d88db81"}, + {file = "ddtrace-2.16.0-cp310-cp310-win32.whl", hash = "sha256:500528809f5e199e3802326da461c8a889194083e5e76329e98adeb0107c6485"}, + {file = "ddtrace-2.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:91f358e6812d277ad184d5bcaf22417e81460edb558fc842ba2a6c388e78c74d"}, + {file = "ddtrace-2.16.0-cp311-cp311-macosx_12_0_universal2.whl", hash = "sha256:5579532c8d2e73ae0be659cfd0df3d967b9916b7ffb90adc46d3de2089acff03"}, + {file = "ddtrace-2.16.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:3eef49a87a258aa43511ee053bf14a73e35553614643b63d07aaf2c0a11a1a4e"}, + {file = "ddtrace-2.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b4859e823953f9703b71c2053ec36e1816252a820acd5947997bbca14bd0a07b"}, + {file = "ddtrace-2.16.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c756ec08525fc7cdda0db7f99bb5bdf663d7c3c222635090433ce50dcb0fc1d0"}, + {file = "ddtrace-2.16.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ab7d7c9019ad2a3d705f365c8e0f63a2fc2598d6ba98b6794031e7059f295e7d"}, + {file = "ddtrace-2.16.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:20fa331f1cab3b21dcaf2404506811e3a5a5466eb483d79c1953be5d791fddc8"}, + {file = "ddtrace-2.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f8bd2527db9ec6715ff25c2a84bda7caab392f9b978c6fe2c959cbfe6a179bda"}, + {file = "ddtrace-2.16.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:11790b2b8456eaf5d4a0ee4dbfa41ad19d9e2c81f2858bc9661e9e740c8958a2"}, + {file = "ddtrace-2.16.0-cp311-cp311-win32.whl", hash = "sha256:4cce50aa408f5d853396c861685ab007626604b1f279d05d1b0ecc09ef97eb2d"}, + {file = "ddtrace-2.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:f690984c2b17000542166b0cf0faad453c03074001fe750d234adcd8e7560ff4"}, + {file = "ddtrace-2.16.0-cp312-cp312-macosx_12_0_universal2.whl", hash = "sha256:175d85e73634e834eb3de41fa5699996cb7a110958fb21ffdf6c6aa87df9cf49"}, + {file = "ddtrace-2.16.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:7ec8022fc23f00d138967cdb10a7573717c084dcd51f217039fb3d83a7ec1c0f"}, + {file = "ddtrace-2.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e05d8347a98f0cfb2cbfed1eace1fd21d9102ab0f4b7029e4ab96b8683b06bae"}, + {file = "ddtrace-2.16.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cb50fc77b1b395238c954c7c315c1d5fb59ab7cd1b8a14c0cb546b09d087da3f"}, + {file = "ddtrace-2.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e0f11f32748fdf3418bf1fab965b0a2a4c0c7ea5a2ea00005f238ae3d291881"}, + {file = "ddtrace-2.16.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:99bf4e6bdb1809ed72fedbad1f43879a2008db7305f970645e8a9f66e9cdcf60"}, + {file = "ddtrace-2.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:7c28131dc38f188b52549aee1814a60db40e3348e3d967dd55697efee2c3f634"}, + {file = "ddtrace-2.16.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:4ba587036c5783f556fd853f09b3b54c4d4384d68b995bdd7b639f6ab1a325ad"}, + {file = "ddtrace-2.16.0-cp312-cp312-win32.whl", hash = "sha256:7fc50c6ec59ee9482a8672e361b7c703800893d05785053e8145fb9d6a0c97e3"}, + {file = "ddtrace-2.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:79a6213c718685429c6d9a581dc00fad9cf7ba2ce9557c36ec5977a7060ba559"}, + {file = "ddtrace-2.16.0-cp37-cp37m-macosx_12_0_x86_64.whl", hash = "sha256:9468e5c9821c40720ffe30ad2f0b02b8abd7724227fa371721f71196e941e000"}, + {file = "ddtrace-2.16.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f5976f8a437619730f47880f0fdd1d5203bb3b17178400ec73f16c0287e62208"}, + {file = "ddtrace-2.16.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:feecbc0aae5496e4301e54a1120af6ed7d73f42f83d6b7da7588a61a78865c39"}, + {file = "ddtrace-2.16.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c2c6c81d1fd19a217a6c00ef42b37e2642a6047c6061498496971091ee6eed36"}, + {file = "ddtrace-2.16.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d37ddbd1c88bd42fc8674b3c07c86125cc6098d3062011f68c6cc8ed3cfc137a"}, + {file = "ddtrace-2.16.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:f25837b6f071e1075dc1e7fd859215d4ca6f5e5c3edd000498650f8a47ca4864"}, + {file = "ddtrace-2.16.0-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:5615e8cce828beb4709bea15e2a0035f7f5eba51d1df45df3c22ce21a4fa81ad"}, + {file = "ddtrace-2.16.0-cp37-cp37m-win32.whl", hash = "sha256:f73e2356c9215a7b88ef4a6f968ce283203c8755b9191961b8881eec6f603d69"}, + {file = "ddtrace-2.16.0-cp37-cp37m-win_amd64.whl", hash = "sha256:506643ed434c855816a4076e8c8e3541726277388a41ce950c4946f27d9b8c2d"}, + {file = "ddtrace-2.16.0-cp38-cp38-macosx_12_0_universal2.whl", hash = "sha256:79045c263264a918e53ea5c39d6b47a5fd3eea1c663debec315bc45a2ab42adb"}, + {file = "ddtrace-2.16.0-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:747edbf2cd082ce55910d40f1e08db700be46b168504fb16f5f33652bdb2bd81"}, + {file = "ddtrace-2.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac30ea20ed4b1e4803ea07eade8335f0b1f66314d5a41a55ba9fe9b1221640c4"}, + {file = "ddtrace-2.16.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a37c007c091af3b8fba685d10908aa663a7dc0142a5ca871cc29c1213a5ba25b"}, + {file = "ddtrace-2.16.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4c7402cbad004b07e7a2b77ea75661f924ba8191a9ec92ca34ccb5198b5dbfd"}, + {file = "ddtrace-2.16.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:71b78f8f90b5311c0afef5923b550de1c31a72cfac9d591e40b5a579aff7c3b3"}, + {file = "ddtrace-2.16.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:9f07c40d62de9e989991a080b679c41dd5fa79913f3d09445afc6667fbb1b614"}, + {file = "ddtrace-2.16.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:754860334379be99722ce569e95e21ddda40790145c7bb432868c924a81fe83d"}, + {file = "ddtrace-2.16.0-cp38-cp38-win32.whl", hash = "sha256:191de226a97ddf94ca1a76043abfb76c8bfa538dec5916aaaeea1f28b5031ce2"}, + {file = "ddtrace-2.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:f9e791ecdba03f7865b92c90416022c47656df5c6f1819da25f866ae85361107"}, + {file = "ddtrace-2.16.0-cp39-cp39-macosx_12_0_universal2.whl", hash = "sha256:ca81449cbb010716895fe5d00078c3674a56373a428eda047c1be60222cd2a2e"}, + {file = "ddtrace-2.16.0-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:8d2e43841919c8bea8585dcb04a6cd3bdac0ac2e3f71d8abdd8faabd0650abd9"}, + {file = "ddtrace-2.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0c63a9fdbfe07af6be60bbecf0b38deba5a48b45ac1daebbd089d84c6abf49ff"}, + {file = "ddtrace-2.16.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:962fe84eeb24ef4f137b8f446d5096f18735c529523817712042231f6f8a3963"}, + {file = "ddtrace-2.16.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c92d461652ffa766dacf63087d3a971f315df540f4c52c2f4cf31b048fd3de0b"}, + {file = "ddtrace-2.16.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:da4c787622133e4360c5934f09ff68e618b2f7fa4eee87a93f89068a873bc633"}, + {file = "ddtrace-2.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a4d882555af0422a81daf61a019daf52dd200c1082cc8631899920d75b81e520"}, + {file = "ddtrace-2.16.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:c56227201b999ddddfba0e7966bd6665f45cb47599cfc620491b65a55cb4481f"}, + {file = "ddtrace-2.16.0-cp39-cp39-win32.whl", hash = "sha256:69f44a92255a287dc25c5ea4a95a84adf388cbc87249c5523f051066d9af0e6b"}, + {file = "ddtrace-2.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:1b9b72679f73d82735f3fdec80d9da54fb3093c7904230a76569830e28a43d3b"}, + {file = "ddtrace-2.16.0.tar.gz", hash = "sha256:6870fbfd848d87b82bfa3ab4e5909ea7a9de00df30fb928385bfa5b9667ae4cc"}, ] [package.dependencies] @@ -874,4 +874,4 @@ dev = ["boto3", "flake8", "pytest", "pytest-benchmark", "requests"] [metadata] lock-version = "2.0" python-versions = ">=3.8.0,<4" -content-hash = "10fb256b161b7afe015b278c9c937cfbf4f5c53227455ded8251ae62d5f6c587" +content-hash = "421bc65995c100a53cc158e89b2ac74fbf62b45d6d509115e56aa1f25ea880e1" diff --git a/pyproject.toml b/pyproject.toml index c31f8f5f..6a468f01 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -27,7 +27,7 @@ classifiers = [ python = ">=3.8.0,<4" datadog = ">=0.41.0,<1.0.0" wrapt = "^1.11.2" -ddtrace = ">=2.15.0" +ddtrace = ">=2.16.0" ujson = ">=5.9.0" boto3 = { version = "^1.34.0", optional = true } requests = { version ="^2.22.0", optional = true } From e58b06586391896fa1c1689081052a052e8770bf Mon Sep 17 00:00:00 2001 From: Abhinav Vedmala Date: Tue, 5 Nov 2024 14:03:32 -0500 Subject: [PATCH 167/268] fix: add typecheck to lambda wrapper (#533) * check if event is a dict before getting * early exit in is_legacy_lambda_step_function --- datadog_lambda/tracing.py | 5 ++++- tests/test_tracing.py | 3 +++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 0aded4de..dfb08dd2 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -411,7 +411,10 @@ def is_legacy_lambda_step_function(event): """ Check if the event is a step function that called a legacy lambda """ - event = event.get("Payload", {}) + if not isinstance(event, dict) or "Payload" not in event: + return False + + event = event.get("Payload") return "Execution" in event and "StateMachine" in event and "State" in event diff --git a/tests/test_tracing.py b/tests/test_tracing.py index 0fb2ee31..22ac7049 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -678,6 +678,9 @@ def test_is_legacy_lambda_step_function(self): } self.assertFalse(is_legacy_lambda_step_function(sf_event)) + other_event = ["foo", "bar"] + self.assertFalse(is_legacy_lambda_step_function(other_event)) + class TestXRayContextConversion(unittest.TestCase): def test_convert_xray_trace_id(self): From fa9d00dfa0003ac5342b9d49ed61b8553602f49d Mon Sep 17 00:00:00 2001 From: Aleksandr Pasechnik Date: Wed, 6 Nov 2024 09:57:17 -0500 Subject: [PATCH 168/268] chore: v6.101.0 release candidate (#535) --- datadog_lambda/version.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index 1357787d..9d6a2f29 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "6.100.0" +__version__ = "6.101.0" diff --git a/pyproject.toml b/pyproject.toml index 6a468f01..7bb5df47 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "6.100.0" +version = "6.101.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 7d16e8aca6d76834ea69123d5289b9d764cb5509 Mon Sep 17 00:00:00 2001 From: Aleksandr Pasechnik Date: Thu, 14 Nov 2024 12:53:18 -0500 Subject: [PATCH 169/268] chore: [SVLS-5973] fix span pointer flow control (#538) --- datadog_lambda/span_pointers.py | 61 +++++++++++++++++++++++++-------- 1 file changed, 47 insertions(+), 14 deletions(-) diff --git a/datadog_lambda/span_pointers.py b/datadog_lambda/span_pointers.py index 86c9e60b..e111469e 100644 --- a/datadog_lambda/span_pointers.py +++ b/datadog_lambda/span_pointers.py @@ -2,6 +2,7 @@ import logging import os from typing import List +from typing import Optional from ddtrace._trace._span_pointer import _SpanPointerDirection from ddtrace._trace._span_pointer import _SpanPointerDescription @@ -30,7 +31,7 @@ def calculate_span_pointers( return _calculate_dynamodb_span_pointers_for_event(event) except Exception as e: - logger.warning( + logger.debug( "failed to calculate span pointers for event: %s", e, ) @@ -75,7 +76,7 @@ def _calculate_s3_span_pointers_for_object_created_s3_information( etag = s3_information["object"]["eTag"] except KeyError as e: - logger.warning( + logger.debug( "missing s3 information required to make a span pointer: %s", e, ) @@ -86,17 +87,31 @@ def _calculate_s3_span_pointers_for_object_created_s3_information( _aws_s3_object_span_pointer_description, ) - return [ - _aws_s3_object_span_pointer_description( + try: + span_pointer_description = _aws_s3_object_span_pointer_description( + operation="S3.LambdaEvent", pointer_direction=_SpanPointerDirection.UPSTREAM, bucket=bucket, key=key, etag=etag, ) - ] + except TypeError: + # The older version of this function did not have an operation + # parameter. + span_pointer_description = _aws_s3_object_span_pointer_description( + pointer_direction=_SpanPointerDirection.UPSTREAM, + bucket=bucket, + key=key, + etag=etag, + ) + + if span_pointer_description is None: + return [] + + return [span_pointer_description] except Exception as e: - logger.warning( + logger.debug( "failed to generate S3 span pointer: %s", e, ) @@ -120,10 +135,13 @@ def _calculate_dynamodb_span_pointers_for_event_record( ) -> List[_SpanPointerDescription]: try: table_name = _extract_table_name_from_dynamodb_stream_record(record) + if table_name is None: + return [] + primary_key = record["dynamodb"]["Keys"] except Exception as e: - logger.warning( + logger.debug( "missing DynamoDB information required to make a span pointer: %s", e, ) @@ -134,23 +152,36 @@ def _calculate_dynamodb_span_pointers_for_event_record( _aws_dynamodb_item_span_pointer_description, ) - return [ - _aws_dynamodb_item_span_pointer_description( + try: + span_pointer_description = _aws_dynamodb_item_span_pointer_description( + operation="DynamoDB.LambdaEvent", pointer_direction=_SpanPointerDirection.UPSTREAM, table_name=table_name, primary_key=primary_key, ) - ] + except TypeError: + # The older version of this function did not have an operation + # parameter. + span_pointer_description = _aws_dynamodb_item_span_pointer_description( + pointer_direction=_SpanPointerDirection.UPSTREAM, + table_name=table_name, + primary_key=primary_key, + ) + + if span_pointer_description is None: + return [] + + return [span_pointer_description] except Exception as e: - logger.warning( + logger.debug( "failed to generate DynamoDB span pointer: %s", e, ) return [] -def _extract_table_name_from_dynamodb_stream_record(record) -> str: +def _extract_table_name_from_dynamodb_stream_record(record) -> Optional[str]: # Example eventSourceARN: # arn:aws:dynamodb:us-east-2:123456789012:table/my-table/stream/2024-06-10T19:26:16.525 event_source_arn = record["eventSourceARN"] @@ -159,10 +190,12 @@ def _extract_table_name_from_dynamodb_stream_record(record) -> str: ":", maxsplit=5 ) if _arn != "arn" or _aws != "aws" or _dynamodb != "dynamodb": - raise ValueError(f"unexpected eventSourceARN format: {event_source_arn}") + logger.debug("unexpected eventSourceARN format: %s", event_source_arn) + return None [_table, table_name, _stream, _timestamp] = dynamodb_info.split("/") if _table != "table" or _stream != "stream": - raise ValueError(f"unexpected eventSourceARN format: {event_source_arn}") + logger.debug("unexpected eventSourceARN format: %s", event_source_arn) + return None return table_name From 57d1a818130d2b1bf347ae5517e072e2cc769baa Mon Sep 17 00:00:00 2001 From: Aleksandr Pasechnik Date: Thu, 14 Nov 2024 12:56:58 -0500 Subject: [PATCH 170/268] chore: simplified GovCloud release script (#536) --- scripts/publish_prod.sh | 138 +++++++++++++++++++++++----------------- 1 file changed, 78 insertions(+), 60 deletions(-) diff --git a/scripts/publish_prod.sh b/scripts/publish_prod.sh index f96c021d..f3d13653 100755 --- a/scripts/publish_prod.sh +++ b/scripts/publish_prod.sh @@ -4,6 +4,8 @@ set -e +read -p "Are we only doing the simplified GovCloud release? ONLY IF THE NORMAL RELEASE IS DONE AND YOU HAVE DOWNLOADED THE LAYERS (y/n)? " GOVCLOUD_ONLY + # Ensure on main, and pull the latest BRANCH=$(git rev-parse --abbrev-ref HEAD) if [ $BRANCH != "main" ]; then @@ -32,54 +34,65 @@ else fi # Ensure pypi registry access -read -p "Do you have access to PyPI (y/n)?" CONT -if [ "$CONT" != "y" ]; then - echo "Exiting" - exit 1 +if [ $GOVCLOUD_ONLY == "y" ]; then + echo "Skipping PyPI check since this is a GovCloud-only release" + +else + read -p "Do you have access to PyPI (y/n)?" CONT + if [ "$CONT" != "y" ]; then + echo "Exiting" + exit 1 + fi fi CURRENT_VERSION=$(poetry version --short) LAYER_VERSION=$(echo $NEW_VERSION | cut -d '.' -f 2) -read -p "Ready to update the library version from $CURRENT_VERSION to $NEW_VERSION and publish layer version $LAYER_VERSION (y/n)?" CONT -if [ "$CONT" != "y" ]; then - echo "Exiting" - exit 1 -fi +if [ $GOVCLOUD_ONLY == "y" ]; then + echo "Skipping Libary Updates, code changes, layer builds and signing for GovCloud-only release" -echo "Answer 'n' if already done in a PR" -read -p "Update pyproject.toml version? (y/n)?" CONT -if [ "$CONT" != "y" ]; then - echo "Skipping updating package.json version" else - echo - echo "Replacing version in pyproject.toml and datadog_lambda/version.py" - echo - - poetry version ${NEW_VERSION} - echo "__version__ = \"${NEW_VERSION}\"" > datadog_lambda/version.py -fi - -echo -echo "Building layers..." -./scripts/build_layers.sh + read -p "Ready to update the library version from $CURRENT_VERSION to $NEW_VERSION and publish layer version $LAYER_VERSION (y/n)?" CONT + if [ "$CONT" != "y" ]; then + echo "Exiting" + exit 1 + fi + + echo "Answer 'n' if already done in a PR" + read -p "Update pyproject.toml version? (y/n)?" CONT + if [ "$CONT" != "y" ]; then + echo "Skipping updating package.json version" + else + echo + echo "Replacing version in pyproject.toml and datadog_lambda/version.py" + echo + + poetry version ${NEW_VERSION} + echo "__version__ = \"${NEW_VERSION}\"" > datadog_lambda/version.py + fi -echo -echo "Signing layers for commercial AWS regions" -aws-vault exec sso-prod-engineering -- ./scripts/sign_layers.sh prod - -echo "Answer 'n' if GitLab already did this" -read -p "Deploy layers to commercial AWS (y/n)?" CONT -if [ "$CONT" != "y" ]; then - echo "Skipping deployment to commercial AWS" -else - echo "Ensuring you have access to the production AWS account" - aws-vault exec sso-prod-engineering -- aws sts get-caller-identity + echo + echo "Building layers..." + ./scripts/build_layers.sh echo - echo "Publishing layers to commercial AWS regions" - VERSION=$LAYER_VERSION aws-vault exec sso-prod-engineering --no-session -- ./scripts/publish_layers.sh + echo "Signing layers for commercial AWS regions" + aws-vault exec sso-prod-engineering -- ./scripts/sign_layers.sh prod + + echo "Answer 'n' if GitLab already did this" + read -p "Deploy layers to commercial AWS (y/n)?" CONT + if [ "$CONT" != "y" ]; then + echo "Skipping deployment to commercial AWS" + else + echo "Ensuring you have access to the production AWS account" + aws-vault exec sso-prod-engineering -- aws sts get-caller-identity + + echo + echo "Publishing layers to commercial AWS regions" + VERSION=$LAYER_VERSION aws-vault exec sso-prod-engineering --no-session -- ./scripts/publish_layers.sh + fi fi + read -p "Deploy layers to GovCloud AWS (y/n)?" CONT if [ "$CONT" != "y" ]; then echo "Skipping deployment to GovCloud AWS" @@ -91,32 +104,37 @@ else VERSION=$LAYER_VERSION aws-vault exec sso-govcloud-us1-fed-engineering -- ./scripts/publish_layers.sh fi -echo "Answer 'n' if GitLab already did this" -read -p "Ready to publish $NEW_VERSION to PyPI (y/n)?" CONT -if [ "$CONT" != "y" ]; then - echo "Skipping publishing to PyPI" -else - echo - echo "Publishing to https://pypi.org/project/datadog-lambda/" - ./scripts/pypi.sh -fi - +if [ $GOVCLOUD_ONLY == "y" ]; then + echo "Skipping PyPI check and Github Release since this is a GovCloud-only release" -echo "Answer 'n' if you already released in GitHub" -read -p "Do you want to bump the version in GitHub? (y/n)" CONT -if [ "$CONT" != "y" ]; then - echo "Skipping publishing updates to GitHub" else + echo "Answer 'n' if GitLab already did this" + read -p "Ready to publish $NEW_VERSION to PyPI (y/n)?" CONT + if [ "$CONT" != "y" ]; then + echo "Skipping publishing to PyPI" + else + echo + echo "Publishing to https://pypi.org/project/datadog-lambda/" + ./scripts/pypi.sh + fi + + + echo "Answer 'n' if you already released in GitHub" + read -p "Do you want to bump the version in GitHub? (y/n)" CONT + if [ "$CONT" != "y" ]; then + echo "Skipping publishing updates to GitHub" + else + echo + echo 'Publishing updates to github' + git commit pyproject.toml datadog_lambda/version.py -m "Bump version to ${NEW_VERSION}" + git push origin main + git tag "v$LAYER_VERSION" + git push origin "refs/tags/v$LAYER_VERSION" + fi + echo - echo 'Publishing updates to github' - git commit pyproject.toml datadog_lambda/version.py -m "Bump version to ${NEW_VERSION}" - git push origin main - git tag "v$LAYER_VERSION" - git push origin "refs/tags/v$LAYER_VERSION" + echo "Now create a new release with the tag v${LAYER_VERSION} created unless you have done this already" + echo "https://github.com/DataDog/datadog-lambda-python/releases/new?tag=v$LAYER_VERSION&title=v$LAYER_VERSION" fi - -echo -echo "Now create a new release with the tag v${LAYER_VERSION} created unless you have done this already" -echo "https://github.com/DataDog/datadog-lambda-python/releases/new?tag=v$LAYER_VERSION&title=v$LAYER_VERSION" # Open a PR to the documentation repo to automatically bump layer version VERSION=$LAYER_VERSION LAYER=datadog-lambda-python ./scripts/create_documentation_pr.sh From 49df8ee8321f191ce5215e30e820c096a5131377 Mon Sep 17 00:00:00 2001 From: Aleksandr Pasechnik Date: Fri, 15 Nov 2024 09:36:22 -0500 Subject: [PATCH 171/268] chore: v6.102.0 release candidate (#539) --- datadog_lambda/version.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index 9d6a2f29..f8489c6d 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "6.101.0" +__version__ = "6.102.0" diff --git a/pyproject.toml b/pyproject.toml index 7bb5df47..4acdb842 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "6.101.0" +version = "6.102.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From c4da90eca378d791201f8a0325d824848ec11709 Mon Sep 17 00:00:00 2001 From: Abhinav Vedmala Date: Mon, 18 Nov 2024 15:15:03 -0500 Subject: [PATCH 172/268] Explicit trace ID propagation for SFN w/o Hashing (#537) * add logic to extract traceID from _datadog header * rename test * fix type * added root arn case * trigger ci * Add `http.route` tags for API Gateway (#524) Add route tags * feat: [SVLS-5677] DynamoDB Stream event span pointers (#522) * trigger ci * use default propagator.extract * lint * lint * updated to use trace/parent hash from _datadog * lint * skip is context complete check * remove unused import * fix legacy lambda parsing with new header * using context object instead of pre-hashed values * fixed trigger tags and tests * pull sfn trace id generation out into a helper * added unit tests * update test data * rename stepfunctions to states * update current serverless version to v1 * Update trigger comment Co-authored-by: kimi <47579703+kimi-p@users.noreply.github.com> --------- Co-authored-by: Nicholas Hulston Co-authored-by: Aleksandr Pasechnik Co-authored-by: kimi <47579703+kimi-p@users.noreply.github.com> --- datadog_lambda/constants.py | 4 +- datadog_lambda/tracing.py | 96 +++++++++++++++++++++++++-------- datadog_lambda/trigger.py | 11 +++- tests/event_samples/states.json | 22 ++++++++ tests/test_tracing.py | 93 +++++++++++++++++++++++++------- tests/test_trigger.py | 29 ++++++++++ 6 files changed, 211 insertions(+), 44 deletions(-) create mode 100644 tests/event_samples/states.json diff --git a/datadog_lambda/constants.py b/datadog_lambda/constants.py index fd8afb3e..6ab62738 100644 --- a/datadog_lambda/constants.py +++ b/datadog_lambda/constants.py @@ -3,9 +3,8 @@ # This product includes software developed at Datadog (https://www.datadoghq.com/). # Copyright 2019 Datadog, Inc. -# Datadog trace sampling priority - +# Datadog trace sampling priority class SamplingPriority(object): USER_REJECT = -1 AUTO_REJECT = 0 @@ -18,6 +17,7 @@ class TraceHeader(object): TRACE_ID = "x-datadog-trace-id" PARENT_ID = "x-datadog-parent-id" SAMPLING_PRIORITY = "x-datadog-sampling-priority" + TAGS = "x-datadog-tags" # X-Ray subsegment to save Datadog trace metadata diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index dfb08dd2..5ed306a3 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -356,9 +356,8 @@ def extract_context_from_kinesis_event(event, lambda_context): return extract_context_from_lambda_context(lambda_context) -def _deterministic_sha256_hash(s: str, part: str) -> (int, int): +def _deterministic_sha256_hash(s: str, part: str) -> int: sha256_hash = hashlib.sha256(s.encode()).hexdigest() - # First two chars is '0b'. zfill to ensure 256 bits, but we only care about the first 128 bits binary_hash = bin(int(sha256_hash, 16))[2:].zfill(256) if part == HIGHER_64_BITS: @@ -371,36 +370,88 @@ def _deterministic_sha256_hash(s: str, part: str) -> (int, int): return result +def _parse_high_64_bits(trace_tags: str) -> str: + """ + Parse a list of trace tags such as [_dd.p.tid=66bcb5eb00000000,_dd.p.dm=-0] and return the + value of the _dd.p.tid tag or an empty string if not found. + """ + if trace_tags: + for tag in trace_tags.split(","): + if "_dd.p.tid=" in tag: + return tag.split("=")[1] + + return "" + + +def _generate_sfn_parent_id(context: dict) -> int: + execution_id = context.get("Execution").get("Id") + state_name = context.get("State").get("Name") + state_entered_time = context.get("State").get("EnteredTime") + + return _deterministic_sha256_hash( + f"{execution_id}#{state_name}#{state_entered_time}", HIGHER_64_BITS + ) + + +def _generate_sfn_trace_id(execution_id: str, part: str): + """ + Take the SHA-256 hash of the execution_id to calculate the trace ID. If the high 64 bits are + specified, we take those bits and use hex to encode it. We also remove the first two characters + as they will be '0x in the hex string. + + We care about full 128 bits because they will break up into traditional traceID and + _dd.p.tid tag. + """ + if part == HIGHER_64_BITS: + return hex(_deterministic_sha256_hash(execution_id, part))[2:] + return _deterministic_sha256_hash(execution_id, part) + + def extract_context_from_step_functions(event, lambda_context): """ Only extract datadog trace context when Step Functions Context Object is injected into lambda's event dict. + + If '_datadog' header is present, we have two cases: + 1. Root is a Lambda and we use its traceID + 2. Root is a SFN, and we use its executionARN to calculate the traceID + We calculate the parentID the same in both cases by using the parent SFN's context object. + + Otherwise, we're dealing with the legacy case where we only have the parent SFN's context + object. """ try: - execution_id = event.get("Execution").get("Id") - state_name = event.get("State").get("Name") - state_entered_time = event.get("State").get("EnteredTime") - # returning 128 bits since 128bit traceId will be break up into - # traditional traceId and _dd.p.tid tag - # https://github.com/DataDog/dd-trace-py/blob/3e34d21cb9b5e1916e549047158cb119317b96ab/ddtrace/propagation/http.py#L232-L240 - trace_id = _deterministic_sha256_hash(execution_id, LOWER_64_BITS) - - parent_id = _deterministic_sha256_hash( - f"{execution_id}#{state_name}#{state_entered_time}", HIGHER_64_BITS - ) + meta = {} + dd_data = event.get("_datadog") + + if dd_data and dd_data.get("serverless-version") == "v1": + if "x-datadog-trace-id" in dd_data: # lambda root + trace_id = int(dd_data.get("x-datadog-trace-id")) + high_64_bit_trace_id = _parse_high_64_bits( + dd_data.get("x-datadog-tags") + ) + if high_64_bit_trace_id: + meta["_dd.p.tid"] = high_64_bit_trace_id + else: # sfn root + root_execution_id = dd_data.get("RootExecutionId") + trace_id = _generate_sfn_trace_id(root_execution_id, LOWER_64_BITS) + meta["_dd.p.tid"] = _generate_sfn_trace_id( + root_execution_id, HIGHER_64_BITS + ) + + parent_id = _generate_sfn_parent_id(dd_data) + else: + execution_id = event.get("Execution").get("Id") + trace_id = _generate_sfn_trace_id(execution_id, LOWER_64_BITS) + meta["_dd.p.tid"] = _generate_sfn_trace_id(execution_id, HIGHER_64_BITS) + parent_id = _generate_sfn_parent_id(event) sampling_priority = SamplingPriority.AUTO_KEEP return Context( trace_id=trace_id, span_id=parent_id, sampling_priority=sampling_priority, - # take the higher 64 bits as _dd.p.tid tag and use hex to encode - # [2:] to remove '0x' in the hex str - meta={ - "_dd.p.tid": hex( - _deterministic_sha256_hash(execution_id, HIGHER_64_BITS) - )[2:] - }, + meta=meta, ) except Exception as e: logger.debug("The Step Functions trace extractor returned with error %s", e) @@ -415,7 +466,10 @@ def is_legacy_lambda_step_function(event): return False event = event.get("Payload") - return "Execution" in event and "StateMachine" in event and "State" in event + return isinstance(event, dict) and ( + "_datadog" in event + or ("Execution" in event and "StateMachine" in event and "State" in event) + ) def extract_context_custom_extractor(extractor, event, lambda_context): diff --git a/datadog_lambda/trigger.py b/datadog_lambda/trigger.py index 64eff1a0..11759a0a 100644 --- a/datadog_lambda/trigger.py +++ b/datadog_lambda/trigger.py @@ -146,7 +146,9 @@ def parse_event_source(event: dict) -> _EventSource: if event.get("source") == "aws.events" or has_event_categories: event_source = _EventSource(EventTypes.CLOUDWATCH_EVENTS) - if "Execution" in event and "StateMachine" in event and "State" in event: + if ( + "_datadog" in event and event.get("_datadog").get("serverless-version") == "v1" + ) or ("Execution" in event and "StateMachine" in event and "State" in event): event_source = _EventSource(EventTypes.STEPFUNCTIONS) event_record = get_first_record(event) @@ -254,6 +256,13 @@ def parse_event_source_arn(source: _EventSource, event: dict, context: Any) -> s if source.event_type == EventTypes.CLOUDWATCH_EVENTS and event.get("resources"): return event.get("resources")[0] + # Returning state machine arn as event source arn. + if source.event_type == EventTypes.STEPFUNCTIONS: + context = event + if "_datadog" in event: + context = event.get("_datadog") + return context.get("StateMachine").get("Id") + def get_event_source_arn(source: _EventSource, event: dict, context: Any) -> str: event_source_arn = event.get("eventSourceARN") or event.get("eventSourceArn") diff --git a/tests/event_samples/states.json b/tests/event_samples/states.json new file mode 100644 index 00000000..778fe437 --- /dev/null +++ b/tests/event_samples/states.json @@ -0,0 +1,22 @@ +{ + "_datadog": { + "Execution": { + "Id": "arn:aws:states:ca-central-1:425362996713:execution:MyStateMachine-wsx8chv4d:1356a963-42a5-48b0-ba3f-73bde559a50c", + "StartTime": "2024-11-13T16:46:47.715Z", + "Name": "1356a963-42a5-48b0-ba3f-73bde559a50c", + "RoleArn": "arn:aws:iam::425362996713:role/service-role/StepFunctions-MyStateMachine-wsx8chv4d-role-1su0fkfd3", + "RedriveCount": 0 + }, + "StateMachine": { + "Id": "arn:aws:states:ca-central-1:425362996713:stateMachine:MyStateMachine-wsx8chv4d", + "Name": "MyStateMachine-wsx8chv4d" + }, + "State": { + "Name": "Lambda Invoke", + "EnteredTime": "2024-11-13T16:46:47.740Z", + "RetryCount": 0 + }, + "RootExecutionId": "arn:aws:states:ca-central-1:425362996713:execution:MyStateMachine-wsx8chv4d:1356a963-42a5-48b0-ba3f-73bde559a50c", + "serverless-version": "v1" + } +} diff --git a/tests/test_tracing.py b/tests/test_tracing.py index 22ac7049..d0db05cd 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -617,7 +617,7 @@ def test_with_complete_datadog_trace_headers_with_trigger_tags(self): @with_trace_propagation_style("datadog") def test_step_function_trace_data(self): lambda_ctx = get_mock_context() - sqs_event = { + sfn_event = { "Execution": { "Id": "665c417c-1237-4742-aaca-8b3becbb9e75", }, @@ -627,7 +627,7 @@ def test_step_function_trace_data(self): "EnteredTime": "Mon Nov 13 12:43:33 PST 2023", }, } - ctx, source, event_source = extract_dd_trace_context(sqs_event, lambda_ctx) + ctx, source, event_source = extract_dd_trace_context(sfn_event, lambda_ctx) self.assertEqual(source, "event") expected_context = Context( trace_id=3675572987363469717, @@ -642,7 +642,7 @@ def test_step_function_trace_data(self): TraceHeader.TRACE_ID: "3675572987363469717", TraceHeader.PARENT_ID: "10713633173203262661", TraceHeader.SAMPLING_PRIORITY: "1", - "x-datadog-tags": "_dd.p.tid=e987c84b36b11ab", + TraceHeader.TAGS: "_dd.p.tid=e987c84b36b11ab", }, ) create_dd_dummy_metadata_subsegment(ctx, XraySubsegment.TRACE_KEY) @@ -651,9 +651,11 @@ def test_step_function_trace_data(self): expected_context, ) - def test_is_legacy_lambda_step_function(self): - sf_event = { - "Payload": { + @with_trace_propagation_style("datadog") + def test_step_function_trace_data_lambda_root(self): + lambda_ctx = get_mock_context() + sfn_event = { + "_datadog": { "Execution": { "Id": "665c417c-1237-4742-aaca-8b3becbb9e75", }, @@ -662,24 +664,75 @@ def test_is_legacy_lambda_step_function(self): "Name": "my-awesome-state", "EnteredTime": "Mon Nov 13 12:43:33 PST 2023", }, + "x-datadog-trace-id": "5821803790426892636", + "x-datadog-tags": "_dd.p.dm=-0,_dd.p.tid=672a7cb100000000", + "serverless-version": "v1", } } - self.assertTrue(is_legacy_lambda_step_function(sf_event)) - - sf_event = { - "Execution": { - "Id": "665c417c-1237-4742-aaca-8b3becbb9e75", - }, - "StateMachine": {}, - "State": { - "Name": "my-awesome-state", - "EnteredTime": "Mon Nov 13 12:43:33 PST 2023", + ctx, source, event_source = extract_dd_trace_context(sfn_event, lambda_ctx) + self.assertEqual(source, "event") + expected_context = Context( + trace_id=5821803790426892636, + span_id=6880978411788117524, + sampling_priority=1, + meta={"_dd.p.tid": "672a7cb100000000"}, + ) + self.assertEqual(ctx, expected_context) + self.assertEqual( + get_dd_trace_context(), + { + TraceHeader.TRACE_ID: "5821803790426892636", + TraceHeader.PARENT_ID: "10713633173203262661", + TraceHeader.SAMPLING_PRIORITY: "1", + TraceHeader.TAGS: "_dd.p.tid=672a7cb100000000", }, - } - self.assertFalse(is_legacy_lambda_step_function(sf_event)) + ) + create_dd_dummy_metadata_subsegment(ctx, XraySubsegment.TRACE_KEY) + self.mock_send_segment.assert_called_with( + XraySubsegment.TRACE_KEY, + expected_context, + ) - other_event = ["foo", "bar"] - self.assertFalse(is_legacy_lambda_step_function(other_event)) + @with_trace_propagation_style("datadog") + def test_step_function_trace_data_sfn_root(self): + lambda_ctx = get_mock_context() + sfn_event = { + "_datadog": { + "Execution": { + "Id": "665c417c-1237-4742-aaca-8b3becbb9e75", + }, + "StateMachine": {}, + "State": { + "Name": "my-awesome-state", + "EnteredTime": "Mon Nov 13 12:43:33 PST 2023", + }, + "RootExecutionId": "4875aba4-ae31-4a4c-bf8a-63e9eee31dad", + "serverless-version": "v1", + } + } + ctx, source, event_source = extract_dd_trace_context(sfn_event, lambda_ctx) + self.assertEqual(source, "event") + expected_context = Context( + trace_id=4521899030418994483, + span_id=6880978411788117524, + sampling_priority=1, + meta={"_dd.p.tid": "12d1270d99cc5e03"}, + ) + self.assertEqual(ctx, expected_context) + self.assertEqual( + get_dd_trace_context(), + { + TraceHeader.TRACE_ID: "4521899030418994483", + TraceHeader.PARENT_ID: "10713633173203262661", + TraceHeader.SAMPLING_PRIORITY: "1", + TraceHeader.TAGS: "_dd.p.tid=12d1270d99cc5e03", + }, + ) + create_dd_dummy_metadata_subsegment(ctx, XraySubsegment.TRACE_KEY) + self.mock_send_segment.assert_called_with( + XraySubsegment.TRACE_KEY, + expected_context, + ) class TestXRayContextConversion(unittest.TestCase): diff --git a/tests/test_trigger.py b/tests/test_trigger.py index c1e7f5d7..be028a23 100644 --- a/tests/test_trigger.py +++ b/tests/test_trigger.py @@ -230,6 +230,20 @@ def test_event_source_sqs(self): "arn:aws:sqs:eu-west-1:601427279990:InferredSpansQueueNode", ) + def test_event_source_stepfunctions(self): + event_sample_source = "states" + test_file = event_samples + event_sample_source + ".json" + with open(test_file, "r") as event: + event = json.load(event) + ctx = get_mock_context() + event_source = parse_event_source(event) + event_source_arn = get_event_source_arn(event_source, event, ctx) + self.assertEqual(event_source.to_string(), event_sample_source) + self.assertEqual( + event_source_arn, + "arn:aws:states:ca-central-1:425362996713:stateMachine:MyStateMachine-wsx8chv4d", + ) + def test_event_source_unsupported(self): event_sample_source = "custom" test_file = event_samples + event_sample_source + ".json" @@ -485,6 +499,21 @@ def test_extract_trigger_tags_sqs(self): }, ) + def test_extract_trigger_tags_stepfunctions(self): + event_sample_source = "states" + test_file = event_samples + event_sample_source + ".json" + ctx = get_mock_context() + with open(test_file, "r") as event: + event = json.load(event) + tags = extract_trigger_tags(event, ctx) + self.assertEqual( + tags, + { + "function_trigger.event_source": "states", + "function_trigger.event_source_arn": "arn:aws:states:ca-central-1:425362996713:stateMachine:MyStateMachine-wsx8chv4d", + }, + ) + def test_extract_trigger_tags_unsupported(self): event_sample_source = "custom" test_file = event_samples + event_sample_source + ".json" From 834c4e49b9b14244ca9fb373a3bf0404fca36c93 Mon Sep 17 00:00:00 2001 From: Abhinav Vedmala Date: Thu, 21 Nov 2024 10:09:58 -0500 Subject: [PATCH 173/268] v6.103.0 (#540) --- datadog_lambda/version.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index f8489c6d..c185df04 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "6.102.0" +__version__ = "6.103.0" diff --git a/pyproject.toml b/pyproject.toml index 4acdb842..e89b094b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "6.102.0" +version = "6.103.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 67dda589362273ad2fa1c9c6abb49d571b05e317 Mon Sep 17 00:00:00 2001 From: Aleksandr Pasechnik Date: Thu, 21 Nov 2024 14:54:04 -0500 Subject: [PATCH 174/268] chore: upgrade dd-trace-py to 2.17.0 (#542) --- poetry.lock | 200 +++++++++++++++++++++++++------------------------ pyproject.toml | 2 +- 2 files changed, 103 insertions(+), 99 deletions(-) diff --git a/poetry.lock b/poetry.lock index a0ba70c8..85013e45 100644 --- a/poetry.lock +++ b/poetry.lock @@ -2,17 +2,17 @@ [[package]] name = "boto3" -version = "1.35.54" +version = "1.35.66" description = "The AWS SDK for Python" optional = true python-versions = ">=3.8" files = [ - {file = "boto3-1.35.54-py3-none-any.whl", hash = "sha256:2d5e160b614db55fbee7981001c54476cb827c441cef65b2fcb2c52a62019909"}, - {file = "boto3-1.35.54.tar.gz", hash = "sha256:7d9c359bbbc858a60b51c86328db813353c8bd1940212cdbd0a7da835291c2e1"}, + {file = "boto3-1.35.66-py3-none-any.whl", hash = "sha256:09a610f8cf4d3c22d4ca69c1f89079e3a1c82805ce94fa0eb4ecdd4d2ba6c4bc"}, + {file = "boto3-1.35.66.tar.gz", hash = "sha256:c392b9168b65e9c23483eaccb5b68d1f960232d7f967a1e00a045ba065ce050d"}, ] [package.dependencies] -botocore = ">=1.35.54,<1.36.0" +botocore = ">=1.35.66,<1.36.0" jmespath = ">=0.7.1,<2.0.0" s3transfer = ">=0.10.0,<0.11.0" @@ -21,21 +21,21 @@ crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] [[package]] name = "botocore" -version = "1.35.54" +version = "1.35.66" description = "Low-level, data-driven core of boto 3." optional = true python-versions = ">=3.8" files = [ - {file = "botocore-1.35.54-py3-none-any.whl", hash = "sha256:9cca1811094b6cdc144c2c063a3ec2db6d7c88194b04d4277cd34fc8e3473aff"}, - {file = "botocore-1.35.54.tar.gz", hash = "sha256:131bb59ce59c8a939b31e8e647242d70cf11d32d4529fa4dca01feea1e891a76"}, + {file = "botocore-1.35.66-py3-none-any.whl", hash = "sha256:d0683e9c18bb6852f768da268086c3749d925332a664db0dd1459cfa7e96e475"}, + {file = "botocore-1.35.66.tar.gz", hash = "sha256:51f43220315f384959f02ea3266740db4d421592dd87576c18824e424b349fdb"}, ] [package.dependencies] jmespath = ">=0.7.1,<2.0.0" python-dateutil = ">=2.1,<3.0.0" urllib3 = [ - {version = ">=1.25.4,<1.27", markers = "python_version < \"3.10\""}, {version = ">=1.25.4,<2.2.0 || >2.2.0,<3", markers = "python_version >= \"3.10\""}, + {version = ">=1.25.4,<1.27", markers = "python_version < \"3.10\""}, ] [package.extras] @@ -193,13 +193,13 @@ files = [ [[package]] name = "datadog" -version = "0.50.1" +version = "0.50.2" description = "The Datadog Python library" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ - {file = "datadog-0.50.1-py2.py3-none-any.whl", hash = "sha256:eb101abee34fe6c1121558fd5ea48f592eb661604abb7914c4f693d8ad25a515"}, - {file = "datadog-0.50.1.tar.gz", hash = "sha256:579d4db54bd6ef918c5250217edb15b80b7b11582b8e24fce43702768c3f2e2d"}, + {file = "datadog-0.50.2-py2.py3-none-any.whl", hash = "sha256:f3297858564b624efbd9ce43e4ea1c2c21e1f0477ab6d446060b536a1d9e431e"}, + {file = "datadog-0.50.2.tar.gz", hash = "sha256:17725774bf2bb0a48f1d096d92707492c187f24ae08960af0b0c2fa97958fd51"}, ] [package.dependencies] @@ -207,83 +207,83 @@ requests = ">=2.6.0" [[package]] name = "ddtrace" -version = "2.16.0" +version = "2.17.0" description = "Datadog APM client library" optional = false python-versions = ">=3.7" files = [ - {file = "ddtrace-2.16.0-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:f76359344de807ade173fcb723c6a25d65949c81412848ace248eb9d0be9b101"}, - {file = "ddtrace-2.16.0-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:d0d011263ba88ccde6d74d2f32cc97e639c43f0ebafcb0c2efe3a4f94c0f1488"}, - {file = "ddtrace-2.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3b518566e35dcd30b2ccf84736d431d31c0b16a0c26d435df3992223ca0fc1c7"}, - {file = "ddtrace-2.16.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:82f0d2c418edc6bf8d258a58b678a9f655447fdfd5088a1bd0e1ba296fd422a1"}, - {file = "ddtrace-2.16.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dfa7f9ff5d897a2b4634b3aac2247fabd1fcb4efc0ccfa6123f77be7779c635a"}, - {file = "ddtrace-2.16.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:36e595b201efeeddfb627ecd4f1ecf8668aafcd5a5421808c0b2c70d5ca9ee06"}, - {file = "ddtrace-2.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:faf0b4e0fdad003aeb4b389dafb3bc1703f66f25f0ee14c1683a565011211f7a"}, - {file = "ddtrace-2.16.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:957e2c14e017365bd418d5db09cb0560fd82d63bc93dce2bc150438b9d88db81"}, - {file = "ddtrace-2.16.0-cp310-cp310-win32.whl", hash = "sha256:500528809f5e199e3802326da461c8a889194083e5e76329e98adeb0107c6485"}, - {file = "ddtrace-2.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:91f358e6812d277ad184d5bcaf22417e81460edb558fc842ba2a6c388e78c74d"}, - {file = "ddtrace-2.16.0-cp311-cp311-macosx_12_0_universal2.whl", hash = "sha256:5579532c8d2e73ae0be659cfd0df3d967b9916b7ffb90adc46d3de2089acff03"}, - {file = "ddtrace-2.16.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:3eef49a87a258aa43511ee053bf14a73e35553614643b63d07aaf2c0a11a1a4e"}, - {file = "ddtrace-2.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b4859e823953f9703b71c2053ec36e1816252a820acd5947997bbca14bd0a07b"}, - {file = "ddtrace-2.16.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c756ec08525fc7cdda0db7f99bb5bdf663d7c3c222635090433ce50dcb0fc1d0"}, - {file = "ddtrace-2.16.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ab7d7c9019ad2a3d705f365c8e0f63a2fc2598d6ba98b6794031e7059f295e7d"}, - {file = "ddtrace-2.16.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:20fa331f1cab3b21dcaf2404506811e3a5a5466eb483d79c1953be5d791fddc8"}, - {file = "ddtrace-2.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f8bd2527db9ec6715ff25c2a84bda7caab392f9b978c6fe2c959cbfe6a179bda"}, - {file = "ddtrace-2.16.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:11790b2b8456eaf5d4a0ee4dbfa41ad19d9e2c81f2858bc9661e9e740c8958a2"}, - {file = "ddtrace-2.16.0-cp311-cp311-win32.whl", hash = "sha256:4cce50aa408f5d853396c861685ab007626604b1f279d05d1b0ecc09ef97eb2d"}, - {file = "ddtrace-2.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:f690984c2b17000542166b0cf0faad453c03074001fe750d234adcd8e7560ff4"}, - {file = "ddtrace-2.16.0-cp312-cp312-macosx_12_0_universal2.whl", hash = "sha256:175d85e73634e834eb3de41fa5699996cb7a110958fb21ffdf6c6aa87df9cf49"}, - {file = "ddtrace-2.16.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:7ec8022fc23f00d138967cdb10a7573717c084dcd51f217039fb3d83a7ec1c0f"}, - {file = "ddtrace-2.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e05d8347a98f0cfb2cbfed1eace1fd21d9102ab0f4b7029e4ab96b8683b06bae"}, - {file = "ddtrace-2.16.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cb50fc77b1b395238c954c7c315c1d5fb59ab7cd1b8a14c0cb546b09d087da3f"}, - {file = "ddtrace-2.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e0f11f32748fdf3418bf1fab965b0a2a4c0c7ea5a2ea00005f238ae3d291881"}, - {file = "ddtrace-2.16.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:99bf4e6bdb1809ed72fedbad1f43879a2008db7305f970645e8a9f66e9cdcf60"}, - {file = "ddtrace-2.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:7c28131dc38f188b52549aee1814a60db40e3348e3d967dd55697efee2c3f634"}, - {file = "ddtrace-2.16.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:4ba587036c5783f556fd853f09b3b54c4d4384d68b995bdd7b639f6ab1a325ad"}, - {file = "ddtrace-2.16.0-cp312-cp312-win32.whl", hash = "sha256:7fc50c6ec59ee9482a8672e361b7c703800893d05785053e8145fb9d6a0c97e3"}, - {file = "ddtrace-2.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:79a6213c718685429c6d9a581dc00fad9cf7ba2ce9557c36ec5977a7060ba559"}, - {file = "ddtrace-2.16.0-cp37-cp37m-macosx_12_0_x86_64.whl", hash = "sha256:9468e5c9821c40720ffe30ad2f0b02b8abd7724227fa371721f71196e941e000"}, - {file = "ddtrace-2.16.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f5976f8a437619730f47880f0fdd1d5203bb3b17178400ec73f16c0287e62208"}, - {file = "ddtrace-2.16.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:feecbc0aae5496e4301e54a1120af6ed7d73f42f83d6b7da7588a61a78865c39"}, - {file = "ddtrace-2.16.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c2c6c81d1fd19a217a6c00ef42b37e2642a6047c6061498496971091ee6eed36"}, - {file = "ddtrace-2.16.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d37ddbd1c88bd42fc8674b3c07c86125cc6098d3062011f68c6cc8ed3cfc137a"}, - {file = "ddtrace-2.16.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:f25837b6f071e1075dc1e7fd859215d4ca6f5e5c3edd000498650f8a47ca4864"}, - {file = "ddtrace-2.16.0-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:5615e8cce828beb4709bea15e2a0035f7f5eba51d1df45df3c22ce21a4fa81ad"}, - {file = "ddtrace-2.16.0-cp37-cp37m-win32.whl", hash = "sha256:f73e2356c9215a7b88ef4a6f968ce283203c8755b9191961b8881eec6f603d69"}, - {file = "ddtrace-2.16.0-cp37-cp37m-win_amd64.whl", hash = "sha256:506643ed434c855816a4076e8c8e3541726277388a41ce950c4946f27d9b8c2d"}, - {file = "ddtrace-2.16.0-cp38-cp38-macosx_12_0_universal2.whl", hash = "sha256:79045c263264a918e53ea5c39d6b47a5fd3eea1c663debec315bc45a2ab42adb"}, - {file = "ddtrace-2.16.0-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:747edbf2cd082ce55910d40f1e08db700be46b168504fb16f5f33652bdb2bd81"}, - {file = "ddtrace-2.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac30ea20ed4b1e4803ea07eade8335f0b1f66314d5a41a55ba9fe9b1221640c4"}, - {file = "ddtrace-2.16.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a37c007c091af3b8fba685d10908aa663a7dc0142a5ca871cc29c1213a5ba25b"}, - {file = "ddtrace-2.16.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4c7402cbad004b07e7a2b77ea75661f924ba8191a9ec92ca34ccb5198b5dbfd"}, - {file = "ddtrace-2.16.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:71b78f8f90b5311c0afef5923b550de1c31a72cfac9d591e40b5a579aff7c3b3"}, - {file = "ddtrace-2.16.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:9f07c40d62de9e989991a080b679c41dd5fa79913f3d09445afc6667fbb1b614"}, - {file = "ddtrace-2.16.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:754860334379be99722ce569e95e21ddda40790145c7bb432868c924a81fe83d"}, - {file = "ddtrace-2.16.0-cp38-cp38-win32.whl", hash = "sha256:191de226a97ddf94ca1a76043abfb76c8bfa538dec5916aaaeea1f28b5031ce2"}, - {file = "ddtrace-2.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:f9e791ecdba03f7865b92c90416022c47656df5c6f1819da25f866ae85361107"}, - {file = "ddtrace-2.16.0-cp39-cp39-macosx_12_0_universal2.whl", hash = "sha256:ca81449cbb010716895fe5d00078c3674a56373a428eda047c1be60222cd2a2e"}, - {file = "ddtrace-2.16.0-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:8d2e43841919c8bea8585dcb04a6cd3bdac0ac2e3f71d8abdd8faabd0650abd9"}, - {file = "ddtrace-2.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0c63a9fdbfe07af6be60bbecf0b38deba5a48b45ac1daebbd089d84c6abf49ff"}, - {file = "ddtrace-2.16.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:962fe84eeb24ef4f137b8f446d5096f18735c529523817712042231f6f8a3963"}, - {file = "ddtrace-2.16.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c92d461652ffa766dacf63087d3a971f315df540f4c52c2f4cf31b048fd3de0b"}, - {file = "ddtrace-2.16.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:da4c787622133e4360c5934f09ff68e618b2f7fa4eee87a93f89068a873bc633"}, - {file = "ddtrace-2.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a4d882555af0422a81daf61a019daf52dd200c1082cc8631899920d75b81e520"}, - {file = "ddtrace-2.16.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:c56227201b999ddddfba0e7966bd6665f45cb47599cfc620491b65a55cb4481f"}, - {file = "ddtrace-2.16.0-cp39-cp39-win32.whl", hash = "sha256:69f44a92255a287dc25c5ea4a95a84adf388cbc87249c5523f051066d9af0e6b"}, - {file = "ddtrace-2.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:1b9b72679f73d82735f3fdec80d9da54fb3093c7904230a76569830e28a43d3b"}, - {file = "ddtrace-2.16.0.tar.gz", hash = "sha256:6870fbfd848d87b82bfa3ab4e5909ea7a9de00df30fb928385bfa5b9667ae4cc"}, + {file = "ddtrace-2.17.0-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:ae5f809923e1155a897146b233c7e4f426e369cfea36e51d2a34c24ee243cddd"}, + {file = "ddtrace-2.17.0-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:378ee9d7bce50ce7d641f6a2c3f970239726e1bba10ad1ddfd30ead28021bf58"}, + {file = "ddtrace-2.17.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c812167071a7ece0ac033526318a688c71de5861706a8b66e8edb6b8552366f8"}, + {file = "ddtrace-2.17.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca41b40c0ca1071ad63f086a54932944f379039d9858ad90c394f5f926a1fbae"}, + {file = "ddtrace-2.17.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ca8068b0f93ab28bc01cd3230e8f7615a80ce913ae64c197fe9b82e6de9bb14"}, + {file = "ddtrace-2.17.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:71af44f381f56d74fab09f5538a44804bc1372ee1e4923ccaba76628dea3355d"}, + {file = "ddtrace-2.17.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:63bdc9d4ffab38804e7c5fcd7d1878ed01e5e651f5a98879bd5b6011915a0905"}, + {file = "ddtrace-2.17.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:d38ef95fb968f5b06e436ba9443879aa056d4d19851bea53b63b9e280f19684f"}, + {file = "ddtrace-2.17.0-cp310-cp310-win32.whl", hash = "sha256:feeaab6f86fdea1244c3e62c4d089f8bd62d4a4fb3b08e9b3793c4d43f3bdd40"}, + {file = "ddtrace-2.17.0-cp310-cp310-win_amd64.whl", hash = "sha256:9ddfdd125799aaf898c76c3086e642e9e4b9afdd31f9c82ca8bce746598e8ecc"}, + {file = "ddtrace-2.17.0-cp311-cp311-macosx_12_0_universal2.whl", hash = "sha256:6e328ca2af3dc42fad6972d35d6a8a96537f3c3a3b57184776dd74953a3ea92c"}, + {file = "ddtrace-2.17.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:1f03ffe8759caef237e1c1df7a81224cc8d9d3cfed49f6dc8cd581fa1d9c97e5"}, + {file = "ddtrace-2.17.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:52b317b593ecb88d84de53ddc550ea812a47b0498c96068f35e922bbcefb792b"}, + {file = "ddtrace-2.17.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6c5008e2b79f066072ae918224c9b8e2096b98484e979549993b39452cb2db3a"}, + {file = "ddtrace-2.17.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:16d62a7b0d5f751012ccc750b580a4b94f35fa0331eb9895dd8196341b82c5c1"}, + {file = "ddtrace-2.17.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:18e18b122dc46e0885302989727dd96725bf870308273d21224b64546707b404"}, + {file = "ddtrace-2.17.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fce47e8c19d3d68ab1d68fe9f36cf3050ddb456a2baf842868d3d8f6142b9a2a"}, + {file = "ddtrace-2.17.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e158201f3cd3f29bbcb9656bc71517c646a97a8ecdfa55fac7c716a15b51e2da"}, + {file = "ddtrace-2.17.0-cp311-cp311-win32.whl", hash = "sha256:49c8782b50d50053663d7eeea4ed6cc9e8957dca36ca1ee3c3d47bbb6bc8fdc2"}, + {file = "ddtrace-2.17.0-cp311-cp311-win_amd64.whl", hash = "sha256:2b4d9a057ce3c67d97a211593d4938808fe0f1540989e9b65b4e1ca181a153fe"}, + {file = "ddtrace-2.17.0-cp312-cp312-macosx_12_0_universal2.whl", hash = "sha256:4efdf9b1cc2df28217633fe15f7bfac2f1368f3b55486e5eb746a0de5ecc14fb"}, + {file = "ddtrace-2.17.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:5cc69b201cf95ad7fad55631267e49650de74669fcb7395af72ef239ba8db3c5"}, + {file = "ddtrace-2.17.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:049891021a34cdefe11be422d5d068ea7f08cda5dbccbeafcd6065c574ad0de8"}, + {file = "ddtrace-2.17.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:56efa7c84b1846ad7cc6390d0ae8a2c75fdb9452252c37f22292cf24ac7b2922"}, + {file = "ddtrace-2.17.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ebef1c3415f2fb42cd4db570b9315195fbcb6b97a89980eb636ee63911233b1"}, + {file = "ddtrace-2.17.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:9bca7341d2d6f804a03243987210873bf317c945e0a017c45903a7e06e3ab5af"}, + {file = "ddtrace-2.17.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:197e4433dd80bc7e4b21d944e0f780c3ae5323967b54af9d6cc6b9ccdf823a1f"}, + {file = "ddtrace-2.17.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:1c313c11d5c9b1efb2a0c5f5a937377d4086cb04c7b3ffd0f708c0a0ee69642a"}, + {file = "ddtrace-2.17.0-cp312-cp312-win32.whl", hash = "sha256:16ac67305d4d8da6b98630aad0d9b0ad482ffba9249d4084eeb1869fd774781b"}, + {file = "ddtrace-2.17.0-cp312-cp312-win_amd64.whl", hash = "sha256:5a1d3779934625bffc082f20035838d40b9dc4aae2145a9077651a9474975d92"}, + {file = "ddtrace-2.17.0-cp37-cp37m-macosx_12_0_x86_64.whl", hash = "sha256:367ec7ab529c52d8dad61bc0eeff121bb032b2ecd70c7c3e47c90ba18527a032"}, + {file = "ddtrace-2.17.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:58e078adcf6ad33cf556b8e392a9f2cba104791a3588e458bf27ad696d7061d2"}, + {file = "ddtrace-2.17.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b57996d03badace1581edef7f6007d5b9fcbef01a06ab0fae287dd75def451ad"}, + {file = "ddtrace-2.17.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:725d22381877af3d497a865a3362c46f1edc395f6aece601c16e9ef9d19bb1b5"}, + {file = "ddtrace-2.17.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:2f9da9267ad81e6cc89aaff14f7367f9c9e42c4933d2b842f5e5ca9c4f19ae30"}, + {file = "ddtrace-2.17.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:3d4035b641b96b211998c52d85518c8a4abd59e3e68a584be4c1ff037514d238"}, + {file = "ddtrace-2.17.0-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:87a39f70dc7e41eff7b552a44d023fd28c29a67825bc77ad92e49d4a93a178cc"}, + {file = "ddtrace-2.17.0-cp37-cp37m-win32.whl", hash = "sha256:07bb7aab2dd5598783e6ac1dfed375c1076408a9cd31fe984b38f058ed508a8a"}, + {file = "ddtrace-2.17.0-cp37-cp37m-win_amd64.whl", hash = "sha256:bdccbb8cd7ecabbd989ef8773acbfbcf5e4308447f84381208c5e0716b517dd3"}, + {file = "ddtrace-2.17.0-cp38-cp38-macosx_12_0_universal2.whl", hash = "sha256:f1d874a82300c90efa916c9adfa51754126b338b953ee415bda28766e81c210b"}, + {file = "ddtrace-2.17.0-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:0f4a9180623a9168e6dce9305fd0b2974f11520bade267ab33d3fec396c899b4"}, + {file = "ddtrace-2.17.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:04358661d6a3e548761834afc0ff2c50ad2cb05a2c61cc70eaa025f58e52658d"}, + {file = "ddtrace-2.17.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2d801ad2e6e1ba911904d10a35972d901d206a3a3cb7fcd46c44fd46cd85e7c4"}, + {file = "ddtrace-2.17.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:567b5f5f04bf1a3e77ae49f397899a394e202ce1e78102a0f0033eebfe7c8799"}, + {file = "ddtrace-2.17.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:abc565cc8850aa2244873ce2dc950b59b3e496bd0ecbd2b80602f6f15f3e4608"}, + {file = "ddtrace-2.17.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:7cc8ee99f3333bf24943a5b898d2a6554fad59a760055d7b683809740caa8fea"}, + {file = "ddtrace-2.17.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:dbeb928b71ca9405b2b2accc68071e97f4ad4bb9eba4920c5d5a78937b72c76a"}, + {file = "ddtrace-2.17.0-cp38-cp38-win32.whl", hash = "sha256:3f88c6b892083f65a15ad11ae5b60762cfa96deb73d35cd76c17ae2d45b016c1"}, + {file = "ddtrace-2.17.0-cp38-cp38-win_amd64.whl", hash = "sha256:aebce48a57c3570f30e2e2979ec0b2d334673c9b9a55b3f245c1bc85f012d33a"}, + {file = "ddtrace-2.17.0-cp39-cp39-macosx_12_0_universal2.whl", hash = "sha256:6dd27b037c7a7d68a731b0fb4c4a8cf71f736125caf96e5a6fe5fad5c6ec1938"}, + {file = "ddtrace-2.17.0-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:b689fba18e3af350adf8c2f7dfd41a8c9b3eb06af8c6e9d85291f418082cb6bc"}, + {file = "ddtrace-2.17.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:64b796ab81a1bc243043b64ac62a18c74cf3b375a61cb75584e8851759d658a8"}, + {file = "ddtrace-2.17.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ba0f163d8dc6d4b1a07ded35bdd4475213542433211afcffbf94222a0096e7e"}, + {file = "ddtrace-2.17.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d975cfc86678d408bbe1d6a4432963140931c37e3e343bdf35abd2a1d6712594"}, + {file = "ddtrace-2.17.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:488ac9801ed615aa8b6dee9c8bd08046e853fc725e6cb2585230dfae1a28d034"}, + {file = "ddtrace-2.17.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a3f15ca519f5c14cc439fd915be1ac4951fc56b7143dc53b20eec5ca317558fa"}, + {file = "ddtrace-2.17.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:1e11f59155efd640031f40b3c23666f795e90795053e0f8b036388b108dfec95"}, + {file = "ddtrace-2.17.0-cp39-cp39-win32.whl", hash = "sha256:fa1928ea0a8c5160df51e97d562a4ed8891ae0db749b148b3aaa43c64b291c00"}, + {file = "ddtrace-2.17.0-cp39-cp39-win_amd64.whl", hash = "sha256:121c62710395bd71f7de8605716cac25e9cce3115f42c83729552ba0be35946a"}, + {file = "ddtrace-2.17.0.tar.gz", hash = "sha256:441fbf87025194f954c154b208ce979aa2ce5d03f9ef8da266c94ce09a56c2c5"}, ] [package.dependencies] bytecode = [ - {version = ">=0.13.0", markers = "python_version < \"3.11.0\""}, {version = ">=0.15.0", markers = "python_version >= \"3.12.0\""}, {version = ">=0.14.0", markers = "python_version ~= \"3.11.0\""}, + {version = ">=0.13.0", markers = "python_version < \"3.11.0\""}, ] envier = ">=0.5,<1.0" opentelemetry-api = ">=1" protobuf = ">=3" -typing-extensions = "*" +typing_extensions = "*" wrapt = ">=1" xmltodict = ">=0.12" @@ -293,20 +293,20 @@ opentracing = ["opentracing (>=2.0.0)"] [[package]] name = "deprecated" -version = "1.2.14" +version = "1.2.15" description = "Python @deprecated decorator to deprecate old python classes, functions or methods." optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7" files = [ - {file = "Deprecated-1.2.14-py2.py3-none-any.whl", hash = "sha256:6fac8b097794a90302bdbb17b9b815e732d3c4720583ff1b198499d78470466c"}, - {file = "Deprecated-1.2.14.tar.gz", hash = "sha256:e5323eb936458dccc2582dc6f9c322c852a775a27065ff2b0c4970b9d53d01b3"}, + {file = "Deprecated-1.2.15-py2.py3-none-any.whl", hash = "sha256:353bc4a8ac4bfc96800ddab349d89c25dec1079f65fd53acdcc1e0b975b21320"}, + {file = "deprecated-1.2.15.tar.gz", hash = "sha256:683e561a90de76239796e6b6feac66b99030d2dd3fcf61ef996330f14bbb9b0d"}, ] [package.dependencies] wrapt = ">=1.10,<2" [package.extras] -dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "sphinx (<2)", "tox"] +dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "jinja2 (>=3.0.3,<3.1.0)", "setuptools", "sphinx (<2)", "tox"] [[package]] name = "envier" @@ -368,22 +368,26 @@ all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2 [[package]] name = "importlib-metadata" -version = "8.4.0" +version = "8.5.0" description = "Read metadata from Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "importlib_metadata-8.4.0-py3-none-any.whl", hash = "sha256:66f342cc6ac9818fc6ff340576acd24d65ba0b3efabb2b4ac08b598965a4a2f1"}, - {file = "importlib_metadata-8.4.0.tar.gz", hash = "sha256:9a547d3bc3608b025f93d403fdd1aae741c24fbb8314df4b155675742ce303c5"}, + {file = "importlib_metadata-8.5.0-py3-none-any.whl", hash = "sha256:45e54197d28b7a7f1559e60b95e7c567032b602131fbd588f1497f47880aa68b"}, + {file = "importlib_metadata-8.5.0.tar.gz", hash = "sha256:71522656f0abace1d072b9e5481a48f07c138e00f079c38c8f883823f9c26bd7"}, ] [package.dependencies] -zipp = ">=0.5" +zipp = ">=3.20" [package.extras] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)"] +cover = ["pytest-cov"] doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +enabler = ["pytest-enabler (>=2.2)"] perf = ["ipython"] -test = ["flufl.flake8", "importlib-resources (>=1.3)", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy", "pytest-perf (>=0.9.2)", "pytest-ruff (>=0.2.1)"] +test = ["flufl.flake8", "importlib-resources (>=1.3)", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6,!=8.1.*)", "pytest-perf (>=0.9.2)"] +type = ["pytest-mypy"] [[package]] name = "iniconfig" @@ -420,28 +424,28 @@ files = [ [[package]] name = "opentelemetry-api" -version = "1.27.0" +version = "1.28.2" description = "OpenTelemetry Python API" optional = false python-versions = ">=3.8" files = [ - {file = "opentelemetry_api-1.27.0-py3-none-any.whl", hash = "sha256:953d5871815e7c30c81b56d910c707588000fff7a3ca1c73e6531911d53065e7"}, - {file = "opentelemetry_api-1.27.0.tar.gz", hash = "sha256:ed673583eaa5f81b5ce5e86ef7cdaf622f88ef65f0b9aab40b843dcae5bef342"}, + {file = "opentelemetry_api-1.28.2-py3-none-any.whl", hash = "sha256:6fcec89e265beb258fe6b1acaaa3c8c705a934bd977b9f534a2b7c0d2d4275a6"}, + {file = "opentelemetry_api-1.28.2.tar.gz", hash = "sha256:ecdc70c7139f17f9b0cf3742d57d7020e3e8315d6cffcdf1a12a905d45b19cc0"}, ] [package.dependencies] deprecated = ">=1.2.6" -importlib-metadata = ">=6.0,<=8.4.0" +importlib-metadata = ">=6.0,<=8.5.0" [[package]] name = "packaging" -version = "24.1" +version = "24.2" description = "Core utilities for Python packages" optional = true python-versions = ">=3.8" files = [ - {file = "packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124"}, - {file = "packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002"}, + {file = "packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759"}, + {file = "packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"}, ] [[package]] @@ -591,13 +595,13 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] [[package]] name = "s3transfer" -version = "0.10.3" +version = "0.10.4" description = "An Amazon S3 Transfer Manager" optional = true python-versions = ">=3.8" files = [ - {file = "s3transfer-0.10.3-py3-none-any.whl", hash = "sha256:263ed587a5803c6c708d3ce44dc4dfedaab4c1a32e8329bab818933d79ddcf5d"}, - {file = "s3transfer-0.10.3.tar.gz", hash = "sha256:4f50ed74ab84d474ce614475e0b8d5047ff080810aac5d01ea25231cfc944b0c"}, + {file = "s3transfer-0.10.4-py3-none-any.whl", hash = "sha256:244a76a24355363a68164241438de1b72f8781664920260c48465896b712a41e"}, + {file = "s3transfer-0.10.4.tar.gz", hash = "sha256:29edc09801743c21eb5ecbc617a152df41d3c287f67b615f73e5f750583666a7"}, ] [package.dependencies] @@ -619,13 +623,13 @@ files = [ [[package]] name = "tomli" -version = "2.0.2" +version = "2.1.0" description = "A lil' TOML parser" optional = true python-versions = ">=3.8" files = [ - {file = "tomli-2.0.2-py3-none-any.whl", hash = "sha256:2ebe24485c53d303f690b0ec092806a085f07af5a5aa1464f3931eec36caaa38"}, - {file = "tomli-2.0.2.tar.gz", hash = "sha256:d46d457a85337051c36524bc5349dd91b1877838e2979ac5ced3e710ed8a60ed"}, + {file = "tomli-2.1.0-py3-none-any.whl", hash = "sha256:a5c57c3d1c56f5ccdf89f6523458f60ef716e210fc47c4cfb188c5ba473e0391"}, + {file = "tomli-2.1.0.tar.gz", hash = "sha256:3f646cae2aec94e17d04973e4249548320197cfabdf130015d023de4b74d8ab8"}, ] [[package]] @@ -874,4 +878,4 @@ dev = ["boto3", "flake8", "pytest", "pytest-benchmark", "requests"] [metadata] lock-version = "2.0" python-versions = ">=3.8.0,<4" -content-hash = "421bc65995c100a53cc158e89b2ac74fbf62b45d6d509115e56aa1f25ea880e1" +content-hash = "1f665788ea027990707277c94f1f4746e4aab84e4bc1857bb18ccaa314965518" diff --git a/pyproject.toml b/pyproject.toml index e89b094b..d75ea5cb 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -27,7 +27,7 @@ classifiers = [ python = ">=3.8.0,<4" datadog = ">=0.41.0,<1.0.0" wrapt = "^1.11.2" -ddtrace = ">=2.16.0" +ddtrace = ">=2.17.0" ujson = ">=5.9.0" boto3 = { version = "^1.34.0", optional = true } requests = { version ="^2.22.0", optional = true } From 6b67412e6af3c0c71481785fa6bdd4f2fccbb49e Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Thu, 21 Nov 2024 21:06:12 +0100 Subject: [PATCH 175/268] Prevent error when attempting to use None context. (#541) --- datadog_lambda/tracing.py | 2 ++ tests/test_tracing.py | 7 +++++++ 2 files changed, 9 insertions(+) diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 5ed306a3..347e2fb7 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -699,6 +699,8 @@ def inject_correlation_ids(): def set_dd_trace_py_root(trace_context_source, merge_xray_traces): + if not _is_context_complete(dd_trace_context): + return if trace_context_source == TraceContextSource.EVENT or merge_xray_traces: context = Context( trace_id=dd_trace_context.trace_id, diff --git a/tests/test_tracing.py b/tests/test_tracing.py index d0db05cd..4c530ad0 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -934,6 +934,9 @@ def setUp(self): self.mock_activate = patcher.start() self.mock_activate.return_value = True self.addCleanup(patcher.stop) + patcher = patch("datadog_lambda.tracing.dd_trace_context", None) + self.mock_dd_trace_context = patcher.start() + self.addCleanup(patcher.stop) def tearDown(self): global dd_tracing_enabled @@ -991,6 +994,10 @@ def test_set_dd_trace_py_root_no_span_id(self): self.mock_activate.assert_called() self.mock_activate.assert_has_calls([call(expected_context)]) + def test_set_dd_trace_py_root_none_context(self): + set_dd_trace_py_root(TraceContextSource.EVENT, True) + self.mock_activate.assert_not_called() + class TestServiceMapping(unittest.TestCase): def setUp(self): From ed8c462e00618d3193baa408143333dc01d01ad9 Mon Sep 17 00:00:00 2001 From: Aleksandr Pasechnik Date: Fri, 22 Nov 2024 10:43:46 -0500 Subject: [PATCH 176/268] chore: v6.104.0 release candidate (#543) --- datadog_lambda/version.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index c185df04..d2ea6a95 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "6.103.0" +__version__ = "6.104.0" diff --git a/pyproject.toml b/pyproject.toml index d75ea5cb..6f1b5761 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "6.103.0" +version = "6.104.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From b6edd91f2bc971e0a380565019381fa197b17801 Mon Sep 17 00:00:00 2001 From: Abhinav Vedmala Date: Thu, 2 Jan 2025 15:47:11 -0500 Subject: [PATCH 177/268] Redriven Step Functions Trace Merging (#545) Adds support for Step Functions trace merging in Redrive cases We previously used `hash(ExecutionId # StateName # StateEnteredTime)` for spanID calculation but these values are identical across redrives for a Lambda task state. The new approach also adds a `RedriveCount` to the end of the hash but omits this value when it is 0 to have easy backwards compatability. --- datadog_lambda/tracing.py | 13 ++++++- tests/test_tracing.py | 73 ++++++++++++++++++++++++++++++++++----- 2 files changed, 76 insertions(+), 10 deletions(-) diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 347e2fb7..c90baff1 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -384,12 +384,23 @@ def _parse_high_64_bits(trace_tags: str) -> str: def _generate_sfn_parent_id(context: dict) -> int: + """ + The upstream Step Function can propagate its execution context to downstream Lambdas. The + Lambda can use these details to share the same traceID and infer its parent's spanID. + + Excluding redriveCount when its 0 to account for cases where customers are using an old + version of the Lambda layer that doesn't use this value for its parentID generation. + """ execution_id = context.get("Execution").get("Id") + redrive_count = context.get("Execution").get("RedriveCount", 0) state_name = context.get("State").get("Name") state_entered_time = context.get("State").get("EnteredTime") + redrive_postfix = "" if redrive_count == 0 else f"#{redrive_count}" + return _deterministic_sha256_hash( - f"{execution_id}#{state_name}#{state_entered_time}", HIGHER_64_BITS + f"{execution_id}#{state_name}#{state_entered_time}{redrive_postfix}", + HIGHER_64_BITS, ) diff --git a/tests/test_tracing.py b/tests/test_tracing.py index 4c530ad0..f7d54542 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -619,30 +619,83 @@ def test_step_function_trace_data(self): lambda_ctx = get_mock_context() sfn_event = { "Execution": { - "Id": "665c417c-1237-4742-aaca-8b3becbb9e75", + "Id": "arn:aws:states:sa-east-1:425362996713:execution:abhinav-activity-state-machine:72a7ca3e-901c-41bb-b5a3-5f279b92a316", + "Name": "72a7ca3e-901c-41bb-b5a3-5f279b92a316", + "RoleArn": "arn:aws:iam::425362996713:role/service-role/StepFunctions-abhinav-activity-state-machine-role-22jpbgl6j", + "StartTime": "2024-12-04T19:38:04.069Z", }, - "StateMachine": {}, "State": { - "Name": "my-awesome-state", - "EnteredTime": "Mon Nov 13 12:43:33 PST 2023", + "Name": "Lambda Invoke", + "EnteredTime": "2024-12-04T19:38:04.118Z", + "RetryCount": 0, + }, + "StateMachine": { + "Id": "arn:aws:states:sa-east-1:425362996713:stateMachine:abhinav-activity-state-machine", + "Name": "abhinav-activity-state-machine", }, } ctx, source, event_source = extract_dd_trace_context(sfn_event, lambda_ctx) self.assertEqual(source, "event") expected_context = Context( - trace_id=3675572987363469717, - span_id=6880978411788117524, + trace_id=435175499815315247, + span_id=3929055471293792800, + sampling_priority=1, + meta={"_dd.p.tid": "3e7a89d1b7310603"}, + ) + self.assertEqual(ctx, expected_context) + self.assertEqual( + get_dd_trace_context(), + { + TraceHeader.TRACE_ID: "435175499815315247", + TraceHeader.PARENT_ID: "10713633173203262661", + TraceHeader.SAMPLING_PRIORITY: "1", + TraceHeader.TAGS: "_dd.p.tid=3e7a89d1b7310603", + }, + ) + create_dd_dummy_metadata_subsegment(ctx, XraySubsegment.TRACE_KEY) + self.mock_send_segment.assert_called_with( + XraySubsegment.TRACE_KEY, + expected_context, + ) + + # https://github.com/DataDog/logs-backend/blob/c17618cb552fc369ca40282bae0a65803f82f694/domains/serverless/apps/logs-to-traces-reducer/src/test/resources/test-json-files/stepfunctions/RedriveTest/snapshots/RedriveLambdaSuccessTraceMerging.json#L46 + @with_trace_propagation_style("datadog") + def test_step_function_trace_data_redrive(self): + lambda_ctx = get_mock_context() + sfn_event = { + "Execution": { + "Id": "arn:aws:states:sa-east-1:425362996713:execution:abhinav-activity-state-machine:72a7ca3e-901c-41bb-b5a3-5f279b92a316", + "Name": "72a7ca3e-901c-41bb-b5a3-5f279b92a316", + "RoleArn": "arn:aws:iam::425362996713:role/service-role/StepFunctions-abhinav-activity-state-machine-role-22jpbgl6j", + "StartTime": "2024-12-04T19:38:04.069Z", + "RedriveCount": 1, + }, + "State": { + "Name": "Lambda Invoke", + "EnteredTime": "2024-12-04T19:38:04.118Z", + "RetryCount": 0, + }, + "StateMachine": { + "Id": "arn:aws:states:sa-east-1:425362996713:stateMachine:abhinav-activity-state-machine", + "Name": "abhinav-activity-state-machine", + }, + } + ctx, source, event_source = extract_dd_trace_context(sfn_event, lambda_ctx) + self.assertEqual(source, "event") + expected_context = Context( + trace_id=435175499815315247, + span_id=5063839446130725204, sampling_priority=1, - meta={"_dd.p.tid": "e987c84b36b11ab"}, + meta={"_dd.p.tid": "3e7a89d1b7310603"}, ) self.assertEqual(ctx, expected_context) self.assertEqual( get_dd_trace_context(), { - TraceHeader.TRACE_ID: "3675572987363469717", + TraceHeader.TRACE_ID: "435175499815315247", TraceHeader.PARENT_ID: "10713633173203262661", TraceHeader.SAMPLING_PRIORITY: "1", - TraceHeader.TAGS: "_dd.p.tid=e987c84b36b11ab", + TraceHeader.TAGS: "_dd.p.tid=3e7a89d1b7310603", }, ) create_dd_dummy_metadata_subsegment(ctx, XraySubsegment.TRACE_KEY) @@ -658,6 +711,7 @@ def test_step_function_trace_data_lambda_root(self): "_datadog": { "Execution": { "Id": "665c417c-1237-4742-aaca-8b3becbb9e75", + "RedriveCount": 0, }, "StateMachine": {}, "State": { @@ -700,6 +754,7 @@ def test_step_function_trace_data_sfn_root(self): "_datadog": { "Execution": { "Id": "665c417c-1237-4742-aaca-8b3becbb9e75", + "RedriveCount": 0, }, "StateMachine": {}, "State": { From e40f4a8120dc2d0089a3e8ec1d8c7ca9e88f5ddb Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Tue, 7 Jan 2025 17:26:09 +0100 Subject: [PATCH 178/268] Remove *.dist-info directories except entry_points.txt files. (#549) --- Dockerfile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 610fef38..ff0e6217 100644 --- a/Dockerfile +++ b/Dockerfile @@ -28,7 +28,9 @@ RUN rm ./python/lib/$runtime/site-packages/ddtrace/appsec/_iast/_stacktrace*.so RUN rm ./python/lib/$runtime/site-packages/ddtrace/internal/datadog/profiling/libdd_wrapper*.so RUN rm ./python/lib/$runtime/site-packages/ddtrace/internal/datadog/profiling/ddup/_ddup.*.so RUN rm ./python/lib/$runtime/site-packages/ddtrace/internal/datadog/profiling/stack_v2/_stack_v2.*.so -RUN find . -name "*.dist-info" -type d | xargs rm -rf +# remove *.dist-info directories except any entry_points.txt files +RUN find ./python/lib/$runtime/site-packages/*.dist-info -not -name "entry_points.txt" -type f -delete +RUN find ./python/lib/$runtime/site-packages -type d -empty -delete # Precompile all .pyc files and remove .py files. This speeds up load time. # Compile with optimization level 2 (-OO) and PYTHONNODEBUGRANGES=1 to redtce From fa21836697991057ffd53b382ae0310861deeeac Mon Sep 17 00:00:00 2001 From: Nicholas Hulston Date: Mon, 27 Jan 2025 15:34:54 -0500 Subject: [PATCH 179/268] update `DD_COLD_START_TRACING` env var description (#554) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index dc5b8757..821518ca 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ Besides the environment variables supported by dd-trace-py, the datadog-lambda-p | -------------------- | ------------ | ------------- | | DD_ENCODE_AUTHORIZER_CONTEXT | When set to `true` for Lambda authorizers, the tracing context will be encoded into the response for propagation. Supported for NodeJS and Python. | `true` | | DD_DECODE_AUTHORIZER_CONTEXT | When set to `true` for Lambdas that are authorized via Lambda authorizers, it will parse and use the encoded tracing context (if found). Supported for NodeJS and Python. | `true` | -| DD_COLD_START_TRACING | Set to `false` to disable Cold Start Tracing. Used in NodeJS and Python. | `true` | +| DD_COLD_START_TRACING | When true (default), tracing occurs during cold start which creates many child spans. When false, only one cold start span is created. Used in NodeJS and Python. | `true` | | DD_MIN_COLD_START_DURATION | Sets the minimum duration (in milliseconds) for a module load event to be traced via Cold Start Tracing. Number. | `3` | | DD_COLD_START_TRACE_SKIP_LIB | optionally skip creating Cold Start Spans for a comma-separated list of libraries. Useful to limit depth or skip known libraries. | `ddtrace.internal.compat,ddtrace.filters` | | DD_CAPTURE_LAMBDA_PAYLOAD | [Captures incoming and outgoing AWS Lambda payloads][1] in the Datadog APM spans for Lambda invocations. | `false` | From 7fd33d48e27aa1c6d7008dc473c6d0b464effba3 Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Tue, 28 Jan 2025 22:41:28 +0100 Subject: [PATCH 180/268] feat: Remove requests and all its dependencies. (#547) --- Dockerfile | 12 +- ci/input_files/build.yaml.tpl | 1 + poetry.lock | 8 +- pyproject.toml | 2 +- tests/integration/package.json | 3 +- tests/integration/requirements.txt | 4 + tests/integration/serverless.yml | 19 +- tests/integration/yarn.lock | 981 ++++++++++++++++++++++++++++- 8 files changed, 1017 insertions(+), 13 deletions(-) create mode 100644 tests/integration/requirements.txt diff --git a/Dockerfile b/Dockerfile index ff0e6217..d15d39f3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -22,8 +22,8 @@ RUN rm -rf ./python/lib/$runtime/site-packages/botocore* RUN rm -rf ./python/lib/$runtime/site-packages/setuptools RUN rm -rf ./python/lib/$runtime/site-packages/jsonschema/tests RUN find . -name 'libddwaf.so' -delete -RUN rm -rf ./python/lib/$runtime/site-packages/urllib3* -RUN rm ./python/lib/$runtime/site-packages/ddtrace/appsec/_iast/_taint_tracking/*.so +# Comment this line out for now since ddtrace now tries to import it +#RUN rm ./python/lib/$runtime/site-packages/ddtrace/appsec/_iast/_taint_tracking/*.so RUN rm ./python/lib/$runtime/site-packages/ddtrace/appsec/_iast/_stacktrace*.so RUN rm ./python/lib/$runtime/site-packages/ddtrace/internal/datadog/profiling/libdd_wrapper*.so RUN rm ./python/lib/$runtime/site-packages/ddtrace/internal/datadog/profiling/ddup/_ddup.*.so @@ -32,6 +32,14 @@ RUN rm ./python/lib/$runtime/site-packages/ddtrace/internal/datadog/profiling/st RUN find ./python/lib/$runtime/site-packages/*.dist-info -not -name "entry_points.txt" -type f -delete RUN find ./python/lib/$runtime/site-packages -type d -empty -delete +# Remove requests and dependencies +RUN rm -rf \ + ./python/lib/$runtime/site-packages/requests* \ + ./python/lib/$runtime/site-packages/urllib3* \ + ./python/lib/$runtime/site-packages/certifi* \ + ./python/lib/$runtime/site-packages/idna* \ + ./python/lib/$runtime/site-packages/charset_normalizer* + # Precompile all .pyc files and remove .py files. This speeds up load time. # Compile with optimization level 2 (-OO) and PYTHONNODEBUGRANGES=1 to redtce # size of .pyc files. diff --git a/ci/input_files/build.yaml.tpl b/ci/input_files/build.yaml.tpl index 97e5987f..eae6b0d1 100644 --- a/ci/input_files/build.yaml.tpl +++ b/ci/input_files/build.yaml.tpl @@ -98,6 +98,7 @@ integration-test ({{ $runtime.name }}-{{ $runtime.arch }}): - *install-node - EXTERNAL_ID_NAME=integration-test-externalid ROLE_TO_ASSUME=sandbox-integration-test-deployer AWS_ACCOUNT=425362996713 source ./ci/get_secrets.sh - yarn global add serverless@^3.38.0 --prefix /usr/local + - yarn global add serverless-python-requirements@^6.1.1 --prefix /usr/local - cd integration_tests && yarn install && cd .. script: - RUNTIME_PARAM={{ $runtime.python_version }} ARCH={{ $runtime.arch }} ./scripts/run_integration_tests.sh diff --git a/poetry.lock b/poetry.lock index 85013e45..a2fc59f9 100644 --- a/poetry.lock +++ b/poetry.lock @@ -193,13 +193,13 @@ files = [ [[package]] name = "datadog" -version = "0.50.2" +version = "0.51.0" description = "The Datadog Python library" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ - {file = "datadog-0.50.2-py2.py3-none-any.whl", hash = "sha256:f3297858564b624efbd9ce43e4ea1c2c21e1f0477ab6d446060b536a1d9e431e"}, - {file = "datadog-0.50.2.tar.gz", hash = "sha256:17725774bf2bb0a48f1d096d92707492c187f24ae08960af0b0c2fa97958fd51"}, + {file = "datadog-0.51.0-py2.py3-none-any.whl", hash = "sha256:a9764f091c96af4e0996d4400b168fc5fba380f911d6d672c9dcd4773e29ea3f"}, + {file = "datadog-0.51.0.tar.gz", hash = "sha256:3279534f831ae0b4ae2d8ce42ef038b4ab38e667d7ed6ff7437982d7a0cf5250"}, ] [package.dependencies] @@ -878,4 +878,4 @@ dev = ["boto3", "flake8", "pytest", "pytest-benchmark", "requests"] [metadata] lock-version = "2.0" python-versions = ">=3.8.0,<4" -content-hash = "1f665788ea027990707277c94f1f4746e4aab84e4bc1857bb18ccaa314965518" +content-hash = "04aacf2bfd2b88de8559d11d8773aea6016bad1e2670462bd301cefb54e996f5" diff --git a/pyproject.toml b/pyproject.toml index 6f1b5761..3d97e0e0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -25,7 +25,7 @@ classifiers = [ [tool.poetry.dependencies] python = ">=3.8.0,<4" -datadog = ">=0.41.0,<1.0.0" +datadog = ">=0.51.0,<1.0.0" wrapt = "^1.11.2" ddtrace = ">=2.17.0" ujson = ">=5.9.0" diff --git a/tests/integration/package.json b/tests/integration/package.json index 9dcad1b4..1a178462 100644 --- a/tests/integration/package.json +++ b/tests/integration/package.json @@ -1,5 +1,6 @@ { "devDependencies": { - "serverless-plugin-datadog": "^2.18.0" + "serverless-plugin-datadog": "^2.18.0", + "serverless-python-requirements": "^6.1.1" } } diff --git a/tests/integration/requirements.txt b/tests/integration/requirements.txt new file mode 100644 index 00000000..5678a66c --- /dev/null +++ b/tests/integration/requirements.txt @@ -0,0 +1,4 @@ +certifi==2024.12.14 +charset-normalizer==3.4.1 +idna==3.10 +requests==2.32.3 diff --git a/tests/integration/serverless.yml b/tests/integration/serverless.yml index fd174c5f..8c7e62f0 100644 --- a/tests/integration/serverless.yml +++ b/tests/integration/serverless.yml @@ -20,6 +20,21 @@ provider: iam: # IAM permissions require that all functions are deployed with this role role: "arn:aws:iam::425362996713:role/serverless-integration-test-lambda-role" + layers: + - { Ref: PythonLambdaLayer } + - { Ref: PythonRequirementsLambdaLayer } + +plugins: + - serverless-python-requirements + +custom: + pythonRequirements: + pythonBin: python3 + pipCmdExtraArgs: + - --no-deps # install just requests + layer: + compatibleRuntimes: + - ${env:SERVERLESS_RUNTIME} layers: python: @@ -32,8 +47,6 @@ functions: name: integration-tests-python-${sls:stage}-async-metrics_${env:RUNTIME} handler: handle.handle runtime: ${env:SERVERLESS_RUNTIME} - layers: - - { Ref: PythonLambdaLayer } environment: DD_FLUSH_TO_LOG: true @@ -42,5 +55,3 @@ functions: name: integration-tests-python-${sls:stage}-sync-metrics_${env:RUNTIME} handler: handle.handle runtime: ${env:SERVERLESS_RUNTIME} - layers: - - { Ref: PythonLambdaLayer } diff --git a/tests/integration/yarn.lock b/tests/integration/yarn.lock index 867a90ab..f96feb52 100644 --- a/tests/integration/yarn.lock +++ b/tests/integration/yarn.lock @@ -2,7 +2,986 @@ # yarn lockfile v1 +"@iarna/toml@^2.2.5": + version "2.2.5" + resolved "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz" + integrity sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg== + +"@isaacs/cliui@^8.0.2": + version "8.0.2" + resolved "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz" + integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== + dependencies: + string-width "^5.1.2" + string-width-cjs "npm:string-width@^4.2.0" + strip-ansi "^7.0.1" + strip-ansi-cjs "npm:strip-ansi@^6.0.1" + wrap-ansi "^8.1.0" + wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" + +"@pkgjs/parseargs@^0.11.0": + version "0.11.0" + resolved "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz" + integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== + +"2-thenable@^1.0.0": + version "1.0.0" + resolved "https://registry.npmjs.org/2-thenable/-/2-thenable-1.0.0.tgz" + integrity sha512-HqiDzaLDFCXkcCO/SwoyhRwqYtINFHF7t9BDRq4x90TOKNAJpiqUt9X5lQ08bwxYzc067HUywDjGySpebHcUpw== + dependencies: + d "1" + es5-ext "^0.10.47" + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-regex@^6.0.1: + version "6.1.0" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz" + integrity sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA== + +ansi-styles@^4.0.0: + version "4.3.0" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +ansi-styles@^6.1.0: + version "6.2.1" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz" + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== + +appdirectory@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/appdirectory/-/appdirectory-0.1.0.tgz" + integrity sha512-DJ5DV8vZXBbusyiyPlH28xppwS8eAMRuuyMo88xeEcf4bV64lbLtbxRxqixZuJBXsZzLtXFmA13GwVjJc7vdQw== + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +axios-proxy-builder@^0.1.2: + version "0.1.2" + resolved "https://registry.npmjs.org/axios-proxy-builder/-/axios-proxy-builder-0.1.2.tgz" + integrity sha512-6uBVsBZzkB3tCC8iyx59mCjQckhB8+GQrI9Cop8eC7ybIsvs/KtnNgEBfRMSEa7GqK2VBGUzgjNYMdPIfotyPA== + dependencies: + tunnel "^0.0.6" + +axios@^1.7.4: + version "1.7.9" + resolved "https://registry.npmjs.org/axios/-/axios-1.7.9.tgz" + integrity sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw== + dependencies: + follow-redirects "^1.15.6" + form-data "^4.0.0" + proxy-from-env "^1.1.0" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +bluebird@^3.7.2: + version "3.7.2" + resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + +camelcase@^5.0.0: + version "5.3.1" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +child-process-ext@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/child-process-ext/-/child-process-ext-2.1.1.tgz" + integrity sha512-0UQ55f51JBkOFa+fvR76ywRzxiPwQS3Xe8oe5bZRphpv+dIMeerW5Zn5e4cUy4COJwVtJyU0R79RMnw+aCqmGA== + dependencies: + cross-spawn "^6.0.5" + es5-ext "^0.10.53" + log "^6.0.0" + split2 "^3.1.1" + stream-promise "^3.2.0" + +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +cross-spawn@^6.0.5: + version "6.0.6" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.6.tgz" + integrity sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw== + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + +cross-spawn@^7.0.0: + version "7.0.6" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz" + integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +d@^1.0.1, d@^1.0.2, d@1: + version "1.0.2" + resolved "https://registry.npmjs.org/d/-/d-1.0.2.tgz" + integrity sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw== + dependencies: + es5-ext "^0.10.64" + type "^2.7.2" + +decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" + integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +duration@^0.2.2: + version "0.2.2" + resolved "https://registry.npmjs.org/duration/-/duration-0.2.2.tgz" + integrity sha512-06kgtea+bGreF5eKYgI/36A6pLXggY7oR4p1pq4SmdFBn1ReOL5D8RhG64VrqfTTKNucqqtBAwEj8aB88mcqrg== + dependencies: + d "1" + es5-ext "~0.10.46" + +eastasianwidth@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz" + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + +es5-ext@^0.10.35, es5-ext@^0.10.47, es5-ext@^0.10.49, es5-ext@^0.10.53, es5-ext@^0.10.62, es5-ext@^0.10.64, es5-ext@~0.10.14, es5-ext@~0.10.46: + version "0.10.64" + resolved "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz" + integrity sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg== + dependencies: + es6-iterator "^2.0.3" + es6-symbol "^3.1.3" + esniff "^2.0.1" + next-tick "^1.1.0" + +es6-iterator@^2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz" + integrity sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g== + dependencies: + d "1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" + +es6-symbol@^3.1.1, es6-symbol@^3.1.3: + version "3.1.4" + resolved "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz" + integrity sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg== + dependencies: + d "^1.0.2" + ext "^1.7.0" + +esniff@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz" + integrity sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg== + dependencies: + d "^1.0.1" + es5-ext "^0.10.62" + event-emitter "^0.3.5" + type "^2.7.2" + +event-emitter@^0.3.5: + version "0.3.5" + resolved "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz" + integrity sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA== + dependencies: + d "1" + es5-ext "~0.10.14" + +ext@^1.7.0: + version "1.7.0" + resolved "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz" + integrity sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw== + dependencies: + type "^2.7.2" + +find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +follow-redirects@^1.15.6: + version "1.15.9" + resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz" + integrity sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ== + +foreground-child@^3.1.0: + version "3.3.0" + resolved "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz" + integrity sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg== + dependencies: + cross-spawn "^7.0.0" + signal-exit "^4.0.1" + +form-data@^4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz" + integrity sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + +fs-extra@^10.1.0: + version "10.1.0" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz" + integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +get-caller-file@^2.0.1: + version "2.0.5" + resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +glob-all@^3.3.1: + version "3.3.1" + resolved "https://registry.npmjs.org/glob-all/-/glob-all-3.3.1.tgz" + integrity sha512-Y+ESjdI7ZgMwfzanHZYQ87C59jOO0i+Hd+QYtVt9PhLi6d8wlOpzQnfBxWUlaTuAoR3TkybLqqbIoWveU4Ji7Q== + dependencies: + glob "^7.2.3" + yargs "^15.3.1" + +glob@^10.3.7: + version "10.4.5" + resolved "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz" + integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg== + dependencies: + foreground-child "^3.1.0" + jackspeak "^3.1.2" + minimatch "^9.0.4" + minipass "^7.1.2" + package-json-from-dist "^1.0.0" + path-scurry "^1.11.1" + +glob@^7.1.3: + version "7.2.3" + resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^7.2.3: + version "7.2.3" + resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +graceful-fs@^4.1.6, graceful-fs@^4.2.0: + version "4.2.11" + resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +immediate@~3.0.5: + version "3.0.6" + resolved "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz" + integrity sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@^2.0.3, inherits@~2.0.3, inherits@2: + version "2.0.4" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +is-docker@^2.0.0: + version "2.2.1" + resolved "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-primitive@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/is-primitive/-/is-primitive-3.0.1.tgz" + integrity sha512-GljRxhWvlCNRfZyORiH77FwdFwGcMO620o37EOYC0ORWdq+WYNVqW0w2Juzew4M+L81l6/QS3t5gkkihyRqv9w== + +is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz" + integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ== + +is-wsl@^2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz" + integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== + +jackspeak@^3.1.2: + version "3.4.3" + resolved "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz" + integrity sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw== + dependencies: + "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" + +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +jszip@^3.10.1: + version "3.10.1" + resolved "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz" + integrity sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g== + dependencies: + lie "~3.3.0" + pako "~1.0.2" + readable-stream "~2.3.6" + setimmediate "^1.0.5" + +lie@~3.3.0: + version "3.3.0" + resolved "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz" + integrity sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ== + dependencies: + immediate "~3.0.5" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +lodash.get@^4.4.2: + version "4.4.2" + resolved "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz" + integrity sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ== + +lodash.uniqby@^4.7.0: + version "4.7.0" + resolved "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz" + integrity sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww== + +lodash.values@^4.3.0: + version "4.3.0" + resolved "https://registry.npmjs.org/lodash.values/-/lodash.values-4.3.0.tgz" + integrity sha512-r0RwvdCv8id9TUblb/O7rYPwVy6lerCbcawrfdo9iC/1t1wsNMJknO79WNBgwkH0hIeJ08jmvvESbFpNb4jH0Q== + +log@^6.0.0: + version "6.3.2" + resolved "https://registry.npmjs.org/log/-/log-6.3.2.tgz" + integrity sha512-ek8NRg/OPvS9ISOJNWNAz5vZcpYacWNFDWNJjj5OXsc6YuKacfey6wF04cXz/tOJIVrZ2nGSkHpAY5qKtF6ISg== + dependencies: + d "^1.0.2" + duration "^0.2.2" + es5-ext "^0.10.64" + event-emitter "^0.3.5" + sprintf-kit "^2.0.2" + type "^2.7.3" + uni-global "^1.0.0" + +lru-cache@^10.2.0: + version "10.4.3" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz" + integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12: + version "2.1.35" + resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +minimatch@^3.1.1: + version "3.1.2" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^9.0.4: + version "9.0.5" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz" + integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== + dependencies: + brace-expansion "^2.0.1" + +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2: + version "7.1.2" + resolved "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz" + integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== + +next-tick@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz" + integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== + +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +package-json-from-dist@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz" + integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw== + +pako@~1.0.2: + version "1.0.11" + resolved "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz" + integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz" + integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== + +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-scurry@^1.11.1: + version "1.11.1" + resolved "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz" + integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== + dependencies: + lru-cache "^10.2.0" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +proxy-from-env@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + +readable-stream@^3.0.0: + version "3.6.2" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readable-stream@~2.3.6: + version "2.3.8" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +rimraf@^5.0.5: + version "5.0.10" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-5.0.10.tgz" + integrity sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ== + dependencies: + glob "^10.3.7" + +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +sax@>=0.6.0: + version "1.4.1" + resolved "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz" + integrity sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg== + +semver@^5.5.0: + version "5.7.2" + resolved "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz" + integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== + +semver@^7.6.0: + version "7.6.3" + resolved "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz" + integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== + serverless-plugin-datadog@^2.18.0: version "2.18.0" - resolved "https://registry.yarnpkg.com/serverless-plugin-datadog/-/serverless-plugin-datadog-2.18.0.tgz#8af9903f0867eaac4789c3908e100f4c0e11c578" + resolved "https://registry.npmjs.org/serverless-plugin-datadog/-/serverless-plugin-datadog-2.18.0.tgz" integrity sha512-RUdCNjUk+uUKQYgQBjK0WNeYJ7lM2/RScqg/LjVSfv5EACeJ3iIUPz1c4bS2jtiH05al8qXudNb6QDkv9zxG7w== + +serverless-python-requirements@^6.1.1: + version "6.1.1" + resolved "https://registry.npmjs.org/serverless-python-requirements/-/serverless-python-requirements-6.1.1.tgz" + integrity sha512-SQsDKjoZXWvRJNsKL7NvHiMM+B6kG0a4RkVexhPCxId/rVMLVyz0UHg7v34kzaklfsXTQIkez+9x7HP3FwdRVQ== + dependencies: + "@iarna/toml" "^2.2.5" + appdirectory "^0.1.0" + bluebird "^3.7.2" + child-process-ext "^2.1.1" + fs-extra "^10.1.0" + glob-all "^3.3.1" + is-wsl "^2.2.0" + jszip "^3.10.1" + lodash.get "^4.4.2" + lodash.uniqby "^4.7.0" + lodash.values "^4.3.0" + rimraf "^3.0.2" + semver "^7.6.0" + set-value "^4.1.0" + sha256-file "1.0.0" + shell-quote "^1.8.1" + +serverless@>=2.32: + version "4.5.0" + resolved "https://registry.npmjs.org/serverless/-/serverless-4.5.0.tgz" + integrity sha512-msbs5I/fuPiW0ZfBuFA7lpKazCTFtF0AhOCA0HsrJBGVaOrNbwzlC/krZKXn1YgDR2+cw/izKRNupZJXtpyxJQ== + dependencies: + axios "^1.7.4" + axios-proxy-builder "^0.1.2" + rimraf "^5.0.5" + xml2js "0.6.2" + +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" + integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== + +set-value@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/set-value/-/set-value-4.1.0.tgz" + integrity sha512-zTEg4HL0RwVrqcWs3ztF+x1vkxfm0lP+MQQFPiMJTKVceBwEV0A569Ou8l9IYQG8jOZdMVI1hGsc0tmeD2o/Lw== + dependencies: + is-plain-object "^2.0.4" + is-primitive "^3.0.1" + +setimmediate@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz" + integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== + +sha256-file@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/sha256-file/-/sha256-file-1.0.0.tgz" + integrity sha512-nqf+g0veqgQAkDx0U2y2Tn2KWyADuuludZTw9A7J3D+61rKlIIl9V5TS4mfnwKuXZOH9B7fQyjYJ9pKRHIsAyg== + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz" + integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg== + dependencies: + shebang-regex "^1.0.0" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz" + integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ== + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +shell-quote@^1.8.1: + version "1.8.2" + resolved "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.2.tgz" + integrity sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA== + +signal-exit@^4.0.1: + version "4.1.0" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz" + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== + +split2@^3.1.1: + version "3.2.2" + resolved "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz" + integrity sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg== + dependencies: + readable-stream "^3.0.0" + +sprintf-kit@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/sprintf-kit/-/sprintf-kit-2.0.2.tgz" + integrity sha512-lnapdj6W4LflHZGKvl9eVkz5YF0xaTrqpRWVA4cNVOTedwqifIP8ooGImldzT/4IAN5KXFQAyXTdLidYVQdyag== + dependencies: + es5-ext "^0.10.64" + +stream-promise@^3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/stream-promise/-/stream-promise-3.2.0.tgz" + integrity sha512-P+7muTGs2C8yRcgJw/PPt61q7O517tDHiwYEzMWo1GSBCcZedUMT/clz7vUNsSxFphIlJ6QUL4GexQKlfJoVtA== + dependencies: + "2-thenable" "^1.0.0" + es5-ext "^0.10.49" + is-stream "^1.1.0" + +string_decoder@^1.1.1, string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +"string-width-cjs@npm:string-width@^4.2.0": + version "4.2.3" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^4.1.0, string-width@^4.2.0: + version "4.2.3" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^5.0.1, string-width@^5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== + dependencies: + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" + +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": + version "6.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^7.0.1: + version "7.1.0" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz" + integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== + dependencies: + ansi-regex "^6.0.1" + +tunnel@^0.0.6: + version "0.0.6" + resolved "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz" + integrity sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg== + +type@^2.5.0, type@^2.7.2, type@^2.7.3: + version "2.7.3" + resolved "https://registry.npmjs.org/type/-/type-2.7.3.tgz" + integrity sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ== + +uni-global@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/uni-global/-/uni-global-1.0.0.tgz" + integrity sha512-WWM3HP+siTxzIWPNUg7hZ4XO8clKi6NoCAJJWnuRL+BAqyFXF8gC03WNyTefGoUXYc47uYgXxpKLIEvo65PEHw== + dependencies: + type "^2.5.0" + +universalify@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz" + integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== + +util-deprecate@^1.0.1, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +which-module@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz" + integrity sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ== + +which@^1.2.9: + version "1.3.1" + resolved "https://registry.npmjs.org/which/-/which-1.3.1.tgz" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": + version "7.0.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^8.1.0: + version "8.1.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz" + integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== + dependencies: + ansi-styles "^6.1.0" + string-width "^5.0.1" + strip-ansi "^7.0.1" + +wrappy@1: + version "1.0.2" + resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +xml2js@0.6.2: + version "0.6.2" + resolved "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz" + integrity sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA== + dependencies: + sax ">=0.6.0" + xmlbuilder "~11.0.0" + +xmlbuilder@~11.0.0: + version "11.0.1" + resolved "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz" + integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== + +y18n@^4.0.0: + version "4.0.3" + resolved "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz" + integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== + +yargs-parser@^18.1.2: + version "18.1.3" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz" + integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs@^15.3.1: + version "15.4.1" + resolved "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz" + integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== + dependencies: + cliui "^6.0.0" + decamelize "^1.2.0" + find-up "^4.1.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^4.2.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^18.1.2" From 6117772e514db32a3fa3e7a24c806432b4274219 Mon Sep 17 00:00:00 2001 From: Aleksandr Pasechnik Date: Thu, 30 Jan 2025 08:56:12 -0500 Subject: [PATCH 181/268] chore: support python 3.13 (#544) --- .github/workflows/build.yml | 2 +- CONTRIBUTING.md | 2 +- Dockerfile | 6 +- README.md | 2 +- ci/datasources/runtimes.yaml | 8 + ci/publish_layers.sh | 8 +- poetry.lock | 641 +++--- pyproject.toml | 3 +- scripts/add_new_region.sh | 4 + scripts/build_layers.sh | 4 +- scripts/list_layers.sh | 2 + scripts/publish_layers.sh | 6 + scripts/run_integration_tests.sh | 3 +- scripts/run_tests.sh | 2 +- scripts/sign_layers.sh | 2 + tests/Dockerfile | 2 +- .../logs/async-metrics_python313.log | 1544 +++++++++++++++ .../snapshots/logs/sync-metrics_python313.log | 1715 +++++++++++++++++ 18 files changed, 3646 insertions(+), 310 deletions(-) create mode 100644 tests/integration/snapshots/logs/async-metrics_python313.log create mode 100644 tests/integration/snapshots/logs/sync-metrics_python313.log diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index eeb77064..d218bdef 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -41,7 +41,7 @@ jobs: strategy: max-parallel: 4 matrix: - python-version: ['3.8', '3.9', '3.10', '3.11', '3.12'] + python-version: ['3.8', '3.9', '3.10', '3.11', '3.12', '3.13'] steps: - name: Checkout diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 3b57858c..d632d151 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -24,7 +24,7 @@ We love pull requests. For new features, consider opening an issue to discuss th ./scripts/build_layers.sh # Publish the a testing layer to your own AWS account, and the ARN will be returned - # Example: VERSION=1 REGIONS=us-east-1 LAYERS=Datadog-Python312 ./scripts/publish_layers.sh + # Example: VERSION=1 REGIONS=us-east-1 LAYERS=Datadog-Python313 ./scripts/publish_layers.sh VERSION= REGIONS= LAYERS= ./scripts/publish_layers.sh ``` diff --git a/Dockerfile b/Dockerfile index d15d39f3..554766df 100644 --- a/Dockerfile +++ b/Dockerfile @@ -23,11 +23,11 @@ RUN rm -rf ./python/lib/$runtime/site-packages/setuptools RUN rm -rf ./python/lib/$runtime/site-packages/jsonschema/tests RUN find . -name 'libddwaf.so' -delete # Comment this line out for now since ddtrace now tries to import it -#RUN rm ./python/lib/$runtime/site-packages/ddtrace/appsec/_iast/_taint_tracking/*.so -RUN rm ./python/lib/$runtime/site-packages/ddtrace/appsec/_iast/_stacktrace*.so +# RUN rm ./python/lib/$runtime/site-packages/ddtrace/appsec/_iast/_stacktrace*.so RUN rm ./python/lib/$runtime/site-packages/ddtrace/internal/datadog/profiling/libdd_wrapper*.so RUN rm ./python/lib/$runtime/site-packages/ddtrace/internal/datadog/profiling/ddup/_ddup.*.so -RUN rm ./python/lib/$runtime/site-packages/ddtrace/internal/datadog/profiling/stack_v2/_stack_v2.*.so +# _stack_v2 may not exist for some versions of ddtrace (e.g. under python 3.13) +RUN rm -f ./python/lib/$runtime/site-packages/ddtrace/internal/datadog/profiling/stack_v2/_stack_v2.*.so # remove *.dist-info directories except any entry_points.txt files RUN find ./python/lib/$runtime/site-packages/*.dist-info -not -name "entry_points.txt" -type f -delete RUN find ./python/lib/$runtime/site-packages -type d -empty -delete diff --git a/README.md b/README.md index 821518ca..03cd846a 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ [![Slack](https://chat.datadoghq.com/badge.svg?bg=632CA6)](https://chat.datadoghq.com/) [![License](https://img.shields.io/badge/license-Apache--2.0-blue)](https://github.com/DataDog/datadog-lambda-python/blob/main/LICENSE) -Datadog Lambda Library for Python (3.8, 3.9, 3.10, 3.11, and 3.12) enables [enhanced Lambda metrics](https://docs.datadoghq.com/serverless/enhanced_lambda_metrics), [distributed tracing](https://docs.datadoghq.com/serverless/distributed_tracing), and [custom metric submission](https://docs.datadoghq.com/serverless/custom_metrics) from AWS Lambda functions. +Datadog Lambda Library for Python (3.8, 3.9, 3.10, 3.11, 3.12, and 3.13) enables [enhanced Lambda metrics](https://docs.datadoghq.com/serverless/enhanced_lambda_metrics), [distributed tracing](https://docs.datadoghq.com/serverless/distributed_tracing), and [custom metric submission](https://docs.datadoghq.com/serverless/custom_metrics) from AWS Lambda functions. ## Installation diff --git a/ci/datasources/runtimes.yaml b/ci/datasources/runtimes.yaml index 62fd0279..f9456d39 100644 --- a/ci/datasources/runtimes.yaml +++ b/ci/datasources/runtimes.yaml @@ -39,3 +39,11 @@ runtimes: python_version: "3.12" arch: "arm64" image: "3.12.0" + - name: "python313" + python_version: "3.13" + arch: "amd64" + image: "3.13.0" + - name: "python313" + python_version: "3.13" + arch: "arm64" + image: "3.13.0" diff --git a/ci/publish_layers.sh b/ci/publish_layers.sh index f94a0bc3..85317ddd 100755 --- a/ci/publish_layers.sh +++ b/ci/publish_layers.sh @@ -21,8 +21,10 @@ AWS_CLI_PYTHON_VERSIONS=( "python3.11" "python3.12" "python3.12" + "python3.13" + "python3.13" ) -PYTHON_VERSIONS=("3.8-amd64" "3.8-arm64" "3.9-amd64" "3.9-arm64" "3.10-amd64" "3.10-arm64" "3.11-amd64" "3.11-arm64" "3.12-amd64" "3.12-arm64") +PYTHON_VERSIONS=("3.8-amd64" "3.8-arm64" "3.9-amd64" "3.9-arm64" "3.10-amd64" "3.10-arm64" "3.11-amd64" "3.11-arm64" "3.12-amd64" "3.12-arm64" "3.13-amd64" "3.13-arm64") LAYER_PATHS=( ".layers/datadog_lambda_py-amd64-3.8.zip" ".layers/datadog_lambda_py-arm64-3.8.zip" @@ -34,6 +36,8 @@ LAYER_PATHS=( ".layers/datadog_lambda_py-arm64-3.11.zip" ".layers/datadog_lambda_py-amd64-3.12.zip" ".layers/datadog_lambda_py-arm64-3.12.zip" + ".layers/datadog_lambda_py-amd64-3.13.zip" + ".layers/datadog_lambda_py-arm64-3.13.zip" ) LAYERS=( "Datadog-Python38" @@ -46,6 +50,8 @@ LAYERS=( "Datadog-Python311-ARM" "Datadog-Python312" "Datadog-Python312-ARM" + "Datadog-Python313" + "Datadog-Python313-ARM" ) STAGES=('prod', 'sandbox', 'staging') diff --git a/poetry.lock b/poetry.lock index a2fc59f9..3953f953 100644 --- a/poetry.lock +++ b/poetry.lock @@ -2,32 +2,32 @@ [[package]] name = "boto3" -version = "1.35.66" +version = "1.36.8" description = "The AWS SDK for Python" optional = true python-versions = ">=3.8" files = [ - {file = "boto3-1.35.66-py3-none-any.whl", hash = "sha256:09a610f8cf4d3c22d4ca69c1f89079e3a1c82805ce94fa0eb4ecdd4d2ba6c4bc"}, - {file = "boto3-1.35.66.tar.gz", hash = "sha256:c392b9168b65e9c23483eaccb5b68d1f960232d7f967a1e00a045ba065ce050d"}, + {file = "boto3-1.36.8-py3-none-any.whl", hash = "sha256:7f61c9d0ea64f484a17c1e3115fdf90fd7b17ab6771e07cb4549f42b9fd28fb9"}, + {file = "boto3-1.36.8.tar.gz", hash = "sha256:ac47215d320b0c2534340db58d6d5284cb1860b7bff172b4dd6eee2dee1d5779"}, ] [package.dependencies] -botocore = ">=1.35.66,<1.36.0" +botocore = ">=1.36.8,<1.37.0" jmespath = ">=0.7.1,<2.0.0" -s3transfer = ">=0.10.0,<0.11.0" +s3transfer = ">=0.11.0,<0.12.0" [package.extras] crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] [[package]] name = "botocore" -version = "1.35.66" +version = "1.36.8" description = "Low-level, data-driven core of boto 3." optional = true python-versions = ">=3.8" files = [ - {file = "botocore-1.35.66-py3-none-any.whl", hash = "sha256:d0683e9c18bb6852f768da268086c3749d925332a664db0dd1459cfa7e96e475"}, - {file = "botocore-1.35.66.tar.gz", hash = "sha256:51f43220315f384959f02ea3266740db4d421592dd87576c18824e424b349fdb"}, + {file = "botocore-1.36.8-py3-none-any.whl", hash = "sha256:59d3fdfbae6d916b046e973bebcbeb70a102f9e570ca86d5ba512f1854b78fc2"}, + {file = "botocore-1.36.8.tar.gz", hash = "sha256:81c88e5566cf018e1411a68304dc1fb9e4156ca2b50a3a0f0befc274299e67fa"}, ] [package.dependencies] @@ -39,145 +39,132 @@ urllib3 = [ ] [package.extras] -crt = ["awscrt (==0.22.0)"] +crt = ["awscrt (==0.23.4)"] [[package]] name = "bytecode" -version = "0.16.0" +version = "0.16.1" description = "Python module to generate and modify bytecode" optional = false python-versions = ">=3.8" files = [ - {file = "bytecode-0.16.0-py3-none-any.whl", hash = "sha256:76080b7c0eb9e7e17f961d61fd06e933aa47f3b753770a3249537439d8203a25"}, - {file = "bytecode-0.16.0.tar.gz", hash = "sha256:06676a3c3bccc9d3dc73ee625650ea57df2bc117358826f4f290f0e1faa42292"}, + {file = "bytecode-0.16.1-py3-none-any.whl", hash = "sha256:1d4b61ed6bade4bff44127c8283bef8131a664ce4dbe09d64a88caf329939f35"}, + {file = "bytecode-0.16.1.tar.gz", hash = "sha256:8fbbb637c880f339e564858bc6c7984ede67ae97bc71343379a535a9a4baf398"}, ] [package.dependencies] -typing-extensions = {version = "*", markers = "python_version < \"3.10\""} +typing_extensions = {version = "*", markers = "python_version < \"3.10\""} [[package]] name = "certifi" -version = "2024.8.30" +version = "2024.12.14" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8"}, - {file = "certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9"}, + {file = "certifi-2024.12.14-py3-none-any.whl", hash = "sha256:1275f7a45be9464efc1173084eaa30f866fe2e47d389406136d332ed4967ec56"}, + {file = "certifi-2024.12.14.tar.gz", hash = "sha256:b650d30f370c2b724812bee08008be0c4163b163ddaec3f2546c1caf65f191db"}, ] [[package]] name = "charset-normalizer" -version = "3.4.0" +version = "3.4.1" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." optional = false -python-versions = ">=3.7.0" -files = [ - {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:4f9fc98dad6c2eaa32fc3af1417d95b5e3d08aff968df0cd320066def971f9a6"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0de7b687289d3c1b3e8660d0741874abe7888100efe14bd0f9fd7141bcbda92b"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5ed2e36c3e9b4f21dd9422f6893dec0abf2cca553af509b10cd630f878d3eb99"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40d3ff7fc90b98c637bda91c89d51264a3dcf210cade3a2c6f838c7268d7a4ca"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1110e22af8ca26b90bd6364fe4c763329b0ebf1ee213ba32b68c73de5752323d"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:86f4e8cca779080f66ff4f191a685ced73d2f72d50216f7112185dc02b90b9b7"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f683ddc7eedd742e2889d2bfb96d69573fde1d92fcb811979cdb7165bb9c7d3"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:27623ba66c183eca01bf9ff833875b459cad267aeeb044477fedac35e19ba907"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f606a1881d2663630ea5b8ce2efe2111740df4b687bd78b34a8131baa007f79b"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:0b309d1747110feb25d7ed6b01afdec269c647d382c857ef4663bbe6ad95a912"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:136815f06a3ae311fae551c3df1f998a1ebd01ddd424aa5603a4336997629e95"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:14215b71a762336254351b00ec720a8e85cada43b987da5a042e4ce3e82bd68e"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:79983512b108e4a164b9c8d34de3992f76d48cadc9554c9e60b43f308988aabe"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-win32.whl", hash = "sha256:c94057af19bc953643a33581844649a7fdab902624d2eb739738a30e2b3e60fc"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:55f56e2ebd4e3bc50442fbc0888c9d8c94e4e06a933804e2af3e89e2f9c1c749"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0d99dd8ff461990f12d6e42c7347fd9ab2532fb70e9621ba520f9e8637161d7c"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c57516e58fd17d03ebe67e181a4e4e2ccab1168f8c2976c6a334d4f819fe5944"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6dba5d19c4dfab08e58d5b36304b3f92f3bd5d42c1a3fa37b5ba5cdf6dfcbcee"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf4475b82be41b07cc5e5ff94810e6a01f276e37c2d55571e3fe175e467a1a1c"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce031db0408e487fd2775d745ce30a7cd2923667cf3b69d48d219f1d8f5ddeb6"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8ff4e7cdfdb1ab5698e675ca622e72d58a6fa2a8aa58195de0c0061288e6e3ea"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3710a9751938947e6327ea9f3ea6332a09bf0ba0c09cae9cb1f250bd1f1549bc"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:82357d85de703176b5587dbe6ade8ff67f9f69a41c0733cf2425378b49954de5"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:47334db71978b23ebcf3c0f9f5ee98b8d65992b65c9c4f2d34c2eaf5bcaf0594"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8ce7fd6767a1cc5a92a639b391891bf1c268b03ec7e021c7d6d902285259685c"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:f1a2f519ae173b5b6a2c9d5fa3116ce16e48b3462c8b96dfdded11055e3d6365"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:63bc5c4ae26e4bc6be6469943b8253c0fd4e4186c43ad46e713ea61a0ba49129"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bcb4f8ea87d03bc51ad04add8ceaf9b0f085ac045ab4d74e73bbc2dc033f0236"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-win32.whl", hash = "sha256:9ae4ef0b3f6b41bad6366fb0ea4fc1d7ed051528e113a60fa2a65a9abb5b1d99"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:cee4373f4d3ad28f1ab6290684d8e2ebdb9e7a1b74fdc39e4c211995f77bec27"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0713f3adb9d03d49d365b70b84775d0a0d18e4ab08d12bc46baa6132ba78aaf6"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:de7376c29d95d6719048c194a9cf1a1b0393fbe8488a22008610b0361d834ecf"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4a51b48f42d9358460b78725283f04bddaf44a9358197b889657deba38f329db"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b295729485b06c1a0683af02a9e42d2caa9db04a373dc38a6a58cdd1e8abddf1"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ee803480535c44e7f5ad00788526da7d85525cfefaf8acf8ab9a310000be4b03"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d59d125ffbd6d552765510e3f31ed75ebac2c7470c7274195b9161a32350284"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8cda06946eac330cbe6598f77bb54e690b4ca93f593dee1568ad22b04f347c15"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07afec21bbbbf8a5cc3651aa96b980afe2526e7f048fdfb7f1014d84acc8b6d8"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6b40e8d38afe634559e398cc32b1472f376a4099c75fe6299ae607e404c033b2"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b8dcd239c743aa2f9c22ce674a145e0a25cb1566c495928440a181ca1ccf6719"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:84450ba661fb96e9fd67629b93d2941c871ca86fc38d835d19d4225ff946a631"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:44aeb140295a2f0659e113b31cfe92c9061622cadbc9e2a2f7b8ef6b1e29ef4b"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1db4e7fefefd0f548d73e2e2e041f9df5c59e178b4c72fbac4cc6f535cfb1565"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-win32.whl", hash = "sha256:5726cf76c982532c1863fb64d8c6dd0e4c90b6ece9feb06c9f202417a31f7dd7"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:b197e7094f232959f8f20541ead1d9862ac5ebea1d58e9849c1bf979255dfac9"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:dd4eda173a9fcccb5f2e2bd2a9f423d180194b1bf17cf59e3269899235b2a114"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e9e3c4c9e1ed40ea53acf11e2a386383c3304212c965773704e4603d589343ed"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:92a7e36b000bf022ef3dbb9c46bfe2d52c047d5e3f3343f43204263c5addc250"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:54b6a92d009cbe2fb11054ba694bc9e284dad30a26757b1e372a1fdddaf21920"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ffd9493de4c922f2a38c2bf62b831dcec90ac673ed1ca182fe11b4d8e9f2a64"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:35c404d74c2926d0287fbd63ed5d27eb911eb9e4a3bb2c6d294f3cfd4a9e0c23"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4796efc4faf6b53a18e3d46343535caed491776a22af773f366534056c4e1fbc"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e7fdd52961feb4c96507aa649550ec2a0d527c086d284749b2f582f2d40a2e0d"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:92db3c28b5b2a273346bebb24857fda45601aef6ae1c011c0a997106581e8a88"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ab973df98fc99ab39080bfb0eb3a925181454d7c3ac8a1e695fddfae696d9e90"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:4b67fdab07fdd3c10bb21edab3cbfe8cf5696f453afce75d815d9d7223fbe88b"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:aa41e526a5d4a9dfcfbab0716c7e8a1b215abd3f3df5a45cf18a12721d31cb5d"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ffc519621dce0c767e96b9c53f09c5d215578e10b02c285809f76509a3931482"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-win32.whl", hash = "sha256:f19c1585933c82098c2a520f8ec1227f20e339e33aca8fa6f956f6691b784e67"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:707b82d19e65c9bd28b81dde95249b07bf9f5b90ebe1ef17d9b57473f8a64b7b"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:dbe03226baf438ac4fda9e2d0715022fd579cb641c4cf639fa40d53b2fe6f3e2"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd9a8bd8900e65504a305bf8ae6fa9fbc66de94178c420791d0293702fce2df7"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8831399554b92b72af5932cdbbd4ddc55c55f631bb13ff8fe4e6536a06c5c51"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a14969b8691f7998e74663b77b4c36c0337cb1df552da83d5c9004a93afdb574"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dcaf7c1524c0542ee2fc82cc8ec337f7a9f7edee2532421ab200d2b920fc97cf"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:425c5f215d0eecee9a56cdb703203dda90423247421bf0d67125add85d0c4455"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:d5b054862739d276e09928de37c79ddeec42a6e1bfc55863be96a36ba22926f6"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:f3e73a4255342d4eb26ef6df01e3962e73aa29baa3124a8e824c5d3364a65748"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:2f6c34da58ea9c1a9515621f4d9ac379871a8f21168ba1b5e09d74250de5ad62"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_s390x.whl", hash = "sha256:f09cb5a7bbe1ecae6e87901a2eb23e0256bb524a79ccc53eb0b7629fbe7677c4"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:0099d79bdfcf5c1f0c2c72f91516702ebf8b0b8ddd8905f97a8aecf49712c621"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-win32.whl", hash = "sha256:9c98230f5042f4945f957d006edccc2af1e03ed5e37ce7c373f00a5a4daa6149"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-win_amd64.whl", hash = "sha256:62f60aebecfc7f4b82e3f639a7d1433a20ec32824db2199a11ad4f5e146ef5ee"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:af73657b7a68211996527dbfeffbb0864e043d270580c5aef06dc4b659a4b578"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cab5d0b79d987c67f3b9e9c53f54a61360422a5a0bc075f43cab5621d530c3b6"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:9289fd5dddcf57bab41d044f1756550f9e7cf0c8e373b8cdf0ce8773dc4bd417"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b493a043635eb376e50eedf7818f2f322eabbaa974e948bd8bdd29eb7ef2a51"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9fa2566ca27d67c86569e8c85297aaf413ffab85a8960500f12ea34ff98e4c41"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a8e538f46104c815be19c975572d74afb53f29650ea2025bbfaef359d2de2f7f"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fd30dc99682dc2c603c2b315bded2799019cea829f8bf57dc6b61efde6611c8"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2006769bd1640bdf4d5641c69a3d63b71b81445473cac5ded39740a226fa88ab"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:dc15e99b2d8a656f8e666854404f1ba54765871104e50c8e9813af8a7db07f12"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:ab2e5bef076f5a235c3774b4f4028a680432cded7cad37bba0fd90d64b187d19"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:4ec9dd88a5b71abfc74e9df5ebe7921c35cbb3b641181a531ca65cdb5e8e4dea"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:43193c5cda5d612f247172016c4bb71251c784d7a4d9314677186a838ad34858"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:aa693779a8b50cd97570e5a0f343538a8dbd3e496fa5dcb87e29406ad0299654"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-win32.whl", hash = "sha256:7706f5850360ac01d80c89bcef1640683cc12ed87f42579dab6c5d3ed6888613"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:c3e446d253bd88f6377260d07c895816ebf33ffffd56c1c792b13bff9c3e1ade"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:980b4f289d1d90ca5efcf07958d3eb38ed9c0b7676bf2831a54d4f66f9c27dfa"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f28f891ccd15c514a0981f3b9db9aa23d62fe1a99997512b0491d2ed323d229a"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8aacce6e2e1edcb6ac625fb0f8c3a9570ccc7bfba1f63419b3769ccf6a00ed0"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd7af3717683bea4c87acd8c0d3d5b44d56120b26fd3f8a692bdd2d5260c620a"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5ff2ed8194587faf56555927b3aa10e6fb69d931e33953943bc4f837dfee2242"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e91f541a85298cf35433bf66f3fab2a4a2cff05c127eeca4af174f6d497f0d4b"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:309a7de0a0ff3040acaebb35ec45d18db4b28232f21998851cfa709eeff49d62"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:285e96d9d53422efc0d7a17c60e59f37fbf3dfa942073f666db4ac71e8d726d0"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:5d447056e2ca60382d460a604b6302d8db69476fd2015c81e7c35417cfabe4cd"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:20587d20f557fe189b7947d8e7ec5afa110ccf72a3128d61a2a387c3313f46be"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:130272c698667a982a5d0e626851ceff662565379baf0ff2cc58067b81d4f11d"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:ab22fbd9765e6954bc0bcff24c25ff71dcbfdb185fcdaca49e81bac68fe724d3"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:7782afc9b6b42200f7362858f9e73b1f8316afb276d316336c0ec3bd73312742"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-win32.whl", hash = "sha256:2de62e8801ddfff069cd5c504ce3bc9672b23266597d4e4f50eda28846c322f2"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:95c3c157765b031331dd4db3c775e58deaee050a3042fcad72cbc4189d7c8dca"}, - {file = "charset_normalizer-3.4.0-py3-none-any.whl", hash = "sha256:fe9f97feb71aa9896b81973a7bbada8c49501dc73e58a10fcef6663af95e5079"}, - {file = "charset_normalizer-3.4.0.tar.gz", hash = "sha256:223217c3d4f82c3ac5e29032b3f1c2eb0fb591b72161f86d93f5719079dae93e"}, +python-versions = ">=3.7" +files = [ + {file = "charset_normalizer-3.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:91b36a978b5ae0ee86c394f5a54d6ef44db1de0815eb43de826d41d21e4af3de"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7461baadb4dc00fd9e0acbe254e3d7d2112e7f92ced2adc96e54ef6501c5f176"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e218488cd232553829be0664c2292d3af2eeeb94b32bea483cf79ac6a694e037"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:80ed5e856eb7f30115aaf94e4a08114ccc8813e6ed1b5efa74f9f82e8509858f"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b010a7a4fd316c3c484d482922d13044979e78d1861f0e0650423144c616a46a"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4532bff1b8421fd0a320463030c7520f56a79c9024a4e88f01c537316019005a"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d973f03c0cb71c5ed99037b870f2be986c3c05e63622c017ea9816881d2dd247"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:3a3bd0dcd373514dcec91c411ddb9632c0d7d92aed7093b8c3bbb6d69ca74408"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:d9c3cdf5390dcd29aa8056d13e8e99526cda0305acc038b96b30352aff5ff2bb"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:2bdfe3ac2e1bbe5b59a1a63721eb3b95fc9b6817ae4a46debbb4e11f6232428d"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:eab677309cdb30d047996b36d34caeda1dc91149e4fdca0b1a039b3f79d9a807"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-win32.whl", hash = "sha256:c0429126cf75e16c4f0ad00ee0eae4242dc652290f940152ca8c75c3a4b6ee8f"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:9f0b8b1c6d84c8034a44893aba5e767bf9c7a211e313a9605d9c617d7083829f"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8bfa33f4f2672964266e940dd22a195989ba31669bd84629f05fab3ef4e2d125"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28bf57629c75e810b6ae989f03c0828d64d6b26a5e205535585f96093e405ed1"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f08ff5e948271dc7e18a35641d2f11a4cd8dfd5634f55228b691e62b37125eb3"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:234ac59ea147c59ee4da87a0c0f098e9c8d169f4dc2a159ef720f1a61bbe27cd"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd4ec41f914fa74ad1b8304bbc634b3de73d2a0889bd32076342a573e0779e00"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eea6ee1db730b3483adf394ea72f808b6e18cf3cb6454b4d86e04fa8c4327a12"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c96836c97b1238e9c9e3fe90844c947d5afbf4f4c92762679acfe19927d81d77"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4d86f7aff21ee58f26dcf5ae81a9addbd914115cdebcbb2217e4f0ed8982e146"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:09b5e6733cbd160dcc09589227187e242a30a49ca5cefa5a7edd3f9d19ed53fd"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:5777ee0881f9499ed0f71cc82cf873d9a0ca8af166dfa0af8ec4e675b7df48e6"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:237bdbe6159cff53b4f24f397d43c6336c6b0b42affbe857970cefbb620911c8"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-win32.whl", hash = "sha256:8417cb1f36cc0bc7eaba8ccb0e04d55f0ee52df06df3ad55259b9a323555fc8b"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:d7f50a1f8c450f3925cb367d011448c39239bb3eb4117c36a6d354794de4ce76"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:73d94b58ec7fecbc7366247d3b0b10a21681004153238750bb67bd9012414545"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dad3e487649f498dd991eeb901125411559b22e8d7ab25d3aeb1af367df5efd7"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c30197aa96e8eed02200a83fba2657b4c3acd0f0aa4bdc9f6c1af8e8962e0757"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2369eea1ee4a7610a860d88f268eb39b95cb588acd7235e02fd5a5601773d4fa"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc2722592d8998c870fa4e290c2eec2c1569b87fe58618e67d38b4665dfa680d"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffc9202a29ab3920fa812879e95a9e78b2465fd10be7fcbd042899695d75e616"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:804a4d582ba6e5b747c625bf1255e6b1507465494a40a2130978bda7b932c90b"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0f55e69f030f7163dffe9fd0752b32f070566451afe180f99dbeeb81f511ad8d"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c4c3e6da02df6fa1410a7680bd3f63d4f710232d3139089536310d027950696a"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:5df196eb874dae23dcfb968c83d4f8fdccb333330fe1fc278ac5ceeb101003a9"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e358e64305fe12299a08e08978f51fc21fac060dcfcddd95453eabe5b93ed0e1"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-win32.whl", hash = "sha256:9b23ca7ef998bc739bf6ffc077c2116917eabcc901f88da1b9856b210ef63f35"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:6ff8a4a60c227ad87030d76e99cd1698345d4491638dfa6673027c48b3cd395f"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:aabfa34badd18f1da5ec1bc2715cadc8dca465868a4e73a0173466b688f29dda"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22e14b5d70560b8dd51ec22863f370d1e595ac3d024cb8ad7d308b4cd95f8313"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8436c508b408b82d87dc5f62496973a1805cd46727c34440b0d29d8a2f50a6c9"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2d074908e1aecee37a7635990b2c6d504cd4766c7bc9fc86d63f9c09af3fa11b"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:955f8851919303c92343d2f66165294848d57e9bba6cf6e3625485a70a038d11"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:44ecbf16649486d4aebafeaa7ec4c9fed8b88101f4dd612dcaf65d5e815f837f"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0924e81d3d5e70f8126529951dac65c1010cdf117bb75eb02dd12339b57749dd"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2967f74ad52c3b98de4c3b32e1a44e32975e008a9cd2a8cc8966d6a5218c5cb2"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:c75cb2a3e389853835e84a2d8fb2b81a10645b503eca9bcb98df6b5a43eb8886"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:09b26ae6b1abf0d27570633b2b078a2a20419c99d66fb2823173d73f188ce601"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fa88b843d6e211393a37219e6a1c1df99d35e8fd90446f1118f4216e307e48cd"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-win32.whl", hash = "sha256:eb8178fe3dba6450a3e024e95ac49ed3400e506fd4e9e5c32d30adda88cbd407"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-win_amd64.whl", hash = "sha256:b1ac5992a838106edb89654e0aebfc24f5848ae2547d22c2c3f66454daa11971"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f30bf9fd9be89ecb2360c7d94a711f00c09b976258846efe40db3d05828e8089"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:97f68b8d6831127e4787ad15e6757232e14e12060bec17091b85eb1486b91d8d"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7974a0b5ecd505609e3b19742b60cee7aa2aa2fb3151bc917e6e2646d7667dcf"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc54db6c8593ef7d4b2a331b58653356cf04f67c960f584edb7c3d8c97e8f39e"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:311f30128d7d333eebd7896965bfcfbd0065f1716ec92bd5638d7748eb6f936a"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:7d053096f67cd1241601111b698f5cad775f97ab25d81567d3f59219b5f1adbd"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:807f52c1f798eef6cf26beb819eeb8819b1622ddfeef9d0977a8502d4db6d534"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:dccbe65bd2f7f7ec22c4ff99ed56faa1e9f785482b9bbd7c717e26fd723a1d1e"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_s390x.whl", hash = "sha256:2fb9bd477fdea8684f78791a6de97a953c51831ee2981f8e4f583ff3b9d9687e"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:01732659ba9b5b873fc117534143e4feefecf3b2078b0a6a2e925271bb6f4cfa"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-win32.whl", hash = "sha256:7a4f97a081603d2050bfaffdefa5b02a9ec823f8348a572e39032caa8404a487"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-win_amd64.whl", hash = "sha256:7b1bef6280950ee6c177b326508f86cad7ad4dff12454483b51d8b7d673a2c5d"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:ecddf25bee22fe4fe3737a399d0d177d72bc22be6913acfab364b40bce1ba83c"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c60ca7339acd497a55b0ea5d506b2a2612afb2826560416f6894e8b5770d4a9"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b7b2d86dd06bfc2ade3312a83a5c364c7ec2e3498f8734282c6c3d4b07b346b8"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dd78cfcda14a1ef52584dbb008f7ac81c1328c0f58184bf9a84c49c605002da6"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e27f48bcd0957c6d4cb9d6fa6b61d192d0b13d5ef563e5f2ae35feafc0d179c"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:01ad647cdd609225c5350561d084b42ddf732f4eeefe6e678765636791e78b9a"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:619a609aa74ae43d90ed2e89bdd784765de0a25ca761b93e196d938b8fd1dbbd"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:89149166622f4db9b4b6a449256291dc87a99ee53151c74cbd82a53c8c2f6ccd"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:7709f51f5f7c853f0fb938bcd3bc59cdfdc5203635ffd18bf354f6967ea0f824"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:345b0426edd4e18138d6528aed636de7a9ed169b4aaf9d61a8c19e39d26838ca"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:0907f11d019260cdc3f94fbdb23ff9125f6b5d1039b76003b5b0ac9d6a6c9d5b"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-win32.whl", hash = "sha256:ea0d8d539afa5eb2728aa1932a988a9a7af94f18582ffae4bc10b3fbdad0626e"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:329ce159e82018d646c7ac45b01a430369d526569ec08516081727a20e9e4af4"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:b97e690a2118911e39b4042088092771b4ae3fc3aa86518f84b8cf6888dbdb41"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:78baa6d91634dfb69ec52a463534bc0df05dbd546209b79a3880a34487f4b84f"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1a2bc9f351a75ef49d664206d51f8e5ede9da246602dc2d2726837620ea034b2"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75832c08354f595c760a804588b9357d34ec00ba1c940c15e31e96d902093770"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0af291f4fe114be0280cdd29d533696a77b5b49cfde5467176ecab32353395c4"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0167ddc8ab6508fe81860a57dd472b2ef4060e8d378f0cc555707126830f2537"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:2a75d49014d118e4198bcee5ee0a6f25856b29b12dbf7cd012791f8a6cc5c496"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:363e2f92b0f0174b2f8238240a1a30142e3db7b957a5dd5689b0e75fb717cc78"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:ab36c8eb7e454e34e60eb55ca5d241a5d18b2c6244f6827a30e451c42410b5f7"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:4c0907b1928a36d5a998d72d64d8eaa7244989f7aaaf947500d3a800c83a3fd6"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:04432ad9479fa40ec0f387795ddad4437a2b50417c69fa275e212933519ff294"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-win32.whl", hash = "sha256:3bed14e9c89dcb10e8f3a29f9ccac4955aebe93c71ae803af79265c9ca5644c5"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:49402233c892a461407c512a19435d1ce275543138294f7ef013f0b63d5d3765"}, + {file = "charset_normalizer-3.4.1-py3-none-any.whl", hash = "sha256:d98b1668f06378c6dbefec3b92299716b931cd4e6061f3c875a71ced1780ab85"}, + {file = "charset_normalizer-3.4.1.tar.gz", hash = "sha256:44251f18cd68a75b56585dd00dae26183e102cd5e0f9f1466e6df5da2ed64ea3"}, ] [[package]] @@ -207,80 +194,90 @@ requests = ">=2.6.0" [[package]] name = "ddtrace" -version = "2.17.0" +version = "2.20.0" description = "Datadog APM client library" optional = false python-versions = ">=3.7" files = [ - {file = "ddtrace-2.17.0-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:ae5f809923e1155a897146b233c7e4f426e369cfea36e51d2a34c24ee243cddd"}, - {file = "ddtrace-2.17.0-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:378ee9d7bce50ce7d641f6a2c3f970239726e1bba10ad1ddfd30ead28021bf58"}, - {file = "ddtrace-2.17.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c812167071a7ece0ac033526318a688c71de5861706a8b66e8edb6b8552366f8"}, - {file = "ddtrace-2.17.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca41b40c0ca1071ad63f086a54932944f379039d9858ad90c394f5f926a1fbae"}, - {file = "ddtrace-2.17.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ca8068b0f93ab28bc01cd3230e8f7615a80ce913ae64c197fe9b82e6de9bb14"}, - {file = "ddtrace-2.17.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:71af44f381f56d74fab09f5538a44804bc1372ee1e4923ccaba76628dea3355d"}, - {file = "ddtrace-2.17.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:63bdc9d4ffab38804e7c5fcd7d1878ed01e5e651f5a98879bd5b6011915a0905"}, - {file = "ddtrace-2.17.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:d38ef95fb968f5b06e436ba9443879aa056d4d19851bea53b63b9e280f19684f"}, - {file = "ddtrace-2.17.0-cp310-cp310-win32.whl", hash = "sha256:feeaab6f86fdea1244c3e62c4d089f8bd62d4a4fb3b08e9b3793c4d43f3bdd40"}, - {file = "ddtrace-2.17.0-cp310-cp310-win_amd64.whl", hash = "sha256:9ddfdd125799aaf898c76c3086e642e9e4b9afdd31f9c82ca8bce746598e8ecc"}, - {file = "ddtrace-2.17.0-cp311-cp311-macosx_12_0_universal2.whl", hash = "sha256:6e328ca2af3dc42fad6972d35d6a8a96537f3c3a3b57184776dd74953a3ea92c"}, - {file = "ddtrace-2.17.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:1f03ffe8759caef237e1c1df7a81224cc8d9d3cfed49f6dc8cd581fa1d9c97e5"}, - {file = "ddtrace-2.17.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:52b317b593ecb88d84de53ddc550ea812a47b0498c96068f35e922bbcefb792b"}, - {file = "ddtrace-2.17.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6c5008e2b79f066072ae918224c9b8e2096b98484e979549993b39452cb2db3a"}, - {file = "ddtrace-2.17.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:16d62a7b0d5f751012ccc750b580a4b94f35fa0331eb9895dd8196341b82c5c1"}, - {file = "ddtrace-2.17.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:18e18b122dc46e0885302989727dd96725bf870308273d21224b64546707b404"}, - {file = "ddtrace-2.17.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fce47e8c19d3d68ab1d68fe9f36cf3050ddb456a2baf842868d3d8f6142b9a2a"}, - {file = "ddtrace-2.17.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e158201f3cd3f29bbcb9656bc71517c646a97a8ecdfa55fac7c716a15b51e2da"}, - {file = "ddtrace-2.17.0-cp311-cp311-win32.whl", hash = "sha256:49c8782b50d50053663d7eeea4ed6cc9e8957dca36ca1ee3c3d47bbb6bc8fdc2"}, - {file = "ddtrace-2.17.0-cp311-cp311-win_amd64.whl", hash = "sha256:2b4d9a057ce3c67d97a211593d4938808fe0f1540989e9b65b4e1ca181a153fe"}, - {file = "ddtrace-2.17.0-cp312-cp312-macosx_12_0_universal2.whl", hash = "sha256:4efdf9b1cc2df28217633fe15f7bfac2f1368f3b55486e5eb746a0de5ecc14fb"}, - {file = "ddtrace-2.17.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:5cc69b201cf95ad7fad55631267e49650de74669fcb7395af72ef239ba8db3c5"}, - {file = "ddtrace-2.17.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:049891021a34cdefe11be422d5d068ea7f08cda5dbccbeafcd6065c574ad0de8"}, - {file = "ddtrace-2.17.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:56efa7c84b1846ad7cc6390d0ae8a2c75fdb9452252c37f22292cf24ac7b2922"}, - {file = "ddtrace-2.17.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ebef1c3415f2fb42cd4db570b9315195fbcb6b97a89980eb636ee63911233b1"}, - {file = "ddtrace-2.17.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:9bca7341d2d6f804a03243987210873bf317c945e0a017c45903a7e06e3ab5af"}, - {file = "ddtrace-2.17.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:197e4433dd80bc7e4b21d944e0f780c3ae5323967b54af9d6cc6b9ccdf823a1f"}, - {file = "ddtrace-2.17.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:1c313c11d5c9b1efb2a0c5f5a937377d4086cb04c7b3ffd0f708c0a0ee69642a"}, - {file = "ddtrace-2.17.0-cp312-cp312-win32.whl", hash = "sha256:16ac67305d4d8da6b98630aad0d9b0ad482ffba9249d4084eeb1869fd774781b"}, - {file = "ddtrace-2.17.0-cp312-cp312-win_amd64.whl", hash = "sha256:5a1d3779934625bffc082f20035838d40b9dc4aae2145a9077651a9474975d92"}, - {file = "ddtrace-2.17.0-cp37-cp37m-macosx_12_0_x86_64.whl", hash = "sha256:367ec7ab529c52d8dad61bc0eeff121bb032b2ecd70c7c3e47c90ba18527a032"}, - {file = "ddtrace-2.17.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:58e078adcf6ad33cf556b8e392a9f2cba104791a3588e458bf27ad696d7061d2"}, - {file = "ddtrace-2.17.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b57996d03badace1581edef7f6007d5b9fcbef01a06ab0fae287dd75def451ad"}, - {file = "ddtrace-2.17.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:725d22381877af3d497a865a3362c46f1edc395f6aece601c16e9ef9d19bb1b5"}, - {file = "ddtrace-2.17.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:2f9da9267ad81e6cc89aaff14f7367f9c9e42c4933d2b842f5e5ca9c4f19ae30"}, - {file = "ddtrace-2.17.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:3d4035b641b96b211998c52d85518c8a4abd59e3e68a584be4c1ff037514d238"}, - {file = "ddtrace-2.17.0-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:87a39f70dc7e41eff7b552a44d023fd28c29a67825bc77ad92e49d4a93a178cc"}, - {file = "ddtrace-2.17.0-cp37-cp37m-win32.whl", hash = "sha256:07bb7aab2dd5598783e6ac1dfed375c1076408a9cd31fe984b38f058ed508a8a"}, - {file = "ddtrace-2.17.0-cp37-cp37m-win_amd64.whl", hash = "sha256:bdccbb8cd7ecabbd989ef8773acbfbcf5e4308447f84381208c5e0716b517dd3"}, - {file = "ddtrace-2.17.0-cp38-cp38-macosx_12_0_universal2.whl", hash = "sha256:f1d874a82300c90efa916c9adfa51754126b338b953ee415bda28766e81c210b"}, - {file = "ddtrace-2.17.0-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:0f4a9180623a9168e6dce9305fd0b2974f11520bade267ab33d3fec396c899b4"}, - {file = "ddtrace-2.17.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:04358661d6a3e548761834afc0ff2c50ad2cb05a2c61cc70eaa025f58e52658d"}, - {file = "ddtrace-2.17.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2d801ad2e6e1ba911904d10a35972d901d206a3a3cb7fcd46c44fd46cd85e7c4"}, - {file = "ddtrace-2.17.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:567b5f5f04bf1a3e77ae49f397899a394e202ce1e78102a0f0033eebfe7c8799"}, - {file = "ddtrace-2.17.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:abc565cc8850aa2244873ce2dc950b59b3e496bd0ecbd2b80602f6f15f3e4608"}, - {file = "ddtrace-2.17.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:7cc8ee99f3333bf24943a5b898d2a6554fad59a760055d7b683809740caa8fea"}, - {file = "ddtrace-2.17.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:dbeb928b71ca9405b2b2accc68071e97f4ad4bb9eba4920c5d5a78937b72c76a"}, - {file = "ddtrace-2.17.0-cp38-cp38-win32.whl", hash = "sha256:3f88c6b892083f65a15ad11ae5b60762cfa96deb73d35cd76c17ae2d45b016c1"}, - {file = "ddtrace-2.17.0-cp38-cp38-win_amd64.whl", hash = "sha256:aebce48a57c3570f30e2e2979ec0b2d334673c9b9a55b3f245c1bc85f012d33a"}, - {file = "ddtrace-2.17.0-cp39-cp39-macosx_12_0_universal2.whl", hash = "sha256:6dd27b037c7a7d68a731b0fb4c4a8cf71f736125caf96e5a6fe5fad5c6ec1938"}, - {file = "ddtrace-2.17.0-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:b689fba18e3af350adf8c2f7dfd41a8c9b3eb06af8c6e9d85291f418082cb6bc"}, - {file = "ddtrace-2.17.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:64b796ab81a1bc243043b64ac62a18c74cf3b375a61cb75584e8851759d658a8"}, - {file = "ddtrace-2.17.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ba0f163d8dc6d4b1a07ded35bdd4475213542433211afcffbf94222a0096e7e"}, - {file = "ddtrace-2.17.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d975cfc86678d408bbe1d6a4432963140931c37e3e343bdf35abd2a1d6712594"}, - {file = "ddtrace-2.17.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:488ac9801ed615aa8b6dee9c8bd08046e853fc725e6cb2585230dfae1a28d034"}, - {file = "ddtrace-2.17.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a3f15ca519f5c14cc439fd915be1ac4951fc56b7143dc53b20eec5ca317558fa"}, - {file = "ddtrace-2.17.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:1e11f59155efd640031f40b3c23666f795e90795053e0f8b036388b108dfec95"}, - {file = "ddtrace-2.17.0-cp39-cp39-win32.whl", hash = "sha256:fa1928ea0a8c5160df51e97d562a4ed8891ae0db749b148b3aaa43c64b291c00"}, - {file = "ddtrace-2.17.0-cp39-cp39-win_amd64.whl", hash = "sha256:121c62710395bd71f7de8605716cac25e9cce3115f42c83729552ba0be35946a"}, - {file = "ddtrace-2.17.0.tar.gz", hash = "sha256:441fbf87025194f954c154b208ce979aa2ce5d03f9ef8da266c94ce09a56c2c5"}, + {file = "ddtrace-2.20.0-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:e1dee099099b95acf7d0e552179925cfec58a52315cc914d153506367b195bc4"}, + {file = "ddtrace-2.20.0-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:9d209bef14caafcd53be8c14e04741d86c08f76496c1bf755e2eaa38605ce3e0"}, + {file = "ddtrace-2.20.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7f37966012078151713d61382de2a7ed710a8f375820e0db41930436b813b651"}, + {file = "ddtrace-2.20.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:879b963baf0b97d5ddd26185ab496b79efd25bbfdc2c25dbb1113ec19dc5abf9"}, + {file = "ddtrace-2.20.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:13e9b9a87c9df8a029fd3583ac660538dfa9d53207fee82b7f04749148bf8a3b"}, + {file = "ddtrace-2.20.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:eb76547a4bbf285d03ffc6e065bbad61761954741da2df0e4683d68d46ef2159"}, + {file = "ddtrace-2.20.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:194973afa1e357c68b6a6eceaabbddcef01130d167775126c2a15b3c1827f683"}, + {file = "ddtrace-2.20.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:a71d2fc753b8fa2c3435b6f4d5f820d8deb51f49df59a4886b4da68b67f923d3"}, + {file = "ddtrace-2.20.0-cp310-cp310-win32.whl", hash = "sha256:567054d0c01dc552a8a24c4c9eeb98d778be720d2c4c9536acf1b86d6969a5e4"}, + {file = "ddtrace-2.20.0-cp310-cp310-win_amd64.whl", hash = "sha256:d39f96e2fdfdf7ab43ee89a20d914f5ab12f8f361c390663eacb0e5da6e6e7fb"}, + {file = "ddtrace-2.20.0-cp311-cp311-macosx_12_0_universal2.whl", hash = "sha256:0a1d7eaf6c9a5e0eabb8396f7d19faffc8f76a1ae37f34814c3432a9ca6f31da"}, + {file = "ddtrace-2.20.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:301a7787a34113b56cc9067a593c4717f6e158f2393883c30b59d0a37ebc06fa"}, + {file = "ddtrace-2.20.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8d76ce49eb42588766db6756240d746441a66f03932547bfca9c62a8aecdbb38"}, + {file = "ddtrace-2.20.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a84d2e2411496c1b4ca3ce0cfb407d186cb3d13f1769c321fec30e677d815cd8"}, + {file = "ddtrace-2.20.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da47746a24242d805a800bca0a10b1354353e18b0bc4b6caf9c9c1724ba286b0"}, + {file = "ddtrace-2.20.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6f89e6003a738800beeb9948c847366976c73de2e24cc469b644a125f418c0a8"}, + {file = "ddtrace-2.20.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4fca20220bf668ebcac7051d28648b62aa95d2afeb5036ecad167cb454c7dcf1"}, + {file = "ddtrace-2.20.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1197e89fcaaca4ce419e3c812d04c73b8d16973202472cf3f674b4698b967697"}, + {file = "ddtrace-2.20.0-cp311-cp311-win32.whl", hash = "sha256:44bcd604a1d9095f4eb6813db6a677a208bd47884aff9ddc5aa46f596765f38e"}, + {file = "ddtrace-2.20.0-cp311-cp311-win_amd64.whl", hash = "sha256:0a5f092df1ee4d0afe96502866ff0fb446a07c6a23d445ed616f1302c883e1d3"}, + {file = "ddtrace-2.20.0-cp312-cp312-macosx_12_0_universal2.whl", hash = "sha256:f77103d36e6ab52cb45781766620d3874d0a728565afa7fd57f8ce2d5087e8e7"}, + {file = "ddtrace-2.20.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:d1cec952ce2ca9efbb34c8a9ee522e1cc588fe454b9115120b30fd5d0f821512"}, + {file = "ddtrace-2.20.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a4a1da150e92b6d43047f2a91a7d3b7133207f94b82613625abf82662359b30e"}, + {file = "ddtrace-2.20.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:91ab68c1facc6cf04085fdeea53210ed9928e95116809fd9bfe2dea54e83375d"}, + {file = "ddtrace-2.20.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4fd7ec6410225e64ca875d1bc9bd6bd8489f52dd8558462fbb52447fb8f66ad3"}, + {file = "ddtrace-2.20.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:57864590ddb84da4eb99332fe4b521e6fd747992178e3eabcf4f87406e908bb1"}, + {file = "ddtrace-2.20.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:37693555704a0cbd4a925e4ffe9c6df696146c85557c5f66ce3a7a88406772d9"}, + {file = "ddtrace-2.20.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ae5e802aaefc0cd3b63e3fd46e051a39e9f960a02e89f44a5bb820f445b736f9"}, + {file = "ddtrace-2.20.0-cp312-cp312-win32.whl", hash = "sha256:14fe4f583bec105c40e233c74fcbaea185658651c626ce1609750d83d93a00ae"}, + {file = "ddtrace-2.20.0-cp312-cp312-win_amd64.whl", hash = "sha256:cfbc926ddfeece0312e82f9e00a68001647666d11ceb050a5bbe66ca8931e3d2"}, + {file = "ddtrace-2.20.0-cp313-cp313-macosx_12_0_universal2.whl", hash = "sha256:eeca6b6bd48794d48de438981dccbc96a06366edde798c12b2b3348ca5e03717"}, + {file = "ddtrace-2.20.0-cp313-cp313-macosx_12_0_x86_64.whl", hash = "sha256:3f526e75d1b61019db2cd715e8c7298325e21c3584f8677a7decf37aa81e7284"}, + {file = "ddtrace-2.20.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:96441189ccc772ef4871e23a35cec58a748c16ebfb2293eccaaa719dcbc368fd"}, + {file = "ddtrace-2.20.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4d31d769f222c9a5bde1d4a594da1341014bf02db1a7194f5a41ed7e5c4c9fa8"}, + {file = "ddtrace-2.20.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:54068dbf034e1f607ef5d58a9fa1b26bd78b4f3db0618ce0a3e9c4b04fff7209"}, + {file = "ddtrace-2.20.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:62e86d9b00277fe2b9bdfbc51ca1bc34aa5c1200aa6bc5084c7eaaab28b022de"}, + {file = "ddtrace-2.20.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:c83c2458de1cf1bbac48689c6541a85d54ad94ae6608961e1089cc2959a8c77a"}, + {file = "ddtrace-2.20.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:569d7a92a88ba9b2a203addea688b0585901534c92c2d148ef9f971b6d7b3805"}, + {file = "ddtrace-2.20.0-cp37-cp37m-macosx_12_0_x86_64.whl", hash = "sha256:df413d646fc14b4be51a15ed8e484bcdf3b21e370e2644a586283bcc7e0b2355"}, + {file = "ddtrace-2.20.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:33e4406a436278722df193c93d49e662a8891e8a440fddb273dca9a56fa27947"}, + {file = "ddtrace-2.20.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b9d358bc7b4b1daa2d6e6bc697244b39db653ddd5ae139045941d3db28950bfe"}, + {file = "ddtrace-2.20.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a523924382d2f8f87731e4ad86bbf4721fba9eb807ed3b0c862db6d768e1e81c"}, + {file = "ddtrace-2.20.0-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:0af78a424e9d87250a8648a35b7de5653f27b3f6f6803c1b33780816a07e6d26"}, + {file = "ddtrace-2.20.0-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:2723378e670d27927f7d1ab878c8668fc392a5656a66453b9808e7c4025431fd"}, + {file = "ddtrace-2.20.0-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:01f76fc9bf1413a188ddd59851eb3b668d3de936afed73a5914a817f36e11005"}, + {file = "ddtrace-2.20.0-cp37-cp37m-win32.whl", hash = "sha256:3a615ae95ef8f889304b2958655ac8cda23cf2f2c8faf5d8ff88bd14bdcf3fb4"}, + {file = "ddtrace-2.20.0-cp37-cp37m-win_amd64.whl", hash = "sha256:b90333661ffd3460bae6dbbd7a5f35d8467cff36bd7a689a47b014edb19c0fe6"}, + {file = "ddtrace-2.20.0-cp38-cp38-macosx_12_0_universal2.whl", hash = "sha256:ab27596e82bdfe9c0c5580f6886ec943ae2fe615a446c22470f6a1f9742dec62"}, + {file = "ddtrace-2.20.0-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:e2de7371291283cba1afdd7e919a577637099da0d6872d33b4008e1cad6e1b8b"}, + {file = "ddtrace-2.20.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fa4f90f472768aef8ce023a924505c9d1d09428fc9d6ab81bc0e3ab183e3ff48"}, + {file = "ddtrace-2.20.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:05b68ba6fe4da5317396100669edf91b3d54b95ae979a2a22ca880cfcc6c249d"}, + {file = "ddtrace-2.20.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1512d07e6c7cde13ae251906d57d31613fe5ee99fab2894e90679053b4256953"}, + {file = "ddtrace-2.20.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:dcadc60aa60e11f2db56065a834aaa5e52a9be02e8edc8d14aa7015fb54092ce"}, + {file = "ddtrace-2.20.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:698207d88941ea3e4e5f3add6071e6651caa12fcffe079359507391382251759"}, + {file = "ddtrace-2.20.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:9f95a251f84725df055202d933b4a8fb39cefd51341e10cad17d2a8b4d64700e"}, + {file = "ddtrace-2.20.0-cp38-cp38-win32.whl", hash = "sha256:0b121285459693ae9f3c9ce54cc4be981a2e73d4c52b8a5eb038cf41df9974dd"}, + {file = "ddtrace-2.20.0-cp38-cp38-win_amd64.whl", hash = "sha256:4c840dc91c622138a4a6abdbcbee56897d4c55d9e7bf16b1902ee676f20b22f2"}, + {file = "ddtrace-2.20.0-cp39-cp39-macosx_12_0_universal2.whl", hash = "sha256:c74d69e6a4cbd91f6fe411519d753f34893d6d40a68829b43485690df8a7f30f"}, + {file = "ddtrace-2.20.0-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:4902b64ba89a8e4008228e7a5007e20b2bb8071c6c7689abd47dddc159e2baf1"}, + {file = "ddtrace-2.20.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:758ba828eddd144a4804af692869e7278376efa740932a7453e8fdc0ed6ef6a7"}, + {file = "ddtrace-2.20.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:37995326df811236c9d92d1b5713378a7f11270bf1e21c64914653a3e12d7d01"}, + {file = "ddtrace-2.20.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ab7f1babd7a8e73edf70c957a5b3bbeb4c615b232a078a0fe4da566e1663d1aa"}, + {file = "ddtrace-2.20.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:1cd1b240f465c98e226ab896b1b1c3696752d5eb1051a0aafb8a3db701d2ddc1"}, + {file = "ddtrace-2.20.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:3a300515c3327af4fd5c6c83e6ca63cd0a20e4243381d4b712e3f406d9ddf201"}, + {file = "ddtrace-2.20.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:f1ce886b112e0e8aa66ba8cf3593f00f7f6ae6b48dd09bd8ce90c59adad59d66"}, + {file = "ddtrace-2.20.0-cp39-cp39-win32.whl", hash = "sha256:bb77464849b092f93839d5c257df9eaeb018521ddea2deef97dfc6e3501a2516"}, + {file = "ddtrace-2.20.0-cp39-cp39-win_amd64.whl", hash = "sha256:b95f14f0634fe3f02dcebb7b8a124207b3d44168fd0dfc6bfff1e4db93978089"}, + {file = "ddtrace-2.20.0.tar.gz", hash = "sha256:f185c6dd88cd04884f0ad27b37f14d837274e8fc4dc43407781334d92d41c3bc"}, ] [package.dependencies] bytecode = [ - {version = ">=0.15.0", markers = "python_version >= \"3.12.0\""}, + {version = ">=0.16.0", markers = "python_version >= \"3.13.0\""}, + {version = ">=0.15.0", markers = "python_version ~= \"3.12.0\""}, {version = ">=0.14.0", markers = "python_version ~= \"3.11.0\""}, {version = ">=0.13.0", markers = "python_version < \"3.11.0\""}, ] envier = ">=0.5,<1.0" +legacy-cgi = {version = ">=2.0.0", markers = "python_version >= \"3.13.0\""} opentelemetry-api = ">=1" protobuf = ">=3" typing_extensions = "*" @@ -293,20 +290,20 @@ opentracing = ["opentracing (>=2.0.0)"] [[package]] name = "deprecated" -version = "1.2.15" +version = "1.2.18" description = "Python @deprecated decorator to deprecate old python classes, functions or methods." optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7" files = [ - {file = "Deprecated-1.2.15-py2.py3-none-any.whl", hash = "sha256:353bc4a8ac4bfc96800ddab349d89c25dec1079f65fd53acdcc1e0b975b21320"}, - {file = "deprecated-1.2.15.tar.gz", hash = "sha256:683e561a90de76239796e6b6feac66b99030d2dd3fcf61ef996330f14bbb9b0d"}, + {file = "Deprecated-1.2.18-py2.py3-none-any.whl", hash = "sha256:bd5011788200372a32418f888e326a09ff80d0214bd961147cfed01b5c018eec"}, + {file = "deprecated-1.2.18.tar.gz", hash = "sha256:422b6f6d859da6f2ef57857761bfb392480502a64c3028ca9bbe86085d72115d"}, ] [package.dependencies] wrapt = ">=1.10,<2" [package.extras] -dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "jinja2 (>=3.0.3,<3.1.0)", "setuptools", "sphinx (<2)", "tox"] +dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "setuptools", "tox"] [[package]] name = "envier" @@ -411,6 +408,17 @@ files = [ {file = "jmespath-1.0.1.tar.gz", hash = "sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe"}, ] +[[package]] +name = "legacy-cgi" +version = "2.6.2" +description = "Fork of the standard library cgi and cgitb modules, being deprecated in PEP-594" +optional = false +python-versions = ">=3.10" +files = [ + {file = "legacy_cgi-2.6.2-py3-none-any.whl", hash = "sha256:a7b83afb1baf6ebeb56522537c5943ef9813cf933f6715e88a803f7edbce0bff"}, + {file = "legacy_cgi-2.6.2.tar.gz", hash = "sha256:9952471ceb304043b104c22d00b4f333cac27a6abe446d8a528fc437cf13c85f"}, +] + [[package]] name = "mccabe" version = "0.7.0" @@ -424,13 +432,13 @@ files = [ [[package]] name = "opentelemetry-api" -version = "1.28.2" +version = "1.29.0" description = "OpenTelemetry Python API" optional = false python-versions = ">=3.8" files = [ - {file = "opentelemetry_api-1.28.2-py3-none-any.whl", hash = "sha256:6fcec89e265beb258fe6b1acaaa3c8c705a934bd977b9f534a2b7c0d2d4275a6"}, - {file = "opentelemetry_api-1.28.2.tar.gz", hash = "sha256:ecdc70c7139f17f9b0cf3742d57d7020e3e8315d6cffcdf1a12a905d45b19cc0"}, + {file = "opentelemetry_api-1.29.0-py3-none-any.whl", hash = "sha256:5fcd94c4141cc49c736271f3e1efb777bebe9cc535759c54c936cca4f1b312b8"}, + {file = "opentelemetry_api-1.29.0.tar.gz", hash = "sha256:d04a6cf78aad09614f52964ecb38021e248f5714dc32c2e0d8fd99517b4d69cf"}, ] [package.dependencies] @@ -465,22 +473,22 @@ testing = ["pytest", "pytest-benchmark"] [[package]] name = "protobuf" -version = "5.28.3" +version = "5.29.3" description = "" optional = false python-versions = ">=3.8" files = [ - {file = "protobuf-5.28.3-cp310-abi3-win32.whl", hash = "sha256:0c4eec6f987338617072592b97943fdbe30d019c56126493111cf24344c1cc24"}, - {file = "protobuf-5.28.3-cp310-abi3-win_amd64.whl", hash = "sha256:91fba8f445723fcf400fdbe9ca796b19d3b1242cd873907979b9ed71e4afe868"}, - {file = "protobuf-5.28.3-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:a3f6857551e53ce35e60b403b8a27b0295f7d6eb63d10484f12bc6879c715687"}, - {file = "protobuf-5.28.3-cp38-abi3-manylinux2014_aarch64.whl", hash = "sha256:3fa2de6b8b29d12c61911505d893afe7320ce7ccba4df913e2971461fa36d584"}, - {file = "protobuf-5.28.3-cp38-abi3-manylinux2014_x86_64.whl", hash = "sha256:712319fbdddb46f21abb66cd33cb9e491a5763b2febd8f228251add221981135"}, - {file = "protobuf-5.28.3-cp38-cp38-win32.whl", hash = "sha256:3e6101d095dfd119513cde7259aa703d16c6bbdfae2554dfe5cfdbe94e32d548"}, - {file = "protobuf-5.28.3-cp38-cp38-win_amd64.whl", hash = "sha256:27b246b3723692bf1068d5734ddaf2fccc2cdd6e0c9b47fe099244d80200593b"}, - {file = "protobuf-5.28.3-cp39-cp39-win32.whl", hash = "sha256:135658402f71bbd49500322c0f736145731b16fc79dc8f367ab544a17eab4535"}, - {file = "protobuf-5.28.3-cp39-cp39-win_amd64.whl", hash = "sha256:70585a70fc2dd4818c51287ceef5bdba6387f88a578c86d47bb34669b5552c36"}, - {file = "protobuf-5.28.3-py3-none-any.whl", hash = "sha256:cee1757663fa32a1ee673434fcf3bf24dd54763c79690201208bafec62f19eed"}, - {file = "protobuf-5.28.3.tar.gz", hash = "sha256:64badbc49180a5e401f373f9ce7ab1d18b63f7dd4a9cdc43c92b9f0b481cef7b"}, + {file = "protobuf-5.29.3-cp310-abi3-win32.whl", hash = "sha256:3ea51771449e1035f26069c4c7fd51fba990d07bc55ba80701c78f886bf9c888"}, + {file = "protobuf-5.29.3-cp310-abi3-win_amd64.whl", hash = "sha256:a4fa6f80816a9a0678429e84973f2f98cbc218cca434abe8db2ad0bffc98503a"}, + {file = "protobuf-5.29.3-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:a8434404bbf139aa9e1300dbf989667a83d42ddda9153d8ab76e0d5dcaca484e"}, + {file = "protobuf-5.29.3-cp38-abi3-manylinux2014_aarch64.whl", hash = "sha256:daaf63f70f25e8689c072cfad4334ca0ac1d1e05a92fc15c54eb9cf23c3efd84"}, + {file = "protobuf-5.29.3-cp38-abi3-manylinux2014_x86_64.whl", hash = "sha256:c027e08a08be10b67c06bf2370b99c811c466398c357e615ca88c91c07f0910f"}, + {file = "protobuf-5.29.3-cp38-cp38-win32.whl", hash = "sha256:84a57163a0ccef3f96e4b6a20516cedcf5bb3a95a657131c5c3ac62200d23252"}, + {file = "protobuf-5.29.3-cp38-cp38-win_amd64.whl", hash = "sha256:b89c115d877892a512f79a8114564fb435943b59067615894c3b13cd3e1fa107"}, + {file = "protobuf-5.29.3-cp39-cp39-win32.whl", hash = "sha256:0eb32bfa5219fc8d4111803e9a690658aa2e6366384fd0851064b963b6d1f2a7"}, + {file = "protobuf-5.29.3-cp39-cp39-win_amd64.whl", hash = "sha256:6ce8cc3389a20693bfde6c6562e03474c40851b44975c9b2bf6df7d8c4f864da"}, + {file = "protobuf-5.29.3-py3-none-any.whl", hash = "sha256:0a18ed4a24198528f2333802eb075e59dea9d679ab7a6c5efb017a59004d849f"}, + {file = "protobuf-5.29.3.tar.gz", hash = "sha256:5da0f41edaf117bde316404bad1a486cb4ededf8e4a54891296f648e8e076620"}, ] [[package]] @@ -518,13 +526,13 @@ files = [ [[package]] name = "pytest" -version = "8.3.3" +version = "8.3.4" description = "pytest: simple powerful testing with Python" optional = true python-versions = ">=3.8" files = [ - {file = "pytest-8.3.3-py3-none-any.whl", hash = "sha256:a6853c7375b2663155079443d2e45de913a911a11d669df02a50814944db57b2"}, - {file = "pytest-8.3.3.tar.gz", hash = "sha256:70b98107bd648308a7952b06e6ca9a50bc660be218d53c257cc1fc94fda10181"}, + {file = "pytest-8.3.4-py3-none-any.whl", hash = "sha256:50e16d954148559c9a74109af1eaf0c945ba2d8f30f0a3d3335edde19788b6f6"}, + {file = "pytest-8.3.4.tar.gz", hash = "sha256:965370d062bce11e73868e0335abac31b4d3de0e82f4007408d242b4f8610761"}, ] [package.dependencies] @@ -595,41 +603,71 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] [[package]] name = "s3transfer" -version = "0.10.4" +version = "0.11.2" description = "An Amazon S3 Transfer Manager" optional = true python-versions = ">=3.8" files = [ - {file = "s3transfer-0.10.4-py3-none-any.whl", hash = "sha256:244a76a24355363a68164241438de1b72f8781664920260c48465896b712a41e"}, - {file = "s3transfer-0.10.4.tar.gz", hash = "sha256:29edc09801743c21eb5ecbc617a152df41d3c287f67b615f73e5f750583666a7"}, + {file = "s3transfer-0.11.2-py3-none-any.whl", hash = "sha256:be6ecb39fadd986ef1701097771f87e4d2f821f27f6071c872143884d2950fbc"}, + {file = "s3transfer-0.11.2.tar.gz", hash = "sha256:3b39185cb72f5acc77db1a58b6e25b977f28d20496b6e58d6813d75f464d632f"}, ] [package.dependencies] -botocore = ">=1.33.2,<2.0a.0" +botocore = ">=1.36.0,<2.0a.0" [package.extras] -crt = ["botocore[crt] (>=1.33.2,<2.0a.0)"] +crt = ["botocore[crt] (>=1.36.0,<2.0a.0)"] [[package]] name = "six" -version = "1.16.0" +version = "1.17.0" description = "Python 2 and 3 compatibility utilities" optional = true -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" files = [ - {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, - {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, + {file = "six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274"}, + {file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"}, ] [[package]] name = "tomli" -version = "2.1.0" +version = "2.2.1" description = "A lil' TOML parser" optional = true python-versions = ">=3.8" files = [ - {file = "tomli-2.1.0-py3-none-any.whl", hash = "sha256:a5c57c3d1c56f5ccdf89f6523458f60ef716e210fc47c4cfb188c5ba473e0391"}, - {file = "tomli-2.1.0.tar.gz", hash = "sha256:3f646cae2aec94e17d04973e4249548320197cfabdf130015d023de4b74d8ab8"}, + {file = "tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249"}, + {file = "tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6"}, + {file = "tomli-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ece47d672db52ac607a3d9599a9d48dcb2f2f735c6c2d1f34130085bb12b112a"}, + {file = "tomli-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6972ca9c9cc9f0acaa56a8ca1ff51e7af152a9f87fb64623e31d5c83700080ee"}, + {file = "tomli-2.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c954d2250168d28797dd4e3ac5cf812a406cd5a92674ee4c8f123c889786aa8e"}, + {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8dd28b3e155b80f4d54beb40a441d366adcfe740969820caf156c019fb5c7ec4"}, + {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e59e304978767a54663af13c07b3d1af22ddee3bb2fb0618ca1593e4f593a106"}, + {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:33580bccab0338d00994d7f16f4c4ec25b776af3ffaac1ed74e0b3fc95e885a8"}, + {file = "tomli-2.2.1-cp311-cp311-win32.whl", hash = "sha256:465af0e0875402f1d226519c9904f37254b3045fc5084697cefb9bdde1ff99ff"}, + {file = "tomli-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:2d0f2fdd22b02c6d81637a3c95f8cd77f995846af7414c5c4b8d0545afa1bc4b"}, + {file = "tomli-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4a8f6e44de52d5e6c657c9fe83b562f5f4256d8ebbfe4ff922c495620a7f6cea"}, + {file = "tomli-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8d57ca8095a641b8237d5b079147646153d22552f1c637fd3ba7f4b0b29167a8"}, + {file = "tomli-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e340144ad7ae1533cb897d406382b4b6fede8890a03738ff1683af800d54192"}, + {file = "tomli-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2b95f9de79181805df90bedc5a5ab4c165e6ec3fe99f970d0e302f384ad222"}, + {file = "tomli-2.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40741994320b232529c802f8bc86da4e1aa9f413db394617b9a256ae0f9a7f77"}, + {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:400e720fe168c0f8521520190686ef8ef033fb19fc493da09779e592861b78c6"}, + {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd"}, + {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e"}, + {file = "tomli-2.2.1-cp312-cp312-win32.whl", hash = "sha256:889f80ef92701b9dbb224e49ec87c645ce5df3fa2cc548664eb8a25e03127a98"}, + {file = "tomli-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7fc04e92e1d624a4a63c76474610238576942d6b8950a2d7f908a340494e67e4"}, + {file = "tomli-2.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f4039b9cbc3048b2416cc57ab3bda989a6fcf9b36cf8937f01a6e731b64f80d7"}, + {file = "tomli-2.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:286f0ca2ffeeb5b9bd4fcc8d6c330534323ec51b2f52da063b11c502da16f30c"}, + {file = "tomli-2.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a92ef1a44547e894e2a17d24e7557a5e85a9e1d0048b0b5e7541f76c5032cb13"}, + {file = "tomli-2.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9316dc65bed1684c9a98ee68759ceaed29d229e985297003e494aa825ebb0281"}, + {file = "tomli-2.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e85e99945e688e32d5a35c1ff38ed0b3f41f43fad8df0bdf79f72b2ba7bc5272"}, + {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ac065718db92ca818f8d6141b5f66369833d4a80a9d74435a268c52bdfa73140"}, + {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:d920f33822747519673ee656a4b6ac33e382eca9d331c87770faa3eef562aeb2"}, + {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a198f10c4d1b1375d7687bc25294306e551bf1abfa4eace6650070a5c1ae2744"}, + {file = "tomli-2.2.1-cp313-cp313-win32.whl", hash = "sha256:d3f5614314d758649ab2ab3a62d4f2004c825922f9e370b29416484086b264ec"}, + {file = "tomli-2.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:a38aa0308e754b0e3c67e344754dff64999ff9b513e691d0e786265c93583c69"}, + {file = "tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc"}, + {file = "tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff"}, ] [[package]] @@ -748,13 +786,13 @@ socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] [[package]] name = "urllib3" -version = "2.2.3" +version = "2.3.0" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac"}, - {file = "urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9"}, + {file = "urllib3-2.3.0-py3-none-any.whl", hash = "sha256:1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df"}, + {file = "urllib3-2.3.0.tar.gz", hash = "sha256:f8c5449b3cf0861679ce7e0503c7b44b5ec981bec0d1d3795a07f1ba96f0204d"}, ] [package.extras] @@ -765,81 +803,90 @@ zstd = ["zstandard (>=0.18.0)"] [[package]] name = "wrapt" -version = "1.16.0" +version = "1.17.2" description = "Module for decorators, wrappers and monkey patching." optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "wrapt-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4"}, - {file = "wrapt-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e4fdb9275308292e880dcbeb12546df7f3e0f96c6b41197e0cf37d2826359020"}, - {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb2dee3874a500de01c93d5c71415fcaef1d858370d405824783e7a8ef5db440"}, - {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2a88e6010048489cda82b1326889ec075a8c856c2e6a256072b28eaee3ccf487"}, - {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac83a914ebaf589b69f7d0a1277602ff494e21f4c2f743313414378f8f50a4cf"}, - {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:73aa7d98215d39b8455f103de64391cb79dfcad601701a3aa0dddacf74911d72"}, - {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:807cc8543a477ab7422f1120a217054f958a66ef7314f76dd9e77d3f02cdccd0"}, - {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bf5703fdeb350e36885f2875d853ce13172ae281c56e509f4e6eca049bdfb136"}, - {file = "wrapt-1.16.0-cp310-cp310-win32.whl", hash = "sha256:f6b2d0c6703c988d334f297aa5df18c45e97b0af3679bb75059e0e0bd8b1069d"}, - {file = "wrapt-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:decbfa2f618fa8ed81c95ee18a387ff973143c656ef800c9f24fb7e9c16054e2"}, - {file = "wrapt-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1a5db485fe2de4403f13fafdc231b0dbae5eca4359232d2efc79025527375b09"}, - {file = "wrapt-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:75ea7d0ee2a15733684badb16de6794894ed9c55aa5e9903260922f0482e687d"}, - {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a452f9ca3e3267cd4d0fcf2edd0d035b1934ac2bd7e0e57ac91ad6b95c0c6389"}, - {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43aa59eadec7890d9958748db829df269f0368521ba6dc68cc172d5d03ed8060"}, - {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72554a23c78a8e7aa02abbd699d129eead8b147a23c56e08d08dfc29cfdddca1"}, - {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d2efee35b4b0a347e0d99d28e884dfd82797852d62fcd7ebdeee26f3ceb72cf3"}, - {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:6dcfcffe73710be01d90cae08c3e548d90932d37b39ef83969ae135d36ef3956"}, - {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:eb6e651000a19c96f452c85132811d25e9264d836951022d6e81df2fff38337d"}, - {file = "wrapt-1.16.0-cp311-cp311-win32.whl", hash = "sha256:66027d667efe95cc4fa945af59f92c5a02c6f5bb6012bff9e60542c74c75c362"}, - {file = "wrapt-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:aefbc4cb0a54f91af643660a0a150ce2c090d3652cf4052a5397fb2de549cd89"}, - {file = "wrapt-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5eb404d89131ec9b4f748fa5cfb5346802e5ee8836f57d516576e61f304f3b7b"}, - {file = "wrapt-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9090c9e676d5236a6948330e83cb89969f433b1943a558968f659ead07cb3b36"}, - {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94265b00870aa407bd0cbcfd536f17ecde43b94fb8d228560a1e9d3041462d73"}, - {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2058f813d4f2b5e3a9eb2eb3faf8f1d99b81c3e51aeda4b168406443e8ba809"}, - {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98b5e1f498a8ca1858a1cdbffb023bfd954da4e3fa2c0cb5853d40014557248b"}, - {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:14d7dc606219cdd7405133c713f2c218d4252f2a469003f8c46bb92d5d095d81"}, - {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:49aac49dc4782cb04f58986e81ea0b4768e4ff197b57324dcbd7699c5dfb40b9"}, - {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:418abb18146475c310d7a6dc71143d6f7adec5b004ac9ce08dc7a34e2babdc5c"}, - {file = "wrapt-1.16.0-cp312-cp312-win32.whl", hash = "sha256:685f568fa5e627e93f3b52fda002c7ed2fa1800b50ce51f6ed1d572d8ab3e7fc"}, - {file = "wrapt-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:dcdba5c86e368442528f7060039eda390cc4091bfd1dca41e8046af7c910dda8"}, - {file = "wrapt-1.16.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d462f28826f4657968ae51d2181a074dfe03c200d6131690b7d65d55b0f360f8"}, - {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a33a747400b94b6d6b8a165e4480264a64a78c8a4c734b62136062e9a248dd39"}, - {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3646eefa23daeba62643a58aac816945cadc0afaf21800a1421eeba5f6cfb9c"}, - {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ebf019be5c09d400cf7b024aa52b1f3aeebeff51550d007e92c3c1c4afc2a40"}, - {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:0d2691979e93d06a95a26257adb7bfd0c93818e89b1406f5a28f36e0d8c1e1fc"}, - {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:1acd723ee2a8826f3d53910255643e33673e1d11db84ce5880675954183ec47e"}, - {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:bc57efac2da352a51cc4658878a68d2b1b67dbe9d33c36cb826ca449d80a8465"}, - {file = "wrapt-1.16.0-cp36-cp36m-win32.whl", hash = "sha256:da4813f751142436b075ed7aa012a8778aa43a99f7b36afe9b742d3ed8bdc95e"}, - {file = "wrapt-1.16.0-cp36-cp36m-win_amd64.whl", hash = "sha256:6f6eac2360f2d543cc875a0e5efd413b6cbd483cb3ad7ebf888884a6e0d2e966"}, - {file = "wrapt-1.16.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a0ea261ce52b5952bf669684a251a66df239ec6d441ccb59ec7afa882265d593"}, - {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bd2d7ff69a2cac767fbf7a2b206add2e9a210e57947dd7ce03e25d03d2de292"}, - {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9159485323798c8dc530a224bd3ffcf76659319ccc7bbd52e01e73bd0241a0c5"}, - {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a86373cf37cd7764f2201b76496aba58a52e76dedfaa698ef9e9688bfd9e41cf"}, - {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:73870c364c11f03ed072dda68ff7aea6d2a3a5c3fe250d917a429c7432e15228"}, - {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b935ae30c6e7400022b50f8d359c03ed233d45b725cfdd299462f41ee5ffba6f"}, - {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:db98ad84a55eb09b3c32a96c576476777e87c520a34e2519d3e59c44710c002c"}, - {file = "wrapt-1.16.0-cp37-cp37m-win32.whl", hash = "sha256:9153ed35fc5e4fa3b2fe97bddaa7cbec0ed22412b85bcdaf54aeba92ea37428c"}, - {file = "wrapt-1.16.0-cp37-cp37m-win_amd64.whl", hash = "sha256:66dfbaa7cfa3eb707bbfcd46dab2bc6207b005cbc9caa2199bcbc81d95071a00"}, - {file = "wrapt-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1dd50a2696ff89f57bd8847647a1c363b687d3d796dc30d4dd4a9d1689a706f0"}, - {file = "wrapt-1.16.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:44a2754372e32ab315734c6c73b24351d06e77ffff6ae27d2ecf14cf3d229202"}, - {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e9723528b9f787dc59168369e42ae1c3b0d3fadb2f1a71de14531d321ee05b0"}, - {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbed418ba5c3dce92619656802cc5355cb679e58d0d89b50f116e4a9d5a9603e"}, - {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:941988b89b4fd6b41c3f0bfb20e92bd23746579736b7343283297c4c8cbae68f"}, - {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6a42cd0cfa8ffc1915aef79cb4284f6383d8a3e9dcca70c445dcfdd639d51267"}, - {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1ca9b6085e4f866bd584fb135a041bfc32cab916e69f714a7d1d397f8c4891ca"}, - {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5e49454f19ef621089e204f862388d29e6e8d8b162efce05208913dde5b9ad6"}, - {file = "wrapt-1.16.0-cp38-cp38-win32.whl", hash = "sha256:c31f72b1b6624c9d863fc095da460802f43a7c6868c5dda140f51da24fd47d7b"}, - {file = "wrapt-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:490b0ee15c1a55be9c1bd8609b8cecd60e325f0575fc98f50058eae366e01f41"}, - {file = "wrapt-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9b201ae332c3637a42f02d1045e1d0cccfdc41f1f2f801dafbaa7e9b4797bfc2"}, - {file = "wrapt-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2076fad65c6736184e77d7d4729b63a6d1ae0b70da4868adeec40989858eb3fb"}, - {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5cd603b575ebceca7da5a3a251e69561bec509e0b46e4993e1cac402b7247b8"}, - {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b47cfad9e9bbbed2339081f4e346c93ecd7ab504299403320bf85f7f85c7d46c"}, - {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8212564d49c50eb4565e502814f694e240c55551a5f1bc841d4fcaabb0a9b8a"}, - {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5f15814a33e42b04e3de432e573aa557f9f0f56458745c2074952f564c50e664"}, - {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:db2e408d983b0e61e238cf579c09ef7020560441906ca990fe8412153e3b291f"}, - {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:edfad1d29c73f9b863ebe7082ae9321374ccb10879eeabc84ba3b69f2579d537"}, - {file = "wrapt-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed867c42c268f876097248e05b6117a65bcd1e63b779e916fe2e33cd6fd0d3c3"}, - {file = "wrapt-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:eb1b046be06b0fce7249f1d025cd359b4b80fc1c3e24ad9eca33e0dcdb2e4a35"}, - {file = "wrapt-1.16.0-py3-none-any.whl", hash = "sha256:6906c4100a8fcbf2fa735f6059214bb13b97f75b1a61777fcf6432121ef12ef1"}, - {file = "wrapt-1.16.0.tar.gz", hash = "sha256:5f370f952971e7d17c7d1ead40e49f32345a7f7a5373571ef44d800d06b1899d"}, + {file = "wrapt-1.17.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3d57c572081fed831ad2d26fd430d565b76aa277ed1d30ff4d40670b1c0dd984"}, + {file = "wrapt-1.17.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b5e251054542ae57ac7f3fba5d10bfff615b6c2fb09abeb37d2f1463f841ae22"}, + {file = "wrapt-1.17.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:80dd7db6a7cb57ffbc279c4394246414ec99537ae81ffd702443335a61dbf3a7"}, + {file = "wrapt-1.17.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a6e821770cf99cc586d33833b2ff32faebdbe886bd6322395606cf55153246c"}, + {file = "wrapt-1.17.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b60fb58b90c6d63779cb0c0c54eeb38941bae3ecf7a73c764c52c88c2dcb9d72"}, + {file = "wrapt-1.17.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b870b5df5b71d8c3359d21be8f0d6c485fa0ebdb6477dda51a1ea54a9b558061"}, + {file = "wrapt-1.17.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:4011d137b9955791f9084749cba9a367c68d50ab8d11d64c50ba1688c9b457f2"}, + {file = "wrapt-1.17.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:1473400e5b2733e58b396a04eb7f35f541e1fb976d0c0724d0223dd607e0f74c"}, + {file = "wrapt-1.17.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3cedbfa9c940fdad3e6e941db7138e26ce8aad38ab5fe9dcfadfed9db7a54e62"}, + {file = "wrapt-1.17.2-cp310-cp310-win32.whl", hash = "sha256:582530701bff1dec6779efa00c516496968edd851fba224fbd86e46cc6b73563"}, + {file = "wrapt-1.17.2-cp310-cp310-win_amd64.whl", hash = "sha256:58705da316756681ad3c9c73fd15499aa4d8c69f9fd38dc8a35e06c12468582f"}, + {file = "wrapt-1.17.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ff04ef6eec3eee8a5efef2401495967a916feaa353643defcc03fc74fe213b58"}, + {file = "wrapt-1.17.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4db983e7bca53819efdbd64590ee96c9213894272c776966ca6306b73e4affda"}, + {file = "wrapt-1.17.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9abc77a4ce4c6f2a3168ff34b1da9b0f311a8f1cfd694ec96b0603dff1c79438"}, + {file = "wrapt-1.17.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b929ac182f5ace000d459c59c2c9c33047e20e935f8e39371fa6e3b85d56f4a"}, + {file = "wrapt-1.17.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f09b286faeff3c750a879d336fb6d8713206fc97af3adc14def0cdd349df6000"}, + {file = "wrapt-1.17.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1a7ed2d9d039bd41e889f6fb9364554052ca21ce823580f6a07c4ec245c1f5d6"}, + {file = "wrapt-1.17.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:129a150f5c445165ff941fc02ee27df65940fcb8a22a61828b1853c98763a64b"}, + {file = "wrapt-1.17.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:1fb5699e4464afe5c7e65fa51d4f99e0b2eadcc176e4aa33600a3df7801d6662"}, + {file = "wrapt-1.17.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9a2bce789a5ea90e51a02dfcc39e31b7f1e662bc3317979aa7e5538e3a034f72"}, + {file = "wrapt-1.17.2-cp311-cp311-win32.whl", hash = "sha256:4afd5814270fdf6380616b321fd31435a462019d834f83c8611a0ce7484c7317"}, + {file = "wrapt-1.17.2-cp311-cp311-win_amd64.whl", hash = "sha256:acc130bc0375999da18e3d19e5a86403667ac0c4042a094fefb7eec8ebac7cf3"}, + {file = "wrapt-1.17.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:d5e2439eecc762cd85e7bd37161d4714aa03a33c5ba884e26c81559817ca0925"}, + {file = "wrapt-1.17.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3fc7cb4c1c744f8c05cd5f9438a3caa6ab94ce8344e952d7c45a8ed59dd88392"}, + {file = "wrapt-1.17.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8fdbdb757d5390f7c675e558fd3186d590973244fab0c5fe63d373ade3e99d40"}, + {file = "wrapt-1.17.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5bb1d0dbf99411f3d871deb6faa9aabb9d4e744d67dcaaa05399af89d847a91d"}, + {file = "wrapt-1.17.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d18a4865f46b8579d44e4fe1e2bcbc6472ad83d98e22a26c963d46e4c125ef0b"}, + {file = "wrapt-1.17.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc570b5f14a79734437cb7b0500376b6b791153314986074486e0b0fa8d71d98"}, + {file = "wrapt-1.17.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6d9187b01bebc3875bac9b087948a2bccefe464a7d8f627cf6e48b1bbae30f82"}, + {file = "wrapt-1.17.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:9e8659775f1adf02eb1e6f109751268e493c73716ca5761f8acb695e52a756ae"}, + {file = "wrapt-1.17.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e8b2816ebef96d83657b56306152a93909a83f23994f4b30ad4573b00bd11bb9"}, + {file = "wrapt-1.17.2-cp312-cp312-win32.whl", hash = "sha256:468090021f391fe0056ad3e807e3d9034e0fd01adcd3bdfba977b6fdf4213ea9"}, + {file = "wrapt-1.17.2-cp312-cp312-win_amd64.whl", hash = "sha256:ec89ed91f2fa8e3f52ae53cd3cf640d6feff92ba90d62236a81e4e563ac0e991"}, + {file = "wrapt-1.17.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:6ed6ffac43aecfe6d86ec5b74b06a5be33d5bb9243d055141e8cabb12aa08125"}, + {file = "wrapt-1.17.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:35621ae4c00e056adb0009f8e86e28eb4a41a4bfa8f9bfa9fca7d343fe94f998"}, + {file = "wrapt-1.17.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a604bf7a053f8362d27eb9fefd2097f82600b856d5abe996d623babd067b1ab5"}, + {file = "wrapt-1.17.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5cbabee4f083b6b4cd282f5b817a867cf0b1028c54d445b7ec7cfe6505057cf8"}, + {file = "wrapt-1.17.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:49703ce2ddc220df165bd2962f8e03b84c89fee2d65e1c24a7defff6f988f4d6"}, + {file = "wrapt-1.17.2-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8112e52c5822fc4253f3901b676c55ddf288614dc7011634e2719718eaa187dc"}, + {file = "wrapt-1.17.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9fee687dce376205d9a494e9c121e27183b2a3df18037f89d69bd7b35bcf59e2"}, + {file = "wrapt-1.17.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:18983c537e04d11cf027fbb60a1e8dfd5190e2b60cc27bc0808e653e7b218d1b"}, + {file = "wrapt-1.17.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:703919b1633412ab54bcf920ab388735832fdcb9f9a00ae49387f0fe67dad504"}, + {file = "wrapt-1.17.2-cp313-cp313-win32.whl", hash = "sha256:abbb9e76177c35d4e8568e58650aa6926040d6a9f6f03435b7a522bf1c487f9a"}, + {file = "wrapt-1.17.2-cp313-cp313-win_amd64.whl", hash = "sha256:69606d7bb691b50a4240ce6b22ebb319c1cfb164e5f6569835058196e0f3a845"}, + {file = "wrapt-1.17.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:4a721d3c943dae44f8e243b380cb645a709ba5bd35d3ad27bc2ed947e9c68192"}, + {file = "wrapt-1.17.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:766d8bbefcb9e00c3ac3b000d9acc51f1b399513f44d77dfe0eb026ad7c9a19b"}, + {file = "wrapt-1.17.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e496a8ce2c256da1eb98bd15803a79bee00fc351f5dfb9ea82594a3f058309e0"}, + {file = "wrapt-1.17.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40d615e4fe22f4ad3528448c193b218e077656ca9ccb22ce2cb20db730f8d306"}, + {file = "wrapt-1.17.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a5aaeff38654462bc4b09023918b7f21790efb807f54c000a39d41d69cf552cb"}, + {file = "wrapt-1.17.2-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a7d15bbd2bc99e92e39f49a04653062ee6085c0e18b3b7512a4f2fe91f2d681"}, + {file = "wrapt-1.17.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:e3890b508a23299083e065f435a492b5435eba6e304a7114d2f919d400888cc6"}, + {file = "wrapt-1.17.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:8c8b293cd65ad716d13d8dd3624e42e5a19cc2a2f1acc74b30c2c13f15cb61a6"}, + {file = "wrapt-1.17.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:4c82b8785d98cdd9fed4cac84d765d234ed3251bd6afe34cb7ac523cb93e8b4f"}, + {file = "wrapt-1.17.2-cp313-cp313t-win32.whl", hash = "sha256:13e6afb7fe71fe7485a4550a8844cc9ffbe263c0f1a1eea569bc7091d4898555"}, + {file = "wrapt-1.17.2-cp313-cp313t-win_amd64.whl", hash = "sha256:eaf675418ed6b3b31c7a989fd007fa7c3be66ce14e5c3b27336383604c9da85c"}, + {file = "wrapt-1.17.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5c803c401ea1c1c18de70a06a6f79fcc9c5acfc79133e9869e730ad7f8ad8ef9"}, + {file = "wrapt-1.17.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f917c1180fdb8623c2b75a99192f4025e412597c50b2ac870f156de8fb101119"}, + {file = "wrapt-1.17.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ecc840861360ba9d176d413a5489b9a0aff6d6303d7e733e2c4623cfa26904a6"}, + {file = "wrapt-1.17.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb87745b2e6dc56361bfde481d5a378dc314b252a98d7dd19a651a3fa58f24a9"}, + {file = "wrapt-1.17.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58455b79ec2661c3600e65c0a716955adc2410f7383755d537584b0de41b1d8a"}, + {file = "wrapt-1.17.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4e42a40a5e164cbfdb7b386c966a588b1047558a990981ace551ed7e12ca9c2"}, + {file = "wrapt-1.17.2-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:91bd7d1773e64019f9288b7a5101f3ae50d3d8e6b1de7edee9c2ccc1d32f0c0a"}, + {file = "wrapt-1.17.2-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:bb90fb8bda722a1b9d48ac1e6c38f923ea757b3baf8ebd0c82e09c5c1a0e7a04"}, + {file = "wrapt-1.17.2-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:08e7ce672e35efa54c5024936e559469436f8b8096253404faeb54d2a878416f"}, + {file = "wrapt-1.17.2-cp38-cp38-win32.whl", hash = "sha256:410a92fefd2e0e10d26210e1dfb4a876ddaf8439ef60d6434f21ef8d87efc5b7"}, + {file = "wrapt-1.17.2-cp38-cp38-win_amd64.whl", hash = "sha256:95c658736ec15602da0ed73f312d410117723914a5c91a14ee4cdd72f1d790b3"}, + {file = "wrapt-1.17.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:99039fa9e6306880572915728d7f6c24a86ec57b0a83f6b2491e1d8ab0235b9a"}, + {file = "wrapt-1.17.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2696993ee1eebd20b8e4ee4356483c4cb696066ddc24bd70bcbb80fa56ff9061"}, + {file = "wrapt-1.17.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:612dff5db80beef9e649c6d803a8d50c409082f1fedc9dbcdfde2983b2025b82"}, + {file = "wrapt-1.17.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:62c2caa1585c82b3f7a7ab56afef7b3602021d6da34fbc1cf234ff139fed3cd9"}, + {file = "wrapt-1.17.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c958bcfd59bacc2d0249dcfe575e71da54f9dcf4a8bdf89c4cb9a68a1170d73f"}, + {file = "wrapt-1.17.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc78a84e2dfbc27afe4b2bd7c80c8db9bca75cc5b85df52bfe634596a1da846b"}, + {file = "wrapt-1.17.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:ba0f0eb61ef00ea10e00eb53a9129501f52385c44853dbd6c4ad3f403603083f"}, + {file = "wrapt-1.17.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:1e1fe0e6ab7775fd842bc39e86f6dcfc4507ab0ffe206093e76d61cde37225c8"}, + {file = "wrapt-1.17.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:c86563182421896d73858e08e1db93afdd2b947a70064b813d515d66549e15f9"}, + {file = "wrapt-1.17.2-cp39-cp39-win32.whl", hash = "sha256:f393cda562f79828f38a819f4788641ac7c4085f30f1ce1a68672baa686482bb"}, + {file = "wrapt-1.17.2-cp39-cp39-win_amd64.whl", hash = "sha256:36ccae62f64235cf8ddb682073a60519426fdd4725524ae38874adf72b5f2aeb"}, + {file = "wrapt-1.17.2-py3-none-any.whl", hash = "sha256:b18f2d1533a71f069c7f82d524a52599053d4c7166e9dd374ae2136b7f40f7c8"}, + {file = "wrapt-1.17.2.tar.gz", hash = "sha256:41388e9d4d1522446fe79d3213196bd9e3b301a336965b9e27ca2788ebd122f3"}, ] [[package]] @@ -878,4 +925,4 @@ dev = ["boto3", "flake8", "pytest", "pytest-benchmark", "requests"] [metadata] lock-version = "2.0" python-versions = ">=3.8.0,<4" -content-hash = "04aacf2bfd2b88de8559d11d8773aea6016bad1e2670462bd301cefb54e996f5" +content-hash = "9128af5437fd535ec458c64280d8390574c632e704cace5ea783de3c5d453c8c" diff --git a/pyproject.toml b/pyproject.toml index 3d97e0e0..94d90076 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -21,13 +21,14 @@ classifiers = [ "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", ] [tool.poetry.dependencies] python = ">=3.8.0,<4" datadog = ">=0.51.0,<1.0.0" wrapt = "^1.11.2" -ddtrace = ">=2.17.0" +ddtrace = ">=2.20.0" ujson = ">=5.9.0" boto3 = { version = "^1.34.0", optional = true } requests = { version ="^2.22.0", optional = true } diff --git a/scripts/add_new_region.sh b/scripts/add_new_region.sh index 434632d9..576d13e7 100755 --- a/scripts/add_new_region.sh +++ b/scripts/add_new_region.sh @@ -23,6 +23,8 @@ LAYER_NAMES=( "Datadog-Python311-ARM" "Datadog-Python312" "Datadog-Python312-ARM" + "Datadog-Python313" + "Datadog-Python313-ARM" ) PYTHON_VERSIONS_FOR_AWS_CLI=( "python3.8" @@ -35,6 +37,8 @@ PYTHON_VERSIONS_FOR_AWS_CLI=( "python3.11" "python3.12" "python3.12" + "python3.13" + "python3.13" ) NEW_REGION=$1 diff --git a/scripts/build_layers.sh b/scripts/build_layers.sh index d4f3076c..a0d6ee39 100755 --- a/scripts/build_layers.sh +++ b/scripts/build_layers.sh @@ -14,7 +14,7 @@ set -e LAYER_DIR=".layers" LAYER_FILES_PREFIX="datadog_lambda_py" -AVAILABLE_PYTHON_VERSIONS=("3.8" "3.9" "3.10" "3.11" "3.12") +AVAILABLE_PYTHON_VERSIONS=("3.8" "3.9" "3.10" "3.11" "3.12" "3.13") AVAILABLE_ARCHS=("arm64" "amd64") if [ -z "$ARCH" ]; then @@ -61,7 +61,7 @@ function docker_build_zip { # between different python runtimes. temp_dir=$(mktemp -d) docker buildx build -t datadog-lambda-python-${arch}:$1 . --no-cache \ - --build-arg image=python:$1 \ + --build-arg image=public.ecr.aws/docker/library/python:$1 \ --build-arg runtime=python$1 \ --platform linux/${arch} \ --progress=plain \ diff --git a/scripts/list_layers.sh b/scripts/list_layers.sh index 8a49cde4..6449e511 100755 --- a/scripts/list_layers.sh +++ b/scripts/list_layers.sh @@ -21,6 +21,8 @@ LAYER_NAMES=( "Datadog-Python311-ARM" "Datadog-Python312" "Datadog-Python312-ARM" + "Datadog-Python313" + "Datadog-Python313-ARM" ) AVAILABLE_REGIONS=$(aws ec2 describe-regions | jq -r '.[] | .[] | .RegionName') LAYERS_MISSING_REGIONS=() diff --git a/scripts/publish_layers.sh b/scripts/publish_layers.sh index 3deec0b4..8c78093f 100755 --- a/scripts/publish_layers.sh +++ b/scripts/publish_layers.sh @@ -24,6 +24,8 @@ PYTHON_VERSIONS_FOR_AWS_CLI=( "python3.11" "python3.12" "python3.12" + "python3.13" + "python3.13" ) LAYER_PATHS=( ".layers/datadog_lambda_py-amd64-3.8.zip" @@ -36,6 +38,8 @@ LAYER_PATHS=( ".layers/datadog_lambda_py-arm64-3.11.zip" ".layers/datadog_lambda_py-amd64-3.12.zip" ".layers/datadog_lambda_py-arm64-3.12.zip" + ".layers/datadog_lambda_py-amd64-3.13.zip" + ".layers/datadog_lambda_py-arm64-3.13.zip" ) AVAILABLE_LAYERS=( "Datadog-Python38" @@ -48,6 +52,8 @@ AVAILABLE_LAYERS=( "Datadog-Python311-ARM" "Datadog-Python312" "Datadog-Python312-ARM" + "Datadog-Python313" + "Datadog-Python313-ARM" ) AVAILABLE_REGIONS=$(aws ec2 describe-regions | jq -r '.[] | .[] | .RegionName') diff --git a/scripts/run_integration_tests.sh b/scripts/run_integration_tests.sh index 5e8c5f67..9ea2f013 100755 --- a/scripts/run_integration_tests.sh +++ b/scripts/run_integration_tests.sh @@ -32,8 +32,9 @@ python39=("python3.9" "3.9" $(xxd -l 4 -c 4 -p < /dev/random)) python310=("python3.10" "3.10" $(xxd -l 4 -c 4 -p < /dev/random)) python311=("python3.11" "3.11" $(xxd -l 4 -c 4 -p < /dev/random)) python312=("python3.12" "3.12" $(xxd -l 4 -c 4 -p < /dev/random)) +python313=("python3.13" "3.13" $(xxd -l 4 -c 4 -p < /dev/random)) -PARAMETERS_SETS=("python38" "python39" "python310" "python311" "python312") +PARAMETERS_SETS=("python38" "python39" "python310" "python311" "python312" "python313") if [ -z "$RUNTIME_PARAM" ]; then echo "Python version not specified, running for all python versions." diff --git a/scripts/run_tests.sh b/scripts/run_tests.sh index 540ac898..26f4e215 100755 --- a/scripts/run_tests.sh +++ b/scripts/run_tests.sh @@ -8,7 +8,7 @@ # Run unit tests in Docker set -e -PYTHON_VERSIONS=("3.8" "3.9" "3.10" "3.11" "3.12") +PYTHON_VERSIONS=("3.8" "3.9" "3.10" "3.11" "3.12" "3.13") for python_version in "${PYTHON_VERSIONS[@]}" do diff --git a/scripts/sign_layers.sh b/scripts/sign_layers.sh index 700bd55a..eb40062f 100755 --- a/scripts/sign_layers.sh +++ b/scripts/sign_layers.sh @@ -19,6 +19,8 @@ LAYER_FILES=( "datadog_lambda_py-arm64-3.11.zip" "datadog_lambda_py-amd64-3.12.zip" "datadog_lambda_py-arm64-3.12.zip" + "datadog_lambda_py-amd64-3.13.zip" + "datadog_lambda_py-arm64-3.13.zip" ) SIGNING_PROFILE_NAME="DatadogLambdaSigningProfile" diff --git a/tests/Dockerfile b/tests/Dockerfile index 7b96ab89..585c0fbe 100644 --- a/tests/Dockerfile +++ b/tests/Dockerfile @@ -1,5 +1,5 @@ ARG python_version -FROM python:$python_version +FROM public.ecr.aws/docker/library/python:$python_version ENV PYTHONDONTWRITEBYTECODE True diff --git a/tests/integration/snapshots/logs/async-metrics_python313.log b/tests/integration/snapshots/logs/async-metrics_python313.log new file mode 100644 index 00000000..45ca3b14 --- /dev/null +++ b/tests/integration/snapshots/logs/async-metrics_python313.log @@ -0,0 +1,1544 @@ +INIT_START Runtime Version: python:3.13.vX Runtime Version ARN: arn:aws:lambda:eu-west-1:XXXX:eu-west-1 +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python313", + "resource:integration-tests-python-XXXX-async-metrics_python313", + "memorysize:1024", + "cold_start:true", + "runtime:python3.13", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "XXXX.execute-api.us-east-2.amazonaws.com", + "resource": "GET /", + "name": "aws.apigateway", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.apigateway.rest", + "http.url": "XXXX.execute-api.us-east-2.amazonaws.com/", + "endpoint": "/", + "http.method": "GET", + "resource_names": "GET /", + "apiid": "XXXX", + "apiname": "XXXX", + "stage": "Prod", + "request_id": "XXXX", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "http.status_code": "200", + "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python313", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "true", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python313", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python313", + "functionname": "integration-tests-python-XXXX-async-metrics_python313", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "api-gateway", + "function_trigger.event_source_arn": "XXXX", + "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", + "http.url_details.path": "/Prod/", + "http.method": "GET", + "http.route": "/", + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms (init: XXXX ms) Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python313", + "resource:integration-tests-python-XXXX-async-metrics_python313", + "memorysize:1024", + "cold_start:false", + "runtime:python3.13", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "dynamodb", + "resource": "ExampleTableWithStream", + "name": "aws.dynamodb", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.dynamodb", + "resource_names": "ExampleTableWithStream", + "tablename": "ExampleTableWithStream", + "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", + "event_id": "XXXX", + "event_name": "INSERT", + "event_version": "1.1", + "stream_view_type": "NEW_AND_OLD_IMAGES", + "size_bytes": "26", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python313", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python313", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python313", + "functionname": "integration-tests-python-XXXX-async-metrics_python313", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "dynamodb", + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + }, + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + }, + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + } + ] + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python313", + "resource:integration-tests-python-XXXX-async-metrics_python313", + "memorysize:1024", + "cold_start:false", + "runtime:python3.13", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "eventbridge", + "resource": "eventbridge.custom.event.sender", + "name": "aws.eventbridge", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.eventbridge", + "resource_names": "eventbridge.custom.event.sender", + "detail_type": "testdetail", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python313", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python313", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python313", + "functionname": "integration-tests-python-XXXX-async-metrics_python313", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "eventbridge", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python313", + "resource:integration-tests-python-XXXX-async-metrics_python313", + "memorysize:1024", + "cold_start:false", + "runtime:python3.13", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", + "resource": "GET /httpapi/get", + "name": "aws.httpapi", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.httpapi", + "endpoint": "/httpapi/get", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "http.method": "GET", + "http.protocol": "HTTP/1.1", + "http.source_ip": "XXXX", + "http.user_agent": "XXXX/7.64.1", + "resource_names": "GET /httpapi/get", + "request_id": "XXXX", + "apiid": "XXXX", + "apiname": "XXXX", + "stage": "$default", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "http.status_code": "200", + "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python313", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python313", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python313", + "functionname": "integration-tests-python-XXXX-async-metrics_python313", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "api-gateway", + "function_trigger.event_source_arn": "XXXX$default", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.url_details.path": "/httpapi/get", + "http.method": "GET", + "http.route": "/httpapi/get", + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python313", + "resource:integration-tests-python-XXXX-async-metrics_python313", + "memorysize:1024", + "cold_start:false", + "runtime:python3.13", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "kinesis", + "resource": "EXAMPLE", + "name": "aws.kinesis", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.kinesis", + "resource_names": "EXAMPLE", + "streamname": "EXAMPLE", + "shardid": "shardId-XXXX", + "event_source_arn": "arn:aws:kinesis:EXAMPLE", + "event_id": "XXXX", + "event_name": "aws:kinesis:record", + "event_version": "1.0", + "partition_key": "XXXX", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python313", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python313", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python313", + "functionname": "integration-tests-python-XXXX-async-metrics_python313", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "kinesis", + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python313", + "resource:integration-tests-python-XXXX-async-metrics_python313", + "memorysize:1024", + "cold_start:false", + "runtime:python3.13", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "s3", + "resource": "example-bucket", + "name": "aws.s3", + "error": 0, + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.s3", + "resource_names": "example-bucket", + "event_name": "ObjectCreated:Put", + "bucketname": "example-bucket", + "bucket_arn": "arn:aws:s3:::example-bucket", + "object_key": "test/key", + "object_size": "1024", + "object_etag": "XXXX", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python313", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python313", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python313", + "functionname": "integration-tests-python-XXXX-async-metrics_python313", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "s3", + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.s3.object", + "ptr.dir": "u", + "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", + "link.kind": "span-pointer" + } + } + ] + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python313", + "resource:integration-tests-python-XXXX-async-metrics_python313", + "memorysize:1024", + "cold_start:false", + "runtime:python3.13", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "sns", + "resource": "sns-lambda", + "name": "aws.sns", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.sns", + "resource_names": "sns-lambda", + "topicname": "sns-lambda", + "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", + "message_id": "XXXX", + "type": "Notification", + "subject": "TestInvoke", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python313", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python313", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python313", + "functionname": "integration-tests-python-XXXX-async-metrics_python313", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "sns", + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python313", + "resource:integration-tests-python-XXXX-async-metrics_python313", + "memorysize:1024", + "cold_start:false", + "runtime:python3.13", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "sqs", + "resource": "my-queue", + "name": "aws.sqs", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.sqs", + "resource_names": "my-queue", + "queuename": "my-queue", + "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", + "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", + "sender_id": "AIDAIENQZJOLO23YVJ4VO", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python313", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python313", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python313", + "functionname": "integration-tests-python-XXXX-async-metrics_python313", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "sqs", + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python313", + "resource:integration-tests-python-XXXX-async-metrics_python313", + "memorysize:1024", + "cold_start:false", + "runtime:python3.13", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", + "resource": "$default", + "name": "aws.apigateway.websocket", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.apigateway.websocket", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com$default", + "endpoint": "$default", + "resource_names": "$default", + "apiid": "XXXX", + "apiname": "XXXX", + "stage": "dev", + "request_id": "XXXX", + "connection_id": "XXXX=", + "event_type": "MESSAGE", + "message_direction": "IN", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "http.status_code": "200", + "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python313", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python313", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python313", + "functionname": "integration-tests-python-XXXX-async-metrics_python313", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "api-gateway", + "function_trigger.event_source_arn": "XXXX", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB diff --git a/tests/integration/snapshots/logs/sync-metrics_python313.log b/tests/integration/snapshots/logs/sync-metrics_python313.log new file mode 100644 index 00000000..09402164 --- /dev/null +++ b/tests/integration/snapshots/logs/sync-metrics_python313.log @@ -0,0 +1,1715 @@ +INIT_START Runtime Version: python:3.13.vX Runtime Version ARN: arn:aws:lambda:eu-west-1:XXXX:eu-west-1 +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python313", + "resource:integration-tests-python-XXXX-sync-metrics_python313", + "memorysize:1024", + "cold_start:true", + "runtime:python3.13", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "XXXX.execute-api.us-east-2.amazonaws.com", + "resource": "GET /", + "name": "aws.apigateway", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.apigateway.rest", + "http.url": "XXXX.execute-api.us-east-2.amazonaws.com/", + "endpoint": "/", + "http.method": "GET", + "resource_names": "GET /", + "apiid": "XXXX", + "apiname": "XXXX", + "stage": "Prod", + "request_id": "XXXX", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "http.status_code": "200", + "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python313", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "true", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python313", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python313", + "functionname": "integration-tests-python-XXXX-sync-metrics_python313", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "api-gateway", + "function_trigger.event_source_arn": "XXXX", + "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", + "http.url_details.path": "/Prod/", + "http.method": "GET", + "http.route": "/", + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "POST /api/v1/distribution_points", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms (init: XXXX ms) Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python313", + "resource:integration-tests-python-XXXX-sync-metrics_python313", + "memorysize:1024", + "cold_start:false", + "runtime:python3.13", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "dynamodb", + "resource": "ExampleTableWithStream", + "name": "aws.dynamodb", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.dynamodb", + "resource_names": "ExampleTableWithStream", + "tablename": "ExampleTableWithStream", + "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", + "event_id": "XXXX", + "event_name": "INSERT", + "event_version": "1.1", + "stream_view_type": "NEW_AND_OLD_IMAGES", + "size_bytes": "26", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python313", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python313", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python313", + "functionname": "integration-tests-python-XXXX-sync-metrics_python313", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "dynamodb", + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + }, + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + }, + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + } + ] + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "POST /api/v1/distribution_points", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python313", + "resource:integration-tests-python-XXXX-sync-metrics_python313", + "memorysize:1024", + "cold_start:false", + "runtime:python3.13", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "eventbridge", + "resource": "eventbridge.custom.event.sender", + "name": "aws.eventbridge", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.eventbridge", + "resource_names": "eventbridge.custom.event.sender", + "detail_type": "testdetail", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python313", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python313", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python313", + "functionname": "integration-tests-python-XXXX-sync-metrics_python313", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "eventbridge", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "POST /api/v1/distribution_points", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python313", + "resource:integration-tests-python-XXXX-sync-metrics_python313", + "memorysize:1024", + "cold_start:false", + "runtime:python3.13", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", + "resource": "GET /httpapi/get", + "name": "aws.httpapi", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.httpapi", + "endpoint": "/httpapi/get", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "http.method": "GET", + "http.protocol": "HTTP/1.1", + "http.source_ip": "XXXX", + "http.user_agent": "XXXX/7.64.1", + "resource_names": "GET /httpapi/get", + "request_id": "XXXX", + "apiid": "XXXX", + "apiname": "XXXX", + "stage": "$default", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "http.status_code": "200", + "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python313", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python313", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python313", + "functionname": "integration-tests-python-XXXX-sync-metrics_python313", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "api-gateway", + "function_trigger.event_source_arn": "XXXX$default", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.url_details.path": "/httpapi/get", + "http.method": "GET", + "http.route": "/httpapi/get", + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "POST /api/v1/distribution_points", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python313", + "resource:integration-tests-python-XXXX-sync-metrics_python313", + "memorysize:1024", + "cold_start:false", + "runtime:python3.13", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "kinesis", + "resource": "EXAMPLE", + "name": "aws.kinesis", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.kinesis", + "resource_names": "EXAMPLE", + "streamname": "EXAMPLE", + "shardid": "shardId-XXXX", + "event_source_arn": "arn:aws:kinesis:EXAMPLE", + "event_id": "XXXX", + "event_name": "aws:kinesis:record", + "event_version": "1.0", + "partition_key": "XXXX", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python313", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python313", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python313", + "functionname": "integration-tests-python-XXXX-sync-metrics_python313", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "kinesis", + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "POST /api/v1/distribution_points", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python313", + "resource:integration-tests-python-XXXX-sync-metrics_python313", + "memorysize:1024", + "cold_start:false", + "runtime:python3.13", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "s3", + "resource": "example-bucket", + "name": "aws.s3", + "error": 0, + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.s3", + "resource_names": "example-bucket", + "event_name": "ObjectCreated:Put", + "bucketname": "example-bucket", + "bucket_arn": "arn:aws:s3:::example-bucket", + "object_key": "test/key", + "object_size": "1024", + "object_etag": "XXXX", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python313", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python313", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python313", + "functionname": "integration-tests-python-XXXX-sync-metrics_python313", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "s3", + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.s3.object", + "ptr.dir": "u", + "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", + "link.kind": "span-pointer" + } + } + ] + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "POST /api/v1/distribution_points", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python313", + "resource:integration-tests-python-XXXX-sync-metrics_python313", + "memorysize:1024", + "cold_start:false", + "runtime:python3.13", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "sns", + "resource": "sns-lambda", + "name": "aws.sns", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.sns", + "resource_names": "sns-lambda", + "topicname": "sns-lambda", + "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", + "message_id": "XXXX", + "type": "Notification", + "subject": "TestInvoke", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python313", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python313", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python313", + "functionname": "integration-tests-python-XXXX-sync-metrics_python313", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "sns", + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "POST /api/v1/distribution_points", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python313", + "resource:integration-tests-python-XXXX-sync-metrics_python313", + "memorysize:1024", + "cold_start:false", + "runtime:python3.13", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "sqs", + "resource": "my-queue", + "name": "aws.sqs", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.sqs", + "resource_names": "my-queue", + "queuename": "my-queue", + "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", + "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", + "sender_id": "AIDAIENQZJOLO23YVJ4VO", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python313", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python313", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python313", + "functionname": "integration-tests-python-XXXX-sync-metrics_python313", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "sqs", + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "POST /api/v1/distribution_points", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python313", + "resource:integration-tests-python-XXXX-sync-metrics_python313", + "memorysize:1024", + "cold_start:false", + "runtime:python3.13", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", + "resource": "$default", + "name": "aws.apigateway.websocket", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.apigateway.websocket", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com$default", + "endpoint": "$default", + "resource_names": "$default", + "apiid": "XXXX", + "apiname": "XXXX", + "stage": "dev", + "request_id": "XXXX", + "connection_id": "XXXX=", + "event_type": "MESSAGE", + "message_direction": "IN", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "http.status_code": "200", + "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python313", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python313", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python313", + "functionname": "integration-tests-python-XXXX-sync-metrics_python313", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "api-gateway", + "function_trigger.event_source_arn": "XXXX", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "POST /api/v1/distribution_points", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB From 0a62ed17d0adeed1c4985df2dd2f23db306344c4 Mon Sep 17 00:00:00 2001 From: Munir Abdinur Date: Thu, 30 Jan 2025 11:30:21 -0500 Subject: [PATCH 182/268] upgrade(deps): bump minimum ddtrace version to v2.20.0 (#555) * feat(ddtrace): upgrade ddtrace version * merge import * update more references --- datadog_lambda/cold_start.py | 2 +- datadog_lambda/tracing.py | 4 ++-- tests/test_benchmarks.py | 2 +- tests/test_tracing.py | 7 +++---- tests/test_wrapper.py | 2 +- 5 files changed, 8 insertions(+), 9 deletions(-) diff --git a/datadog_lambda/cold_start.py b/datadog_lambda/cold_start.py index 8c21420d..ea10ea20 100644 --- a/datadog_lambda/cold_start.py +++ b/datadog_lambda/cold_start.py @@ -31,7 +31,7 @@ def set_cold_start(init_timestamp_ns): _cold_start = False _proactive_initialization = False _lambda_container_initialized = True - from ddtrace import tracer as _tracer + from ddtrace.trace import tracer as _tracer def is_cold_start(): diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index c90baff1..973cb562 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -30,10 +30,10 @@ parse_xray_header, ) -from ddtrace import tracer, patch, Span +from ddtrace import patch from ddtrace import __version__ as ddtrace_version from ddtrace.propagation.http import HTTPPropagator -from ddtrace.context import Context +from ddtrace.trace import Context, Span, tracer from datadog_lambda import __version__ as datadog_lambda_version from datadog_lambda.trigger import ( _EventSource, diff --git a/tests/test_benchmarks.py b/tests/test_benchmarks.py index 899e3d7f..48598cb3 100644 --- a/tests/test_benchmarks.py +++ b/tests/test_benchmarks.py @@ -38,7 +38,7 @@ def test_metric_write_metric_point_to_stdout(benchmark, monkeypatch): def test_tag_object_tag_object(event, benchmark): with open(f"{event_samples_dir}/{event}.json") as f: event = json.load(f) - span = ddtrace.tracer.start_span("test") + span = ddtrace.trace.tracer.start_span("test") benchmark(tag_object.tag_object, span, "function.request", event) diff --git a/tests/test_tracing.py b/tests/test_tracing.py index f7d54542..89a7712c 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -10,8 +10,7 @@ import ddtrace -from ddtrace import tracer -from ddtrace.context import Context +from ddtrace.trace import Context, tracer from ddtrace._trace._span_pointer import _SpanPointer from ddtrace._trace._span_pointer import _SpanPointerDirection from ddtrace._trace._span_pointer import _SpanPointerDescription @@ -2158,7 +2157,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): @pytest.mark.parametrize("source,expect", _test_create_inferred_span) -@patch("ddtrace.Span.finish", autospec=True) +@patch("ddtrace.trace.Span.finish", autospec=True) def test_create_inferred_span(mock_span_finish, source, expect): with open(f"{event_samples}{source}.json") as f: event = json.load(f) @@ -2197,7 +2196,7 @@ def test_mark_trace_as_error_for_5xx_responses_getting_400_response_code( def test_mark_trace_as_error_for_5xx_responses_sends_error_metric_and_set_error_tags( self, mock_submit_errors_metric ): - mock_span = Mock(ddtrace.Span) + mock_span = Mock(ddtrace.trace.Span) status_code = "500" mark_trace_as_error_for_5xx_responses( context="fake_context", status_code=status_code, span=mock_span diff --git a/tests/test_wrapper.py b/tests/test_wrapper.py index db9f0f9e..f47285e6 100644 --- a/tests/test_wrapper.py +++ b/tests/test_wrapper.py @@ -10,7 +10,7 @@ import datadog_lambda.xray as xray from datadog_lambda.metric import lambda_metric from datadog_lambda.thread_stats_writer import ThreadStatsWriter -from ddtrace import Span, tracer +from ddtrace.trace import Span, tracer from ddtrace.internal.constants import MAX_UINT_64BITS from tests.utils import get_mock_context, reset_xray_connection From 02c2086f95f0d21dad903fa803878f5a36dc0e0b Mon Sep 17 00:00:00 2001 From: Aleksandr Pasechnik Date: Thu, 30 Jan 2025 16:02:56 -0500 Subject: [PATCH 183/268] chore: 6.105.0 release candidate (#557) --- datadog_lambda/version.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index d2ea6a95..0942ef40 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "6.104.0" +__version__ = "6.105.0" diff --git a/pyproject.toml b/pyproject.toml index 94d90076..34181459 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "6.104.0" +version = "6.105.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 7893e9b7b9ad041f81b9a9351820b8c04be09229 Mon Sep 17 00:00:00 2001 From: Nicholas Hulston Date: Thu, 30 Jan 2025 17:30:36 -0500 Subject: [PATCH 184/268] Move span pointer to inferred (root) span (#552) --- datadog_lambda/tracing.py | 3 +- .../logs/async-metrics_python310.log | 90 +++++++++--------- .../logs/async-metrics_python311.log | 90 +++++++++--------- .../logs/async-metrics_python312.log | 90 +++++++++--------- .../logs/async-metrics_python313.log | 90 +++++++++--------- .../snapshots/logs/async-metrics_python38.log | 90 +++++++++--------- .../snapshots/logs/async-metrics_python39.log | 90 +++++++++--------- .../snapshots/logs/sync-metrics_python310.log | 90 +++++++++--------- .../snapshots/logs/sync-metrics_python311.log | 90 +++++++++--------- .../snapshots/logs/sync-metrics_python312.log | 92 +++++++++---------- .../snapshots/logs/sync-metrics_python313.log | 92 +++++++++---------- .../snapshots/logs/sync-metrics_python38.log | 90 +++++++++--------- .../snapshots/logs/sync-metrics_python39.log | 90 +++++++++--------- 13 files changed, 544 insertions(+), 543 deletions(-) diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 973cb562..9189eb3b 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -1368,8 +1368,9 @@ def create_function_execution_span( if parent_span: span.parent_id = parent_span.span_id if span_pointers: + root_span = parent_span if parent_span else span for span_pointer_description in span_pointers: - span._add_span_pointer( + root_span._add_span_pointer( pointer_kind=span_pointer_description.pointer_kind, pointer_direction=span_pointer_description.pointer_direction, pointer_hash=span_pointer_description.pointer_hash, diff --git a/tests/integration/snapshots/logs/async-metrics_python310.log b/tests/integration/snapshots/logs/async-metrics_python310.log index b3b94ca4..ed0d3b43 100644 --- a/tests/integration/snapshots/logs/async-metrics_python310.log +++ b/tests/integration/snapshots/logs/async-metrics_python310.log @@ -249,37 +249,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "web" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-async-metrics_python310", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python310", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-async-metrics_python310", - "functionname": "integration-tests-python-XXXX-async-metrics_python310", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless", + "type": "web", "span_links": [ { "trace_id": "XXXX", @@ -313,6 +283,36 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A } ] }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python310", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python310", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python310", + "functionname": "integration-tests-python-XXXX-async-metrics_python310", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "dynamodb", + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, { "trace_id": "XXXX", "parent_id": "XXXX", @@ -944,7 +944,19 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "web" + "type": "web", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.s3.object", + "ptr.dir": "u", + "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", + "link.kind": "span-pointer" + } + } + ] }, { "trace_id": "XXXX", @@ -974,19 +986,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "metrics": { "_dd.top_level": 1 }, - "type": "serverless", - "span_links": [ - { - "trace_id": "XXXX", - "span_id": "XXXX", - "attributes": { - "ptr.kind": "aws.s3.object", - "ptr.dir": "u", - "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", - "link.kind": "span-pointer" - } - } - ] + "type": "serverless" }, { "trace_id": "XXXX", diff --git a/tests/integration/snapshots/logs/async-metrics_python311.log b/tests/integration/snapshots/logs/async-metrics_python311.log index 5ea440b3..b57a1b5a 100644 --- a/tests/integration/snapshots/logs/async-metrics_python311.log +++ b/tests/integration/snapshots/logs/async-metrics_python311.log @@ -249,37 +249,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "web" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-async-metrics_python311", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python311", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-async-metrics_python311", - "functionname": "integration-tests-python-XXXX-async-metrics_python311", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless", + "type": "web", "span_links": [ { "trace_id": "XXXX", @@ -313,6 +283,36 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A } ] }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python311", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python311", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python311", + "functionname": "integration-tests-python-XXXX-async-metrics_python311", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "dynamodb", + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, { "trace_id": "XXXX", "parent_id": "XXXX", @@ -944,7 +944,19 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "web" + "type": "web", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.s3.object", + "ptr.dir": "u", + "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", + "link.kind": "span-pointer" + } + } + ] }, { "trace_id": "XXXX", @@ -974,19 +986,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "metrics": { "_dd.top_level": 1 }, - "type": "serverless", - "span_links": [ - { - "trace_id": "XXXX", - "span_id": "XXXX", - "attributes": { - "ptr.kind": "aws.s3.object", - "ptr.dir": "u", - "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", - "link.kind": "span-pointer" - } - } - ] + "type": "serverless" }, { "trace_id": "XXXX", diff --git a/tests/integration/snapshots/logs/async-metrics_python312.log b/tests/integration/snapshots/logs/async-metrics_python312.log index ceaaa759..1b7e4b08 100644 --- a/tests/integration/snapshots/logs/async-metrics_python312.log +++ b/tests/integration/snapshots/logs/async-metrics_python312.log @@ -249,37 +249,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "web" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-async-metrics_python312", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python312", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-async-metrics_python312", - "functionname": "integration-tests-python-XXXX-async-metrics_python312", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless", + "type": "web", "span_links": [ { "trace_id": "XXXX", @@ -313,6 +283,36 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A } ] }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python312", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python312", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python312", + "functionname": "integration-tests-python-XXXX-async-metrics_python312", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "dynamodb", + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, { "trace_id": "XXXX", "parent_id": "XXXX", @@ -944,7 +944,19 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "web" + "type": "web", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.s3.object", + "ptr.dir": "u", + "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", + "link.kind": "span-pointer" + } + } + ] }, { "trace_id": "XXXX", @@ -974,19 +986,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "metrics": { "_dd.top_level": 1 }, - "type": "serverless", - "span_links": [ - { - "trace_id": "XXXX", - "span_id": "XXXX", - "attributes": { - "ptr.kind": "aws.s3.object", - "ptr.dir": "u", - "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", - "link.kind": "span-pointer" - } - } - ] + "type": "serverless" }, { "trace_id": "XXXX", diff --git a/tests/integration/snapshots/logs/async-metrics_python313.log b/tests/integration/snapshots/logs/async-metrics_python313.log index 45ca3b14..32342559 100644 --- a/tests/integration/snapshots/logs/async-metrics_python313.log +++ b/tests/integration/snapshots/logs/async-metrics_python313.log @@ -249,37 +249,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "web" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-async-metrics_python313", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python313", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-async-metrics_python313", - "functionname": "integration-tests-python-XXXX-async-metrics_python313", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless", + "type": "web", "span_links": [ { "trace_id": "XXXX", @@ -313,6 +283,36 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A } ] }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python313", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python313", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python313", + "functionname": "integration-tests-python-XXXX-async-metrics_python313", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "dynamodb", + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, { "trace_id": "XXXX", "parent_id": "XXXX", @@ -944,7 +944,19 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "web" + "type": "web", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.s3.object", + "ptr.dir": "u", + "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", + "link.kind": "span-pointer" + } + } + ] }, { "trace_id": "XXXX", @@ -974,19 +986,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "metrics": { "_dd.top_level": 1 }, - "type": "serverless", - "span_links": [ - { - "trace_id": "XXXX", - "span_id": "XXXX", - "attributes": { - "ptr.kind": "aws.s3.object", - "ptr.dir": "u", - "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", - "link.kind": "span-pointer" - } - } - ] + "type": "serverless" }, { "trace_id": "XXXX", diff --git a/tests/integration/snapshots/logs/async-metrics_python38.log b/tests/integration/snapshots/logs/async-metrics_python38.log index 3ce5c99d..9dc9edf6 100644 --- a/tests/integration/snapshots/logs/async-metrics_python38.log +++ b/tests/integration/snapshots/logs/async-metrics_python38.log @@ -249,37 +249,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "web" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-async-metrics_python38", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python38", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-async-metrics_python38", - "functionname": "integration-tests-python-XXXX-async-metrics_python38", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless", + "type": "web", "span_links": [ { "trace_id": "XXXX", @@ -313,6 +283,36 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A } ] }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python38", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python38", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python38", + "functionname": "integration-tests-python-XXXX-async-metrics_python38", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "dynamodb", + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, { "trace_id": "XXXX", "parent_id": "XXXX", @@ -944,7 +944,19 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "web" + "type": "web", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.s3.object", + "ptr.dir": "u", + "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", + "link.kind": "span-pointer" + } + } + ] }, { "trace_id": "XXXX", @@ -974,19 +986,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "metrics": { "_dd.top_level": 1 }, - "type": "serverless", - "span_links": [ - { - "trace_id": "XXXX", - "span_id": "XXXX", - "attributes": { - "ptr.kind": "aws.s3.object", - "ptr.dir": "u", - "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", - "link.kind": "span-pointer" - } - } - ] + "type": "serverless" }, { "trace_id": "XXXX", diff --git a/tests/integration/snapshots/logs/async-metrics_python39.log b/tests/integration/snapshots/logs/async-metrics_python39.log index ede453ff..89e5d227 100644 --- a/tests/integration/snapshots/logs/async-metrics_python39.log +++ b/tests/integration/snapshots/logs/async-metrics_python39.log @@ -249,37 +249,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "web" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-async-metrics_python39", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python39", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-async-metrics_python39", - "functionname": "integration-tests-python-XXXX-async-metrics_python39", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless", + "type": "web", "span_links": [ { "trace_id": "XXXX", @@ -313,6 +283,36 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A } ] }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python39", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python39", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python39", + "functionname": "integration-tests-python-XXXX-async-metrics_python39", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "dynamodb", + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, { "trace_id": "XXXX", "parent_id": "XXXX", @@ -944,7 +944,19 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "web" + "type": "web", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.s3.object", + "ptr.dir": "u", + "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", + "link.kind": "span-pointer" + } + } + ] }, { "trace_id": "XXXX", @@ -974,19 +986,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "metrics": { "_dd.top_level": 1 }, - "type": "serverless", - "span_links": [ - { - "trace_id": "XXXX", - "span_id": "XXXX", - "attributes": { - "ptr.kind": "aws.s3.object", - "ptr.dir": "u", - "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", - "link.kind": "span-pointer" - } - } - ] + "type": "serverless" }, { "trace_id": "XXXX", diff --git a/tests/integration/snapshots/logs/sync-metrics_python310.log b/tests/integration/snapshots/logs/sync-metrics_python310.log index 540ce081..6eab44c2 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python310.log +++ b/tests/integration/snapshots/logs/sync-metrics_python310.log @@ -248,37 +248,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "web" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-sync-metrics_python310", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python310", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-sync-metrics_python310", - "functionname": "integration-tests-python-XXXX-sync-metrics_python310", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless", + "type": "web", "span_links": [ { "trace_id": "XXXX", @@ -312,6 +282,36 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A } ] }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python310", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python310", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python310", + "functionname": "integration-tests-python-XXXX-sync-metrics_python310", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "dynamodb", + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, { "trace_id": "XXXX", "parent_id": "XXXX", @@ -1019,7 +1019,19 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "web" + "type": "web", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.s3.object", + "ptr.dir": "u", + "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", + "link.kind": "span-pointer" + } + } + ] }, { "trace_id": "XXXX", @@ -1049,19 +1061,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "metrics": { "_dd.top_level": 1 }, - "type": "serverless", - "span_links": [ - { - "trace_id": "XXXX", - "span_id": "XXXX", - "attributes": { - "ptr.kind": "aws.s3.object", - "ptr.dir": "u", - "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", - "link.kind": "span-pointer" - } - } - ] + "type": "serverless" }, { "trace_id": "XXXX", diff --git a/tests/integration/snapshots/logs/sync-metrics_python311.log b/tests/integration/snapshots/logs/sync-metrics_python311.log index 68b930db..87cd6a6a 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python311.log +++ b/tests/integration/snapshots/logs/sync-metrics_python311.log @@ -248,37 +248,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "web" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-sync-metrics_python311", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python311", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-sync-metrics_python311", - "functionname": "integration-tests-python-XXXX-sync-metrics_python311", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless", + "type": "web", "span_links": [ { "trace_id": "XXXX", @@ -312,6 +282,36 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A } ] }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python311", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python311", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python311", + "functionname": "integration-tests-python-XXXX-sync-metrics_python311", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "dynamodb", + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, { "trace_id": "XXXX", "parent_id": "XXXX", @@ -1019,7 +1019,19 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "web" + "type": "web", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.s3.object", + "ptr.dir": "u", + "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", + "link.kind": "span-pointer" + } + } + ] }, { "trace_id": "XXXX", @@ -1049,19 +1061,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "metrics": { "_dd.top_level": 1 }, - "type": "serverless", - "span_links": [ - { - "trace_id": "XXXX", - "span_id": "XXXX", - "attributes": { - "ptr.kind": "aws.s3.object", - "ptr.dir": "u", - "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", - "link.kind": "span-pointer" - } - } - ] + "type": "serverless" }, { "trace_id": "XXXX", diff --git a/tests/integration/snapshots/logs/sync-metrics_python312.log b/tests/integration/snapshots/logs/sync-metrics_python312.log index 9e4d916e..41b5a71c 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python312.log +++ b/tests/integration/snapshots/logs/sync-metrics_python312.log @@ -248,37 +248,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "web" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-sync-metrics_python312", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python312", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-sync-metrics_python312", - "functionname": "integration-tests-python-XXXX-sync-metrics_python312", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless", + "type": "web", "span_links": [ { "trace_id": "XXXX", @@ -312,6 +282,36 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A } ] }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python312", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python312", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python312", + "functionname": "integration-tests-python-XXXX-sync-metrics_python312", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "dynamodb", + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, { "trace_id": "XXXX", "parent_id": "XXXX", @@ -546,6 +546,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A ] } HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX +END Duration: XXXX ms Memory Used: XXXX MB { "traces": [ [ @@ -584,7 +585,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept ] ] } -END Duration: XXXX ms Memory Used: XXXX MB START { "m": "aws.lambda.enhanced.invocations", @@ -1019,7 +1019,19 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "web" + "type": "web", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.s3.object", + "ptr.dir": "u", + "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", + "link.kind": "span-pointer" + } + } + ] }, { "trace_id": "XXXX", @@ -1049,19 +1061,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "metrics": { "_dd.top_level": 1 }, - "type": "serverless", - "span_links": [ - { - "trace_id": "XXXX", - "span_id": "XXXX", - "attributes": { - "ptr.kind": "aws.s3.object", - "ptr.dir": "u", - "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", - "link.kind": "span-pointer" - } - } - ] + "type": "serverless" }, { "trace_id": "XXXX", diff --git a/tests/integration/snapshots/logs/sync-metrics_python313.log b/tests/integration/snapshots/logs/sync-metrics_python313.log index 09402164..439e44d6 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python313.log +++ b/tests/integration/snapshots/logs/sync-metrics_python313.log @@ -248,37 +248,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "web" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-sync-metrics_python313", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python313", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-sync-metrics_python313", - "functionname": "integration-tests-python-XXXX-sync-metrics_python313", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless", + "type": "web", "span_links": [ { "trace_id": "XXXX", @@ -312,6 +282,36 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A } ] }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python313", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python313", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python313", + "functionname": "integration-tests-python-XXXX-sync-metrics_python313", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "dynamodb", + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, { "trace_id": "XXXX", "parent_id": "XXXX", @@ -1019,7 +1019,19 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "web" + "type": "web", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.s3.object", + "ptr.dir": "u", + "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", + "link.kind": "span-pointer" + } + } + ] }, { "trace_id": "XXXX", @@ -1049,19 +1061,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "metrics": { "_dd.top_level": 1 }, - "type": "serverless", - "span_links": [ - { - "trace_id": "XXXX", - "span_id": "XXXX", - "attributes": { - "ptr.kind": "aws.s3.object", - "ptr.dir": "u", - "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", - "link.kind": "span-pointer" - } - } - ] + "type": "serverless" }, { "trace_id": "XXXX", @@ -1302,6 +1302,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A ] } HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX +END Duration: XXXX ms Memory Used: XXXX MB { "traces": [ [ @@ -1340,7 +1341,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept ] ] } -END Duration: XXXX ms Memory Used: XXXX MB START { "m": "aws.lambda.enhanced.invocations", diff --git a/tests/integration/snapshots/logs/sync-metrics_python38.log b/tests/integration/snapshots/logs/sync-metrics_python38.log index 6c7b3c50..b30289ca 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python38.log +++ b/tests/integration/snapshots/logs/sync-metrics_python38.log @@ -248,37 +248,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "web" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-sync-metrics_python38", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python38", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-sync-metrics_python38", - "functionname": "integration-tests-python-XXXX-sync-metrics_python38", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless", + "type": "web", "span_links": [ { "trace_id": "XXXX", @@ -312,6 +282,36 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A } ] }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python38", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python38", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python38", + "functionname": "integration-tests-python-XXXX-sync-metrics_python38", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "dynamodb", + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, { "trace_id": "XXXX", "parent_id": "XXXX", @@ -1019,7 +1019,19 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "web" + "type": "web", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.s3.object", + "ptr.dir": "u", + "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", + "link.kind": "span-pointer" + } + } + ] }, { "trace_id": "XXXX", @@ -1049,19 +1061,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "metrics": { "_dd.top_level": 1 }, - "type": "serverless", - "span_links": [ - { - "trace_id": "XXXX", - "span_id": "XXXX", - "attributes": { - "ptr.kind": "aws.s3.object", - "ptr.dir": "u", - "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", - "link.kind": "span-pointer" - } - } - ] + "type": "serverless" }, { "trace_id": "XXXX", diff --git a/tests/integration/snapshots/logs/sync-metrics_python39.log b/tests/integration/snapshots/logs/sync-metrics_python39.log index 26db0d4b..772ea5d1 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python39.log +++ b/tests/integration/snapshots/logs/sync-metrics_python39.log @@ -248,37 +248,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "web" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-sync-metrics_python39", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python39", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-sync-metrics_python39", - "functionname": "integration-tests-python-XXXX-sync-metrics_python39", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless", + "type": "web", "span_links": [ { "trace_id": "XXXX", @@ -312,6 +282,36 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A } ] }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python39", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python39", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python39", + "functionname": "integration-tests-python-XXXX-sync-metrics_python39", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "dynamodb", + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, { "trace_id": "XXXX", "parent_id": "XXXX", @@ -1019,7 +1019,19 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "web" + "type": "web", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.s3.object", + "ptr.dir": "u", + "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", + "link.kind": "span-pointer" + } + } + ] }, { "trace_id": "XXXX", @@ -1049,19 +1061,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "metrics": { "_dd.top_level": 1 }, - "type": "serverless", - "span_links": [ - { - "trace_id": "XXXX", - "span_id": "XXXX", - "attributes": { - "ptr.kind": "aws.s3.object", - "ptr.dir": "u", - "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", - "link.kind": "span-pointer" - } - } - ] + "type": "serverless" }, { "trace_id": "XXXX", From b64be3b098faf2743af1a1009f0c414f7fae8f33 Mon Sep 17 00:00:00 2001 From: Nicholas Hulston Date: Thu, 30 Jan 2025 17:30:48 -0500 Subject: [PATCH 185/268] Skip and log warning when `lambda_metric` called with invalid name or value (#553) --- datadog_lambda/metric.py | 16 ++++++++++++++++ tests/test_metric.py | 26 ++++++++++++++++++++++++++ 2 files changed, 42 insertions(+) diff --git a/datadog_lambda/metric.py b/datadog_lambda/metric.py index d312e3bb..6389c268 100644 --- a/datadog_lambda/metric.py +++ b/datadog_lambda/metric.py @@ -55,6 +55,22 @@ def lambda_metric(metric_name, value, timestamp=None, tags=None, force_async=Fal Note that if the extension is present, it will override the DD_FLUSH_TO_LOG value and always use the layer to send metrics to the extension """ + if not metric_name or not isinstance(metric_name, str): + logger.warning( + "Ignoring metric submission. Invalid metric name: %s", metric_name + ) + return + + try: + float(value) + except (ValueError, TypeError): + logger.warning( + "Ignoring metric submission for metric '%s' because the value is not numeric: %r", + metric_name, + value, + ) + return + flush_to_logs = os.environ.get("DD_FLUSH_TO_LOG", "").lower() == "true" tags = [] if tags is None else list(tags) tags.append(dd_lambda_layer_tag) diff --git a/tests/test_metric.py b/tests/test_metric.py index 345740a4..d10a0f0d 100644 --- a/tests/test_metric.py +++ b/tests/test_metric.py @@ -92,6 +92,32 @@ def test_lambda_metric_flush_to_log(self): del os.environ["DD_FLUSH_TO_LOG"] + @patch("datadog_lambda.metric.logger.warning") + def test_lambda_metric_invalid_metric_name_none(self, mock_logger_warning): + lambda_metric(None, 1) + self.mock_metric_lambda_stats.distribution.assert_not_called() + mock_logger_warning.assert_called_once_with( + "Ignoring metric submission. Invalid metric name: %s", None + ) + + @patch("datadog_lambda.metric.logger.warning") + def test_lambda_metric_invalid_metric_name_not_string(self, mock_logger_warning): + lambda_metric(123, 1) + self.mock_metric_lambda_stats.distribution.assert_not_called() + mock_logger_warning.assert_called_once_with( + "Ignoring metric submission. Invalid metric name: %s", 123 + ) + + @patch("datadog_lambda.metric.logger.warning") + def test_lambda_metric_non_numeric_value(self, mock_logger_warning): + lambda_metric("test.non_numeric", "oops") + self.mock_metric_lambda_stats.distribution.assert_not_called() + mock_logger_warning.assert_called_once_with( + "Ignoring metric submission for metric '%s' because the value is not numeric: %r", + "test.non_numeric", + "oops", + ) + class TestFlushThreadStats(unittest.TestCase): def setUp(self): From d580d5fd8539809f1ed24edb826f9474d57abd90 Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Fri, 28 Feb 2025 12:39:33 -0800 Subject: [PATCH 186/268] Ddtrace now requires patch.py rather than __init__.py files. (#566) --- Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 554766df..a1b24bf3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -47,10 +47,10 @@ RUN rm -rf \ # https://docs.python.org/3.11/using/cmdline.html#cmdoption-O # https://docs.python.org/3/using/cmdline.html#envvar-PYTHONNODEBUGRANGES RUN PYTHONNODEBUGRANGES=1 python -OO -m compileall -b ./python/lib/$runtime/site-packages -# remove all .py files except ddtrace/contrib/*/__init__.py which are necessary +# remove all .py files except ddtrace/contrib/*/patch.py which are necessary # for ddtrace.patch to discover instrumationation packages. RUN find ./python/lib/$runtime/site-packages -name \*.py | grep -v ddtrace/contrib | xargs rm -rf -RUN find ./python/lib/$runtime/site-packages/ddtrace/contrib -name \*.py | grep -v __init__ | xargs rm -rf +RUN find ./python/lib/$runtime/site-packages/ddtrace/contrib -name \*.py | grep -v patch.py | xargs rm -rf RUN find ./python/lib/$runtime/site-packages -name __pycache__ -type d -exec rm -r {} \+ # When building ddtrace from branch, remove extra source files. These are From 189f49e74c1b0ff3fd25c984abc048762bcf25ca Mon Sep 17 00:00:00 2001 From: Abhinav Vedmala Date: Fri, 28 Feb 2025 16:38:57 -0500 Subject: [PATCH 187/268] Update Step Functions Parent ID Generation (#559) Co-authored-by: purple4reina --- datadog_lambda/tracing.py | 15 +++++++----- tests/test_tracing.py | 50 ++++++++++++++++++++++++++++++++++++++- 2 files changed, 58 insertions(+), 7 deletions(-) diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 9189eb3b..a73423e1 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -385,21 +385,24 @@ def _parse_high_64_bits(trace_tags: str) -> str: def _generate_sfn_parent_id(context: dict) -> int: """ - The upstream Step Function can propagate its execution context to downstream Lambdas. The - Lambda can use these details to share the same traceID and infer its parent's spanID. + Generates a stable parent span ID for a downstream Lambda invoked by a Step Function. The + upstream Step Function execution context is used to infer the parent's span ID, ensuring trace + continuity. - Excluding redriveCount when its 0 to account for cases where customers are using an old - version of the Lambda layer that doesn't use this value for its parentID generation. + `RetryCount` and `RedriveCount` are appended only when both are nonzero to maintain + compatibility with older Lambda layers that did not include these fields. """ execution_id = context.get("Execution").get("Id") redrive_count = context.get("Execution").get("RedriveCount", 0) state_name = context.get("State").get("Name") state_entered_time = context.get("State").get("EnteredTime") + retry_count = context.get("State").get("RetryCount", 0) - redrive_postfix = "" if redrive_count == 0 else f"#{redrive_count}" + include_counts = not (retry_count == 0 and redrive_count == 0) + counts_suffix = f"#{retry_count}#{redrive_count}" if include_counts else "" return _deterministic_sha256_hash( - f"{execution_id}#{state_name}#{state_entered_time}{redrive_postfix}", + f"{execution_id}#{state_name}#{state_entered_time}{counts_suffix}", HIGHER_64_BITS, ) diff --git a/tests/test_tracing.py b/tests/test_tracing.py index 89a7712c..5480a92c 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -622,6 +622,7 @@ def test_step_function_trace_data(self): "Name": "72a7ca3e-901c-41bb-b5a3-5f279b92a316", "RoleArn": "arn:aws:iam::425362996713:role/service-role/StepFunctions-abhinav-activity-state-machine-role-22jpbgl6j", "StartTime": "2024-12-04T19:38:04.069Z", + "RedriveCount": 0, }, "State": { "Name": "Lambda Invoke", @@ -657,6 +658,51 @@ def test_step_function_trace_data(self): expected_context, ) + @with_trace_propagation_style("datadog") + def test_step_function_trace_data_retry(self): + lambda_ctx = get_mock_context() + sfn_event = { + "Execution": { + "Id": "arn:aws:states:sa-east-1:425362996713:execution:abhinav-activity-state-machine:72a7ca3e-901c-41bb-b5a3-5f279b92a316", + "Name": "72a7ca3e-901c-41bb-b5a3-5f279b92a316", + "RoleArn": "arn:aws:iam::425362996713:role/service-role/StepFunctions-abhinav-activity-state-machine-role-22jpbgl6j", + "StartTime": "2024-12-04T19:38:04.069Z", + "RedriveCount": 0, + }, + "State": { + "Name": "Lambda Invoke", + "EnteredTime": "2024-12-04T19:38:04.118Z", + "RetryCount": 1, + }, + "StateMachine": { + "Id": "arn:aws:states:sa-east-1:425362996713:stateMachine:abhinav-activity-state-machine", + "Name": "abhinav-activity-state-machine", + }, + } + ctx, source, event_source = extract_dd_trace_context(sfn_event, lambda_ctx) + self.assertEqual(source, "event") + expected_context = Context( + trace_id=435175499815315247, + span_id=5063839446130725204, + sampling_priority=1, + meta={"_dd.p.tid": "3e7a89d1b7310603"}, + ) + self.assertEqual(ctx, expected_context) + self.assertEqual( + get_dd_trace_context(), + { + TraceHeader.TRACE_ID: "435175499815315247", + TraceHeader.PARENT_ID: "10713633173203262661", + TraceHeader.SAMPLING_PRIORITY: "1", + TraceHeader.TAGS: "_dd.p.tid=3e7a89d1b7310603", + }, + ) + create_dd_dummy_metadata_subsegment(ctx, XraySubsegment.TRACE_KEY) + self.mock_send_segment.assert_called_with( + XraySubsegment.TRACE_KEY, + expected_context, + ) + # https://github.com/DataDog/logs-backend/blob/c17618cb552fc369ca40282bae0a65803f82f694/domains/serverless/apps/logs-to-traces-reducer/src/test/resources/test-json-files/stepfunctions/RedriveTest/snapshots/RedriveLambdaSuccessTraceMerging.json#L46 @with_trace_propagation_style("datadog") def test_step_function_trace_data_redrive(self): @@ -683,7 +729,7 @@ def test_step_function_trace_data_redrive(self): self.assertEqual(source, "event") expected_context = Context( trace_id=435175499815315247, - span_id=5063839446130725204, + span_id=8782364156266188026, sampling_priority=1, meta={"_dd.p.tid": "3e7a89d1b7310603"}, ) @@ -716,6 +762,7 @@ def test_step_function_trace_data_lambda_root(self): "State": { "Name": "my-awesome-state", "EnteredTime": "Mon Nov 13 12:43:33 PST 2023", + "RetryCount": 0, }, "x-datadog-trace-id": "5821803790426892636", "x-datadog-tags": "_dd.p.dm=-0,_dd.p.tid=672a7cb100000000", @@ -759,6 +806,7 @@ def test_step_function_trace_data_sfn_root(self): "State": { "Name": "my-awesome-state", "EnteredTime": "Mon Nov 13 12:43:33 PST 2023", + "RetryCount": 0, }, "RootExecutionId": "4875aba4-ae31-4a4c-bf8a-63e9eee31dad", "serverless-version": "v1", From fe3385fc1910796697f3eaf2f4e7a68a55af0e62 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Tue, 4 Mar 2025 13:47:33 -0500 Subject: [PATCH 188/268] Release with ddtrace@2.21.3 (#565) * release with ddtrace@2.21.3 * v6.106.0 * version * move the version pining logic to dockerfile --- Dockerfile | 2 +- datadog_lambda/version.py | 2 +- pyproject.toml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index a1b24bf3..757d671a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -14,7 +14,7 @@ ENV PATH=/root/.cargo/bin:$PATH # Install datadog_lambda and dependencies from local COPY . . -RUN pip install . -t ./python/lib/$runtime/site-packages +RUN pip install . ddtrace==2.21.3 -t ./python/lib/$runtime/site-packages # Remove botocore (40MB) to reduce package size. aws-xray-sdk # installs it, while it's already provided by the Lambda Runtime. diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index 0942ef40..0c8d879b 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "6.105.0" +__version__ = "6.106.0" diff --git a/pyproject.toml b/pyproject.toml index 34181459..869b3a86 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "6.105.0" +version = "6.106.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From d9cf9fa9059401ebc46f0619e2d991e8e9271540 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Tue, 4 Mar 2025 15:56:32 -0500 Subject: [PATCH 189/268] chore: remove the hardcoded 2.21.3 version in dockerfile (#568) * remove the hardcoded 2.21.3 version in dockerfile * Apply suggestions from code review Co-authored-by: datadog-datadog-prod-us1[bot] <88084959+datadog-datadog-prod-us1[bot]@users.noreply.github.com> --------- Co-authored-by: Munir Abdinur Co-authored-by: datadog-datadog-prod-us1[bot] <88084959+datadog-datadog-prod-us1[bot]@users.noreply.github.com> --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 757d671a..7f522e5a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -14,7 +14,7 @@ ENV PATH=/root/.cargo/bin:$PATH # Install datadog_lambda and dependencies from local COPY . . -RUN pip install . ddtrace==2.21.3 -t ./python/lib/$runtime/site-packages +RUN pip install --no-cache-dir . -t ./python/lib/$runtime/site-packages # Remove botocore (40MB) to reduce package size. aws-xray-sdk # installs it, while it's already provided by the Lambda Runtime. From aec49103a8a68362bea6bf1509b7bc51df7a3088 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?jordan=20gonz=C3=A1lez?= <30836115+duncanista@users.noreply.github.com> Date: Tue, 4 Mar 2025 15:58:02 -0500 Subject: [PATCH 190/268] add `CODEOWNERS` (#569) --- .github/CODEOWNERS | 1 + 1 file changed, 1 insertion(+) create mode 100644 .github/CODEOWNERS diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 00000000..e53b2646 --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1 @@ +* @DataDog/serverless-aws From 53306e38df8514525649789495baa7cad91eecd6 Mon Sep 17 00:00:00 2001 From: Aleksandr Pasechnik Date: Tue, 4 Mar 2025 16:45:00 -0500 Subject: [PATCH 191/268] chore: new govcloud release script (#567) also refactoring the environments template datasource and adding layer bundling jobs. --- ci/datasources/environments.yaml | 4 +- ci/input_files/build.yaml.tpl | 66 +++++++++++--- ci/publish_layers.sh | 36 ++++++-- scripts/publish_govcloud.sh | 105 ++++++++++++++++++++++ scripts/publish_prod.sh | 144 +++++++++++++------------------ 5 files changed, 255 insertions(+), 100 deletions(-) create mode 100755 scripts/publish_govcloud.sh diff --git a/ci/datasources/environments.yaml b/ci/datasources/environments.yaml index 90056ab0..1ae2b4d7 100644 --- a/ci/datasources/environments.yaml +++ b/ci/datasources/environments.yaml @@ -1,9 +1,9 @@ environments: - - name: sandbox + sandbox: external_id: sandbox-publish-externalid role_to_assume: sandbox-layer-deployer account: 425362996713 - - name: prod + prod: external_id: prod-publish-externalid role_to_assume: dd-serverless-layer-deployer-role account: 464622532012 diff --git a/ci/input_files/build.yaml.tpl b/ci/input_files/build.yaml.tpl index eae6b0d1..769f87f5 100644 --- a/ci/input_files/build.yaml.tpl +++ b/ci/input_files/build.yaml.tpl @@ -103,9 +103,6 @@ integration-test ({{ $runtime.name }}-{{ $runtime.arch }}): script: - RUNTIME_PARAM={{ $runtime.python_version }} ARCH={{ $runtime.arch }} ./scripts/run_integration_tests.sh -{{ range $environment := (ds "environments").environments }} - -{{ if or (eq $environment.name "prod") }} sign-layer ({{ $runtime.name }}-{{ $runtime.arch }}): stage: sign tags: ["arch:amd64"] @@ -128,22 +125,25 @@ sign-layer ({{ $runtime.name }}-{{ $runtime.arch }}): before_script: - apt-get update - apt-get install -y uuid-runtime + {{ with $environment := (ds "environments").environments.prod }} - EXTERNAL_ID_NAME={{ $environment.external_id }} ROLE_TO_ASSUME={{ $environment.role_to_assume }} AWS_ACCOUNT={{ $environment.account }} source ./ci/get_secrets.sh + {{ end }} script: - - LAYER_FILE=datadog_lambda_py-{{ $runtime.arch}}-{{ $runtime.python_version }}.zip ./scripts/sign_layers.sh {{ $environment.name }} -{{ end }} + - LAYER_FILE=datadog_lambda_py-{{ $runtime.arch}}-{{ $runtime.python_version }}.zip ./scripts/sign_layers.sh prod + +{{ range $environment_name, $environment := (ds "environments").environments }} -publish-layer-{{ $environment.name }} ({{ $runtime.name }}-{{ $runtime.arch }}): +publish-layer-{{ $environment_name }} ({{ $runtime.name }}-{{ $runtime.arch }}): stage: publish tags: ["arch:amd64"] image: registry.ddbuild.io/images/docker:20.10-py3 rules: - - if: '"{{ $environment.name }}" =~ /^(sandbox|staging)/' + - if: '"{{ $environment_name }}" == "sandbox"' when: manual allow_failure: true - if: '$CI_COMMIT_TAG =~ /^v.*/' needs: -{{ if or (eq $environment.name "prod") }} +{{ if or (eq $environment_name "prod") }} - sign-layer ({{ $runtime.name }}-{{ $runtime.arch}}) {{ else }} - build-layer ({{ $runtime.name }}-{{ $runtime.arch }}) @@ -153,7 +153,7 @@ publish-layer-{{ $environment.name }} ({{ $runtime.name }}-{{ $runtime.arch }}): - integration-test ({{ $runtime.name }}-{{ $runtime.arch }}) {{ end }} dependencies: -{{ if or (eq $environment.name "prod") }} +{{ if or (eq $environment_name "prod") }} - sign-layer ({{ $runtime.name }}-{{ $runtime.arch}}) {{ else }} - build-layer ({{ $runtime.name }}-{{ $runtime.arch }}) @@ -166,7 +166,7 @@ publish-layer-{{ $environment.name }} ({{ $runtime.name }}-{{ $runtime.arch }}): before_script: - EXTERNAL_ID_NAME={{ $environment.external_id }} ROLE_TO_ASSUME={{ $environment.role_to_assume }} AWS_ACCOUNT={{ $environment.account }} source ./ci/get_secrets.sh script: - - STAGE={{ $environment.name }} PYTHON_VERSION={{ $runtime.python_version }} ARCH={{ $runtime.arch }} ./ci/publish_layers.sh + - STAGE={{ $environment_name }} PYTHON_VERSION={{ $runtime.python_version }} ARCH={{ $runtime.arch }} ./ci/publish_layers.sh {{- end }} @@ -186,3 +186,49 @@ publish-pypi-package: {{- end }} script: - ./ci/publish_pypi.sh + +layer bundle: + stage: build + tags: ["arch:amd64"] + image: registry.ddbuild.io/images/docker:20.10 + needs: + {{ range (ds "runtimes").runtimes }} + - build-layer ({{ .name }}-{{ .arch }}) + {{ end }} + dependencies: + {{ range (ds "runtimes").runtimes }} + - build-layer ({{ .name }}-{{ .arch }}) + {{ end }} + artifacts: + expire_in: 1 hr + paths: + - datadog_lambda_py-bundle-${CI_JOB_ID}/ + name: datadog_lambda_py-bundle-${CI_JOB_ID} + script: + - rm -rf datadog_lambda_py-bundle-${CI_JOB_ID} + - mkdir -p datadog_lambda_py-bundle-${CI_JOB_ID} + - cp .layers/datadog_lambda_py-*.zip datadog_lambda_py-bundle-${CI_JOB_ID} + +signed layer bundle: + stage: sign + image: registry.ddbuild.io/images/docker:20.10-py3 + tags: ["arch:amd64"] + rules: + - if: '$CI_COMMIT_TAG =~ /^v.*/' + needs: + {{ range (ds "runtimes").runtimes }} + - sign-layer ({{ .name }}-{{ .arch }}) + {{ end }} + dependencies: + {{ range (ds "runtimes").runtimes }} + - sign-layer ({{ .name }}-{{ .arch }}) + {{ end }} + artifacts: + expire_in: 1 day + paths: + - datadog_lambda_py-signed-bundle-${CI_JOB_ID}/ + name: datadog_lambda_py-signed-bundle-${CI_JOB_ID} + script: + - rm -rf datadog_lambda_py-signed-bundle-${CI_JOB_ID} + - mkdir -p datadog_lambda_py-signed-bundle-${CI_JOB_ID} + - cp .layers/datadog_lambda_py-*.zip datadog_lambda_py-signed-bundle-${CI_JOB_ID} diff --git a/ci/publish_layers.sh b/ci/publish_layers.sh index 85317ddd..58257bf1 100755 --- a/ci/publish_layers.sh +++ b/ci/publish_layers.sh @@ -24,7 +24,20 @@ AWS_CLI_PYTHON_VERSIONS=( "python3.13" "python3.13" ) -PYTHON_VERSIONS=("3.8-amd64" "3.8-arm64" "3.9-amd64" "3.9-arm64" "3.10-amd64" "3.10-arm64" "3.11-amd64" "3.11-arm64" "3.12-amd64" "3.12-arm64" "3.13-amd64" "3.13-arm64") +PYTHON_VERSIONS=( + "3.8-amd64" + "3.8-arm64" + "3.9-amd64" + "3.9-arm64" + "3.10-amd64" + "3.10-arm64" + "3.11-amd64" + "3.11-arm64" + "3.12-amd64" + "3.12-arm64" + "3.13-amd64" + "3.13-arm64" +) LAYER_PATHS=( ".layers/datadog_lambda_py-amd64-3.8.zip" ".layers/datadog_lambda_py-arm64-3.8.zip" @@ -53,11 +66,16 @@ LAYERS=( "Datadog-Python313" "Datadog-Python313-ARM" ) -STAGES=('prod', 'sandbox', 'staging') +STAGES=('prod', 'sandbox', 'staging', 'gov-staging', 'gov-prod') printf "Starting script...\n\n" -printf "Installing dependencies\n" -pip install awscli + +if [ -z "$SKIP_PIP_INSTALL" ]; then + echo "Installing dependencies" + pip install awscli +else + echo "Skipping pip install" +fi publish_layer() { region=$1 @@ -89,7 +107,7 @@ fi printf "Python version specified: $PYTHON_VERSION\n" if [[ ! ${PYTHON_VERSIONS[@]} =~ $PYTHON_VERSION ]]; then - printf "[Error] Unsupported PYTHON_VERSION found.\n" + printf "[Error] Unsupported PYTHON_VERSION found: $PYTHON_VERSION.\n" exit 1 fi @@ -133,8 +151,14 @@ if [[ ! ${STAGES[@]} =~ $STAGE ]]; then fi layer="${LAYERS[$index]}" +if [ -z "$LAYER_NAME_SUFFIX" ]; then + echo "No layer name suffix" +else + layer="${layer}-${LAYER_NAME_SUFFIX}" +fi +echo "layer name: $layer" -if [[ "$STAGE" =~ ^(staging|sandbox)$ ]]; then +if [[ "$STAGE" =~ ^(staging|sandbox|gov-staging)$ ]]; then # Deploy latest version latest_version=$(aws lambda list-layer-versions --region $REGION --layer-name $layer --query 'LayerVersions[0].Version || `0`') VERSION=$(($latest_version + 1)) diff --git a/scripts/publish_govcloud.sh b/scripts/publish_govcloud.sh new file mode 100755 index 00000000..5fd107b0 --- /dev/null +++ b/scripts/publish_govcloud.sh @@ -0,0 +1,105 @@ +#! /usr/bin/env bash + +# Unless explicitly stated otherwise all files in this repository are licensed +# under the Apache License Version 2.0. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2025 Datadog, Inc. +# +# USAGE: download the layer bundle from the build pipeline in gitlab. Use the +# Download button on the `layer bundle` job. This will be a zip file containing +# all of the required layers. Run this script as follows: +# +# ENVIRONMENT=[us1-staging-fed or us1-fed] [LAYER_NAME_SUFFIX=optional-layer-suffix] [REGIONS=us-gov-west-1] ./scripts/publish_govcloud.sh +# +# protip: you can drag the zip file from finder into your terminal to insert +# its path. + +set -e + +LAYER_PACKAGE=$1 + +if [ -z "$LAYER_PACKAGE" ]; then + printf "[ERROR]: layer package not provided\n" + exit 1 +fi + +PACKAGE_NAME=$(basename "$LAYER_PACKAGE" .zip) + +if [ -z "$ENVIRONMENT" ]; then + printf "[ERROR]: ENVIRONMENT not specified\n" + exit 1 +fi + +if [ "$ENVIRONMENT" = "us1-staging-fed" ]; then + AWS_VAULT_ROLE=sso-govcloud-us1-staging-fed-power-user + + export STAGE=gov-staging + + if [[ ! "$PACKAGE_NAME" =~ ^datadog_lambda_py-(signed-)?bundle-[0-9]+$ ]]; then + echo "[ERROR]: Unexpected package name: $PACKAGE_NAME" + exit 1 + fi + +elif [ $ENVIRONMENT = "us1-fed" ]; then + AWS_VAULT_ROLE=sso-govcloud-us1-fed-engineering + + export STAGE=gov-prod + + if [[ ! "$PACKAGE_NAME" =~ ^datadog_lambda_py-signed-bundle-[0-9]+$ ]]; then + echo "[ERROR]: Unexpected package name: $PACKAGE_NAME" + exit 1 + fi + +else + printf "[ERROR]: ENVIRONMENT not supported, must be us1-staging-fed or us1-fed.\n" + exit 1 +fi + +TEMP_DIR=$(mktemp -d) +unzip $LAYER_PACKAGE -d $TEMP_DIR +cp -v $TEMP_DIR/$PACKAGE_NAME/*.zip .layers/ + + +AWS_VAULT_PREFIX="aws-vault exec $AWS_VAULT_ROLE --" + +echo "Checking that you have access to the GovCloud AWS account" +$AWS_VAULT_PREFIX aws sts get-caller-identity + + +AVAILABLE_REGIONS=$($AWS_VAULT_PREFIX aws ec2 describe-regions | jq -r '.[] | .[] | .RegionName') + +# Determine the target regions +if [ -z "$REGIONS" ]; then + echo "Region not specified, running for all available regions." + REGIONS=$AVAILABLE_REGIONS +else + echo "Region specified: $REGIONS" + if [[ ! "$AVAILABLE_REGIONS" == *"$REGIONS"* ]]; then + echo "Could not find $REGIONS in available regions: $AVAILABLE_REGIONS" + echo "" + echo "EXITING SCRIPT." + exit 1 + fi +fi + +for region in $REGIONS +do + echo "Starting publishing layers for region $region..." + + export REGION=$region + + for python_version in "3.8" "3.9" "3.10" "3.11" "3.12" "3.13"; do + for arch in "amd64" "arm64"; do + export PYTHON_VERSION=$python_version + export ARCH=$arch + + export SKIP_PIP_INSTALL=true + + echo "Publishing layer for $PYTHON_VERSION and $ARCH" + + $AWS_VAULT_PREFIX ./ci/publish_layers.sh + done + done +done + +echo "Done !" diff --git a/scripts/publish_prod.sh b/scripts/publish_prod.sh index f3d13653..d2918c54 100755 --- a/scripts/publish_prod.sh +++ b/scripts/publish_prod.sh @@ -6,6 +6,11 @@ set -e read -p "Are we only doing the simplified GovCloud release? ONLY IF THE NORMAL RELEASE IS DONE AND YOU HAVE DOWNLOADED THE LAYERS (y/n)? " GOVCLOUD_ONLY +if [ $GOVCLOUD_ONLY != "n" ]; then + echo "GovCloud publishing is now supported only in publich_govcloud.sh" + exit 1 +fi + # Ensure on main, and pull the latest BRANCH=$(git rev-parse --abbrev-ref HEAD) if [ $BRANCH != "main" ]; then @@ -34,107 +39,82 @@ else fi # Ensure pypi registry access -if [ $GOVCLOUD_ONLY == "y" ]; then - echo "Skipping PyPI check since this is a GovCloud-only release" - -else - read -p "Do you have access to PyPI (y/n)?" CONT - if [ "$CONT" != "y" ]; then - echo "Exiting" - exit 1 - fi +read -p "Do you have access to PyPI (y/n)?" CONT +if [ "$CONT" != "y" ]; then + echo "Exiting" + exit 1 fi CURRENT_VERSION=$(poetry version --short) LAYER_VERSION=$(echo $NEW_VERSION | cut -d '.' -f 2) -if [ $GOVCLOUD_ONLY == "y" ]; then - echo "Skipping Libary Updates, code changes, layer builds and signing for GovCloud-only release" +read -p "Ready to update the library version from $CURRENT_VERSION to $NEW_VERSION and publish layer version $LAYER_VERSION (y/n)?" CONT +if [ "$CONT" != "y" ]; then + echo "Exiting" + exit 1 +fi +echo "Answer 'n' if already done in a PR" +read -p "Update pyproject.toml version? (y/n)?" CONT +if [ "$CONT" != "y" ]; then + echo "Skipping updating package.json version" else - read -p "Ready to update the library version from $CURRENT_VERSION to $NEW_VERSION and publish layer version $LAYER_VERSION (y/n)?" CONT - if [ "$CONT" != "y" ]; then - echo "Exiting" - exit 1 - fi - - echo "Answer 'n' if already done in a PR" - read -p "Update pyproject.toml version? (y/n)?" CONT - if [ "$CONT" != "y" ]; then - echo "Skipping updating package.json version" - else - echo - echo "Replacing version in pyproject.toml and datadog_lambda/version.py" - echo - - poetry version ${NEW_VERSION} - echo "__version__ = \"${NEW_VERSION}\"" > datadog_lambda/version.py - fi - echo - echo "Building layers..." - ./scripts/build_layers.sh - + echo "Replacing version in pyproject.toml and datadog_lambda/version.py" echo - echo "Signing layers for commercial AWS regions" - aws-vault exec sso-prod-engineering -- ./scripts/sign_layers.sh prod - - echo "Answer 'n' if GitLab already did this" - read -p "Deploy layers to commercial AWS (y/n)?" CONT - if [ "$CONT" != "y" ]; then - echo "Skipping deployment to commercial AWS" - else - echo "Ensuring you have access to the production AWS account" - aws-vault exec sso-prod-engineering -- aws sts get-caller-identity - - echo - echo "Publishing layers to commercial AWS regions" - VERSION=$LAYER_VERSION aws-vault exec sso-prod-engineering --no-session -- ./scripts/publish_layers.sh - fi + + poetry version ${NEW_VERSION} + echo "__version__ = \"${NEW_VERSION}\"" > datadog_lambda/version.py fi -read -p "Deploy layers to GovCloud AWS (y/n)?" CONT +echo +echo "Building layers..." +./scripts/build_layers.sh + +echo +echo "Signing layers for commercial AWS regions" +aws-vault exec sso-prod-engineering -- ./scripts/sign_layers.sh prod + +echo "Answer 'n' if GitLab already did this" +read -p "Deploy layers to commercial AWS (y/n)?" CONT if [ "$CONT" != "y" ]; then - echo "Skipping deployment to GovCloud AWS" + echo "Skipping deployment to commercial AWS" else - echo "Ensuring you have access to the AWS GovCloud account" - aws-vault exec sso-govcloud-us1-fed-engineering -- aws sts get-caller-identity + echo "Ensuring you have access to the production AWS account" + aws-vault exec sso-prod-engineering -- aws sts get-caller-identity - echo "Publishing layers to GovCloud AWS regions" - VERSION=$LAYER_VERSION aws-vault exec sso-govcloud-us1-fed-engineering -- ./scripts/publish_layers.sh + echo + echo "Publishing layers to commercial AWS regions" + VERSION=$LAYER_VERSION aws-vault exec sso-prod-engineering --no-session -- ./scripts/publish_layers.sh fi -if [ $GOVCLOUD_ONLY == "y" ]; then - echo "Skipping PyPI check and Github Release since this is a GovCloud-only release" - +echo "Answer 'n' if GitLab already did this" +read -p "Ready to publish $NEW_VERSION to PyPI (y/n)?" CONT +if [ "$CONT" != "y" ]; then + echo "Skipping publishing to PyPI" else - echo "Answer 'n' if GitLab already did this" - read -p "Ready to publish $NEW_VERSION to PyPI (y/n)?" CONT - if [ "$CONT" != "y" ]; then - echo "Skipping publishing to PyPI" - else - echo - echo "Publishing to https://pypi.org/project/datadog-lambda/" - ./scripts/pypi.sh - fi - - - echo "Answer 'n' if you already released in GitHub" - read -p "Do you want to bump the version in GitHub? (y/n)" CONT - if [ "$CONT" != "y" ]; then - echo "Skipping publishing updates to GitHub" - else - echo - echo 'Publishing updates to github' - git commit pyproject.toml datadog_lambda/version.py -m "Bump version to ${NEW_VERSION}" - git push origin main - git tag "v$LAYER_VERSION" - git push origin "refs/tags/v$LAYER_VERSION" - fi + echo + echo "Publishing to https://pypi.org/project/datadog-lambda/" + ./scripts/pypi.sh +fi + +echo "Answer 'n' if you already released in GitHub" +read -p "Do you want to bump the version in GitHub? (y/n)" CONT +if [ "$CONT" != "y" ]; then + echo "Skipping publishing updates to GitHub" +else echo - echo "Now create a new release with the tag v${LAYER_VERSION} created unless you have done this already" - echo "https://github.com/DataDog/datadog-lambda-python/releases/new?tag=v$LAYER_VERSION&title=v$LAYER_VERSION" + echo 'Publishing updates to github' + git commit pyproject.toml datadog_lambda/version.py -m "Bump version to ${NEW_VERSION}" + git push origin main + git tag "v$LAYER_VERSION" + git push origin "refs/tags/v$LAYER_VERSION" fi + +echo +echo "Now create a new release with the tag v${LAYER_VERSION} created unless you have done this already" +echo "https://github.com/DataDog/datadog-lambda-python/releases/new?tag=v$LAYER_VERSION&title=v$LAYER_VERSION" + # Open a PR to the documentation repo to automatically bump layer version VERSION=$LAYER_VERSION LAYER=datadog-lambda-python ./scripts/create_documentation_pr.sh From dc1ccba4b81d80097341057bf786c25ec0efc52a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?jordan=20gonz=C3=A1lez?= <30836115+duncanista@users.noreply.github.com> Date: Tue, 4 Mar 2025 17:06:41 -0500 Subject: [PATCH 192/268] update `CODEOWNERS` (#570) --- .github/CODEOWNERS | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index e53b2646..26b4b78e 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1 +1,6 @@ -* @DataDog/serverless-aws +* @DataDog/serverless-aws +datadog_lambda/tracing.py @DataDog/apm-serverless +datadog_lambda/patch.py @DataDog/apm-serverless +datadog_lambda/span_points.py @DataDog/apm-serverless +datadog_lambda/cold_start.py @DataDog/apm-serverless +datadog_lambda/wrapper.py @DataDog/apm-serverless From fc0beaae643d59a4745ae6d8da163ad39cdb5970 Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Fri, 7 Mar 2025 10:24:16 -0800 Subject: [PATCH 193/268] Pin ddtrace to Date: Mon, 10 Mar 2025 19:53:38 -0400 Subject: [PATCH 194/268] Enable LLM Observability with `agentless_enabled=True` by default with a parsed API key (#572) * enable llmobs agentless with parsed api_key * extract getting api key to its own function * lint --- datadog_lambda/api.py | 58 ++++++++++++++++++++++++--------------- datadog_lambda/wrapper.py | 9 +++++- 2 files changed, 44 insertions(+), 23 deletions(-) diff --git a/datadog_lambda/api.py b/datadog_lambda/api.py index b5414fd9..a114fe8f 100644 --- a/datadog_lambda/api.py +++ b/datadog_lambda/api.py @@ -4,6 +4,7 @@ logger = logging.getLogger(__name__) KMS_ENCRYPTION_CONTEXT_KEY = "LambdaFunctionName" +api_key = None def decrypt_kms_api_key(kms_client, ciphertext): @@ -46,6 +47,40 @@ def decrypt_kms_api_key(kms_client, ciphertext): return plaintext +def get_api_key() -> str: + """ + Gets the Datadog API key from the environment variables or secrets manager. + Extracts the result to a global value to avoid repeated calls to the + secrets manager from different products. + """ + global api_key + if api_key: + return api_key + + import boto3 + + DD_API_KEY_SECRET_ARN = os.environ.get("DD_API_KEY_SECRET_ARN", "") + DD_API_KEY_SSM_NAME = os.environ.get("DD_API_KEY_SSM_NAME", "") + DD_KMS_API_KEY = os.environ.get("DD_KMS_API_KEY", "") + DD_API_KEY = os.environ.get("DD_API_KEY", os.environ.get("DATADOG_API_KEY", "")) + + if DD_API_KEY_SECRET_ARN: + api_key = boto3.client("secretsmanager").get_secret_value( + SecretId=DD_API_KEY_SECRET_ARN + )["SecretString"] + elif DD_API_KEY_SSM_NAME: + api_key = boto3.client("ssm").get_parameter( + Name=DD_API_KEY_SSM_NAME, WithDecryption=True + )["Parameter"]["Value"] + elif DD_KMS_API_KEY: + kms_client = boto3.client("kms") + api_key = decrypt_kms_api_key(kms_client, DD_KMS_API_KEY) + else: + api_key = DD_API_KEY + + return api_key + + def init_api(): if not os.environ.get("DD_FLUSH_TO_LOG", "").lower() == "true": # Make sure that this package would always be lazy-loaded/outside from the critical path @@ -54,28 +89,7 @@ def init_api(): from datadog import api if not api._api_key: - import boto3 - - DD_API_KEY_SECRET_ARN = os.environ.get("DD_API_KEY_SECRET_ARN", "") - DD_API_KEY_SSM_NAME = os.environ.get("DD_API_KEY_SSM_NAME", "") - DD_KMS_API_KEY = os.environ.get("DD_KMS_API_KEY", "") - DD_API_KEY = os.environ.get( - "DD_API_KEY", os.environ.get("DATADOG_API_KEY", "") - ) - - if DD_API_KEY_SECRET_ARN: - api._api_key = boto3.client("secretsmanager").get_secret_value( - SecretId=DD_API_KEY_SECRET_ARN - )["SecretString"] - elif DD_API_KEY_SSM_NAME: - api._api_key = boto3.client("ssm").get_parameter( - Name=DD_API_KEY_SSM_NAME, WithDecryption=True - )["Parameter"]["Value"] - elif DD_KMS_API_KEY: - kms_client = boto3.client("kms") - api._api_key = decrypt_kms_api_key(kms_client, DD_KMS_API_KEY) - else: - api._api_key = DD_API_KEY + api._api_key = get_api_key() logger.debug("Setting DATADOG_API_KEY of length %d", len(api._api_key)) diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index 2632d22e..6afa9a07 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -56,10 +56,14 @@ if profiling_env_var: from ddtrace.profiling import profiler +llmobs_api_key = None llmobs_env_var = os.environ.get("DD_LLMOBS_ENABLED", "false").lower() in ("true", "1") if llmobs_env_var: + from datadog_lambda.api import get_api_key from ddtrace.llmobs import LLMObs + llmobs_api_key = get_api_key() + logger = logging.getLogger(__name__) DD_FLUSH_TO_LOG = "DD_FLUSH_TO_LOG" @@ -229,7 +233,10 @@ def __init__(self, func): # Enable LLM Observability if llmobs_env_var: - LLMObs.enable() + LLMObs.enable( + agentless_enabled=True, + api_key=llmobs_api_key, + ) logger.debug("datadog_lambda_wrapper initialized") except Exception as e: From 71b64fa1de4c0e56bb49cc2201a87da0d10409c5 Mon Sep 17 00:00:00 2001 From: Nicholas Hulston Date: Wed, 12 Mar 2025 14:16:42 -0400 Subject: [PATCH 195/268] Use FIPs endpoints in Govcloud regions (#575) --- datadog_lambda/api.py | 31 +++++++++++++-- tests/test_api.py | 89 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 117 insertions(+), 3 deletions(-) create mode 100644 tests/test_api.py diff --git a/datadog_lambda/api.py b/datadog_lambda/api.py index a114fe8f..03135912 100644 --- a/datadog_lambda/api.py +++ b/datadog_lambda/api.py @@ -64,16 +64,41 @@ def get_api_key() -> str: DD_KMS_API_KEY = os.environ.get("DD_KMS_API_KEY", "") DD_API_KEY = os.environ.get("DD_API_KEY", os.environ.get("DATADOG_API_KEY", "")) + REGION = os.environ.get("AWS_REGION", "") + is_gov_region = REGION.startswith("us-gov-") + if is_gov_region: + logger.debug( + "Govcloud region detected. Using FIPs endpoints for secrets management." + ) + if DD_API_KEY_SECRET_ARN: - api_key = boto3.client("secretsmanager").get_secret_value( + # Secrets manager endpoints: https://docs.aws.amazon.com/general/latest/gr/asm.html + fips_endpoint = ( + f"https://secretsmanager-fips.{region}.amazonaws.com/" + if is_gov_region + else None + ) + secrets_manager_client = boto3.client( + "secretsmanager", endpoint_url=fips_endpoint + ) + api_key = secrets_manager_client.get_secret_value( SecretId=DD_API_KEY_SECRET_ARN )["SecretString"] elif DD_API_KEY_SSM_NAME: - api_key = boto3.client("ssm").get_parameter( + # SSM endpoints: https://docs.aws.amazon.com/general/latest/gr/ssm.html + fips_endpoint = ( + f"https://ssm-fips.{region}.amazonaws.com/" if is_gov_region else None + ) + ssm_client = boto3.client("ssm", endpoint_url=fips_endpoint) + api_key = ssm_client.get_parameter( Name=DD_API_KEY_SSM_NAME, WithDecryption=True )["Parameter"]["Value"] elif DD_KMS_API_KEY: - kms_client = boto3.client("kms") + # KMS endpoints: https://docs.aws.amazon.com/general/latest/gr/kms.html + fips_endpoint = ( + f"https://kms-fips.{region}.amazonaws.com/" if is_gov_region else None + ) + kms_client = boto3.client("kms", endpoint_url=fips_endpoint) api_key = decrypt_kms_api_key(kms_client, DD_KMS_API_KEY) else: api_key = DD_API_KEY diff --git a/tests/test_api.py b/tests/test_api.py new file mode 100644 index 00000000..a69f4382 --- /dev/null +++ b/tests/test_api.py @@ -0,0 +1,89 @@ +import os +import unittest +from unittest.mock import patch, MagicMock + +import datadog_lambda.api as api + + +class TestDatadogLambdaAPI(unittest.TestCase): + def setUp(self): + api.api_key = None + self.env_patcher = patch.dict( + os.environ, + { + "DD_API_KEY_SECRET_ARN": "", + "DD_API_KEY_SSM_NAME": "", + "DD_KMS_API_KEY": "", + "DD_API_KEY": "", + "DATADOG_API_KEY": "", + "AWS_REGION": "", + }, + clear=True, + ) + self.env_patcher.start() + + @patch("boto3.client") + def test_secrets_manager_fips_endpoint(self, mock_boto3_client): + mock_client = MagicMock() + mock_client.get_secret_value.return_value = {"SecretString": "test-api-key"} + mock_boto3_client.return_value = mock_client + + os.environ["AWS_REGION"] = "us-gov-east-1" + os.environ["DD_API_KEY_SECRET_ARN"] = "test-secrets-arn" + + api_key = api.get_api_key() + + mock_boto3_client.assert_called_with( + "secretsmanager", + endpoint_url="https://secretsmanager-fips.us-gov-east-1.amazonaws.com/", + ) + self.assertEqual(api_key, "test-api-key") + + @patch("boto3.client") + def test_ssm_fips_endpoint(self, mock_boto3_client): + mock_client = MagicMock() + mock_client.get_parameter.return_value = { + "Parameter": {"Value": "test-api-key"} + } + mock_boto3_client.return_value = mock_client + + os.environ["AWS_REGION"] = "us-gov-west-1" + os.environ["DD_API_KEY_SSM_NAME"] = "test-ssm-param" + + api_key = api.get_api_key() + + mock_boto3_client.assert_called_with( + "ssm", endpoint_url="https://ssm-fips.us-gov-west-1.amazonaws.com/" + ) + self.assertEqual(api_key, "test-api-key") + + @patch("boto3.client") + @patch("datadog_lambda.api.decrypt_kms_api_key") + def test_kms_fips_endpoint(self, mock_decrypt_kms, mock_boto3_client): + mock_client = MagicMock() + mock_boto3_client.return_value = mock_client + mock_decrypt_kms.return_value = "test-api-key" + + os.environ["AWS_REGION"] = "us-gov-west-1" + os.environ["DD_KMS_API_KEY"] = "encrypted-api-key" + + api_key = api.get_api_key() + + mock_boto3_client.assert_called_with( + "kms", endpoint_url="https://kms-fips.us-gov-west-1.amazonaws.com/" + ) + self.assertEqual(api_key, "test-api-key") + + @patch("boto3.client") + def test_no_fips_for_standard_regions(self, mock_boto3_client): + mock_client = MagicMock() + mock_client.get_secret_value.return_value = {"SecretString": "test-api-key"} + mock_boto3_client.return_value = mock_client + + os.environ.clear() + os.environ["AWS_REGION"] = "us-west-2" + os.environ["DD_API_KEY_SECRET_ARN"] = "test-arn" + + api.get_api_key() + + mock_boto3_client.assert_called_with("secretsmanager", endpoint_url=None) From 7d7c15346f871d9a5d3333a8f95334b7fe3d2bf3 Mon Sep 17 00:00:00 2001 From: Nicholas Hulston Date: Fri, 14 Mar 2025 14:14:07 -0700 Subject: [PATCH 196/268] Use correct SecretsManager region (#576) --- datadog_lambda/api.py | 21 ++++++++++++++------- tests/test_api.py | 33 ++++++++++++++++++++++++++++++--- 2 files changed, 44 insertions(+), 10 deletions(-) diff --git a/datadog_lambda/api.py b/datadog_lambda/api.py index 03135912..ad860873 100644 --- a/datadog_lambda/api.py +++ b/datadog_lambda/api.py @@ -64,8 +64,8 @@ def get_api_key() -> str: DD_KMS_API_KEY = os.environ.get("DD_KMS_API_KEY", "") DD_API_KEY = os.environ.get("DD_API_KEY", os.environ.get("DATADOG_API_KEY", "")) - REGION = os.environ.get("AWS_REGION", "") - is_gov_region = REGION.startswith("us-gov-") + LAMBDA_REGION = os.environ.get("AWS_REGION", "") + is_gov_region = LAMBDA_REGION.startswith("us-gov-") if is_gov_region: logger.debug( "Govcloud region detected. Using FIPs endpoints for secrets management." @@ -73,13 +73,20 @@ def get_api_key() -> str: if DD_API_KEY_SECRET_ARN: # Secrets manager endpoints: https://docs.aws.amazon.com/general/latest/gr/asm.html - fips_endpoint = ( - f"https://secretsmanager-fips.{region}.amazonaws.com/" + try: + secrets_region = DD_API_KEY_SECRET_ARN.split(":")[3] + except Exception: + logger.debug( + "Invalid secret arn in DD_API_KEY_SECRET_ARN. Unable to get API key." + ) + return "" + endpoint_url = ( + f"https://secretsmanager-fips.{secrets_region}.amazonaws.com/" if is_gov_region else None ) secrets_manager_client = boto3.client( - "secretsmanager", endpoint_url=fips_endpoint + "secretsmanager", endpoint_url=endpoint_url, region_name=secrets_region ) api_key = secrets_manager_client.get_secret_value( SecretId=DD_API_KEY_SECRET_ARN @@ -87,7 +94,7 @@ def get_api_key() -> str: elif DD_API_KEY_SSM_NAME: # SSM endpoints: https://docs.aws.amazon.com/general/latest/gr/ssm.html fips_endpoint = ( - f"https://ssm-fips.{region}.amazonaws.com/" if is_gov_region else None + f"https://ssm-fips.{lambda_region}.amazonaws.com/" if is_gov_region else None ) ssm_client = boto3.client("ssm", endpoint_url=fips_endpoint) api_key = ssm_client.get_parameter( @@ -96,7 +103,7 @@ def get_api_key() -> str: elif DD_KMS_API_KEY: # KMS endpoints: https://docs.aws.amazon.com/general/latest/gr/kms.html fips_endpoint = ( - f"https://kms-fips.{region}.amazonaws.com/" if is_gov_region else None + f"https://kms-fips.{lambda_region}.amazonaws.com/" if is_gov_region else None ) kms_client = boto3.client("kms", endpoint_url=fips_endpoint) api_key = decrypt_kms_api_key(kms_client, DD_KMS_API_KEY) diff --git a/tests/test_api.py b/tests/test_api.py index a69f4382..c7facb43 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -29,13 +29,36 @@ def test_secrets_manager_fips_endpoint(self, mock_boto3_client): mock_boto3_client.return_value = mock_client os.environ["AWS_REGION"] = "us-gov-east-1" - os.environ["DD_API_KEY_SECRET_ARN"] = "test-secrets-arn" + os.environ[ + "DD_API_KEY_SECRET_ARN" + ] = "arn:aws:secretsmanager:us-gov-east-1:1234567890:secret:key-name-123ABC" api_key = api.get_api_key() mock_boto3_client.assert_called_with( "secretsmanager", endpoint_url="https://secretsmanager-fips.us-gov-east-1.amazonaws.com/", + region_name="us-gov-east-1", + ) + self.assertEqual(api_key, "test-api-key") + + @patch("boto3.client") + def test_secrets_manager_different_region(self, mock_boto3_client): + mock_client = MagicMock() + mock_client.get_secret_value.return_value = {"SecretString": "test-api-key"} + mock_boto3_client.return_value = mock_client + + os.environ["AWS_REGION"] = "us-east-1" + os.environ[ + "DD_API_KEY_SECRET_ARN" + ] = "arn:aws:secretsmanager:us-west-1:1234567890:secret:key-name-123ABC" + + api_key = api.get_api_key() + + mock_boto3_client.assert_called_with( + "secretsmanager", + endpoint_url=None, + region_name="us-west-1", ) self.assertEqual(api_key, "test-api-key") @@ -82,8 +105,12 @@ def test_no_fips_for_standard_regions(self, mock_boto3_client): os.environ.clear() os.environ["AWS_REGION"] = "us-west-2" - os.environ["DD_API_KEY_SECRET_ARN"] = "test-arn" + os.environ[ + "DD_API_KEY_SECRET_ARN" + ] = "arn:aws:secretsmanager:us-west-2:1234567890:secret:key-name-123ABC" api.get_api_key() - mock_boto3_client.assert_called_with("secretsmanager", endpoint_url=None) + mock_boto3_client.assert_called_with( + "secretsmanager", endpoint_url=None, region_name="us-west-2" + ) From 5a55fe45a49b8d7e6c8db0734f203bdff648f383 Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Mon, 17 Mar 2025 13:16:39 -0700 Subject: [PATCH 197/268] Use sam/build-python images for building layers. (#577) --- scripts/build_layers.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/build_layers.sh b/scripts/build_layers.sh index a0d6ee39..23941b7a 100755 --- a/scripts/build_layers.sh +++ b/scripts/build_layers.sh @@ -61,7 +61,7 @@ function docker_build_zip { # between different python runtimes. temp_dir=$(mktemp -d) docker buildx build -t datadog-lambda-python-${arch}:$1 . --no-cache \ - --build-arg image=public.ecr.aws/docker/library/python:$1 \ + --build-arg image=public.ecr.aws/sam/build-python$1:1 \ --build-arg runtime=python$1 \ --platform linux/${arch} \ --progress=plain \ From 8398da08d0c6a6de4459b9619969bbb97b8895ee Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Tue, 18 Mar 2025 13:11:15 -0700 Subject: [PATCH 198/268] Lazy load boto client when using datadogpy for metrics. (#558) * Lazy load boto client when using datadogpy for metrics. * Update test mocking. --- datadog_lambda/api.py | 14 +++++++++----- pyproject.toml | 4 ++-- tests/test_api.py | 10 +++++----- 3 files changed, 16 insertions(+), 12 deletions(-) diff --git a/datadog_lambda/api.py b/datadog_lambda/api.py index ad860873..c539ea05 100644 --- a/datadog_lambda/api.py +++ b/datadog_lambda/api.py @@ -57,8 +57,6 @@ def get_api_key() -> str: if api_key: return api_key - import boto3 - DD_API_KEY_SECRET_ARN = os.environ.get("DD_API_KEY_SECRET_ARN", "") DD_API_KEY_SSM_NAME = os.environ.get("DD_API_KEY_SSM_NAME", "") DD_KMS_API_KEY = os.environ.get("DD_KMS_API_KEY", "") @@ -85,7 +83,7 @@ def get_api_key() -> str: if is_gov_region else None ) - secrets_manager_client = boto3.client( + secrets_manager_client = _boto3_client( "secretsmanager", endpoint_url=endpoint_url, region_name=secrets_region ) api_key = secrets_manager_client.get_secret_value( @@ -96,7 +94,7 @@ def get_api_key() -> str: fips_endpoint = ( f"https://ssm-fips.{lambda_region}.amazonaws.com/" if is_gov_region else None ) - ssm_client = boto3.client("ssm", endpoint_url=fips_endpoint) + ssm_client = _boto3_client("ssm", endpoint_url=fips_endpoint) api_key = ssm_client.get_parameter( Name=DD_API_KEY_SSM_NAME, WithDecryption=True )["Parameter"]["Value"] @@ -105,7 +103,7 @@ def get_api_key() -> str: fips_endpoint = ( f"https://kms-fips.{lambda_region}.amazonaws.com/" if is_gov_region else None ) - kms_client = boto3.client("kms", endpoint_url=fips_endpoint) + kms_client = _boto3_client("kms", endpoint_url=fips_endpoint) api_key = decrypt_kms_api_key(kms_client, DD_KMS_API_KEY) else: api_key = DD_API_KEY @@ -133,3 +131,9 @@ def init_api(): # Unmute exceptions from datadog api client, so we can catch and handle them api._mute = False + + +def _boto3_client(*args, **kwargs): + import botocore.session + + return botocore.session.get_session().create_client(*args, **kwargs) diff --git a/pyproject.toml b/pyproject.toml index a3860567..8db5e352 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -30,7 +30,7 @@ datadog = ">=0.51.0,<1.0.0" wrapt = "^1.11.2" ddtrace = ">=2.20.0,<4" ujson = ">=5.9.0" -boto3 = { version = "^1.34.0", optional = true } +botocore = { version = "^1.34.0", optional = true } requests = { version ="^2.22.0", optional = true } pytest = { version= "^8.0.0", optional = true } pytest-benchmark = { version = "^4.0", optional = true } @@ -38,7 +38,7 @@ flake8 = { version = "^5.0.4", optional = true } [tool.poetry.extras] dev = [ - "boto3", + "botocore", "flake8", "pytest", "pytest-benchmark", diff --git a/tests/test_api.py b/tests/test_api.py index c7facb43..c98d91eb 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -22,7 +22,7 @@ def setUp(self): ) self.env_patcher.start() - @patch("boto3.client") + @patch("botocore.session.Session.create_client") def test_secrets_manager_fips_endpoint(self, mock_boto3_client): mock_client = MagicMock() mock_client.get_secret_value.return_value = {"SecretString": "test-api-key"} @@ -42,7 +42,7 @@ def test_secrets_manager_fips_endpoint(self, mock_boto3_client): ) self.assertEqual(api_key, "test-api-key") - @patch("boto3.client") + @patch("botocore.session.Session.create_client") def test_secrets_manager_different_region(self, mock_boto3_client): mock_client = MagicMock() mock_client.get_secret_value.return_value = {"SecretString": "test-api-key"} @@ -62,7 +62,7 @@ def test_secrets_manager_different_region(self, mock_boto3_client): ) self.assertEqual(api_key, "test-api-key") - @patch("boto3.client") + @patch("botocore.session.Session.create_client") def test_ssm_fips_endpoint(self, mock_boto3_client): mock_client = MagicMock() mock_client.get_parameter.return_value = { @@ -80,7 +80,7 @@ def test_ssm_fips_endpoint(self, mock_boto3_client): ) self.assertEqual(api_key, "test-api-key") - @patch("boto3.client") + @patch("botocore.session.Session.create_client") @patch("datadog_lambda.api.decrypt_kms_api_key") def test_kms_fips_endpoint(self, mock_decrypt_kms, mock_boto3_client): mock_client = MagicMock() @@ -97,7 +97,7 @@ def test_kms_fips_endpoint(self, mock_decrypt_kms, mock_boto3_client): ) self.assertEqual(api_key, "test-api-key") - @patch("boto3.client") + @patch("botocore.session.Session.create_client") def test_no_fips_for_standard_regions(self, mock_boto3_client): mock_client = MagicMock() mock_client.get_secret_value.return_value = {"SecretString": "test-api-key"} From 58a55bb4e4ef6fabe85580a3914c1f4d060f9378 Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Tue, 18 Mar 2025 13:11:44 -0700 Subject: [PATCH 199/268] Re-remove iast .so file. (#560) * Re-remove iast .so file. Commit https://github.com/DataDog/dd-trace-py/commit/fa18def52e13f863bd8de48cb8ef88feba0caf92 was merged to address this. * Re-remove taint tracking. --- Dockerfile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index 7f522e5a..0e79d884 100644 --- a/Dockerfile +++ b/Dockerfile @@ -22,10 +22,10 @@ RUN rm -rf ./python/lib/$runtime/site-packages/botocore* RUN rm -rf ./python/lib/$runtime/site-packages/setuptools RUN rm -rf ./python/lib/$runtime/site-packages/jsonschema/tests RUN find . -name 'libddwaf.so' -delete -# Comment this line out for now since ddtrace now tries to import it -# RUN rm ./python/lib/$runtime/site-packages/ddtrace/appsec/_iast/_stacktrace*.so -RUN rm ./python/lib/$runtime/site-packages/ddtrace/internal/datadog/profiling/libdd_wrapper*.so -RUN rm ./python/lib/$runtime/site-packages/ddtrace/internal/datadog/profiling/ddup/_ddup.*.so +RUN rm -f ./python/lib/$runtime/site-packages/ddtrace/appsec/_iast/_taint_tracking/*.so +RUN rm -f ./python/lib/$runtime/site-packages/ddtrace/appsec/_iast/_stacktrace*.so +RUN rm -f ./python/lib/$runtime/site-packages/ddtrace/internal/datadog/profiling/libdd_wrapper*.so +RUN rm -f ./python/lib/$runtime/site-packages/ddtrace/internal/datadog/profiling/ddup/_ddup.*.so # _stack_v2 may not exist for some versions of ddtrace (e.g. under python 3.13) RUN rm -f ./python/lib/$runtime/site-packages/ddtrace/internal/datadog/profiling/stack_v2/_stack_v2.*.so # remove *.dist-info directories except any entry_points.txt files From 96a6abd227a328d94d233d7baf951f2975f1b267 Mon Sep 17 00:00:00 2001 From: Abhinav Vedmala Date: Wed, 19 Mar 2025 09:50:53 -0400 Subject: [PATCH 200/268] Propagate Step Function Trace Context through Managed Services (#573) Allows us to extract Step Function trace context in the following cases 1. SFN -> EventBridge -> Lambda 2. SFN -> EventBridge -> SQS -> Lambda 3. SFN -> SQS -> Lambda 4. SFN -> SNS -> Lambda 5. SFN -> SNS -> SQS -> Lambda --- datadog_lambda/tracing.py | 81 ++++++--- datadog_lambda/trigger.py | 30 ++- datadog_lambda/wrapper.py | 3 - tests/test_tracing.py | 374 ++++++++++++++++++++++++-------------- tests/test_trigger.py | 66 +++++++ 5 files changed, 387 insertions(+), 167 deletions(-) diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index a73423e1..0fae76dd 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -39,6 +39,7 @@ _EventSource, parse_event_source, get_first_record, + is_step_function_event, EventTypes, EventSubtypes, ) @@ -271,6 +272,15 @@ def extract_context_from_sqs_or_sns_event_or_context(event, lambda_context): if dd_json_data: dd_data = json.loads(dd_json_data) + + if is_step_function_event(dd_data): + try: + return extract_context_from_step_functions(dd_data, None) + except Exception: + logger.debug( + "Failed to extract Step Functions context from SQS/SNS event." + ) + return propagator.extract(dd_data) else: # Handle case where trace context is injected into attributes.AWSTraceHeader @@ -313,6 +323,15 @@ def _extract_context_from_eventbridge_sqs_event(event): body = json.loads(body_str) detail = body.get("detail") dd_context = detail.get("_datadog") + + if is_step_function_event(dd_context): + try: + return extract_context_from_step_functions(dd_context, None) + except Exception: + logger.debug( + "Failed to extract Step Functions context from EventBridge to SQS event." + ) + return propagator.extract(dd_context) @@ -320,12 +339,23 @@ def extract_context_from_eventbridge_event(event, lambda_context): """ Extract datadog trace context from an EventBridge message's Details. This is only possible if Details is a JSON string. + + If we find a Step Function context, try to extract the trace context from + that header. """ try: detail = event.get("detail") dd_context = detail.get("_datadog") if not dd_context: return extract_context_from_lambda_context(lambda_context) + + try: + return extract_context_from_step_functions(dd_context, None) + except Exception: + logger.debug( + "Failed to extract Step Functions context from EventBridge event." + ) + return propagator.extract(dd_context) except Exception as e: logger.debug("The trace extractor returned with error %s", e) @@ -424,7 +454,7 @@ def _generate_sfn_trace_id(execution_id: str, part: str): def extract_context_from_step_functions(event, lambda_context): """ Only extract datadog trace context when Step Functions Context Object is injected - into lambda's event dict. + into lambda's event dict. Unwrap "Payload" if it exists to handle Legacy Lambda cases. If '_datadog' header is present, we have two cases: 1. Root is a Lambda and we use its traceID @@ -435,25 +465,25 @@ def extract_context_from_step_functions(event, lambda_context): object. """ try: + event = event.get("Payload", event) + event = event.get("_datadog", event) + meta = {} - dd_data = event.get("_datadog") - if dd_data and dd_data.get("serverless-version") == "v1": - if "x-datadog-trace-id" in dd_data: # lambda root - trace_id = int(dd_data.get("x-datadog-trace-id")) - high_64_bit_trace_id = _parse_high_64_bits( - dd_data.get("x-datadog-tags") - ) + if event.get("serverless-version") == "v1": + if "x-datadog-trace-id" in event: # lambda root + trace_id = int(event.get("x-datadog-trace-id")) + high_64_bit_trace_id = _parse_high_64_bits(event.get("x-datadog-tags")) if high_64_bit_trace_id: meta["_dd.p.tid"] = high_64_bit_trace_id else: # sfn root - root_execution_id = dd_data.get("RootExecutionId") + root_execution_id = event.get("RootExecutionId") trace_id = _generate_sfn_trace_id(root_execution_id, LOWER_64_BITS) meta["_dd.p.tid"] = _generate_sfn_trace_id( root_execution_id, HIGHER_64_BITS ) - parent_id = _generate_sfn_parent_id(dd_data) + parent_id = _generate_sfn_parent_id(event) else: execution_id = event.get("Execution").get("Id") trace_id = _generate_sfn_trace_id(execution_id, LOWER_64_BITS) @@ -472,20 +502,6 @@ def extract_context_from_step_functions(event, lambda_context): return extract_context_from_lambda_context(lambda_context) -def is_legacy_lambda_step_function(event): - """ - Check if the event is a step function that called a legacy lambda - """ - if not isinstance(event, dict) or "Payload" not in event: - return False - - event = event.get("Payload") - return isinstance(event, dict) and ( - "_datadog" in event - or ("Execution" in event and "StateMachine" in event and "State" in event) - ) - - def extract_context_custom_extractor(extractor, event, lambda_context): """ Extract Datadog trace context using a custom trace extractor function @@ -1309,8 +1325,18 @@ def create_inferred_span_from_eventbridge_event(event, context): synchronicity="async", tag_source="self", ) - dt_format = "%Y-%m-%dT%H:%M:%SZ" + timestamp = event.get("time") + dt_format = "%Y-%m-%dT%H:%M:%SZ" + + # Use more granular timestamp from upstream Step Function if possible + try: + if is_step_function_event(event.get("detail")): + timestamp = event["detail"]["_datadog"]["State"]["EnteredTime"] + dt_format = "%Y-%m-%dT%H:%M:%S.%fZ" + except (TypeError, KeyError, AttributeError): + logger.debug("Error parsing timestamp from Step Functions event") + dt = datetime.strptime(timestamp, dt_format) tracer.set_tags(_dd_origin) @@ -1320,6 +1346,11 @@ def create_inferred_span_from_eventbridge_event(event, context): if span: span.set_tags(tags) span.start = dt.replace(tzinfo=timezone.utc).timestamp() + + # Since inferred span will later parent Lambda, preserve Lambda's current parent + if dd_trace_context.span_id: + span.parent_id = dd_trace_context.span_id + return span diff --git a/datadog_lambda/trigger.py b/datadog_lambda/trigger.py index 11759a0a..708138bf 100644 --- a/datadog_lambda/trigger.py +++ b/datadog_lambda/trigger.py @@ -146,9 +146,7 @@ def parse_event_source(event: dict) -> _EventSource: if event.get("source") == "aws.events" or has_event_categories: event_source = _EventSource(EventTypes.CLOUDWATCH_EVENTS) - if ( - "_datadog" in event and event.get("_datadog").get("serverless-version") == "v1" - ) or ("Execution" in event and "StateMachine" in event and "State" in event): + if is_step_function_event(event): event_source = _EventSource(EventTypes.STEPFUNCTIONS) event_record = get_first_record(event) @@ -369,3 +367,29 @@ def extract_http_status_code_tag(trigger_tags, response): status_code = response.status_code return str(status_code) + + +def is_step_function_event(event): + """ + Check if the event is a step function that invoked the current lambda. + + The whole event can be wrapped in "Payload" in Legacy Lambda cases. There may also be a + "_datadog" for JSONata style context propagation. + + The actual event must contain "Execution", "StateMachine", and "State" fields. + """ + event = event.get("Payload", event) + + # JSONPath style + if "Execution" in event and "StateMachine" in event and "State" in event: + return True + + # JSONata style + dd_context = event.get("_datadog") + return ( + dd_context + and "Execution" in dd_context + and "StateMachine" in dd_context + and "State" in dd_context + and "serverless-version" in dd_context + ) diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index 6afa9a07..5641bd15 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -45,7 +45,6 @@ is_authorizer_response, tracer, propagator, - is_legacy_lambda_step_function, ) from datadog_lambda.trigger import ( extract_trigger_tags, @@ -286,8 +285,6 @@ def _before(self, event, context): self.response = None set_cold_start(init_timestamp_ns) submit_invocations_metric(context) - if is_legacy_lambda_step_function(event): - event = event["Payload"] self.trigger_tags = extract_trigger_tags(event, context) # Extract Datadog trace context and source from incoming requests dd_context, trace_context_source, event_source = extract_dd_trace_context( diff --git a/tests/test_tracing.py b/tests/test_tracing.py index 5480a92c..0a961a62 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -36,15 +36,12 @@ _convert_xray_trace_id, _convert_xray_entity_id, _convert_xray_sampling, - InferredSpanInfo, create_service_mapping, determine_service_name, service_mapping as global_service_mapping, propagator, emit_telemetry_on_exception_outside_of_handler, - is_legacy_lambda_step_function, ) -from datadog_lambda.trigger import EventTypes from tests.utils import get_mock_context @@ -613,9 +610,39 @@ def test_with_complete_datadog_trace_headers_with_trigger_tags(self): ] ) + def _test_step_function_trace_data_common( + self, event, expected_trace_id, expected_span_id, expected_tid + ): + """Common test logic for step function trace data tests""" + lambda_ctx = get_mock_context() + expected_context = Context( + trace_id=expected_trace_id, + span_id=expected_span_id, + sampling_priority=1, + meta={"_dd.p.tid": expected_tid}, + ) + expected_headers = { + TraceHeader.TRACE_ID: str(expected_trace_id), + TraceHeader.PARENT_ID: "10713633173203262661", + TraceHeader.SAMPLING_PRIORITY: "1", + TraceHeader.TAGS: f"_dd.p.tid={expected_tid}", + } + + ctx, source, _ = extract_dd_trace_context(event, lambda_ctx) + + self.assertEqual(source, "event") + self.assertEqual(ctx, expected_context) + self.assertEqual(get_dd_trace_context(), expected_headers) + + create_dd_dummy_metadata_subsegment(ctx, XraySubsegment.TRACE_KEY) + self.mock_send_segment.assert_called_with( + XraySubsegment.TRACE_KEY, + expected_context, + ) + @with_trace_propagation_style("datadog") def test_step_function_trace_data(self): - lambda_ctx = get_mock_context() + """Test basic step function trace data extraction""" sfn_event = { "Execution": { "Id": "arn:aws:states:sa-east-1:425362996713:execution:abhinav-activity-state-machine:72a7ca3e-901c-41bb-b5a3-5f279b92a316", @@ -634,79 +661,39 @@ def test_step_function_trace_data(self): "Name": "abhinav-activity-state-machine", }, } - ctx, source, event_source = extract_dd_trace_context(sfn_event, lambda_ctx) - self.assertEqual(source, "event") - expected_context = Context( - trace_id=435175499815315247, - span_id=3929055471293792800, - sampling_priority=1, - meta={"_dd.p.tid": "3e7a89d1b7310603"}, + self._test_step_function_trace_data_common( + sfn_event, 435175499815315247, 3929055471293792800, "3e7a89d1b7310603" ) - self.assertEqual(ctx, expected_context) - self.assertEqual( - get_dd_trace_context(), - { - TraceHeader.TRACE_ID: "435175499815315247", - TraceHeader.PARENT_ID: "10713633173203262661", - TraceHeader.SAMPLING_PRIORITY: "1", - TraceHeader.TAGS: "_dd.p.tid=3e7a89d1b7310603", + + @with_trace_propagation_style("datadog") + def test_step_function_trace_data_retry(self): + """Test step function trace data extraction with non-zero retry count""" + sfn_event = { + "Execution": { + "Id": "arn:aws:states:sa-east-1:425362996713:execution:abhinav-activity-state-machine:72a7ca3e-901c-41bb-b5a3-5f279b92a316", + "Name": "72a7ca3e-901c-41bb-b5a3-5f279b92a316", + "RoleArn": "arn:aws:iam::425362996713:role/service-role/StepFunctions-abhinav-activity-state-machine-role-22jpbgl6j", + "StartTime": "2024-12-04T19:38:04.069Z", + "RedriveCount": 0, }, + "State": { + "Name": "Lambda Invoke", + "EnteredTime": "2024-12-04T19:38:04.118Z", + "RetryCount": 1, + }, + "StateMachine": { + "Id": "arn:aws:states:sa-east-1:425362996713:stateMachine:abhinav-activity-state-machine", + "Name": "abhinav-activity-state-machine", + }, + } + self._test_step_function_trace_data_common( + sfn_event, 435175499815315247, 5063839446130725204, "3e7a89d1b7310603" ) - create_dd_dummy_metadata_subsegment(ctx, XraySubsegment.TRACE_KEY) - self.mock_send_segment.assert_called_with( - XraySubsegment.TRACE_KEY, - expected_context, - ) - - @with_trace_propagation_style("datadog") - def test_step_function_trace_data_retry(self): - lambda_ctx = get_mock_context() - sfn_event = { - "Execution": { - "Id": "arn:aws:states:sa-east-1:425362996713:execution:abhinav-activity-state-machine:72a7ca3e-901c-41bb-b5a3-5f279b92a316", - "Name": "72a7ca3e-901c-41bb-b5a3-5f279b92a316", - "RoleArn": "arn:aws:iam::425362996713:role/service-role/StepFunctions-abhinav-activity-state-machine-role-22jpbgl6j", - "StartTime": "2024-12-04T19:38:04.069Z", - "RedriveCount": 0, - }, - "State": { - "Name": "Lambda Invoke", - "EnteredTime": "2024-12-04T19:38:04.118Z", - "RetryCount": 1, - }, - "StateMachine": { - "Id": "arn:aws:states:sa-east-1:425362996713:stateMachine:abhinav-activity-state-machine", - "Name": "abhinav-activity-state-machine", - }, - } - ctx, source, event_source = extract_dd_trace_context(sfn_event, lambda_ctx) - self.assertEqual(source, "event") - expected_context = Context( - trace_id=435175499815315247, - span_id=5063839446130725204, - sampling_priority=1, - meta={"_dd.p.tid": "3e7a89d1b7310603"}, - ) - self.assertEqual(ctx, expected_context) - self.assertEqual( - get_dd_trace_context(), - { - TraceHeader.TRACE_ID: "435175499815315247", - TraceHeader.PARENT_ID: "10713633173203262661", - TraceHeader.SAMPLING_PRIORITY: "1", - TraceHeader.TAGS: "_dd.p.tid=3e7a89d1b7310603", - }, - ) - create_dd_dummy_metadata_subsegment(ctx, XraySubsegment.TRACE_KEY) - self.mock_send_segment.assert_called_with( - XraySubsegment.TRACE_KEY, - expected_context, - ) - # https://github.com/DataDog/logs-backend/blob/c17618cb552fc369ca40282bae0a65803f82f694/domains/serverless/apps/logs-to-traces-reducer/src/test/resources/test-json-files/stepfunctions/RedriveTest/snapshots/RedriveLambdaSuccessTraceMerging.json#L46 + # https://github.com/DataDog/logs-backend/blob/65ea567150f24e5498008f3cf8cabef9ea995f5d/domains/serverless/apps/logs-to-traces-reducer/src/test/resources/test-json-files/stepfunctions/RedriveTest/snapshots/RedriveLambdaSuccessTraceMerging.json#L45-L46 @with_trace_propagation_style("datadog") def test_step_function_trace_data_redrive(self): - lambda_ctx = get_mock_context() + """Test step function trace data extraction with non-zero redrive count""" sfn_event = { "Execution": { "Id": "arn:aws:states:sa-east-1:425362996713:execution:abhinav-activity-state-machine:72a7ca3e-901c-41bb-b5a3-5f279b92a316", @@ -725,33 +712,13 @@ def test_step_function_trace_data_redrive(self): "Name": "abhinav-activity-state-machine", }, } - ctx, source, event_source = extract_dd_trace_context(sfn_event, lambda_ctx) - self.assertEqual(source, "event") - expected_context = Context( - trace_id=435175499815315247, - span_id=8782364156266188026, - sampling_priority=1, - meta={"_dd.p.tid": "3e7a89d1b7310603"}, - ) - self.assertEqual(ctx, expected_context) - self.assertEqual( - get_dd_trace_context(), - { - TraceHeader.TRACE_ID: "435175499815315247", - TraceHeader.PARENT_ID: "10713633173203262661", - TraceHeader.SAMPLING_PRIORITY: "1", - TraceHeader.TAGS: "_dd.p.tid=3e7a89d1b7310603", - }, - ) - create_dd_dummy_metadata_subsegment(ctx, XraySubsegment.TRACE_KEY) - self.mock_send_segment.assert_called_with( - XraySubsegment.TRACE_KEY, - expected_context, + self._test_step_function_trace_data_common( + sfn_event, 435175499815315247, 8782364156266188026, "3e7a89d1b7310603" ) @with_trace_propagation_style("datadog") def test_step_function_trace_data_lambda_root(self): - lambda_ctx = get_mock_context() + """Test JSONata style step function trace data extraction where there's an upstream Lambda""" sfn_event = { "_datadog": { "Execution": { @@ -769,33 +736,13 @@ def test_step_function_trace_data_lambda_root(self): "serverless-version": "v1", } } - ctx, source, event_source = extract_dd_trace_context(sfn_event, lambda_ctx) - self.assertEqual(source, "event") - expected_context = Context( - trace_id=5821803790426892636, - span_id=6880978411788117524, - sampling_priority=1, - meta={"_dd.p.tid": "672a7cb100000000"}, - ) - self.assertEqual(ctx, expected_context) - self.assertEqual( - get_dd_trace_context(), - { - TraceHeader.TRACE_ID: "5821803790426892636", - TraceHeader.PARENT_ID: "10713633173203262661", - TraceHeader.SAMPLING_PRIORITY: "1", - TraceHeader.TAGS: "_dd.p.tid=672a7cb100000000", - }, - ) - create_dd_dummy_metadata_subsegment(ctx, XraySubsegment.TRACE_KEY) - self.mock_send_segment.assert_called_with( - XraySubsegment.TRACE_KEY, - expected_context, + self._test_step_function_trace_data_common( + sfn_event, 5821803790426892636, 6880978411788117524, "672a7cb100000000" ) @with_trace_propagation_style("datadog") def test_step_function_trace_data_sfn_root(self): - lambda_ctx = get_mock_context() + """Test JSONata style step function trace data extraction where there's an upstream step function""" sfn_event = { "_datadog": { "Execution": { @@ -812,28 +759,183 @@ def test_step_function_trace_data_sfn_root(self): "serverless-version": "v1", } } - ctx, source, event_source = extract_dd_trace_context(sfn_event, lambda_ctx) - self.assertEqual(source, "event") - expected_context = Context( - trace_id=4521899030418994483, - span_id=6880978411788117524, - sampling_priority=1, - meta={"_dd.p.tid": "12d1270d99cc5e03"}, + self._test_step_function_trace_data_common( + sfn_event, 4521899030418994483, 6880978411788117524, "12d1270d99cc5e03" ) - self.assertEqual(ctx, expected_context) - self.assertEqual( - get_dd_trace_context(), - { - TraceHeader.TRACE_ID: "4521899030418994483", - TraceHeader.PARENT_ID: "10713633173203262661", - TraceHeader.SAMPLING_PRIORITY: "1", - TraceHeader.TAGS: "_dd.p.tid=12d1270d99cc5e03", + + @with_trace_propagation_style("datadog") + def test_step_function_trace_data_eventbridge(self): + """Test step function trace data extraction through EventBridge""" + eventbridge_event = { + "version": "0", + "id": "eaacd8db-02de-ab13-ed5a-8ffb84048294", + "detail-type": "StepFunctionTask", + "source": "my.eventbridge", + "account": "425362996713", + "time": "2025-03-13T15:17:34Z", + "region": "sa-east-1", + "resources": [ + "arn:aws:states:sa-east-1:425362996713:stateMachine:abhinav-inner-state-machine", + "arn:aws:states:sa-east-1:425362996713:execution:abhinav-inner-state-machine:912eaa4c-291a-488a-bda3-d06bcc21203d", + ], + "detail": { + "Message": "Hello from Step Functions!", + "TaskToken": "AQCEAAAAKgAAAAMAAAAAAAAAAeMHr6sb8Ll5IKntjIiLGaBkaNeweo84kKYKDTvDaSAP1vjuYRJEGqFdHsKMyZL8ZcgAdanKpkbhPEN5hpoCe+BH9KblWeDsJxkDCk/meN5SaPlC1qS7Q/7/KqBq+tmAOCSy+MjdqFsnihy5Yo6g6C9uuPn7ccSB/609d8pznFm9nigEos/82emwi18lm67/+/bn4RTX4S7qV4RoGWUWUPeHfr34xWOipCt4SVDkoQPZdRVpq3wyRJP2zcK0zup24/opJqKKSCI5Q9orALNB2jEjDyQ9LE4mSrafoe0tcm/bOAGfrcpR3AwtArUiF6JPYd7Nw0XWWyPXFBjiQTJDhZFlGfllJ1N91eiN8wlzUX1+I0vw/t2PoEmuQ2VCJYCbl1ybjX/tQ97GZ9ogjY9N7VYy5uD5xfZ6VAyetUR06HUtbUIXTVxULm7wmsHb979W/fIQXsrxbFzc0+ypKaqGXJBoq7xX//irjpuNhWg1Wgfn0hxuXl5oN/LkqI83T8f9SdnJMxRDpaHDpttqbjVESB/Pf9o7gakjJj12+r2uiJNc81k50uhuHdFOGsImFHKV8hb1LGcq0ZzUKT5SbEDV2k+ezOP+O9Sk4c0unbpNLM3PKLKxVLhu2gtiIIVCHUHGmumW", + "_datadog": { + "Execution": { + "Id": "arn:aws:states:sa-east-1:425362996713:execution:abhinav-inner-state-machine:912eaa4c-291a-488a-bda3-d06bcc21203d", + "StartTime": "2025-03-13T15:17:33.972Z", + "Name": "912eaa4c-291a-488a-bda3-d06bcc21203d", + "RoleArn": "arn:aws:iam::425362996713:role/service-role/StepFunctions-abhinav-activity-state-machine-role-22jpbgl6j", + "RedriveCount": 0, + }, + "StateMachine": { + "Id": "arn:aws:states:sa-east-1:425362996713:stateMachine:abhinav-inner-state-machine", + "Name": "abhinav-inner-state-machine", + }, + "State": { + "Name": "EventBridge PutEvents", + "EnteredTime": "2025-03-13T15:17:34.008Z", + "RetryCount": 0, + }, + "Task": { + "Token": "AQCEAAAAKgAAAAMAAAAAAAAAAeMHr6sb8Ll5IKntjIiLGaBkaNeweo84kKYKDTvDaSAP1vjuYRJEGqFdHsKMyZL8ZcgAdanKpkbhPEN5hpoCe+BH9KblWeDsJxkDCk/meN5SaPlC1qS7Q/7/KqBq+tmAOCSy+MjdqFsnihy5Yo6g6C9uuPn7ccSB/609d8pznFm9nigEos/82emwi18lm67/+/bn4RTX4S7qV4RoGWUWUPeHfr34xWOipCt4SVDkoQPZdRVpq3wyRJP2zcK0zup24/opJqKKSCI5Q9orALNB2jEjDyQ9LE4mSrafoe0tcm/bOAGfrcpR3AwtArUiF6JPYd7Nw0XWWyPXFBjiQTJDhZFlGfllJ1N91eiN8wlzUX1+I0vw/t2PoEmuQ2VCJYCbl1ybjX/tQ97GZ9ogjY9N7VYy5uD5xfZ6VAyetUR06HUtbUIXTVxULm7wmsHb979W/fIQXsrxbFzc0+ypKaqGXJBoq7xX//irjpuNhWg1Wgfn0hxuXl5oN/LkqI83T8f9SdnJMxRDpaHDpttqbjVESB/Pf9o7gakjJj12+r2uiJNc81k50uhuHdFOGsImFHKV8hb1LGcq0ZzUKT5SbEDV2k+ezOP+O9Sk4c0unbpNLM3PKLKxVLhu2gtiIIVCHUHGmumW" + }, + "RootExecutionId": "arn:aws:states:sa-east-1:425362996713:execution:abhinav-inner-state-machine:912eaa4c-291a-488a-bda3-d06bcc21203d", + "serverless-version": "v1", + }, }, + } + self._test_step_function_trace_data_common( + eventbridge_event, + 3401561763239692811, + 10430178702434539423, + "a49ff3b7fb47b0b", ) - create_dd_dummy_metadata_subsegment(ctx, XraySubsegment.TRACE_KEY) - self.mock_send_segment.assert_called_with( - XraySubsegment.TRACE_KEY, - expected_context, + + @with_trace_propagation_style("datadog") + def test_step_function_trace_data_sqs(self): + """Test step function trace data extraction through SQS""" + sqs_event = { + "Records": [ + { + "EventSource": "aws:sns", + "EventVersion": "1.0", + "EventSubscriptionArn": "arn:aws:sns:sa-east-1:425362996713:logs-to-traces-dev-topic:f1653ba3-2ff7-4c8e-9381-45a7a62f9708", + "Sns": { + "Type": "Notification", + "MessageId": "e39184ea-bfd8-5efa-96fe-e4a64a457ff7", + "TopicArn": "arn:aws:sns:sa-east-1:425362996713:logs-to-traces-dev-topic", + "Subject": None, + "Message": "{}", + "Timestamp": "2025-03-13T15:01:49.942Z", + "SignatureVersion": "1", + "Signature": "WJHKq+pNOLgxa7+dB1dud02RM/30Jvz+KiMZzjRl38/Pphz90H24eGyIbnq3BJXYEyawFCHC6sq/5HcwXouGc5gbah6he+JpqXahMEs6cyMs2tg9SXxooRHEGv5iiZXKhnDcJYOrQ+iFExO9w+WFWfJjO2m/EDVVSYvuDjDV7mmTwAgEOD0zUvWpT7wOeKGG5Uk916Ppy3iMV7sCoHV/RwVikdhCWDDmxbdqteGduAXPdGESE/aj6kUx9ibEOKXyhC+7H1/j0tlhUchl6LZsTf1Gaiq2yEqKXKvsupcG3hRZ6FtIWP0jGlFhpW5EHc2oiHIVOsQceCYPqXYMCZvFuA==", + "SigningCertUrl": "https://sns.sa-east-1.amazonaws.com/SimpleNotificationService-9c6465fa7f48f5cacd23014631ec1136.pem", + "UnsubscribeUrl": "https://sns.sa-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:sa-east-1:425362996713:logs-to-traces-dev-topic:f1653ba3-2ff7-4c8e-9381-45a7a62f9708", + "MessageAttributes": { + "_datadog": { + "Type": "String", + "Value": '{"Execution":{"Id":"arn:aws:states:sa-east-1:425362996713:execution:abhinav-inner-state-machine:79478846-0cff-44de-91f5-02c96ff65762","StartTime":"2025-03-13T15:01:49.738Z","Name":"79478846-0cff-44de-91f5-02c96ff65762","RoleArn":"arn:aws:iam::425362996713:role/service-role/StepFunctions-abhinav-activity-state-machine-role-22jpbgl6j","RedriveCount":0},"StateMachine":{"Id":"arn:aws:states:sa-east-1:425362996713:stateMachine:abhinav-inner-state-machine","Name":"abhinav-inner-state-machine"},"State":{"Name":"SNS Publish","EnteredTime":"2025-03-13T15:01:49.768Z","RetryCount":0},"RootExecutionId":"arn:aws:states:sa-east-1:425362996713:execution:abhinav-inner-state-machine:79478846-0cff-44de-91f5-02c96ff65762","serverless-version":"v1"}', + } + }, + }, + } + ] + } + self._test_step_function_trace_data_common( + sqs_event, 3818106616964044169, 15912108710769293902, "3a4fd1a254eb514a" + ) + + @with_trace_propagation_style("datadog") + def test_step_function_trace_data_eventbridge_sqs(self): + """Test step function trace data extraction through EventBridge and SQS""" + eventbridge_sqs_event = { + "Records": [ + { + "messageId": "9ed082ad-2f4d-4309-ab99-9553d2be5613", + "receiptHandle": "AQEB6z7FatNIXbWOTC4Bx+udD0flrnT7XMehruTohl8O2KI2t9hvo5oxGIOhwcb+QtS5aRXsFE35TgGE8kZHlHK7Sa8jQUen6XmsPG7qB6BPdXjr0eunM2SDAtLj0mDSKx907VIKRYQG+qpI9ZyNK7Bi786oQIz2UkZGZru9zlXxJtAQiXBqfJ+OfTzhIwkPu04czU6lYfAbxdyNaBNdBEsTNJKPjquvcq1ZBVCHkn9L6wo8jha6XreoeS2WJ5N26ZLKtAl3wlSUByB92OKZU2mEuNboyY7bgK+nkx4N8fVVrafVXnY9YHuq60eQcZ/nusWFeJlVyN7NFypYP2IOn25xylltEACKbgUdEsFU2h5k7yI2DVk5eAt9vB6qmAJlgfkGsXG0SZrCADoIKXl9jpwajw==", + "body": '{"version":"0","id":"ff6d828b-b35e-abdf-64b6-6ea2cf698c0b","detail-type":"StepFunctionTask","source":"my.eventbridge","account":"425362996713","time":"2025-03-13T15:14:21Z","region":"sa-east-1","resources":["arn:aws:states:sa-east-1:425362996713:stateMachine:abhinav-inner-state-machine","arn:aws:states:sa-east-1:425362996713:execution:abhinav-inner-state-machine:fe087266-fe48-4a31-a21b-691f4e7ea985"],"detail":{"Message":"Hello from Step Functions!","TaskToken":"AQCEAAAAKgAAAAMAAAAAAAAAAfi3HMLTw3u9h0vSmkjyHlK1tv5bQUyA7i+6LIvrBWu+3S+DMuQ79JpMtAuCaMN/AGSuGPO7OPeTNA/9v7/kzAsLoPzwPhbrDPXP4SVF1YIO663PvtX/tEWxnAfwLqwDyx8G8VEsVLcmiiOafFCKJwn0OP/DoAWc0sjhWwRxIoQ0ipBGhOqU8rO8SFZVvxUbkosNejnhT7B6314pC89JZLpXU7SxFe+XrgN+uRAvFxsH/+RwDf94xk5hhtukH7HzhJKWN2WCtUISd84pM/1V7ppDuJ3FHgJT22xQIbEGA9Q4o+pLLehzE2SHCdo7eWYQqN+7BanxBNMI6kBMaf5nuh9izAp38lsrmHJyO8NvXgWg+F9hoTZX4RpV9CCwvRFrCRcCeDq4/uJzbvB4AwwA2q2Llm0X8yH0pKvPZ2v7pl4nCWdnEgj920I8AmBCuozbKP7gJRnAqfx3MnOSkpZTeGnHkp0ly8EevwCT2zX/1GQnCAx02kBaDJgUMputFeruMBzwVtlEVBFUUgaWbJwHzz2htuAw282pdATrKfv4VV1N962uLBJ32wd9a92rX7VXXToitvZGIvf/Z7cu4xfAzxQH1rIQ3M4ojkR9r48qoYtnYDlEf+BkIL8L4+xpbRFSBk3p","_datadog":{"Execution":{"Id":"arn:aws:states:sa-east-1:425362996713:execution:abhinav-inner-state-machine:fe087266-fe48-4a31-a21b-691f4e7ea985","StartTime":"2025-03-13T15:14:21.730Z","Name":"fe087266-fe48-4a31-a21b-691f4e7ea985","RoleArn":"arn:aws:iam::425362996713:role/service-role/StepFunctions-abhinav-activity-state-machine-role-22jpbgl6j","RedriveCount":0},"StateMachine":{"Id":"arn:aws:states:sa-east-1:425362996713:stateMachine:abhinav-inner-state-machine","Name":"abhinav-inner-state-machine"},"State":{"Name":"EventBridge PutEvents","EnteredTime":"2025-03-13T15:14:21.765Z","RetryCount":0},"Task":{"Token":"AQCEAAAAKgAAAAMAAAAAAAAAAfi3HMLTw3u9h0vSmkjyHlK1tv5bQUyA7i+6LIvrBWu+3S+DMuQ79JpMtAuCaMN/AGSuGPO7OPeTNA/9v7/kzAsLoPzwPhbrDPXP4SVF1YIO663PvtX/tEWxnAfwLqwDyx8G8VEsVLcmiiOafFCKJwn0OP/DoAWc0sjhWwRxIoQ0ipBGhOqU8rO8SFZVvxUbkosNejnhT7B6314pC89JZLpXU7SxFe+XrgN+uRAvFxsH/+RwDf94xk5hhtukH7HzhJKWN2WCtUISd84pM/1V7ppDuJ3FHgJT22xQIbEGA9Q4o+pLLehzE2SHCdo7eWYQqN+7BanxBNMI6kBMaf5nuh9izAp38lsrmHJyO8NvXgWg+F9hoTZX4RpV9CCwvRFrCRcCeDq4/uJzbvB4AwwA2q2Llm0X8yH0pKvPZ2v7pl4nCWdnEgj920I8AmBCuozbKP7gJRnAqfx3MnOSkpZTeGnHkp0ly8EevwCT2zX/1GQnCAx02kBaDJgUMputFeruMBzwVtlEVBFUUgaWbJwHzz2htuAw282pdATrKfv4VV1N962uLBJ32wd9a92rX7VXXToitvZGIvf/Z7cu4xfAzxQH1rIQ3M4ojkR9r48qoYtnYDlEf+BkIL8L4+xpbRFSBk3p"},"RootExecutionId":"arn:aws:states:sa-east-1:425362996713:execution:abhinav-inner-state-machine:fe087266-fe48-4a31-a21b-691f4e7ea985","serverless-version":"v1"}}}', + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "1741878862068", + "SenderId": "AROAWGCM4HXUUNHLDXVER:6145b5ba998f311c8ac27f5cade2b915", + "ApproximateFirstReceiveTimestamp": "1741878862075", + }, + "messageAttributes": {}, + "md5OfBody": "e5cf8197b304a4dd4fd5db8e4842484b", + "eventSource": "aws:sqs", + "eventSourceARN": "arn:aws:sqs:sa-east-1:425362996713:abhinav-q", + "awsRegion": "sa-east-1", + } + ] + } + self._test_step_function_trace_data_common( + eventbridge_sqs_event, + 6527209323865742984, + 14276854885394865473, + "2ee7d9862d048173", + ) + + @with_trace_propagation_style("datadog") + def test_step_function_trace_data_sns(self): + """Test step function trace data extraction through SNS""" + sns_event = { + "Records": [ + { + "EventSource": "aws:sns", + "EventVersion": "1.0", + "EventSubscriptionArn": "arn:aws:sns:sa-east-1:425362996713:logs-to-traces-dev-topic:f1653ba3-2ff7-4c8e-9381-45a7a62f9708", + "Sns": { + "Type": "Notification", + "MessageId": "7bc0c17d-bf88-5ff4-af7f-a131463a0d90", + "TopicArn": "arn:aws:sns:sa-east-1:425362996713:logs-to-traces-dev-topic", + "Subject": None, + "Message": "{}", + "Timestamp": "2025-03-13T15:19:14.245Z", + "SignatureVersion": "1", + "Signature": "r8RoYzq4uNcq0yj7sxcp8sTbFiDk8zqtocG7mJuE2MPVuR8O5eNg2ohofokUnC84xADlCq5k6ElP55lbbY36tQO+qDGdV6+TGN4bAL9FiQrDE6tQYYJdlv/sYE7iOOgnRBC9ljEdCIDNtQNGCfND/8JzatPg8KAy7xMRcLrGWu4xIMEysqNTz7rETfhdZjLQPssAht44KcoUJCH4/VuB+B9W1RhwA+M8Q3tqxzahIXzcgDM8OlmfkBlXo4FDVF3WUzjXLf9AMOg+66GupjQFtUpmRMkA8KXSV1HCso7e6nIIWtOnUoWeDDUfQPFFq4TNSlb6h2NuebaHdnW5nhxnJQ==", + "SigningCertUrl": "https://sns.sa-east-1.amazonaws.com/SimpleNotificationService-9c6465fa7f48f5cacd23014631ec1136.pem", + "UnsubscribeUrl": "https://sns.sa-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:sa-east-1:425362996713:logs-to-traces-dev-topic:f1653ba3-2ff7-4c8e-9381-45a7a62f9708", + "MessageAttributes": { + "_datadog": { + "Type": "String", + "Value": '{"Execution":{"Id":"arn:aws:states:sa-east-1:425362996713:execution:abhinav-inner-state-machine:11623e4f-70ee-4330-8fbe-955152dea54c","StartTime":"2025-03-13T15:19:14.019Z","Name":"11623e4f-70ee-4330-8fbe-955152dea54c","RoleArn":"arn:aws:iam::425362996713:role/service-role/StepFunctions-abhinav-activity-state-machine-role-22jpbgl6j","RedriveCount":0},"StateMachine":{"Id":"arn:aws:states:sa-east-1:425362996713:stateMachine:abhinav-inner-state-machine","Name":"abhinav-inner-state-machine"},"State":{"Name":"SNS Publish","EnteredTime":"2025-03-13T15:19:14.061Z","RetryCount":0},"RootExecutionId":"arn:aws:states:sa-east-1:425362996713:execution:abhinav-inner-state-machine:11623e4f-70ee-4330-8fbe-955152dea54c","serverless-version":"v1"}', + } + }, + }, + } + ] + } + self._test_step_function_trace_data_common( + sns_event, 1459500239678510857, 13193042003602978730, "fafc98885fd4647" + ) + + @with_trace_propagation_style("datadog") + def test_step_function_trace_data_sns_sqs(self): + """Test step function trace data extraction through SNS and SQS""" + sns_sqs_event = { + "Records": [ + { + "messageId": "9ec3339f-cd1a-43ba-9681-3e9113b430d3", + "receiptHandle": "AQEBJ5gIvqEWQt39NHPMAoK57cGgKtrgTtckWeWdDRi2FeucYr6pBhNjzXuUrmoHZMozX1WaoABtfQ5+kX5ucDBpA2Ci3Q07Z4MYvA6X0Sw13HCkiBnLrHPmH/F3rUBjvdRkIIKqA2ACX58MdkaYGNpqsHTJHB613wa8z4zurK0u7eUIXrr+e+gtsuPD39hiWlJo7cpBVv7y178rzMX8gPQTnRJv1cjhCHENtjWTSmfFC5N+BIQNIcjFsTTDRSovZlNIfAEuS+uowgzk0DUyoTJD5nFTL8lQHeXGRCUQe58/UY9OwRXEFVPGZOQR4OI9Wa4Kf/keFypTk9YwC9DhSeKvzZ0wBvejyl1n0ztT45+XYoWfi0mxGWM5b7r9wT36RDmjnM6vszH/d3fhZSRPASxWBQ==", + "body": '{\n "Type" : "Notification",\n "MessageId" : "1f3078d0-c792-5cf3-a130-189c3b846a3f",\n "TopicArn" : "arn:aws:sns:sa-east-1:425362996713:logs-to-traces-dev-topic",\n "Message" : "{}",\n "Timestamp" : "2025-03-13T15:29:26.348Z",\n "SignatureVersion" : "1",\n "Signature" : "mxOqAQ5o/isJrMS0PezHKRaA3g8Z/8YDbkToqhJub6I66LGtl+NYhyfTyllbgxvRP2XD2meKPRSgPI3nLyq8UHsWgyYwe3Tsv8QpRunCVE9Pebh+V1LGPWfjOiL0e+bnaj956QJD99560LJ6bzWP9QO584/zfOdcw6E5XQZfAI+pvEsf28Dy0WJO/lWTATRZDf8wGhmc7uKI1ZMsrOaNoUD8PXVqsI4yrJHxhzMb3SrC7YjI/PnNIbcn6ezwprbUdbZvyNAfJiE0k5IlppA089tMXC/ItgC7AgQhG9huPdKi5KdWGACK7gEwqmFwL+5T33sUXDaH2g58WhCs76pKEw==",\n "SigningCertURL" : "https://sns.sa-east-1.amazonaws.com/SimpleNotificationService-9c6465fa7f48f5cacd23014631ec1136.pem",\n "UnsubscribeURL" : "https://sns.sa-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:sa-east-1:425362996713:logs-to-traces-dev-topic:5f64545d-ae9a-4a5f-a7ee-798a0bd8519e",\n "MessageAttributes" : {\n "_datadog" : {"Type":"String","Value":"{\\"Execution\\":{\\"Id\\":\\"arn:aws:states:sa-east-1:425362996713:execution:abhinav-inner-state-machine:37ff72b8-0ee0-49e2-93c0-8a1764206a03\\",\\"StartTime\\":\\"2025-03-13T15:29:26.144Z\\",\\"Name\\":\\"37ff72b8-0ee0-49e2-93c0-8a1764206a03\\",\\"RoleArn\\":\\"arn:aws:iam::425362996713:role/service-role/StepFunctions-abhinav-activity-state-machine-role-22jpbgl6j\\",\\"RedriveCount\\":0},\\"StateMachine\\":{\\"Id\\":\\"arn:aws:states:sa-east-1:425362996713:stateMachine:abhinav-inner-state-machine\\",\\"Name\\":\\"abhinav-inner-state-machine\\"},\\"State\\":{\\"Name\\":\\"SNS Publish\\",\\"EnteredTime\\":\\"2025-03-13T15:29:26.182Z\\",\\"RetryCount\\":0},\\"RootExecutionId\\":\\"arn:aws:states:sa-east-1:425362996713:execution:abhinav-inner-state-machine:37ff72b8-0ee0-49e2-93c0-8a1764206a03\\",\\"serverless-version\\":\\"v1\\"}"}\n }\n}', + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "1741879766424", + "SenderId": "AIDAIOA2GYWSHW4E2VXIO", + "ApproximateFirstReceiveTimestamp": "1741879766432", + }, + "messageAttributes": {}, + "md5OfBody": "52af59de28507d7e67324b46c95337d8", + "eventSource": "aws:sqs", + "eventSourceARN": "arn:aws:sqs:sa-east-1:425362996713:abhinav-q", + "awsRegion": "sa-east-1", + } + ] + } + self._test_step_function_trace_data_common( + sns_sqs_event, 5708348677301000120, 18223515719478572006, "45457f5f3fde3fa1" ) diff --git a/tests/test_trigger.py b/tests/test_trigger.py index be028a23..9cb088f1 100644 --- a/tests/test_trigger.py +++ b/tests/test_trigger.py @@ -9,6 +9,7 @@ get_event_source_arn, extract_trigger_tags, extract_http_status_code_tag, + is_step_function_event, ) from tests.utils import get_mock_context @@ -543,3 +544,68 @@ def test_extract_http_status_code_tag_from_response_object(self): response.status_code = 403 status_code = extract_http_status_code_tag(trigger_tags, response) self.assertEqual(status_code, "403") + + +class IsStepFunctionEvent(unittest.TestCase): + def test_is_step_function_event_jsonata(self): + event = { + "_datadog": { + "Execution": { + "Id": "665c417c-1237-4742-aaca-8b3becbb9e75", + "RedriveCount": 0, + }, + "StateMachine": {}, + "State": { + "Name": "my-awesome-state", + "EnteredTime": "Mon Nov 13 12:43:33 PST 2023", + "RetryCount": 0, + }, + "x-datadog-trace-id": "5821803790426892636", + "x-datadog-tags": "_dd.p.dm=-0,_dd.p.tid=672a7cb100000000", + "serverless-version": "v1", + } + } + self.assertTrue(is_step_function_event(event)) + + def test_is_step_function_event_jsonpath(self): + event = { + "Execution": { + "Id": "665c417c-1237-4742-aaca-8b3becbb9e75", + "RedriveCount": 0, + }, + "StateMachine": {}, + "State": { + "Name": "my-awesome-state", + "EnteredTime": "Mon Nov 13 12:43:33 PST 2023", + "RetryCount": 0, + }, + } + self.assertTrue(is_step_function_event(event)) + + def test_is_step_function_event_legacy_lambda(self): + event = { + "Payload": { + "Execution": { + "Id": "665c417c-1237-4742-aaca-8b3becbb9e75", + "RedriveCount": 0, + }, + "StateMachine": {}, + "State": { + "Name": "my-awesome-state", + "EnteredTime": "Mon Nov 13 12:43:33 PST 2023", + "RetryCount": 0, + }, + } + } + self.assertTrue(is_step_function_event(event)) + + def test_is_step_function_event_dd_header(self): + event = { + "_datadog": { + "x-datadog-trace-id": "5821803790426892636", + "x-datadog-parent-id": "5821803790426892636", + "x-datadog-tags": "_dd.p.dm=-0,_dd.p.tid=672a7cb100000000", + "x-datadog-sampling-priority": "1", + } + } + self.assertFalse(is_step_function_event(event)) From 92ec3b8e36b688ae972b1fe23c9737a6488668fa Mon Sep 17 00:00:00 2001 From: Nicholas Hulston Date: Wed, 19 Mar 2025 07:43:20 -0700 Subject: [PATCH 201/268] Submit metric for DynamoDB Stream Type (#578) --- datadog_lambda/metric.py | 14 ++++++++++++++ datadog_lambda/span_pointers.py | 4 ++++ .../snapshots/logs/async-metrics_python310.log | 9 +++++++++ .../snapshots/logs/async-metrics_python311.log | 9 +++++++++ .../snapshots/logs/async-metrics_python312.log | 9 +++++++++ .../snapshots/logs/async-metrics_python313.log | 9 +++++++++ .../snapshots/logs/async-metrics_python38.log | 9 +++++++++ .../snapshots/logs/async-metrics_python39.log | 9 +++++++++ .../snapshots/logs/sync-metrics_python310.log | 9 +++++++++ .../snapshots/logs/sync-metrics_python311.log | 9 +++++++++ .../snapshots/logs/sync-metrics_python312.log | 11 ++++++++++- .../snapshots/logs/sync-metrics_python313.log | 11 ++++++++++- .../snapshots/logs/sync-metrics_python38.log | 9 +++++++++ .../snapshots/logs/sync-metrics_python39.log | 11 ++++++++++- 14 files changed, 129 insertions(+), 3 deletions(-) diff --git a/datadog_lambda/metric.py b/datadog_lambda/metric.py index 6389c268..f9c67a26 100644 --- a/datadog_lambda/metric.py +++ b/datadog_lambda/metric.py @@ -188,3 +188,17 @@ def submit_errors_metric(lambda_context): lambda_context (object): Lambda context dict passed to the function by AWS """ submit_enhanced_metric("errors", lambda_context) + + +def submit_dynamodb_stream_type_metric(event): + stream_view_type = ( + event.get("Records", [{}])[0].get("dynamodb", {}).get("StreamViewType") + ) + if stream_view_type: + lambda_metric( + "datadog.serverless.dynamodb.stream.type", + 1, + timestamp=None, + tags=[f"streamtype:{stream_view_type}"], + force_async=True, + ) diff --git a/datadog_lambda/span_pointers.py b/datadog_lambda/span_pointers.py index e111469e..40d959e6 100644 --- a/datadog_lambda/span_pointers.py +++ b/datadog_lambda/span_pointers.py @@ -6,6 +6,8 @@ from ddtrace._trace._span_pointer import _SpanPointerDirection from ddtrace._trace._span_pointer import _SpanPointerDescription + +from datadog_lambda.metric import submit_dynamodb_stream_type_metric from datadog_lambda.trigger import EventTypes @@ -28,6 +30,8 @@ def calculate_span_pointers( return _calculate_s3_span_pointers_for_event(event) elif event_source.equals(EventTypes.DYNAMODB): + # Temporary metric. TODO eventually remove(@nhulston) + submit_dynamodb_stream_type_metric(event) return _calculate_dynamodb_span_pointers_for_event(event) except Exception as e: diff --git a/tests/integration/snapshots/logs/async-metrics_python310.log b/tests/integration/snapshots/logs/async-metrics_python310.log index ed0d3b43..24d3fb5b 100644 --- a/tests/integration/snapshots/logs/async-metrics_python310.log +++ b/tests/integration/snapshots/logs/async-metrics_python310.log @@ -188,6 +188,15 @@ START "dd_lambda_layer:datadog-python310_X.X.X" ] } +{ + "m": "datadog.serverless.dynamodb.stream.type", + "v": 1, + "e": XXXX, + "t": [ + "streamtype:NEW_AND_OLD_IMAGES", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} { "m": "hello.dog", "v": 1, diff --git a/tests/integration/snapshots/logs/async-metrics_python311.log b/tests/integration/snapshots/logs/async-metrics_python311.log index b57a1b5a..e4fa66bc 100644 --- a/tests/integration/snapshots/logs/async-metrics_python311.log +++ b/tests/integration/snapshots/logs/async-metrics_python311.log @@ -188,6 +188,15 @@ START "dd_lambda_layer:datadog-python311_X.X.X" ] } +{ + "m": "datadog.serverless.dynamodb.stream.type", + "v": 1, + "e": XXXX, + "t": [ + "streamtype:NEW_AND_OLD_IMAGES", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} { "m": "hello.dog", "v": 1, diff --git a/tests/integration/snapshots/logs/async-metrics_python312.log b/tests/integration/snapshots/logs/async-metrics_python312.log index 1b7e4b08..0d632c6c 100644 --- a/tests/integration/snapshots/logs/async-metrics_python312.log +++ b/tests/integration/snapshots/logs/async-metrics_python312.log @@ -188,6 +188,15 @@ START "dd_lambda_layer:datadog-python312_X.X.X" ] } +{ + "m": "datadog.serverless.dynamodb.stream.type", + "v": 1, + "e": XXXX, + "t": [ + "streamtype:NEW_AND_OLD_IMAGES", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} { "m": "hello.dog", "v": 1, diff --git a/tests/integration/snapshots/logs/async-metrics_python313.log b/tests/integration/snapshots/logs/async-metrics_python313.log index 32342559..09070709 100644 --- a/tests/integration/snapshots/logs/async-metrics_python313.log +++ b/tests/integration/snapshots/logs/async-metrics_python313.log @@ -188,6 +188,15 @@ START "dd_lambda_layer:datadog-python313_X.X.X" ] } +{ + "m": "datadog.serverless.dynamodb.stream.type", + "v": 1, + "e": XXXX, + "t": [ + "streamtype:NEW_AND_OLD_IMAGES", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} { "m": "hello.dog", "v": 1, diff --git a/tests/integration/snapshots/logs/async-metrics_python38.log b/tests/integration/snapshots/logs/async-metrics_python38.log index 9dc9edf6..4a506930 100644 --- a/tests/integration/snapshots/logs/async-metrics_python38.log +++ b/tests/integration/snapshots/logs/async-metrics_python38.log @@ -188,6 +188,15 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } +{ + "m": "datadog.serverless.dynamodb.stream.type", + "v": 1, + "e": XXXX, + "t": [ + "streamtype:NEW_AND_OLD_IMAGES", + "dd_lambda_layer:datadog-python38_X.X.X" + ] +} { "m": "hello.dog", "v": 1, diff --git a/tests/integration/snapshots/logs/async-metrics_python39.log b/tests/integration/snapshots/logs/async-metrics_python39.log index 89e5d227..54081402 100644 --- a/tests/integration/snapshots/logs/async-metrics_python39.log +++ b/tests/integration/snapshots/logs/async-metrics_python39.log @@ -188,6 +188,15 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } +{ + "m": "datadog.serverless.dynamodb.stream.type", + "v": 1, + "e": XXXX, + "t": [ + "streamtype:NEW_AND_OLD_IMAGES", + "dd_lambda_layer:datadog-python39_X.X.X" + ] +} { "m": "hello.dog", "v": 1, diff --git a/tests/integration/snapshots/logs/sync-metrics_python310.log b/tests/integration/snapshots/logs/sync-metrics_python310.log index 6eab44c2..e2569775 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python310.log +++ b/tests/integration/snapshots/logs/sync-metrics_python310.log @@ -207,6 +207,15 @@ START "dd_lambda_layer:datadog-python310_X.X.X" ] } +{ + "m": "datadog.serverless.dynamodb.stream.type", + "v": 1, + "e": XXXX, + "t": [ + "streamtype:NEW_AND_OLD_IMAGES", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { diff --git a/tests/integration/snapshots/logs/sync-metrics_python311.log b/tests/integration/snapshots/logs/sync-metrics_python311.log index 87cd6a6a..69d4a695 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python311.log +++ b/tests/integration/snapshots/logs/sync-metrics_python311.log @@ -207,6 +207,15 @@ START "dd_lambda_layer:datadog-python311_X.X.X" ] } +{ + "m": "datadog.serverless.dynamodb.stream.type", + "v": 1, + "e": XXXX, + "t": [ + "streamtype:NEW_AND_OLD_IMAGES", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { diff --git a/tests/integration/snapshots/logs/sync-metrics_python312.log b/tests/integration/snapshots/logs/sync-metrics_python312.log index 41b5a71c..49bae0a2 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python312.log +++ b/tests/integration/snapshots/logs/sync-metrics_python312.log @@ -207,6 +207,15 @@ START "dd_lambda_layer:datadog-python312_X.X.X" ] } +{ + "m": "datadog.serverless.dynamodb.stream.type", + "v": 1, + "e": XXXX, + "t": [ + "streamtype:NEW_AND_OLD_IMAGES", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { @@ -546,7 +555,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A ] } HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX -END Duration: XXXX ms Memory Used: XXXX MB { "traces": [ [ @@ -585,6 +593,7 @@ END Duration: XXXX ms Memory Used: XXXX MB ] ] } +END Duration: XXXX ms Memory Used: XXXX MB START { "m": "aws.lambda.enhanced.invocations", diff --git a/tests/integration/snapshots/logs/sync-metrics_python313.log b/tests/integration/snapshots/logs/sync-metrics_python313.log index 439e44d6..2f461f6f 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python313.log +++ b/tests/integration/snapshots/logs/sync-metrics_python313.log @@ -207,6 +207,15 @@ START "dd_lambda_layer:datadog-python313_X.X.X" ] } +{ + "m": "datadog.serverless.dynamodb.stream.type", + "v": 1, + "e": XXXX, + "t": [ + "streamtype:NEW_AND_OLD_IMAGES", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { @@ -1302,7 +1311,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A ] } HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX -END Duration: XXXX ms Memory Used: XXXX MB { "traces": [ [ @@ -1341,6 +1349,7 @@ END Duration: XXXX ms Memory Used: XXXX MB ] ] } +END Duration: XXXX ms Memory Used: XXXX MB START { "m": "aws.lambda.enhanced.invocations", diff --git a/tests/integration/snapshots/logs/sync-metrics_python38.log b/tests/integration/snapshots/logs/sync-metrics_python38.log index b30289ca..83e33d33 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python38.log +++ b/tests/integration/snapshots/logs/sync-metrics_python38.log @@ -207,6 +207,15 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } +{ + "m": "datadog.serverless.dynamodb.stream.type", + "v": 1, + "e": XXXX, + "t": [ + "streamtype:NEW_AND_OLD_IMAGES", + "dd_lambda_layer:datadog-python38_X.X.X" + ] +} HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { diff --git a/tests/integration/snapshots/logs/sync-metrics_python39.log b/tests/integration/snapshots/logs/sync-metrics_python39.log index 772ea5d1..0a433c34 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python39.log +++ b/tests/integration/snapshots/logs/sync-metrics_python39.log @@ -207,6 +207,15 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } +{ + "m": "datadog.serverless.dynamodb.stream.type", + "v": 1, + "e": XXXX, + "t": [ + "streamtype:NEW_AND_OLD_IMAGES", + "dd_lambda_layer:datadog-python39_X.X.X" + ] +} HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { @@ -368,6 +377,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A ] } HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX +END Duration: XXXX ms Memory Used: XXXX MB { "traces": [ [ @@ -406,7 +416,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept ] ] } -END Duration: XXXX ms Memory Used: XXXX MB START { "m": "aws.lambda.enhanced.invocations", From 71c14e370e9f2a086ff676705a2d19b045b15f20 Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Mon, 24 Mar 2025 08:38:10 -0700 Subject: [PATCH 202/268] Remove __future__ import. (#579) --- datadog_lambda/handler.py | 1 - 1 file changed, 1 deletion(-) diff --git a/datadog_lambda/handler.py b/datadog_lambda/handler.py index 433d9b92..4f12b1ad 100644 --- a/datadog_lambda/handler.py +++ b/datadog_lambda/handler.py @@ -3,7 +3,6 @@ # This product includes software developed at Datadog (https://www.datadoghq.com/). # Copyright 2020 Datadog, Inc. -from __future__ import absolute_import from importlib import import_module import os From 95f9aed2b884f6205eb3e346ef6498bc0ae6aa4e Mon Sep 17 00:00:00 2001 From: Brett Langdon Date: Thu, 27 Mar 2025 15:28:52 -0400 Subject: [PATCH 203/268] Revert "Use sam/build-python images for building layers. (#577)" (#580) This reverts commit 5a55fe45a49b8d7e6c8db0734f203bdff648f383. --- scripts/build_layers.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/build_layers.sh b/scripts/build_layers.sh index 23941b7a..a0d6ee39 100755 --- a/scripts/build_layers.sh +++ b/scripts/build_layers.sh @@ -61,7 +61,7 @@ function docker_build_zip { # between different python runtimes. temp_dir=$(mktemp -d) docker buildx build -t datadog-lambda-python-${arch}:$1 . --no-cache \ - --build-arg image=public.ecr.aws/sam/build-python$1:1 \ + --build-arg image=public.ecr.aws/docker/library/python:$1 \ --build-arg runtime=python$1 \ --platform linux/${arch} \ --progress=plain \ From 2320c0a909413c8b66ba501fc969c043fbd27ec9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?jordan=20gonz=C3=A1lez?= <30836115+duncanista@users.noreply.github.com> Date: Fri, 28 Mar 2025 16:28:25 -0400 Subject: [PATCH 204/268] chore: lazy load some imports (#581) * lazy load metrics also hashlib right away * black * update invocation metric to be error metric * lazyload `base64` * patch right call --- datadog_lambda/api.py | 2 +- datadog_lambda/tracing.py | 10 ++++++++-- datadog_lambda/trigger.py | 3 ++- datadog_lambda/wrapper.py | 24 ++++++++++++++++-------- tests/test_wrapper.py | 2 +- 5 files changed, 28 insertions(+), 13 deletions(-) diff --git a/datadog_lambda/api.py b/datadog_lambda/api.py index c539ea05..fd3e2c17 100644 --- a/datadog_lambda/api.py +++ b/datadog_lambda/api.py @@ -1,6 +1,5 @@ import os import logging -import base64 logger = logging.getLogger(__name__) KMS_ENCRYPTION_CONTEXT_KEY = "LambdaFunctionName" @@ -9,6 +8,7 @@ def decrypt_kms_api_key(kms_client, ciphertext): from botocore.exceptions import ClientError + import base64 """ Decodes and deciphers the base64-encoded ciphertext given as a parameter using KMS. diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 0fae76dd..9a27673c 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -2,10 +2,8 @@ # under the Apache License Version 2.0. # This product includes software developed at Datadog (https://www.datadoghq.com/). # Copyright 2019 Datadog, Inc. -import hashlib import logging import os -import base64 import traceback import ujson as json from datetime import datetime, timezone @@ -259,6 +257,8 @@ def extract_context_from_sqs_or_sns_event_or_context(event, lambda_context): dd_json_data = None dd_json_data_type = dd_payload.get("Type") or dd_payload.get("dataType") if dd_json_data_type == "Binary": + import base64 + dd_json_data = dd_payload.get("binaryValue") or dd_payload.get("Value") if dd_json_data: dd_json_data = base64.b64decode(dd_json_data) @@ -373,6 +373,8 @@ def extract_context_from_kinesis_event(event, lambda_context): return extract_context_from_lambda_context(lambda_context) data = kinesis.get("data") if data: + import base64 + b64_bytes = data.encode("ascii") str_bytes = base64.b64decode(b64_bytes) data_str = str_bytes.decode("ascii") @@ -387,6 +389,8 @@ def extract_context_from_kinesis_event(event, lambda_context): def _deterministic_sha256_hash(s: str, part: str) -> int: + import hashlib + sha256_hash = hashlib.sha256(s.encode()).hexdigest() # First two chars is '0b'. zfill to ensure 256 bits, but we only care about the first 128 bits binary_hash = bin(int(sha256_hash, 16))[2:].zfill(256) @@ -551,6 +555,8 @@ def get_injected_authorizer_data(event, is_http_api) -> dict: if not dd_data_raw: return None + import base64 + injected_data = json.loads(base64.b64decode(dd_data_raw)) # Lambda authorizer's results can be cached. But the payload will still have the injected diff --git a/datadog_lambda/trigger.py b/datadog_lambda/trigger.py index 708138bf..8090e36e 100644 --- a/datadog_lambda/trigger.py +++ b/datadog_lambda/trigger.py @@ -3,7 +3,6 @@ # This product includes software developed at Datadog (https://www.datadoghq.com/). # Copyright 2019 Datadog, Inc. -import base64 import gzip import ujson as json from io import BytesIO, BufferedReader @@ -242,6 +241,8 @@ def parse_event_source_arn(source: _EventSource, event: dict, context: Any) -> s # e.g. arn:aws:logs:us-west-1:123456789012:log-group:/my-log-group-xyz if source.event_type == EventTypes.CLOUDWATCH_LOGS: + import base64 + with gzip.GzipFile( fileobj=BytesIO(base64.b64decode(event.get("awslogs", {}).get("data"))) ) as decompress_stream: diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index 5641bd15..8c1914e3 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -2,7 +2,6 @@ # under the Apache License Version 2.0. # This product includes software developed at Datadog (https://www.datadoghq.com/). # Copyright 2019 Datadog, Inc. -import base64 import os import logging import traceback @@ -23,11 +22,6 @@ XraySubsegment, Headers, ) -from datadog_lambda.metric import ( - flush_stats, - submit_invocations_metric, - submit_errors_metric, -) from datadog_lambda.module_name import modify_module_name from datadog_lambda.patch import patch_all from datadog_lambda.span_pointers import calculate_span_pointers @@ -248,7 +242,11 @@ def __call__(self, event, context, **kwargs): self.response = self.func(event, context, **kwargs) return self.response except Exception: - submit_errors_metric(context) + if not should_use_extension: + from datadog_lambda.metric import submit_errors_metric + + submit_errors_metric(context) + if self.span: self.span.set_traceback() raise @@ -274,6 +272,9 @@ def _inject_authorizer_span_headers(self, request_id): injected_headers[Headers.Parent_Span_Finish_Time] = finish_time_ns if request_id is not None: injected_headers[Headers.Authorizing_Request_Id] = request_id + + import base64 + datadog_data = base64.b64encode( json.dumps(injected_headers, escape_forward_slashes=False).encode() ).decode() @@ -284,7 +285,12 @@ def _before(self, event, context): try: self.response = None set_cold_start(init_timestamp_ns) - submit_invocations_metric(context) + + if not should_use_extension: + from datadog_lambda.metric import submit_invocations_metric + + submit_invocations_metric(context) + self.trigger_tags = extract_trigger_tags(event, context) # Extract Datadog trace context and source from incoming requests dd_context, trace_context_source, event_source = extract_dd_trace_context( @@ -383,6 +389,8 @@ def _after(self, event, context): logger.debug("Failed to create cold start spans. %s", e) if not self.flush_to_log or should_use_extension: + from datadog_lambda.metric import flush_stats + flush_stats(context) if should_use_extension and self.local_testing_mode: # when testing locally, the extension does not know when an diff --git a/tests/test_wrapper.py b/tests/test_wrapper.py index f47285e6..4b243036 100644 --- a/tests/test_wrapper.py +++ b/tests/test_wrapper.py @@ -470,7 +470,7 @@ def lambda_handler(event, context): self.mock_write_metric_point_to_stdout.assert_not_called() def test_only_one_wrapper_in_use(self): - patcher = patch("datadog_lambda.wrapper.submit_invocations_metric") + patcher = patch("datadog_lambda.metric.submit_invocations_metric") self.mock_submit_invocations_metric = patcher.start() self.addCleanup(patcher.stop) From 7cd2baf6361d0a02b8b48e084fbc828a7db66b00 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Fri, 4 Apr 2025 10:49:52 -0400 Subject: [PATCH 205/268] v6.107.0 (#583) --- datadog_lambda/version.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index 0c8d879b..702691d8 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "6.106.0" +__version__ = "6.107.0" diff --git a/pyproject.toml b/pyproject.toml index 8db5e352..165a8cbe 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "6.106.0" +version = "6.107.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 8207aa224692c1f3eb72cc5cb8dc10251e5368d2 Mon Sep 17 00:00:00 2001 From: Sam Brenner <106700075+sabrenner@users.noreply.github.com> Date: Wed, 16 Apr 2025 13:59:37 -0400 Subject: [PATCH 206/268] revert llmobs api key and forced agentless (#585) --- datadog_lambda/wrapper.py | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index 8c1914e3..e81b1baa 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -49,14 +49,10 @@ if profiling_env_var: from ddtrace.profiling import profiler -llmobs_api_key = None llmobs_env_var = os.environ.get("DD_LLMOBS_ENABLED", "false").lower() in ("true", "1") if llmobs_env_var: - from datadog_lambda.api import get_api_key from ddtrace.llmobs import LLMObs - llmobs_api_key = get_api_key() - logger = logging.getLogger(__name__) DD_FLUSH_TO_LOG = "DD_FLUSH_TO_LOG" @@ -226,10 +222,7 @@ def __init__(self, func): # Enable LLM Observability if llmobs_env_var: - LLMObs.enable( - agentless_enabled=True, - api_key=llmobs_api_key, - ) + LLMObs.enable() logger.debug("datadog_lambda_wrapper initialized") except Exception as e: From 33cd5bf9e05bd3e3a35450c42b522ce1280b9add Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Thu, 24 Apr 2025 11:30:38 -0700 Subject: [PATCH 207/268] Add new region ap-southeast-7. (#586) --- ci/datasources/regions.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/ci/datasources/regions.yaml b/ci/datasources/regions.yaml index 93816ce9..f74c62b8 100644 --- a/ci/datasources/regions.yaml +++ b/ci/datasources/regions.yaml @@ -12,6 +12,7 @@ regions: - code: "ap-southeast-3" - code: "ap-southeast-4" - code: "ap-southeast-5" + - code: "ap-southeast-7" - code: "ap-northeast-1" - code: "ap-northeast-2" - code: "ap-northeast-3" From 72caf0ae5d29f82649b57fb6075dcf9a4f7a436b Mon Sep 17 00:00:00 2001 From: Nicholas Hulston Date: Tue, 29 Apr 2025 14:10:13 -0400 Subject: [PATCH 208/268] add mx-central-1 region (#587) --- ci/datasources/regions.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/ci/datasources/regions.yaml b/ci/datasources/regions.yaml index f74c62b8..d41bade3 100644 --- a/ci/datasources/regions.yaml +++ b/ci/datasources/regions.yaml @@ -29,4 +29,5 @@ regions: - code: "il-central-1" - code: "me-south-1" - code: "me-central-1" + - code: "mx-central-1" - code: "sa-east-1" From 1f8d3fd96a7dce844a3ecaea4ec2f41be1e73f56 Mon Sep 17 00:00:00 2001 From: Aleksandr Pasechnik Date: Tue, 6 May 2025 11:45:18 -0400 Subject: [PATCH 209/268] feat: Correct FIPS-mode metrics (#588) - Our `dogstatsd` client now supports timestamps for the metrics that it will send. - This unblocks us to always send metrics to the extension, even if they have a timestamp. Confirmed that this actually works now with both bottlecap and the go agent. - Refactored the metrics workflow to have an explicit choice of metrics handlers (Extension, Forwarder, Datadog API, or, for some FIPS usecases, No Handler). - Added a `DD_LAMBDA_FIPS_MODE` flag which allows FIPS-mode logic to be enabled in commercial regions or disabled in govcloud regions. - The new FIPS mode is used for Datadog API Key secret lookup and for metrics handling decisions. ### Breaking Change Since the `DD_LAMBDA_FIPS_MODE` defaults to `true` in govcloud, direct metrics submission there (without an Extension or a Forwarder) will now be disabled. --- datadog_lambda/api.py | 22 ++-- datadog_lambda/dogstatsd.py | 27 +++-- datadog_lambda/fips.py | 19 ++++ datadog_lambda/metric.py | 149 +++++++++++++++----------- datadog_lambda/stats_writer.py | 2 +- datadog_lambda/statsd_writer.py | 6 +- datadog_lambda/thread_stats_writer.py | 3 +- tests/test_api.py | 26 ++++- tests/test_dogstatsd.py | 20 ++-- tests/test_metric.py | 123 +++++++++++++-------- 10 files changed, 254 insertions(+), 143 deletions(-) create mode 100644 datadog_lambda/fips.py diff --git a/datadog_lambda/api.py b/datadog_lambda/api.py index fd3e2c17..d1cee4e4 100644 --- a/datadog_lambda/api.py +++ b/datadog_lambda/api.py @@ -1,5 +1,7 @@ -import os import logging +import os + +from datadog_lambda.fips import fips_mode_enabled logger = logging.getLogger(__name__) KMS_ENCRYPTION_CONTEXT_KEY = "LambdaFunctionName" @@ -7,9 +9,10 @@ def decrypt_kms_api_key(kms_client, ciphertext): - from botocore.exceptions import ClientError import base64 + from botocore.exceptions import ClientError + """ Decodes and deciphers the base64-encoded ciphertext given as a parameter using KMS. For this to work properly, the Lambda function must have the appropriate IAM permissions. @@ -63,10 +66,9 @@ def get_api_key() -> str: DD_API_KEY = os.environ.get("DD_API_KEY", os.environ.get("DATADOG_API_KEY", "")) LAMBDA_REGION = os.environ.get("AWS_REGION", "") - is_gov_region = LAMBDA_REGION.startswith("us-gov-") - if is_gov_region: + if fips_mode_enabled: logger.debug( - "Govcloud region detected. Using FIPs endpoints for secrets management." + "FIPS mode is enabled, using FIPS endpoints for secrets management." ) if DD_API_KEY_SECRET_ARN: @@ -80,7 +82,7 @@ def get_api_key() -> str: return "" endpoint_url = ( f"https://secretsmanager-fips.{secrets_region}.amazonaws.com/" - if is_gov_region + if fips_mode_enabled else None ) secrets_manager_client = _boto3_client( @@ -92,7 +94,9 @@ def get_api_key() -> str: elif DD_API_KEY_SSM_NAME: # SSM endpoints: https://docs.aws.amazon.com/general/latest/gr/ssm.html fips_endpoint = ( - f"https://ssm-fips.{lambda_region}.amazonaws.com/" if is_gov_region else None + f"https://ssm-fips.{lambda_region}.amazonaws.com/" + if fips_mode_enabled + else None ) ssm_client = _boto3_client("ssm", endpoint_url=fips_endpoint) api_key = ssm_client.get_parameter( @@ -101,7 +105,9 @@ def get_api_key() -> str: elif DD_KMS_API_KEY: # KMS endpoints: https://docs.aws.amazon.com/general/latest/gr/kms.html fips_endpoint = ( - f"https://kms-fips.{lambda_region}.amazonaws.com/" if is_gov_region else None + f"https://kms-fips.{lambda_region}.amazonaws.com/" + if fips_mode_enabled + else None ) kms_client = _boto3_client("kms", endpoint_url=fips_endpoint) api_key = decrypt_kms_api_key(kms_client, DD_KMS_API_KEY) diff --git a/datadog_lambda/dogstatsd.py b/datadog_lambda/dogstatsd.py index a627492d..f30a2039 100644 --- a/datadog_lambda/dogstatsd.py +++ b/datadog_lambda/dogstatsd.py @@ -1,11 +1,10 @@ +import errno import logging import os -import socket -import errno import re +import socket from threading import Lock - MIN_SEND_BUFFER_SIZE = 32 * 1024 log = logging.getLogger("datadog_lambda.dogstatsd") @@ -55,14 +54,21 @@ def _get_udp_socket(cls, host, port): return sock - def distribution(self, metric, value, tags=None): + def distribution(self, metric, value, tags=None, timestamp=None): """ - Send a global distribution value, optionally setting tags. + Send a global distribution value, optionally setting tags. The optional + timestamp should be an integer representing seconds since the epoch + (January 1, 1970, 00:00:00 UTC). >>> statsd.distribution("uploaded.file.size", 1445) >>> statsd.distribution("album.photo.count", 26, tags=["gender:female"]) + >>> statsd.distribution( + >>> "historic.file.count", + >>> 5, + >>> timestamp=int(datetime(2020, 2, 14, 12, 0, 0).timestamp()), + >>> ) """ - self._report(metric, "d", value, tags) + self._report(metric, "d", value, tags, timestamp) def close_socket(self): """ @@ -84,20 +90,21 @@ def normalize_tags(self, tag_list): for tag in tag_list ] - def _serialize_metric(self, metric, metric_type, value, tags): + def _serialize_metric(self, metric, metric_type, value, tags, timestamp): # Create/format the metric packet - return "%s:%s|%s%s" % ( + return "%s:%s|%s%s%s" % ( metric, value, metric_type, ("|#" + ",".join(self.normalize_tags(tags))) if tags else "", + ("|T" + str(timestamp)) if timestamp is not None else "", ) - def _report(self, metric, metric_type, value, tags): + def _report(self, metric, metric_type, value, tags, timestamp): if value is None: return - payload = self._serialize_metric(metric, metric_type, value, tags) + payload = self._serialize_metric(metric, metric_type, value, tags, timestamp) # Send it self._send_to_server(payload) diff --git a/datadog_lambda/fips.py b/datadog_lambda/fips.py new file mode 100644 index 00000000..8442ddd9 --- /dev/null +++ b/datadog_lambda/fips.py @@ -0,0 +1,19 @@ +import logging +import os + +is_gov_region = os.environ.get("AWS_REGION", "").startswith("us-gov-") + +fips_mode_enabled = ( + os.environ.get( + "DD_LAMBDA_FIPS_MODE", + "true" if is_gov_region else "false", + ).lower() + == "true" +) + +if is_gov_region or fips_mode_enabled: + logger = logging.getLogger(__name__) + logger.debug( + "Python Lambda Layer FIPS mode is %s.", + "enabled" if fips_mode_enabled else "not enabled", + ) diff --git a/datadog_lambda/metric.py b/datadog_lambda/metric.py index f9c67a26..0c18b517 100644 --- a/datadog_lambda/metric.py +++ b/datadog_lambda/metric.py @@ -3,37 +3,66 @@ # This product includes software developed at Datadog (https://www.datadoghq.com/). # Copyright 2019 Datadog, Inc. +import enum +import logging import os import time -import logging -import ujson as json from datetime import datetime, timedelta +import ujson as json + from datadog_lambda.extension import should_use_extension -from datadog_lambda.tags import get_enhanced_metrics_tags, dd_lambda_layer_tag +from datadog_lambda.fips import fips_mode_enabled +from datadog_lambda.tags import dd_lambda_layer_tag, get_enhanced_metrics_tags logger = logging.getLogger(__name__) -lambda_stats = None -extension_thread_stats = None -flush_in_thread = os.environ.get("DD_FLUSH_IN_THREAD", "").lower() == "true" +class MetricsHandler(enum.Enum): + EXTENSION = "extension" + FORWARDER = "forwarder" + DATADOG_API = "datadog_api" + NO_METRICS = "no_metrics" + -if should_use_extension: +def _select_metrics_handler(): + if should_use_extension: + return MetricsHandler.EXTENSION + if os.environ.get("DD_FLUSH_TO_LOG", "").lower() == "true": + return MetricsHandler.FORWARDER + + if fips_mode_enabled: + logger.debug( + "With FIPS mode enabled, the Datadog API metrics handler is unavailable." + ) + return MetricsHandler.NO_METRICS + + return MetricsHandler.DATADOG_API + + +metrics_handler = _select_metrics_handler() +logger.debug("identified primary metrics handler as %s", metrics_handler) + + +lambda_stats = None +if metrics_handler == MetricsHandler.EXTENSION: from datadog_lambda.statsd_writer import StatsDWriter lambda_stats = StatsDWriter() -else: + +elif metrics_handler == MetricsHandler.DATADOG_API: # Periodical flushing in a background thread is NOT guaranteed to succeed # and leads to data loss. When disabled, metrics are only flushed at the # end of invocation. To make metrics submitted from a long-running Lambda # function available sooner, consider using the Datadog Lambda extension. - from datadog_lambda.thread_stats_writer import ThreadStatsWriter from datadog_lambda.api import init_api + from datadog_lambda.thread_stats_writer import ThreadStatsWriter + flush_in_thread = os.environ.get("DD_FLUSH_IN_THREAD", "").lower() == "true" init_api() lambda_stats = ThreadStatsWriter(flush_in_thread) + enhanced_metrics_enabled = ( os.environ.get("DD_ENHANCED_METRICS", "true").lower() == "true" ) @@ -44,16 +73,19 @@ def lambda_metric(metric_name, value, timestamp=None, tags=None, force_async=Fal Submit a data point to Datadog distribution metrics. https://docs.datadoghq.com/graphing/metrics/distributions/ - When DD_FLUSH_TO_LOG is True, write metric to log, and - wait for the Datadog Log Forwarder Lambda function to submit - the metrics asynchronously. + If the Datadog Lambda Extension is present, metrics are submitted to its + dogstatsd endpoint. + + When DD_FLUSH_TO_LOG is True or force_async is True, write metric to log, + and wait for the Datadog Log Forwarder Lambda function to submit the + metrics asynchronously. Otherwise, the metrics will be submitted to the Datadog API periodically and at the end of the function execution in a background thread. - Note that if the extension is present, it will override the DD_FLUSH_TO_LOG value - and always use the layer to send metrics to the extension + Note that if the extension is present, it will override the DD_FLUSH_TO_LOG + value and always use the layer to send metrics to the extension """ if not metric_name or not isinstance(metric_name, str): logger.warning( @@ -71,56 +103,54 @@ def lambda_metric(metric_name, value, timestamp=None, tags=None, force_async=Fal ) return - flush_to_logs = os.environ.get("DD_FLUSH_TO_LOG", "").lower() == "true" tags = [] if tags is None else list(tags) tags.append(dd_lambda_layer_tag) - if should_use_extension and timestamp is not None: - # The extension does not support timestamps for distributions so we create a - # a thread stats writer to submit metrics with timestamps to the API - timestamp_ceiling = int( - (datetime.now() - timedelta(hours=4)).timestamp() - ) # 4 hours ago - if isinstance(timestamp, datetime): - timestamp = int(timestamp.timestamp()) - if timestamp_ceiling > timestamp: - logger.warning( - "Timestamp %s is older than 4 hours, not submitting metric %s", - timestamp, - metric_name, - ) - return - global extension_thread_stats - if extension_thread_stats is None: - from datadog_lambda.thread_stats_writer import ThreadStatsWriter - from datadog_lambda.api import init_api - - init_api() - extension_thread_stats = ThreadStatsWriter(flush_in_thread) - - extension_thread_stats.distribution( - metric_name, value, tags=tags, timestamp=timestamp - ) - return + if metrics_handler == MetricsHandler.EXTENSION: + if timestamp is not None: + if isinstance(timestamp, datetime): + timestamp = int(timestamp.timestamp()) + + timestamp_floor = int((datetime.now() - timedelta(hours=4)).timestamp()) + if timestamp < timestamp_floor: + logger.warning( + "Timestamp %s is older than 4 hours, not submitting metric %s", + timestamp, + metric_name, + ) + return - if should_use_extension: logger.debug( "Sending metric %s value %s to Datadog via extension", metric_name, value ) lambda_stats.distribution(metric_name, value, tags=tags, timestamp=timestamp) + + elif force_async or (metrics_handler == MetricsHandler.FORWARDER): + write_metric_point_to_stdout(metric_name, value, timestamp=timestamp, tags=tags) + + elif metrics_handler == MetricsHandler.DATADOG_API: + lambda_stats.distribution(metric_name, value, tags=tags, timestamp=timestamp) + + elif metrics_handler == MetricsHandler.NO_METRICS: + logger.debug( + "Metric %s cannot be submitted because the metrics handler is disabled", + metric_name, + ), + else: - if flush_to_logs or force_async: - write_metric_point_to_stdout( - metric_name, value, timestamp=timestamp, tags=tags - ) - else: - lambda_stats.distribution( - metric_name, value, tags=tags, timestamp=timestamp - ) + # This should be qutie impossible, but let's at least log a message if + # it somehow happens. + logger.debug( + "Metric %s cannot be submitted because the metrics handler is not configured: %s", + metric_name, + metrics_handler, + ) -def write_metric_point_to_stdout(metric_name, value, timestamp=None, tags=[]): +def write_metric_point_to_stdout(metric_name, value, timestamp=None, tags=None): """Writes the specified metric point to standard output""" + tags = tags or [] + logger.debug( "Sending metric %s value %s to Datadog via log forwarder", metric_name, value ) @@ -138,19 +168,8 @@ def write_metric_point_to_stdout(metric_name, value, timestamp=None, tags=[]): def flush_stats(lambda_context=None): - lambda_stats.flush() - - if extension_thread_stats is not None: - tags = None - if lambda_context is not None: - tags = get_enhanced_metrics_tags(lambda_context) - split_arn = lambda_context.invoked_function_arn.split(":") - if len(split_arn) > 7: - # Get rid of the alias - split_arn.pop() - arn = ":".join(split_arn) - tags.append("function_arn:" + arn) - extension_thread_stats.flush(tags) + if lambda_stats is not None: + lambda_stats.flush() def submit_enhanced_metric(metric_name, lambda_context): diff --git a/datadog_lambda/stats_writer.py b/datadog_lambda/stats_writer.py index d3919c30..563b1ae9 100644 --- a/datadog_lambda/stats_writer.py +++ b/datadog_lambda/stats_writer.py @@ -1,5 +1,5 @@ class StatsWriter: - def distribution(self, metric_name, value, tags=[], timestamp=None): + def distribution(self, metric_name, value, tags=None, timestamp=None): raise NotImplementedError() def flush(self): diff --git a/datadog_lambda/statsd_writer.py b/datadog_lambda/statsd_writer.py index 33843dc6..4aaab8d5 100644 --- a/datadog_lambda/statsd_writer.py +++ b/datadog_lambda/statsd_writer.py @@ -1,5 +1,5 @@ -from datadog_lambda.stats_writer import StatsWriter from datadog_lambda.dogstatsd import statsd +from datadog_lambda.stats_writer import StatsWriter class StatsDWriter(StatsWriter): @@ -7,8 +7,8 @@ class StatsDWriter(StatsWriter): Writes distribution metrics using StatsD protocol """ - def distribution(self, metric_name, value, tags=[], timestamp=None): - statsd.distribution(metric_name, value, tags=tags) + def distribution(self, metric_name, value, tags=None, timestamp=None): + statsd.distribution(metric_name, value, tags=tags, timestamp=timestamp) def flush(self): pass diff --git a/datadog_lambda/thread_stats_writer.py b/datadog_lambda/thread_stats_writer.py index 422a9a0a..f21ee31f 100644 --- a/datadog_lambda/thread_stats_writer.py +++ b/datadog_lambda/thread_stats_writer.py @@ -3,6 +3,7 @@ # Make sure that this package would always be lazy-loaded/outside from the critical path # since underlying packages are quite heavy to load and useless when the extension is present from datadog.threadstats import ThreadStats + from datadog_lambda.stats_writer import StatsWriter logger = logging.getLogger(__name__) @@ -17,7 +18,7 @@ def __init__(self, flush_in_thread): self.thread_stats = ThreadStats(compress_payload=True) self.thread_stats.start(flush_in_thread=flush_in_thread) - def distribution(self, metric_name, value, tags=[], timestamp=None): + def distribution(self, metric_name, value, tags=None, timestamp=None): self.thread_stats.distribution( metric_name, value, tags=tags, timestamp=timestamp ) diff --git a/tests/test_api.py b/tests/test_api.py index c98d91eb..59ee4ee8 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -1,6 +1,6 @@ import os import unittest -from unittest.mock import patch, MagicMock +from unittest.mock import MagicMock, patch import datadog_lambda.api as api @@ -22,6 +22,7 @@ def setUp(self): ) self.env_patcher.start() + @patch("datadog_lambda.api.fips_mode_enabled", True) @patch("botocore.session.Session.create_client") def test_secrets_manager_fips_endpoint(self, mock_boto3_client): mock_client = MagicMock() @@ -62,6 +63,28 @@ def test_secrets_manager_different_region(self, mock_boto3_client): ) self.assertEqual(api_key, "test-api-key") + @patch("datadog_lambda.api.fips_mode_enabled", True) + @patch("botocore.session.Session.create_client") + def test_secrets_manager_different_region_but_still_fips(self, mock_boto3_client): + mock_client = MagicMock() + mock_client.get_secret_value.return_value = {"SecretString": "test-api-key"} + mock_boto3_client.return_value = mock_client + + os.environ["AWS_REGION"] = "us-east-1" + os.environ[ + "DD_API_KEY_SECRET_ARN" + ] = "arn:aws:secretsmanager:us-west-1:1234567890:secret:key-name-123ABC" + + api_key = api.get_api_key() + + mock_boto3_client.assert_called_with( + "secretsmanager", + endpoint_url="https://secretsmanager-fips.us-west-1.amazonaws.com/", + region_name="us-west-1", + ) + self.assertEqual(api_key, "test-api-key") + + @patch("datadog_lambda.api.fips_mode_enabled", True) @patch("botocore.session.Session.create_client") def test_ssm_fips_endpoint(self, mock_boto3_client): mock_client = MagicMock() @@ -80,6 +103,7 @@ def test_ssm_fips_endpoint(self, mock_boto3_client): ) self.assertEqual(api_key, "test-api-key") + @patch("datadog_lambda.api.fips_mode_enabled", True) @patch("botocore.session.Session.create_client") @patch("datadog_lambda.api.decrypt_kms_api_key") def test_kms_fips_endpoint(self, mock_decrypt_kms, mock_boto3_client): diff --git a/tests/test_dogstatsd.py b/tests/test_dogstatsd.py index 149e1a70..ea6afd48 100644 --- a/tests/test_dogstatsd.py +++ b/tests/test_dogstatsd.py @@ -1,5 +1,5 @@ -from collections import deque import unittest +from collections import deque from datadog_lambda.dogstatsd import statsd @@ -36,16 +36,20 @@ def test_init(self): self.assertEqual(statsd.port, 8125) self.assertEqual(statsd.encoding, "utf-8") - def test_distribution_no_tags(self): - statsd.distribution("my.test.metric", 3) + def _checkOnlyOneMetric(self, value): payload = self.recv() metrics = payload.split("\n") self.assertEqual(len(metrics), 1) - self.assertEqual("my.test.metric:3|d", metrics[0]) + self.assertEqual(value, metrics[0]) + + def test_distribution_no_tags(self): + statsd.distribution("my.test.metric", 3) + self._checkOnlyOneMetric("my.test.metric:3|d") def test_distribution_with_tags(self): statsd.distribution("my.test.tags.metric", 3, tags=["taga:valuea,tagb:valueb"]) - payload = self.recv() - metrics = payload.split("\n") - self.assertEqual(len(metrics), 1) - self.assertEqual("my.test.tags.metric:3|d|#taga:valuea_tagb:valueb", metrics[0]) + self._checkOnlyOneMetric("my.test.tags.metric:3|d|#taga:valuea_tagb:valueb") + + def test_distribution_with_timestamp(self): + statsd.distribution("my.test.timestamp.metric", 9, timestamp=123456789) + self._checkOnlyOneMetric("my.test.timestamp.metric:9|d|T123456789") diff --git a/tests/test_metric.py b/tests/test_metric.py index d10a0f0d..a4b0be2c 100644 --- a/tests/test_metric.py +++ b/tests/test_metric.py @@ -1,23 +1,33 @@ import os import unittest - -from unittest.mock import patch, call +from datetime import datetime, timedelta +from unittest.mock import call, patch from botocore.exceptions import ClientError as BotocoreClientError from datadog.api.exceptions import ClientError -from datetime import datetime, timedelta -from datadog_lambda.metric import lambda_metric, flush_stats -from datadog_lambda.api import decrypt_kms_api_key, KMS_ENCRYPTION_CONTEXT_KEY -from datadog_lambda.thread_stats_writer import ThreadStatsWriter +from datadog_lambda.api import KMS_ENCRYPTION_CONTEXT_KEY, decrypt_kms_api_key +from datadog_lambda.metric import ( + MetricsHandler, + _select_metrics_handler, + flush_stats, + lambda_metric, +) from datadog_lambda.tags import dd_lambda_layer_tag +from datadog_lambda.thread_stats_writer import ThreadStatsWriter class TestLambdaMetric(unittest.TestCase): def setUp(self): - patcher = patch("datadog_lambda.metric.lambda_stats") - self.mock_metric_lambda_stats = patcher.start() - self.addCleanup(patcher.stop) + lambda_stats_patcher = patch("datadog_lambda.metric.lambda_stats") + self.mock_metric_lambda_stats = lambda_stats_patcher.start() + self.addCleanup(lambda_stats_patcher.stop) + + stdout_metric_patcher = patch( + "datadog_lambda.metric.write_metric_point_to_stdout" + ) + self.mock_write_metric_point_to_stdout = stdout_metric_patcher.start() + self.addCleanup(stdout_metric_patcher.stop) def test_lambda_metric_tagged_with_dd_lambda_layer(self): lambda_metric("test", 1) @@ -35,67 +45,94 @@ def test_lambda_metric_tagged_with_dd_lambda_layer(self): # let's fake that the extension is present, this should override DD_FLUSH_TO_LOG @patch("datadog_lambda.metric.should_use_extension", True) - def test_lambda_metric_flush_to_log_with_extension(self): + def test_select_metrics_handler_extension_despite_flush_to_logs(self): + os.environ["DD_FLUSH_TO_LOG"] = "True" + self.assertEqual(MetricsHandler.EXTENSION, _select_metrics_handler()) + del os.environ["DD_FLUSH_TO_LOG"] + + @patch("datadog_lambda.metric.should_use_extension", False) + def test_select_metrics_handler_forwarder_when_flush_to_logs(self): os.environ["DD_FLUSH_TO_LOG"] = "True" + self.assertEqual(MetricsHandler.FORWARDER, _select_metrics_handler()) + del os.environ["DD_FLUSH_TO_LOG"] + + @patch("datadog_lambda.metric.should_use_extension", False) + def test_select_metrics_handler_dd_api_fallback(self): + os.environ["DD_FLUSH_TO_LOG"] = "False" + self.assertEqual(MetricsHandler.DATADOG_API, _select_metrics_handler()) + del os.environ["DD_FLUSH_TO_LOG"] + + @patch("datadog_lambda.metric.fips_mode_enabled", True) + @patch("datadog_lambda.metric.should_use_extension", False) + def test_select_metrics_handler_has_no_fallback_in_fips_mode(self): + os.environ["DD_FLUSH_TO_LOG"] = "False" + self.assertEqual(MetricsHandler.NO_METRICS, _select_metrics_handler()) + del os.environ["DD_FLUSH_TO_LOG"] + + @patch("datadog_lambda.metric.metrics_handler", MetricsHandler.EXTENSION) + def test_lambda_metric_goes_to_extension_with_extension_handler(self): lambda_metric("test", 1) self.mock_metric_lambda_stats.distribution.assert_has_calls( [call("test", 1, timestamp=None, tags=[dd_lambda_layer_tag])] ) - del os.environ["DD_FLUSH_TO_LOG"] - @patch("datadog_lambda.metric.should_use_extension", True) - def test_lambda_metric_timestamp_with_extension(self): - patcher = patch("datadog_lambda.metric.extension_thread_stats") - self.mock_metric_extension_thread_stats = patcher.start() - self.addCleanup(patcher.stop) + @patch("datadog_lambda.metric.metrics_handler", MetricsHandler.NO_METRICS) + def test_lambda_metric_has_nowhere_to_go_with_no_metrics_handler(self): + lambda_metric("test", 1) + self.mock_metric_lambda_stats.distribution.assert_not_called() + self.mock_write_metric_point_to_stdout.assert_not_called() + @patch("datadog_lambda.metric.metrics_handler", MetricsHandler.EXTENSION) + def test_lambda_metric_timestamp_with_extension(self): delta = timedelta(minutes=1) timestamp = int((datetime.now() - delta).timestamp()) lambda_metric("test_timestamp", 1, timestamp) - self.mock_metric_lambda_stats.distribution.assert_not_called() - self.mock_metric_extension_thread_stats.distribution.assert_called_with( - "test_timestamp", 1, timestamp=timestamp, tags=[dd_lambda_layer_tag] + self.mock_metric_lambda_stats.distribution.assert_has_calls( + [call("test_timestamp", 1, timestamp=timestamp, tags=[dd_lambda_layer_tag])] ) + self.mock_write_metric_point_to_stdout.assert_not_called() - @patch("datadog_lambda.metric.should_use_extension", True) + @patch("datadog_lambda.metric.metrics_handler", MetricsHandler.EXTENSION) def test_lambda_metric_datetime_with_extension(self): - patcher = patch("datadog_lambda.metric.extension_thread_stats") - self.mock_metric_extension_thread_stats = patcher.start() - self.addCleanup(patcher.stop) - - delta = timedelta(hours=5) + delta = timedelta(minutes=1) timestamp = datetime.now() - delta - lambda_metric("test_timestamp", 1, timestamp) - self.mock_metric_lambda_stats.distribution.assert_not_called() - self.mock_metric_extension_thread_stats.distribution.assert_not_called() + lambda_metric("test_datetime_timestamp", 0, timestamp) + self.mock_metric_lambda_stats.distribution.assert_has_calls( + [ + call( + "test_datetime_timestamp", + 0, + timestamp=int(timestamp.timestamp()), + tags=[dd_lambda_layer_tag], + ) + ] + ) + self.mock_write_metric_point_to_stdout.assert_not_called() - @patch("datadog_lambda.metric.should_use_extension", True) + @patch("datadog_lambda.metric.metrics_handler", MetricsHandler.EXTENSION) def test_lambda_metric_invalid_timestamp_with_extension(self): - patcher = patch("datadog_lambda.metric.extension_thread_stats") - self.mock_metric_extension_thread_stats = patcher.start() - self.addCleanup(patcher.stop) - delta = timedelta(hours=5) timestamp = int((datetime.now() - delta).timestamp()) lambda_metric("test_timestamp", 1, timestamp) self.mock_metric_lambda_stats.distribution.assert_not_called() - self.mock_metric_extension_thread_stats.distribution.assert_not_called() + self.mock_write_metric_point_to_stdout.assert_not_called() + @patch("datadog_lambda.metric.metrics_handler", MetricsHandler.FORWARDER) def test_lambda_metric_flush_to_log(self): - os.environ["DD_FLUSH_TO_LOG"] = "True" - lambda_metric("test", 1) self.mock_metric_lambda_stats.distribution.assert_not_called() - - del os.environ["DD_FLUSH_TO_LOG"] + self.mock_write_metric_point_to_stdout.assert_has_calls( + [call("test", 1, timestamp=None, tags=[dd_lambda_layer_tag])] + ) @patch("datadog_lambda.metric.logger.warning") def test_lambda_metric_invalid_metric_name_none(self, mock_logger_warning): lambda_metric(None, 1) self.mock_metric_lambda_stats.distribution.assert_not_called() + self.mock_write_metric_point_to_stdout.assert_not_called() mock_logger_warning.assert_called_once_with( "Ignoring metric submission. Invalid metric name: %s", None ) @@ -104,6 +141,7 @@ def test_lambda_metric_invalid_metric_name_none(self, mock_logger_warning): def test_lambda_metric_invalid_metric_name_not_string(self, mock_logger_warning): lambda_metric(123, 1) self.mock_metric_lambda_stats.distribution.assert_not_called() + self.mock_write_metric_point_to_stdout.assert_not_called() mock_logger_warning.assert_called_once_with( "Ignoring metric submission. Invalid metric name: %s", 123 ) @@ -112,6 +150,7 @@ def test_lambda_metric_invalid_metric_name_not_string(self, mock_logger_warning) def test_lambda_metric_non_numeric_value(self, mock_logger_warning): lambda_metric("test.non_numeric", "oops") self.mock_metric_lambda_stats.distribution.assert_not_called() + self.mock_write_metric_point_to_stdout.assert_not_called() mock_logger_warning.assert_called_once_with( "Ignoring metric submission for metric '%s' because the value is not numeric: %r", "test.non_numeric", @@ -127,10 +166,6 @@ def setUp(self): self.mock_threadstats_flush_distributions = patcher.start() self.addCleanup(patcher.stop) - patcher = patch("datadog_lambda.metric.extension_thread_stats") - self.mock_extension_thread_stats = patcher.start() - self.addCleanup(patcher.stop) - def test_retry_on_remote_disconnected(self): # Raise the RemoteDisconnected error lambda_stats = ThreadStatsWriter(True) @@ -209,10 +244,6 @@ def test_flush_temp_constant_tags(self): lambda_stats.thread_stats.constant_tags, original_constant_tags ) - def test_flush_stats_without_context(self): - flush_stats(lambda_context=None) - self.mock_extension_thread_stats.flush.assert_called_with(None) - MOCK_FUNCTION_NAME = "myFunction" From 8a01794b02244efab5814f52e442aacf71682aac Mon Sep 17 00:00:00 2001 From: Aleksandr Pasechnik Date: Wed, 7 May 2025 16:45:13 -0400 Subject: [PATCH 210/268] 6.108.0 Release Candidate (#589) --- datadog_lambda/version.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index 702691d8..bcd37def 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "6.107.0" +__version__ = "6.108.0" diff --git a/pyproject.toml b/pyproject.toml index 165a8cbe..8f16b438 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "6.107.0" +version = "6.108.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 8ca58b40dcfa8ad4c2169a27ddca27b19c7fb348 Mon Sep 17 00:00:00 2001 From: Aleksandr Pasechnik Date: Thu, 8 May 2025 11:19:03 -0400 Subject: [PATCH 211/268] fix: timestamps we send to the extension should be integers (#590) Also added some defense in depth for our lower level statsd call. --- datadog_lambda/dogstatsd.py | 2 +- datadog_lambda/metric.py | 12 ++++++++++++ tests/test_dogstatsd.py | 4 ++++ tests/test_metric.py | 28 ++++++++++++++++++++++++++++ 4 files changed, 45 insertions(+), 1 deletion(-) diff --git a/datadog_lambda/dogstatsd.py b/datadog_lambda/dogstatsd.py index f30a2039..a08e2592 100644 --- a/datadog_lambda/dogstatsd.py +++ b/datadog_lambda/dogstatsd.py @@ -97,7 +97,7 @@ def _serialize_metric(self, metric, metric_type, value, tags, timestamp): value, metric_type, ("|#" + ",".join(self.normalize_tags(tags))) if tags else "", - ("|T" + str(timestamp)) if timestamp is not None else "", + ("|T" + str(int(timestamp))) if timestamp is not None else "", ) def _report(self, metric, metric_type, value, tags, timestamp): diff --git a/datadog_lambda/metric.py b/datadog_lambda/metric.py index 0c18b517..c9b978d6 100644 --- a/datadog_lambda/metric.py +++ b/datadog_lambda/metric.py @@ -111,6 +111,18 @@ def lambda_metric(metric_name, value, timestamp=None, tags=None, force_async=Fal if isinstance(timestamp, datetime): timestamp = int(timestamp.timestamp()) + else: + try: + timestamp = int(timestamp) + except Exception: + logger.debug( + "Ignoring metric submission for metric '%s' because the timestamp cannot " + "be turned into an integer: %r", + metric_name, + timestamp, + ) + return + timestamp_floor = int((datetime.now() - timedelta(hours=4)).timestamp()) if timestamp < timestamp_floor: logger.warning( diff --git a/tests/test_dogstatsd.py b/tests/test_dogstatsd.py index ea6afd48..6fe79372 100644 --- a/tests/test_dogstatsd.py +++ b/tests/test_dogstatsd.py @@ -53,3 +53,7 @@ def test_distribution_with_tags(self): def test_distribution_with_timestamp(self): statsd.distribution("my.test.timestamp.metric", 9, timestamp=123456789) self._checkOnlyOneMetric("my.test.timestamp.metric:9|d|T123456789") + + def test_distribution_with_float_timestamp(self): + statsd.distribution("my.test.timestamp.metric", 9, timestamp=123456789.123) + self._checkOnlyOneMetric("my.test.timestamp.metric:9|d|T123456789") diff --git a/tests/test_metric.py b/tests/test_metric.py index a4b0be2c..e7dab2c3 100644 --- a/tests/test_metric.py +++ b/tests/test_metric.py @@ -111,6 +111,34 @@ def test_lambda_metric_datetime_with_extension(self): ) self.mock_write_metric_point_to_stdout.assert_not_called() + @patch("datadog_lambda.metric.metrics_handler", MetricsHandler.EXTENSION) + def test_lambda_metric_float_with_extension(self): + delta = timedelta(minutes=1) + timestamp_float = (datetime.now() - delta).timestamp() + timestamp_int = int(timestamp_float) + + lambda_metric("test_timestamp", 1, timestamp_float) + self.mock_metric_lambda_stats.distribution.assert_has_calls( + [ + call( + "test_timestamp", + 1, + timestamp=timestamp_int, + tags=[dd_lambda_layer_tag], + ) + ] + ) + self.mock_write_metric_point_to_stdout.assert_not_called() + + @patch("datadog_lambda.metric.metrics_handler", MetricsHandler.EXTENSION) + def test_lambda_metric_timestamp_junk_with_extension(self): + delta = timedelta(minutes=1) + timestamp = (datetime.now() - delta).isoformat() + + lambda_metric("test_timestamp", 1, timestamp) + self.mock_metric_lambda_stats.distribution.assert_not_called() + self.mock_write_metric_point_to_stdout.assert_not_called() + @patch("datadog_lambda.metric.metrics_handler", MetricsHandler.EXTENSION) def test_lambda_metric_invalid_timestamp_with_extension(self): delta = timedelta(hours=5) From 1226b2de560afc6a8fe3e631ad84960b5dd03eef Mon Sep 17 00:00:00 2001 From: Aleksandr Pasechnik Date: Fri, 9 May 2025 12:46:04 -0400 Subject: [PATCH 212/268] v6.109.0 (#591) --- datadog_lambda/version.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index bcd37def..c3aaa6b7 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "6.108.0" +__version__ = "6.109.0" diff --git a/pyproject.toml b/pyproject.toml index 8f16b438..cccef63e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "6.108.0" +version = "6.109.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 16774731b8050e3355d24ffe6d917c656cf0c09f Mon Sep 17 00:00:00 2001 From: Nicholas Hulston Date: Fri, 9 May 2025 13:21:33 -0400 Subject: [PATCH 213/268] (feat): Enable Exception Replay in Lambda (#592) * import exception replay from tracer and enable if `DD_EXCEPTION_REPLAY_ENABLED=true` * lint --- datadog_lambda/wrapper.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index e81b1baa..e5460118 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -53,6 +53,12 @@ if llmobs_env_var: from ddtrace.llmobs import LLMObs +exception_replay_env_var = os.environ.get( + "DD_EXCEPTION_REPLAY_ENABLED", "false" +).lower() in ("true", "1") +if exception_replay_env_var: + from ddtrace.debugging._exception.replay import SpanExceptionHandler + logger = logging.getLogger(__name__) DD_FLUSH_TO_LOG = "DD_FLUSH_TO_LOG" @@ -224,6 +230,11 @@ def __init__(self, func): if llmobs_env_var: LLMObs.enable() + # Enable Exception Replay + if exception_replay_env_var: + logger.debug("Enabling exception replay") + SpanExceptionHandler.enable() + logger.debug("datadog_lambda_wrapper initialized") except Exception as e: logger.error(format_err_with_traceback(e)) From 9b694f7e25c58e9cbffb97392145c6962747fa87 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Tue, 13 May 2025 12:47:49 -0400 Subject: [PATCH 214/268] fix: safely getting all the values for trigger tags (#593) * solution2: safely getting all the values * lint * add comment back --- datadog_lambda/trigger.py | 45 +++++++++++++++++++++------ tests/test_trigger.py | 65 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 100 insertions(+), 10 deletions(-) diff --git a/datadog_lambda/trigger.py b/datadog_lambda/trigger.py index 8090e36e..52978d4b 100644 --- a/datadog_lambda/trigger.py +++ b/datadog_lambda/trigger.py @@ -114,10 +114,14 @@ def parse_event_source(event: dict) -> _EventSource: event_source = None - request_context = event.get("requestContext") + # Get requestContext safely and ensure it's a dictionary + request_context = event.get("requestContext", {}) + if not isinstance(request_context, dict): + request_context = {} + if request_context and request_context.get("stage"): if "domainName" in request_context and detect_lambda_function_url_domain( - request_context.get("domainName") + request_context.get("domainName", "") ): return _EventSource(EventTypes.LAMBDA_FUNCTION_URL) event_source = _EventSource(EventTypes.API_GATEWAY) @@ -171,6 +175,8 @@ def parse_event_source(event: dict) -> _EventSource: def detect_lambda_function_url_domain(domain: str) -> bool: # e.g. "etsn5fibjr.lambda-url.eu-south-1.amazonaws.com" + if not isinstance(domain, str): + return False domain_parts = domain.split(".") if len(domain_parts) < 2: return False @@ -283,17 +289,28 @@ def extract_http_tags(event): Extracts HTTP facet tags from the triggering event """ http_tags = {} - request_context = event.get("requestContext") + + # Safely get request_context and ensure it's a dictionary + request_context = event.get("requestContext", {}) + if not isinstance(request_context, dict): + request_context = {} + path = event.get("path") method = event.get("httpMethod") + if request_context and request_context.get("stage"): - if request_context.get("domainName"): - http_tags["http.url"] = request_context.get("domainName") + domain_name = request_context.get("domainName") + if domain_name: + http_tags["http.url"] = domain_name path = request_context.get("path") method = request_context.get("httpMethod") + # Version 2.0 HTTP API Gateway - apigateway_v2_http = request_context.get("http") + apigateway_v2_http = request_context.get("http", {}) + if not isinstance(apigateway_v2_http, dict): + apigateway_v2_http = {} + if event.get("version") == "2.0" and apigateway_v2_http: path = apigateway_v2_http.get("path") method = apigateway_v2_http.get("method") @@ -303,15 +320,23 @@ def extract_http_tags(event): if method: http_tags["http.method"] = method - headers = event.get("headers") + # Safely get headers + headers = event.get("headers", {}) + if not isinstance(headers, dict): + headers = {} + if headers and headers.get("Referer"): http_tags["http.referer"] = headers.get("Referer") # Try to get `routeKey` from API GW v2; otherwise try to get `resource` from API GW v1 route = event.get("routeKey") or event.get("resource") - if route: - # "GET /my/endpoint" = > "/my/endpoint" - http_tags["http.route"] = route.split(" ")[-1] + if route and isinstance(route, str): + try: + # "GET /my/endpoint" = > "/my/endpoint" + http_tags["http.route"] = route.split(" ")[-1] + except Exception: + # If splitting fails, use the route as is + http_tags["http.route"] = route return http_tags diff --git a/tests/test_trigger.py b/tests/test_trigger.py index 9cb088f1..b4da7ff0 100644 --- a/tests/test_trigger.py +++ b/tests/test_trigger.py @@ -256,6 +256,30 @@ def test_event_source_unsupported(self): self.assertEqual(event_source.to_string(), "unknown") self.assertEqual(event_source_arn, None) + def test_event_source_with_non_dict_request_context(self): + # Test with requestContext as a string instead of a dict + event = {"requestContext": "not_a_dict"} + event_source = parse_event_source(event) + # Should still return a valid event source (unknown in this case) + self.assertEqual(event_source.to_string(), "unknown") + + def test_event_source_with_invalid_domain_name(self): + # Test with domainName that isn't a string + event = {"requestContext": {"stage": "prod", "domainName": 12345}} + event_source = parse_event_source(event) + # Should detect as API Gateway since stage is present + self.assertEqual(event_source.to_string(), "api-gateway") + + def test_detect_lambda_function_url_domain_with_invalid_input(self): + from datadog_lambda.trigger import detect_lambda_function_url_domain + + # Test with non-string input + self.assertFalse(detect_lambda_function_url_domain(None)) + self.assertFalse(detect_lambda_function_url_domain(12345)) + self.assertFalse(detect_lambda_function_url_domain({"not": "a-string"})) + # Test with string that would normally cause an exception when split + self.assertFalse(detect_lambda_function_url_domain("")) + class GetTriggerTags(unittest.TestCase): def test_extract_trigger_tags_api_gateway(self): @@ -530,6 +554,47 @@ def test_extract_trigger_tags_list_type_event(self): tags = extract_trigger_tags(event, ctx) self.assertEqual(tags, {}) + def test_extract_http_tags_with_invalid_request_context(self): + from datadog_lambda.trigger import extract_http_tags + + # Test with requestContext as a string instead of a dict + event = {"requestContext": "not_a_dict", "path": "/test", "httpMethod": "GET"} + http_tags = extract_http_tags(event) + # Should still extract valid tags from the event + self.assertEqual( + http_tags, {"http.url_details.path": "/test", "http.method": "GET"} + ) + + def test_extract_http_tags_with_invalid_apigateway_http(self): + from datadog_lambda.trigger import extract_http_tags + + # Test with http in requestContext that's not a dict + event = { + "requestContext": {"stage": "prod", "http": "not_a_dict"}, + "version": "2.0", + } + http_tags = extract_http_tags(event) + # Should not raise an exception + self.assertEqual(http_tags, {}) + + def test_extract_http_tags_with_invalid_headers(self): + from datadog_lambda.trigger import extract_http_tags + + # Test with headers that's not a dict + event = {"headers": "not_a_dict"} + http_tags = extract_http_tags(event) + # Should not raise an exception + self.assertEqual(http_tags, {}) + + def test_extract_http_tags_with_invalid_route(self): + from datadog_lambda.trigger import extract_http_tags + + # Test with routeKey that would cause a split error + event = {"routeKey": 12345} # Not a string + http_tags = extract_http_tags(event) + # Should not raise an exception + self.assertEqual(http_tags, {}) + class ExtractHTTPStatusCodeTag(unittest.TestCase): def test_extract_http_status_code_tag_from_response_dict(self): From b74068bbdb07be1e21b6ed34c73dd23c5a853f14 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Wed, 14 May 2025 22:27:42 -0400 Subject: [PATCH 215/268] perf: fewer memory allocation (#597) * fewer memory allocation * Update datadog_lambda/trigger.py * Update datadog_lambda/trigger.py --- datadog_lambda/trigger.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/datadog_lambda/trigger.py b/datadog_lambda/trigger.py index 52978d4b..a2708a59 100644 --- a/datadog_lambda/trigger.py +++ b/datadog_lambda/trigger.py @@ -115,9 +115,9 @@ def parse_event_source(event: dict) -> _EventSource: event_source = None # Get requestContext safely and ensure it's a dictionary - request_context = event.get("requestContext", {}) + request_context = event.get("requestContext") if not isinstance(request_context, dict): - request_context = {} + request_context = None if request_context and request_context.get("stage"): if "domainName" in request_context and detect_lambda_function_url_domain( @@ -291,9 +291,9 @@ def extract_http_tags(event): http_tags = {} # Safely get request_context and ensure it's a dictionary - request_context = event.get("requestContext", {}) + request_context = event.get("requestContext") if not isinstance(request_context, dict): - request_context = {} + request_context = None path = event.get("path") method = event.get("httpMethod") From 1d6d28f318b403358689afa5de79d689a655eb4a Mon Sep 17 00:00:00 2001 From: Nicholas Hulston Date: Thu, 15 May 2025 08:57:26 -0400 Subject: [PATCH 216/268] Add Exception Replay env var to README (#599) * update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 03cd846a..658babc2 100644 --- a/README.md +++ b/README.md @@ -29,6 +29,7 @@ Besides the environment variables supported by dd-trace-py, the datadog-lambda-p | DD_COLD_START_TRACE_SKIP_LIB | optionally skip creating Cold Start Spans for a comma-separated list of libraries. Useful to limit depth or skip known libraries. | `ddtrace.internal.compat,ddtrace.filters` | | DD_CAPTURE_LAMBDA_PAYLOAD | [Captures incoming and outgoing AWS Lambda payloads][1] in the Datadog APM spans for Lambda invocations. | `false` | | DD_CAPTURE_LAMBDA_PAYLOAD_MAX_DEPTH | Determines the level of detail captured from AWS Lambda payloads, which are then assigned as tags for the `aws.lambda` span. It specifies the nesting depth of the JSON payload structure to process. Once the specified maximum depth is reached, the tag's value is set to the stringified value of any nested elements beyond this level.
For example, given the input payload:
{
"lv1" : {
"lv2": {
"lv3": "val"
}
}
}
If the depth is set to `2`, the resulting tag's key is set to `function.request.lv1.lv2` and the value is `{\"lv3\": \"val\"}`.
If the depth is set to `0`, the resulting tag's key is set to `function.request` and value is `{\"lv1\":{\"lv2\":{\"lv3\": \"val\"}}}` | `10` | +| DD_EXCEPTION_REPLAY_ENABLED | When set to `true`, the Lambda will run with Error Tracking Exception Replay enabled, capturing local variables. | `false` | ## Opening Issues From 497aadc4dfb08f662559c18f8971da249be0dc62 Mon Sep 17 00:00:00 2001 From: Nicholas Hulston Date: Fri, 16 May 2025 14:22:28 -0400 Subject: [PATCH 217/268] fix flushing Exception Replay (#601) --- datadog_lambda/wrapper.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index e5460118..86bbf04d 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -58,6 +58,7 @@ ).lower() in ("true", "1") if exception_replay_env_var: from ddtrace.debugging._exception.replay import SpanExceptionHandler + from ddtrace.debugging._uploader import LogsIntakeUploaderV1 logger = logging.getLogger(__name__) @@ -405,6 +406,10 @@ def _after(self, event, context): if llmobs_env_var: LLMObs.flush() + # Flush exception replay + if exception_replay_env_var: + LogsIntakeUploaderV1._instance.periodic() + if self.encode_authorizer_context and is_authorizer_response(self.response): self._inject_authorizer_span_headers( event.get("requestContext", {}).get("requestId") From 676446cf4998caeefcbac011ab23bde4af954b1e Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Fri, 23 May 2025 11:16:17 +0200 Subject: [PATCH 218/268] v6.110.0 (#602) --- datadog_lambda/version.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index c3aaa6b7..9534f0c7 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "6.109.0" +__version__ = "6.110.0" diff --git a/pyproject.toml b/pyproject.toml index cccef63e..ba5bcb17 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "6.109.0" +version = "6.110.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 64f81daa97d589f1047d00000c31d85e24e4314d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?jordan=20gonz=C3=A1lez?= <30836115+duncanista@users.noreply.github.com> Date: Fri, 23 May 2025 16:15:23 +0200 Subject: [PATCH 219/268] fix: `http.url` tag to include protocol (#603) * update `http.url` in inferred spans * update `http.url` in trigger tags * fix `resource_names` update * update integration test --- datadog_lambda/tracing.py | 14 +++++--- datadog_lambda/trigger.py | 2 +- .../logs/async-metrics_python310.log | 12 +++---- .../logs/async-metrics_python311.log | 12 +++---- .../logs/async-metrics_python312.log | 12 +++---- .../logs/async-metrics_python313.log | 12 +++---- .../snapshots/logs/async-metrics_python38.log | 12 +++---- .../snapshots/logs/async-metrics_python39.log | 12 +++---- .../snapshots/logs/sync-metrics_python310.log | 12 +++---- .../snapshots/logs/sync-metrics_python311.log | 12 +++---- .../snapshots/logs/sync-metrics_python312.log | 12 +++---- .../snapshots/logs/sync-metrics_python313.log | 12 +++---- .../snapshots/logs/sync-metrics_python38.log | 12 +++---- .../snapshots/logs/sync-metrics_python39.log | 14 ++++---- tests/test_tracing.py | 36 +++++++++---------- tests/test_trigger.py | 12 +++---- tests/test_wrapper.py | 2 +- 17 files changed, 108 insertions(+), 104 deletions(-) diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 9a27673c..4b6f300a 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -850,13 +850,14 @@ def create_inferred_span_from_lambda_function_url_event(event, context): http = request_context.get("http") method = http.get("method") if http else None path = http.get("path") if http else None + http_url = f"https://{domain}{path}/" resource = f"{method} {path}" tags = { "operation_name": "aws.lambda.url", - "http.url": domain + path, + "http.url": http_url, "endpoint": path, "http.method": method, - "resource_names": domain + path, + "resource_names": resource, "request_id": context.aws_request_id, } request_time_epoch = request_context.get("timeEpoch") @@ -948,6 +949,7 @@ def create_inferred_span_from_api_gateway_websocket_event( request_context = event.get("requestContext") domain = request_context.get("domainName") endpoint = request_context.get("routeKey") + http_url = f"https://{domain}{endpoint}/" api_id = request_context.get("apiId") service_name = determine_service_name( @@ -955,7 +957,7 @@ def create_inferred_span_from_api_gateway_websocket_event( ) tags = { "operation_name": "aws.apigateway.websocket", - "http.url": domain + endpoint, + "http.url": http_url, "endpoint": endpoint, "resource_names": endpoint, "apiid": api_id, @@ -1007,11 +1009,12 @@ def create_inferred_span_from_api_gateway_event( ) method = event.get("httpMethod") path = event.get("path") + http_url = f"https://{domain}{path}/" resource_path = _get_resource_path(event, request_context) resource = f"{method} {resource_path}" tags = { "operation_name": "aws.apigateway.rest", - "http.url": domain + path, + "http.url": http_url, "endpoint": path, "http.method": method, "resource_names": resource, @@ -1073,12 +1076,13 @@ def create_inferred_span_from_http_api_event( http = request_context.get("http") or {} method = http.get("method") path = event.get("rawPath") + http_url = f"https://{domain}{path}/" resource_path = _get_resource_path(event, request_context) resource = f"{method} {resource_path}" tags = { "operation_name": "aws.httpapi", "endpoint": path, - "http.url": domain + path, + "http.url": http_url, "http.method": http.get("method"), "http.protocol": http.get("protocol"), "http.source_ip": http.get("sourceIp"), diff --git a/datadog_lambda/trigger.py b/datadog_lambda/trigger.py index a2708a59..14cb06ac 100644 --- a/datadog_lambda/trigger.py +++ b/datadog_lambda/trigger.py @@ -301,7 +301,7 @@ def extract_http_tags(event): if request_context and request_context.get("stage"): domain_name = request_context.get("domainName") if domain_name: - http_tags["http.url"] = domain_name + http_tags["http.url"] = f"https://{domain_name}/" path = request_context.get("path") method = request_context.get("httpMethod") diff --git a/tests/integration/snapshots/logs/async-metrics_python310.log b/tests/integration/snapshots/logs/async-metrics_python310.log index 24d3fb5b..0bd7237c 100644 --- a/tests/integration/snapshots/logs/async-metrics_python310.log +++ b/tests/integration/snapshots/logs/async-metrics_python310.log @@ -55,7 +55,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "runtime-id": "XXXX", "_dd.origin": "lambda", "operation_name": "aws.apigateway.rest", - "http.url": "XXXX.execute-api.us-east-2.amazonaws.com/", + "http.url": "https://xxxx.execute-api.us-east-2.amazonaws.com/", "endpoint": "/", "http.method": "GET", "resource_names": "GET /", @@ -103,7 +103,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", + "http.url": "https://xxxx.execute-api.us-east-2.amazonaws.com/", "http.url_details.path": "/Prod/", "http.method": "GET", "http.route": "/", @@ -594,7 +594,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.httpapi", "endpoint": "/httpapi/get", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.protocol": "HTTP/1.1", "http.source_ip": "XXXX", @@ -644,7 +644,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", "http.url_details.path": "/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", @@ -1436,7 +1436,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "runtime-id": "XXXX", "_dd.origin": "lambda", "operation_name": "aws.apigateway.websocket", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com$default", + "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com$default/", "endpoint": "$default", "resource_names": "$default", "apiid": "XXXX", @@ -1486,7 +1486,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", "http.status_code": "200", "_dd.base_service": "integration-tests-python" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python311.log b/tests/integration/snapshots/logs/async-metrics_python311.log index e4fa66bc..8550a062 100644 --- a/tests/integration/snapshots/logs/async-metrics_python311.log +++ b/tests/integration/snapshots/logs/async-metrics_python311.log @@ -55,7 +55,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "runtime-id": "XXXX", "_dd.origin": "lambda", "operation_name": "aws.apigateway.rest", - "http.url": "XXXX.execute-api.us-east-2.amazonaws.com/", + "http.url": "https://xxxx.execute-api.us-east-2.amazonaws.com/", "endpoint": "/", "http.method": "GET", "resource_names": "GET /", @@ -103,7 +103,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", + "http.url": "https://xxxx.execute-api.us-east-2.amazonaws.com/", "http.url_details.path": "/Prod/", "http.method": "GET", "http.route": "/", @@ -594,7 +594,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.httpapi", "endpoint": "/httpapi/get", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.protocol": "HTTP/1.1", "http.source_ip": "XXXX", @@ -644,7 +644,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", "http.url_details.path": "/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", @@ -1436,7 +1436,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "runtime-id": "XXXX", "_dd.origin": "lambda", "operation_name": "aws.apigateway.websocket", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com$default", + "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com$default/", "endpoint": "$default", "resource_names": "$default", "apiid": "XXXX", @@ -1486,7 +1486,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", "http.status_code": "200", "_dd.base_service": "integration-tests-python" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python312.log b/tests/integration/snapshots/logs/async-metrics_python312.log index 0d632c6c..57c318ab 100644 --- a/tests/integration/snapshots/logs/async-metrics_python312.log +++ b/tests/integration/snapshots/logs/async-metrics_python312.log @@ -55,7 +55,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "runtime-id": "XXXX", "_dd.origin": "lambda", "operation_name": "aws.apigateway.rest", - "http.url": "XXXX.execute-api.us-east-2.amazonaws.com/", + "http.url": "https://xxxx.execute-api.us-east-2.amazonaws.com/", "endpoint": "/", "http.method": "GET", "resource_names": "GET /", @@ -103,7 +103,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", + "http.url": "https://xxxx.execute-api.us-east-2.amazonaws.com/", "http.url_details.path": "/Prod/", "http.method": "GET", "http.route": "/", @@ -594,7 +594,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.httpapi", "endpoint": "/httpapi/get", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.protocol": "HTTP/1.1", "http.source_ip": "XXXX", @@ -644,7 +644,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", "http.url_details.path": "/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", @@ -1436,7 +1436,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "runtime-id": "XXXX", "_dd.origin": "lambda", "operation_name": "aws.apigateway.websocket", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com$default", + "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com$default/", "endpoint": "$default", "resource_names": "$default", "apiid": "XXXX", @@ -1486,7 +1486,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", "http.status_code": "200", "_dd.base_service": "integration-tests-python" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python313.log b/tests/integration/snapshots/logs/async-metrics_python313.log index 09070709..9204499b 100644 --- a/tests/integration/snapshots/logs/async-metrics_python313.log +++ b/tests/integration/snapshots/logs/async-metrics_python313.log @@ -55,7 +55,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "runtime-id": "XXXX", "_dd.origin": "lambda", "operation_name": "aws.apigateway.rest", - "http.url": "XXXX.execute-api.us-east-2.amazonaws.com/", + "http.url": "https://xxxx.execute-api.us-east-2.amazonaws.com/", "endpoint": "/", "http.method": "GET", "resource_names": "GET /", @@ -103,7 +103,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", + "http.url": "https://xxxx.execute-api.us-east-2.amazonaws.com/", "http.url_details.path": "/Prod/", "http.method": "GET", "http.route": "/", @@ -594,7 +594,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.httpapi", "endpoint": "/httpapi/get", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.protocol": "HTTP/1.1", "http.source_ip": "XXXX", @@ -644,7 +644,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", "http.url_details.path": "/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", @@ -1436,7 +1436,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "runtime-id": "XXXX", "_dd.origin": "lambda", "operation_name": "aws.apigateway.websocket", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com$default", + "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com$default/", "endpoint": "$default", "resource_names": "$default", "apiid": "XXXX", @@ -1486,7 +1486,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", "http.status_code": "200", "_dd.base_service": "integration-tests-python" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python38.log b/tests/integration/snapshots/logs/async-metrics_python38.log index 4a506930..e6df054c 100644 --- a/tests/integration/snapshots/logs/async-metrics_python38.log +++ b/tests/integration/snapshots/logs/async-metrics_python38.log @@ -55,7 +55,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "runtime-id": "XXXX", "_dd.origin": "lambda", "operation_name": "aws.apigateway.rest", - "http.url": "XXXX.execute-api.us-east-2.amazonaws.com/", + "http.url": "https://xxxx.execute-api.us-east-2.amazonaws.com/", "endpoint": "/", "http.method": "GET", "resource_names": "GET /", @@ -103,7 +103,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", + "http.url": "https://xxxx.execute-api.us-east-2.amazonaws.com/", "http.url_details.path": "/Prod/", "http.method": "GET", "http.route": "/", @@ -594,7 +594,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.httpapi", "endpoint": "/httpapi/get", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.protocol": "HTTP/1.1", "http.source_ip": "XXXX", @@ -644,7 +644,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", "http.url_details.path": "/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", @@ -1436,7 +1436,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "runtime-id": "XXXX", "_dd.origin": "lambda", "operation_name": "aws.apigateway.websocket", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com$default", + "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com$default/", "endpoint": "$default", "resource_names": "$default", "apiid": "XXXX", @@ -1486,7 +1486,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", "http.status_code": "200", "_dd.base_service": "integration-tests-python" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python39.log b/tests/integration/snapshots/logs/async-metrics_python39.log index 54081402..9bcb7a85 100644 --- a/tests/integration/snapshots/logs/async-metrics_python39.log +++ b/tests/integration/snapshots/logs/async-metrics_python39.log @@ -55,7 +55,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "runtime-id": "XXXX", "_dd.origin": "lambda", "operation_name": "aws.apigateway.rest", - "http.url": "XXXX.execute-api.us-east-2.amazonaws.com/", + "http.url": "https://xxxx.execute-api.us-east-2.amazonaws.com/", "endpoint": "/", "http.method": "GET", "resource_names": "GET /", @@ -103,7 +103,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", + "http.url": "https://xxxx.execute-api.us-east-2.amazonaws.com/", "http.url_details.path": "/Prod/", "http.method": "GET", "http.route": "/", @@ -594,7 +594,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.httpapi", "endpoint": "/httpapi/get", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.protocol": "HTTP/1.1", "http.source_ip": "XXXX", @@ -644,7 +644,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", "http.url_details.path": "/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", @@ -1436,7 +1436,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "runtime-id": "XXXX", "_dd.origin": "lambda", "operation_name": "aws.apigateway.websocket", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com$default", + "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com$default/", "endpoint": "$default", "resource_names": "$default", "apiid": "XXXX", @@ -1486,7 +1486,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", "http.status_code": "200", "_dd.base_service": "integration-tests-python" }, diff --git a/tests/integration/snapshots/logs/sync-metrics_python310.log b/tests/integration/snapshots/logs/sync-metrics_python310.log index e2569775..40562a6d 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python310.log +++ b/tests/integration/snapshots/logs/sync-metrics_python310.log @@ -35,7 +35,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "runtime-id": "XXXX", "_dd.origin": "lambda", "operation_name": "aws.apigateway.rest", - "http.url": "XXXX.execute-api.us-east-2.amazonaws.com/", + "http.url": "https://xxxx.execute-api.us-east-2.amazonaws.com/", "endpoint": "/", "http.method": "GET", "resource_names": "GET /", @@ -83,7 +83,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", + "http.url": "https://xxxx.execute-api.us-east-2.amazonaws.com/", "http.url_details.path": "/Prod/", "http.method": "GET", "http.route": "/", @@ -631,7 +631,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.httpapi", "endpoint": "/httpapi/get", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.protocol": "HTTP/1.1", "http.source_ip": "XXXX", @@ -681,7 +681,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", "http.url_details.path": "/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", @@ -1568,7 +1568,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "runtime-id": "XXXX", "_dd.origin": "lambda", "operation_name": "aws.apigateway.websocket", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com$default", + "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com$default/", "endpoint": "$default", "resource_names": "$default", "apiid": "XXXX", @@ -1618,7 +1618,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", "http.status_code": "200", "_dd.base_service": "integration-tests-python" }, diff --git a/tests/integration/snapshots/logs/sync-metrics_python311.log b/tests/integration/snapshots/logs/sync-metrics_python311.log index 69d4a695..52ec4c85 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python311.log +++ b/tests/integration/snapshots/logs/sync-metrics_python311.log @@ -35,7 +35,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "runtime-id": "XXXX", "_dd.origin": "lambda", "operation_name": "aws.apigateway.rest", - "http.url": "XXXX.execute-api.us-east-2.amazonaws.com/", + "http.url": "https://xxxx.execute-api.us-east-2.amazonaws.com/", "endpoint": "/", "http.method": "GET", "resource_names": "GET /", @@ -83,7 +83,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", + "http.url": "https://xxxx.execute-api.us-east-2.amazonaws.com/", "http.url_details.path": "/Prod/", "http.method": "GET", "http.route": "/", @@ -631,7 +631,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.httpapi", "endpoint": "/httpapi/get", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.protocol": "HTTP/1.1", "http.source_ip": "XXXX", @@ -681,7 +681,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", "http.url_details.path": "/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", @@ -1568,7 +1568,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "runtime-id": "XXXX", "_dd.origin": "lambda", "operation_name": "aws.apigateway.websocket", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com$default", + "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com$default/", "endpoint": "$default", "resource_names": "$default", "apiid": "XXXX", @@ -1618,7 +1618,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", "http.status_code": "200", "_dd.base_service": "integration-tests-python" }, diff --git a/tests/integration/snapshots/logs/sync-metrics_python312.log b/tests/integration/snapshots/logs/sync-metrics_python312.log index 49bae0a2..3ec0f01f 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python312.log +++ b/tests/integration/snapshots/logs/sync-metrics_python312.log @@ -35,7 +35,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "runtime-id": "XXXX", "_dd.origin": "lambda", "operation_name": "aws.apigateway.rest", - "http.url": "XXXX.execute-api.us-east-2.amazonaws.com/", + "http.url": "https://xxxx.execute-api.us-east-2.amazonaws.com/", "endpoint": "/", "http.method": "GET", "resource_names": "GET /", @@ -83,7 +83,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", + "http.url": "https://xxxx.execute-api.us-east-2.amazonaws.com/", "http.url_details.path": "/Prod/", "http.method": "GET", "http.route": "/", @@ -631,7 +631,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.httpapi", "endpoint": "/httpapi/get", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.protocol": "HTTP/1.1", "http.source_ip": "XXXX", @@ -681,7 +681,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", "http.url_details.path": "/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", @@ -1568,7 +1568,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "runtime-id": "XXXX", "_dd.origin": "lambda", "operation_name": "aws.apigateway.websocket", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com$default", + "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com$default/", "endpoint": "$default", "resource_names": "$default", "apiid": "XXXX", @@ -1618,7 +1618,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", "http.status_code": "200", "_dd.base_service": "integration-tests-python" }, diff --git a/tests/integration/snapshots/logs/sync-metrics_python313.log b/tests/integration/snapshots/logs/sync-metrics_python313.log index 2f461f6f..d2c20dc0 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python313.log +++ b/tests/integration/snapshots/logs/sync-metrics_python313.log @@ -35,7 +35,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "runtime-id": "XXXX", "_dd.origin": "lambda", "operation_name": "aws.apigateway.rest", - "http.url": "XXXX.execute-api.us-east-2.amazonaws.com/", + "http.url": "https://xxxx.execute-api.us-east-2.amazonaws.com/", "endpoint": "/", "http.method": "GET", "resource_names": "GET /", @@ -83,7 +83,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", + "http.url": "https://xxxx.execute-api.us-east-2.amazonaws.com/", "http.url_details.path": "/Prod/", "http.method": "GET", "http.route": "/", @@ -631,7 +631,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.httpapi", "endpoint": "/httpapi/get", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.protocol": "HTTP/1.1", "http.source_ip": "XXXX", @@ -681,7 +681,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", "http.url_details.path": "/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", @@ -1568,7 +1568,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "runtime-id": "XXXX", "_dd.origin": "lambda", "operation_name": "aws.apigateway.websocket", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com$default", + "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com$default/", "endpoint": "$default", "resource_names": "$default", "apiid": "XXXX", @@ -1618,7 +1618,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", "http.status_code": "200", "_dd.base_service": "integration-tests-python" }, diff --git a/tests/integration/snapshots/logs/sync-metrics_python38.log b/tests/integration/snapshots/logs/sync-metrics_python38.log index 83e33d33..57a354a6 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python38.log +++ b/tests/integration/snapshots/logs/sync-metrics_python38.log @@ -35,7 +35,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "runtime-id": "XXXX", "_dd.origin": "lambda", "operation_name": "aws.apigateway.rest", - "http.url": "XXXX.execute-api.us-east-2.amazonaws.com/", + "http.url": "https://xxxx.execute-api.us-east-2.amazonaws.com/", "endpoint": "/", "http.method": "GET", "resource_names": "GET /", @@ -83,7 +83,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", + "http.url": "https://xxxx.execute-api.us-east-2.amazonaws.com/", "http.url_details.path": "/Prod/", "http.method": "GET", "http.route": "/", @@ -631,7 +631,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.httpapi", "endpoint": "/httpapi/get", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.protocol": "HTTP/1.1", "http.source_ip": "XXXX", @@ -681,7 +681,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", "http.url_details.path": "/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", @@ -1568,7 +1568,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "runtime-id": "XXXX", "_dd.origin": "lambda", "operation_name": "aws.apigateway.websocket", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com$default", + "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com$default/", "endpoint": "$default", "resource_names": "$default", "apiid": "XXXX", @@ -1618,7 +1618,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", "http.status_code": "200", "_dd.base_service": "integration-tests-python" }, diff --git a/tests/integration/snapshots/logs/sync-metrics_python39.log b/tests/integration/snapshots/logs/sync-metrics_python39.log index 0a433c34..8b7bb31b 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python39.log +++ b/tests/integration/snapshots/logs/sync-metrics_python39.log @@ -35,7 +35,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "runtime-id": "XXXX", "_dd.origin": "lambda", "operation_name": "aws.apigateway.rest", - "http.url": "XXXX.execute-api.us-east-2.amazonaws.com/", + "http.url": "https://xxxx.execute-api.us-east-2.amazonaws.com/", "endpoint": "/", "http.method": "GET", "resource_names": "GET /", @@ -83,7 +83,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", + "http.url": "https://xxxx.execute-api.us-east-2.amazonaws.com/", "http.url_details.path": "/Prod/", "http.method": "GET", "http.route": "/", @@ -377,7 +377,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A ] } HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX -END Duration: XXXX ms Memory Used: XXXX MB { "traces": [ [ @@ -416,6 +415,7 @@ END Duration: XXXX ms Memory Used: XXXX MB ] ] } +END Duration: XXXX ms Memory Used: XXXX MB START { "m": "aws.lambda.enhanced.invocations", @@ -631,7 +631,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.httpapi", "endpoint": "/httpapi/get", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.protocol": "HTTP/1.1", "http.source_ip": "XXXX", @@ -681,7 +681,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", "http.url_details.path": "/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", @@ -1568,7 +1568,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "runtime-id": "XXXX", "_dd.origin": "lambda", "operation_name": "aws.apigateway.websocket", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com$default", + "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com$default/", "endpoint": "$default", "resource_names": "$default", "apiid": "XXXX", @@ -1618,7 +1618,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", "http.status_code": "200", "_dd.base_service": "integration-tests-python" }, diff --git a/tests/test_tracing.py b/tests/test_tracing.py index 0a961a62..e38e4ecd 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -1730,7 +1730,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): "apiname": "1234567890", "endpoint": "/path/to/resource", "http.method": "POST", - "http.url": "70ixmpl4fl.execute-api.us-east-2.amazonaws.com/path/to/resource", + "http.url": "https://70ixmpl4fl.execute-api.us-east-2.amazonaws.com/path/to/resource", "operation_name": "aws.apigateway.rest", "request_id": "123", "resource_names": "POST /{proxy+}", @@ -1752,7 +1752,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): "apiname": "lgxbo6a518", "endpoint": "/http/get", "http.method": "GET", - "http.url": "lgxbo6a518.execute-api.eu-west-1.amazonaws.com/http/get", + "http.url": "https://lgxbo6a518.execute-api.eu-west-1.amazonaws.com/http/get", "operation_name": "aws.apigateway.rest", "request_id": "123", "resource_names": "GET /http/get", @@ -1774,7 +1774,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): "apiname": "lgxbo6a518", "endpoint": "/http/get", "http.method": "GET", - "http.url": "lgxbo6a518.execute-api.eu-west-1.amazonaws.com/http/get", + "http.url": "https://lgxbo6a518.execute-api.eu-west-1.amazonaws.com/http/get", "operation_name": "aws.apigateway.rest", "request_id": "123", "resource_names": "GET /http/get", @@ -1798,7 +1798,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): "http.method": "GET", "http.protocol": "HTTP/1.1", "http.source_ip": "38.122.226.210", - "http.url": "x02yirxc7a.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "http.url": "https://x02yirxc7a.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.user_agent": "curl/7.64.1", "operation_name": "aws.httpapi", "request_id": "123", @@ -1821,7 +1821,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): "apiname": "mcwkra0ya4", "endpoint": "/user/42", "http.method": "GET", - "http.url": "mcwkra0ya4.execute-api.sa-east-1.amazonaws.com/user/42", + "http.url": "https://mcwkra0ya4.execute-api.sa-east-1.amazonaws.com/user/42", "operation_name": "aws.apigateway.rest", "request_id": "123", "resource_names": "GET /user/{id}", @@ -1843,7 +1843,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): "apiname": "9vj54we5ih", "endpoint": "/user/42", "http.method": "GET", - "http.url": "9vj54we5ih.execute-api.sa-east-1.amazonaws.com/user/42", + "http.url": "https://9vj54we5ih.execute-api.sa-east-1.amazonaws.com/user/42", "operation_name": "aws.httpapi", "request_id": "123", "resource_names": "GET /user/{id}", @@ -1866,7 +1866,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): "connection_id": "Fc5SzcoYGjQCJlg=", "endpoint": "$default", "event_type": "MESSAGE", - "http.url": "p62c47itsb.execute-api.eu-west-1.amazonaws.com$default", + "http.url": "https://p62c47itsb.execute-api.eu-west-1.amazonaws.com$default/", "message_direction": "IN", "operation_name": "aws.apigateway.websocket", "request_id": "123", @@ -1890,7 +1890,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): "connection_id": "Fc2tgfl3mjQCJfA=", "endpoint": "$connect", "event_type": "CONNECT", - "http.url": "p62c47itsb.execute-api.eu-west-1.amazonaws.com$connect", + "http.url": "https://p62c47itsb.execute-api.eu-west-1.amazonaws.com$connect/", "message_direction": "IN", "operation_name": "aws.apigateway.websocket", "request_id": "123", @@ -1914,7 +1914,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): "connection_id": "Fc2tgfl3mjQCJfA=", "endpoint": "$disconnect", "event_type": "DISCONNECT", - "http.url": "p62c47itsb.execute-api.eu-west-1.amazonaws.com$disconnect", + "http.url": "https://p62c47itsb.execute-api.eu-west-1.amazonaws.com$disconnect/", "message_direction": "IN", "operation_name": "aws.apigateway.websocket", "request_id": "123", @@ -2112,7 +2112,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): "apiname": "None", "endpoint": "/path/to/resource", "http.method": "POST", - "http.url": "70ixmpl4fl.execute-api.us-east-2.amazonaws.com/path/to/resource", + "http.url": "https://70ixmpl4fl.execute-api.us-east-2.amazonaws.com/path/to/resource", "operation_name": "aws.apigateway.rest", "request_id": "123", "resource_names": "POST /{proxy+}", @@ -2135,7 +2135,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): "apiname": "amddr1rix9", "endpoint": "/hello", "http.method": "GET", - "http.url": "amddr1rix9.execute-api.eu-west-1.amazonaws.com/hello", + "http.url": "https://amddr1rix9.execute-api.eu-west-1.amazonaws.com/hello", "operation_name": "aws.apigateway.rest", "request_id": "123", "resource_names": "GET /hello", @@ -2157,7 +2157,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): "apiname": "amddr1rix9", "endpoint": "/hello", "http.method": "GET", - "http.url": "amddr1rix9.execute-api.eu-west-1.amazonaws.com/hello", + "http.url": "https://amddr1rix9.execute-api.eu-west-1.amazonaws.com/hello", "operation_name": "aws.apigateway.rest", "request_id": "123", "resource_names": "GET /hello", @@ -2180,7 +2180,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): "apiname": "amddr1rix9", "endpoint": "/hello", "http.method": "GET", - "http.url": "amddr1rix9.execute-api.eu-west-1.amazonaws.com/hello", + "http.url": "https://amddr1rix9.execute-api.eu-west-1.amazonaws.com/hello", "operation_name": "aws.apigateway.rest", "request_id": "123", "resource_names": "GET /hello", @@ -2202,7 +2202,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): "apiname": "amddr1rix9", "endpoint": "/hello", "http.method": "GET", - "http.url": "amddr1rix9.execute-api.eu-west-1.amazonaws.com/hello", + "http.url": "https://amddr1rix9.execute-api.eu-west-1.amazonaws.com/hello", "operation_name": "aws.apigateway.rest", "request_id": "123", "resource_names": "GET /hello", @@ -2224,7 +2224,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): "apiname": "amddr1rix9", "endpoint": "/hello", "http.method": "GET", - "http.url": "amddr1rix9.execute-api.eu-west-1.amazonaws.com/hello", + "http.url": "https://amddr1rix9.execute-api.eu-west-1.amazonaws.com/hello", "operation_name": "aws.httpapi", "request_id": "123", "resource_names": "GET /hello", @@ -2246,7 +2246,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): "apiname": "amddr1rix9", "endpoint": "/hello", "http.method": "GET", - "http.url": "amddr1rix9.execute-api.eu-west-1.amazonaws.com/hello", + "http.url": "https://amddr1rix9.execute-api.eu-west-1.amazonaws.com/hello", "operation_name": "aws.httpapi", "request_id": "123", "resource_names": "GET /hello", @@ -2270,7 +2270,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): "connection_id": "ZLr9QeNLmjQCIZA=", "endpoint": "$connect", "event_type": "CONNECT", - "http.url": "amddr1rix9.execute-api.eu-west-1.amazonaws.com$connect", + "http.url": "https://amddr1rix9.execute-api.eu-west-1.amazonaws.com$connect/", "message_direction": "IN", "operation_name": "aws.apigateway.websocket", "request_id": "123", @@ -2294,7 +2294,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): "connection_id": "ZLwtceO1mjQCI8Q=", "endpoint": "main", "event_type": "MESSAGE", - "http.url": "amddr1rix9.execute-api.eu-west-1.amazonaws.commain", + "http.url": "https://amddr1rix9.execute-api.eu-west-1.amazonaws.commain/", "message_direction": "IN", "operation_name": "aws.apigateway.websocket", "request_id": "123", diff --git a/tests/test_trigger.py b/tests/test_trigger.py index b4da7ff0..c12e8f5c 100644 --- a/tests/test_trigger.py +++ b/tests/test_trigger.py @@ -294,7 +294,7 @@ def test_extract_trigger_tags_api_gateway(self): { "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "arn:aws:apigateway:us-west-1::/restapis/1234567890/stages/prod", - "http.url": "70ixmpl4fl.execute-api.us-east-2.amazonaws.com", + "http.url": "https://70ixmpl4fl.execute-api.us-east-2.amazonaws.com/", "http.url_details.path": "/prod/path/to/resource", "http.method": "POST", "http.route": "/{proxy+}", @@ -313,7 +313,7 @@ def test_extract_trigger_tags_api_gateway_non_proxy(self): { "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "arn:aws:apigateway:us-west-1::/restapis/lgxbo6a518/stages/dev", - "http.url": "lgxbo6a518.execute-api.eu-west-1.amazonaws.com", + "http.url": "https://lgxbo6a518.execute-api.eu-west-1.amazonaws.com/", "http.url_details.path": "/dev/http/get", "http.method": "GET", "http.route": "/http/get", @@ -332,7 +332,7 @@ def test_extract_trigger_tags_api_gateway_websocket_connect(self): { "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "arn:aws:apigateway:us-west-1::/restapis/p62c47itsb/stages/dev", - "http.url": "p62c47itsb.execute-api.eu-west-1.amazonaws.com", + "http.url": "https://p62c47itsb.execute-api.eu-west-1.amazonaws.com/", }, ) @@ -348,7 +348,7 @@ def test_extract_trigger_tags_api_gateway_websocket_default(self): { "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "arn:aws:apigateway:us-west-1::/restapis/p62c47itsb/stages/dev", - "http.url": "p62c47itsb.execute-api.eu-west-1.amazonaws.com", + "http.url": "https://p62c47itsb.execute-api.eu-west-1.amazonaws.com/", }, ) @@ -364,7 +364,7 @@ def test_extract_trigger_tags_api_gateway_websocket_disconnect(self): { "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "arn:aws:apigateway:us-west-1::/restapis/p62c47itsb/stages/dev", - "http.url": "p62c47itsb.execute-api.eu-west-1.amazonaws.com", + "http.url": "https://p62c47itsb.execute-api.eu-west-1.amazonaws.com/", }, ) @@ -380,7 +380,7 @@ def test_extract_trigger_tags_api_gateway_http_api(self): { "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "arn:aws:apigateway:us-west-1::/restapis/x02yirxc7a/stages/$default", - "http.url": "x02yirxc7a.execute-api.eu-west-1.amazonaws.com", + "http.url": "https://x02yirxc7a.execute-api.eu-west-1.amazonaws.com/", "http.url_details.path": "/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", diff --git a/tests/test_wrapper.py b/tests/test_wrapper.py index 4b243036..f46b365e 100644 --- a/tests/test_wrapper.py +++ b/tests/test_wrapper.py @@ -283,7 +283,7 @@ def test_5xx_sends_errors_metric_and_set_tags(self, mock_extract_trigger_tags): mock_extract_trigger_tags.return_value = { "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "arn:aws:apigateway:us-west-1::/restapis/1234567890/stages/prod", - "http.url": "70ixmpl4fl.execute-api.us-east-2.amazonaws.com", + "http.url": "https://70ixmpl4fl.execute-api.us-east-2.amazonaws.com/", "http.url_details.path": "/prod/path/to/resource", "http.method": "GET", } From 87f2314928fb839886aefe09cf6a1b7c7a0a7988 Mon Sep 17 00:00:00 2001 From: happynancee <120061598+happynancee@users.noreply.github.com> Date: Mon, 2 Jun 2025 07:50:36 -0700 Subject: [PATCH 220/268] update codeowners file and make apm serverless co-owners of repo (#596) --- .github/CODEOWNERS | 7 +------ CODEOWNERS | 1 - 2 files changed, 1 insertion(+), 7 deletions(-) delete mode 100644 CODEOWNERS diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 26b4b78e..a7f48dfe 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,6 +1 @@ -* @DataDog/serverless-aws -datadog_lambda/tracing.py @DataDog/apm-serverless -datadog_lambda/patch.py @DataDog/apm-serverless -datadog_lambda/span_points.py @DataDog/apm-serverless -datadog_lambda/cold_start.py @DataDog/apm-serverless -datadog_lambda/wrapper.py @DataDog/apm-serverless +* @DataDog/serverless-aws @DataDog/apm-serverless diff --git a/CODEOWNERS b/CODEOWNERS deleted file mode 100644 index e340f1ed..00000000 --- a/CODEOWNERS +++ /dev/null @@ -1 +0,0 @@ -* @DataDog/serverless \ No newline at end of file From 254466cb2c6d749211e74201572ce5a937ec82da Mon Sep 17 00:00:00 2001 From: Yiming Luo Date: Wed, 4 Jun 2025 12:34:10 -0400 Subject: [PATCH 221/268] chore: Use GitHub App for update-deps workflow (#605) --- .github/workflows/update_deps.yml | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/.github/workflows/update_deps.yml b/.github/workflows/update_deps.yml index 31025402..33a524b2 100644 --- a/.github/workflows/update_deps.yml +++ b/.github/workflows/update_deps.yml @@ -3,14 +3,24 @@ name: update-deps on: schedule: - cron: "0 10 * * *" # Run at 10 am every day + workflow_dispatch: jobs: check: runs-on: ubuntu-latest + environment: + name: protected-main-env steps: + - name: Generate token + id: generate_token + uses: actions/create-github-app-token@df432ceedc7162793a195dd1713ff69aefc7379e # v2.0.6 + with: + app-id: ${{ secrets.GH_APP_ID }} + private-key: ${{ secrets.GH_APP_PRIVATE_KEY }} + - uses: actions/checkout@v3 with: - ssh-key: ${{ secrets.SSH_PRIVATE_KEY }} + token: ${{ steps.generate_token.outputs.token }} - name: Set up Python uses: actions/setup-python@v4 From 6beb65d63c063ff6fc5e480e7bf076d29f2abf0c Mon Sep 17 00:00:00 2001 From: michael-zhao459 Date: Thu, 5 Jun 2025 15:24:42 -0400 Subject: [PATCH 222/268] feat: Enable sqs -> lambda support for DSM (#604) --------- Co-authored-by: Rey Abolofia --- datadog_lambda/dsm.py | 38 +++++++++++++ datadog_lambda/wrapper.py | 7 +++ tests/test_dsm.py | 112 ++++++++++++++++++++++++++++++++++++++ tests/test_wrapper.py | 60 ++++++++++++++++++++ 4 files changed, 217 insertions(+) create mode 100644 datadog_lambda/dsm.py create mode 100644 tests/test_dsm.py diff --git a/datadog_lambda/dsm.py b/datadog_lambda/dsm.py new file mode 100644 index 00000000..427f5e47 --- /dev/null +++ b/datadog_lambda/dsm.py @@ -0,0 +1,38 @@ +from datadog_lambda import logger +from datadog_lambda.trigger import EventTypes + + +def set_dsm_context(event, event_source): + + if event_source.equals(EventTypes.SQS): + _dsm_set_sqs_context(event) + + +def _dsm_set_sqs_context(event): + from datadog_lambda.wrapper import format_err_with_traceback + from ddtrace.internal.datastreams import data_streams_processor + from ddtrace.internal.datastreams.processor import DsmPathwayCodec + from ddtrace.internal.datastreams.botocore import ( + get_datastreams_context, + calculate_sqs_payload_size, + ) + + records = event.get("Records") + if records is None: + return + processor = data_streams_processor() + + for record in records: + try: + queue_arn = record.get("eventSourceARN", "") + + contextjson = get_datastreams_context(record) + payload_size = calculate_sqs_payload_size(record) + + ctx = DsmPathwayCodec.decode(contextjson, processor) + ctx.set_checkpoint( + ["direction:in", f"topic:{queue_arn}", "type:sqs"], + payload_size=payload_size, + ) + except Exception as e: + logger.error(format_err_with_traceback(e)) diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index 86bbf04d..0e23b721 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -9,6 +9,7 @@ from importlib import import_module from time import time_ns +from datadog_lambda.dsm import set_dsm_context from datadog_lambda.extension import should_use_extension, flush_extension from datadog_lambda.cold_start import ( set_cold_start, @@ -79,6 +80,7 @@ DD_REQUESTS_SERVICE_NAME = "DD_REQUESTS_SERVICE_NAME" DD_SERVICE = "DD_SERVICE" DD_ENV = "DD_ENV" +DD_DATA_STREAMS_ENABLED = "DD_DATA_STREAMS_ENABLED" def get_env_as_int(env_key, default_value: int) -> int: @@ -190,6 +192,9 @@ def __init__(self, func): self.min_cold_start_trace_duration = get_env_as_int( DD_MIN_COLD_START_DURATION, 3 ) + self.data_streams_enabled = ( + os.environ.get(DD_DATA_STREAMS_ENABLED, "false").lower() == "true" + ) self.local_testing_mode = os.environ.get( DD_LOCAL_TEST, "false" ).lower() in ("true", "1") @@ -322,6 +327,8 @@ def _before(self, event, context): self.inferred_span = create_inferred_span( event, context, event_source, self.decode_authorizer_context ) + if self.data_streams_enabled: + set_dsm_context(event, event_source) self.span = create_function_execution_span( context=context, function_name=self.function_name, diff --git a/tests/test_dsm.py b/tests/test_dsm.py new file mode 100644 index 00000000..544212d8 --- /dev/null +++ b/tests/test_dsm.py @@ -0,0 +1,112 @@ +import unittest +from unittest.mock import patch, MagicMock + +from datadog_lambda.dsm import set_dsm_context, _dsm_set_sqs_context +from datadog_lambda.trigger import EventTypes, _EventSource + + +class TestDsmSQSContext(unittest.TestCase): + def setUp(self): + patcher = patch("datadog_lambda.dsm._dsm_set_sqs_context") + self.mock_dsm_set_sqs_context = patcher.start() + self.addCleanup(patcher.stop) + + patcher = patch("ddtrace.internal.datastreams.data_streams_processor") + self.mock_data_streams_processor = patcher.start() + self.addCleanup(patcher.stop) + + patcher = patch("ddtrace.internal.datastreams.botocore.get_datastreams_context") + self.mock_get_datastreams_context = patcher.start() + self.mock_get_datastreams_context.return_value = {} + self.addCleanup(patcher.stop) + + patcher = patch( + "ddtrace.internal.datastreams.botocore.calculate_sqs_payload_size" + ) + self.mock_calculate_sqs_payload_size = patcher.start() + self.mock_calculate_sqs_payload_size.return_value = 100 + self.addCleanup(patcher.stop) + + patcher = patch("ddtrace.internal.datastreams.processor.DsmPathwayCodec.decode") + self.mock_dsm_pathway_codec_decode = patcher.start() + self.addCleanup(patcher.stop) + + def test_non_sqs_event_source_does_nothing(self): + """Test that non-SQS event sources don't trigger DSM context setting""" + event = {} + # Use Unknown Event Source + event_source = _EventSource(EventTypes.UNKNOWN) + set_dsm_context(event, event_source) + + # DSM context should not be set for non-SQS events + self.mock_dsm_set_sqs_context.assert_not_called() + + def test_sqs_event_with_no_records_does_nothing(self): + """Test that events where Records is None don't trigger DSM processing""" + events_with_no_records = [ + {}, + {"Records": None}, + {"someOtherField": "value"}, + ] + + for event in events_with_no_records: + _dsm_set_sqs_context(event) + self.mock_data_streams_processor.assert_not_called() + + def test_sqs_event_triggers_dsm_sqs_context(self): + """Test that SQS event sources trigger the SQS-specific DSM context function""" + sqs_event = { + "Records": [ + { + "eventSource": "aws:sqs", + "eventSourceARN": "arn:aws:sqs:us-east-1:123456789012:my-queue", + "body": "Hello from SQS!", + } + ] + } + + event_source = _EventSource(EventTypes.SQS) + set_dsm_context(sqs_event, event_source) + + self.mock_dsm_set_sqs_context.assert_called_once_with(sqs_event) + + def test_sqs_multiple_records_process_each_record(self): + """Test that each record in an SQS event gets processed individually""" + multi_record_event = { + "Records": [ + { + "eventSourceARN": "arn:aws:sqs:us-east-1:123456789012:queue1", + "body": "Message 1", + }, + { + "eventSourceARN": "arn:aws:sqs:us-east-1:123456789012:queue2", + "body": "Message 2", + }, + { + "eventSourceARN": "arn:aws:sqs:us-east-1:123456789012:queue3", + "body": "Message 3", + }, + ] + } + + mock_context = MagicMock() + self.mock_dsm_pathway_codec_decode.return_value = mock_context + + _dsm_set_sqs_context(multi_record_event) + + self.assertEqual(mock_context.set_checkpoint.call_count, 3) + + calls = mock_context.set_checkpoint.call_args_list + expected_arns = [ + "arn:aws:sqs:us-east-1:123456789012:queue1", + "arn:aws:sqs:us-east-1:123456789012:queue2", + "arn:aws:sqs:us-east-1:123456789012:queue3", + ] + + for i, call in enumerate(calls): + args, kwargs = call + tags = args[0] + self.assertIn("direction:in", tags) + self.assertIn(f"topic:{expected_arns[i]}", tags) + self.assertIn("type:sqs", tags) + self.assertEqual(kwargs["payload_size"], 100) diff --git a/tests/test_wrapper.py b/tests/test_wrapper.py index f46b365e..f482fa3d 100644 --- a/tests/test_wrapper.py +++ b/tests/test_wrapper.py @@ -76,6 +76,10 @@ def setUp(self): self.mock_dd_lambda_layer_tag = patcher.start() self.addCleanup(patcher.stop) + patcher = patch("datadog_lambda.wrapper.set_dsm_context") + self.mock_set_dsm_context = patcher.start() + self.addCleanup(patcher.stop) + def test_datadog_lambda_wrapper(self): wrapper.dd_tracing_enabled = False @@ -563,6 +567,62 @@ def return_type_test(event, context): self.assertEqual(result, test_result) self.assertFalse(MockPrintExc.called) + def test_set_dsm_context_called_when_DSM_and_tracing_enabled(self): + os.environ["DD_DATA_STREAMS_ENABLED"] = "true" + wrapper.dd_tracing_enabled = True + + @wrapper.datadog_lambda_wrapper + def lambda_handler(event, context): + return "ok" + + result = lambda_handler({}, get_mock_context()) + self.assertEqual(result, "ok") + self.mock_set_dsm_context.assert_called_once() + + del os.environ["DD_DATA_STREAMS_ENABLED"] + + def test_set_dsm_context_not_called_when_only_DSM_enabled(self): + os.environ["DD_DATA_STREAMS_ENABLED"] = "true" + wrapper.dd_tracing_enabled = False + + @wrapper.datadog_lambda_wrapper + def lambda_handler(event, context): + return "ok" + + result = lambda_handler({}, get_mock_context()) + self.assertEqual(result, "ok") + self.mock_set_dsm_context.assert_not_called() + + del os.environ["DD_DATA_STREAMS_ENABLED"] + + def test_set_dsm_context_not_called_when_only_tracing_enabled(self): + os.environ["DD_DATA_STREAMS_ENABLED"] = "false" + wrapper.dd_tracing_enabled = True + + @wrapper.datadog_lambda_wrapper + def lambda_handler(event, context): + return "ok" + + result = lambda_handler({}, get_mock_context()) + self.assertEqual(result, "ok") + self.mock_set_dsm_context.assert_not_called() + + del os.environ["DD_DATA_STREAMS_ENABLED"] + + def test_set_dsm_context_not_called_when_tracing_and_DSM_disabled(self): + os.environ["DD_DATA_STREAMS_ENABLED"] = "false" + wrapper.dd_tracing_enabled = False + + @wrapper.datadog_lambda_wrapper + def lambda_handler(event, context): + return "ok" + + result = lambda_handler({}, get_mock_context()) + self.assertEqual(result, "ok") + self.mock_set_dsm_context.assert_not_called() + + del os.environ["DD_DATA_STREAMS_ENABLED"] + class TestLambdaDecoratorSettings(unittest.TestCase): def test_some_envs_should_depend_on_dd_tracing_enabled(self): From b3cf1c2ee54db0c01470e8cdd858db85a1183c24 Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Wed, 11 Jun 2025 08:37:35 -0700 Subject: [PATCH 223/268] Consolidate env reading to single config object. (#600) --- datadog_lambda/api.py | 15 +- datadog_lambda/cold_start.py | 12 +- datadog_lambda/config.py | 145 +++++++++++++++++++ datadog_lambda/fips.py | 19 --- datadog_lambda/metric.py | 17 +-- datadog_lambda/patch.py | 12 +- datadog_lambda/span_pointers.py | 9 +- datadog_lambda/tag_object.py | 7 +- datadog_lambda/tracing.py | 32 ++--- datadog_lambda/wrapper.py | 163 ++++++---------------- tests/conftest.py | 8 ++ tests/test_api.py | 11 +- tests/test_cold_start.py | 9 +- tests/test_config.py | 240 ++++++++++++++++++++++++++++++++ tests/test_metric.py | 2 +- tests/test_patch.py | 8 ++ tests/test_tag_object.py | 8 +- tests/test_tracing.py | 22 ++- tests/test_wrapper.py | 86 +++++------- tests/utils.py | 1 + 20 files changed, 534 insertions(+), 292 deletions(-) create mode 100644 datadog_lambda/config.py delete mode 100644 datadog_lambda/fips.py create mode 100644 tests/conftest.py create mode 100644 tests/test_config.py diff --git a/datadog_lambda/api.py b/datadog_lambda/api.py index d1cee4e4..4921dae9 100644 --- a/datadog_lambda/api.py +++ b/datadog_lambda/api.py @@ -1,7 +1,7 @@ import logging import os -from datadog_lambda.fips import fips_mode_enabled +from datadog_lambda.config import config logger = logging.getLogger(__name__) KMS_ENCRYPTION_CONTEXT_KEY = "LambdaFunctionName" @@ -29,7 +29,6 @@ def decrypt_kms_api_key(kms_client, ciphertext): is added. We need to try decrypting the API key both with and without the encryption context. """ # Try without encryption context, in case API key was encrypted using the AWS CLI - function_name = os.environ.get("AWS_LAMBDA_FUNCTION_NAME") try: plaintext = kms_client.decrypt(CiphertextBlob=decoded_bytes)[ "Plaintext" @@ -43,7 +42,7 @@ def decrypt_kms_api_key(kms_client, ciphertext): plaintext = kms_client.decrypt( CiphertextBlob=decoded_bytes, EncryptionContext={ - KMS_ENCRYPTION_CONTEXT_KEY: function_name, + KMS_ENCRYPTION_CONTEXT_KEY: config.function_name, }, )["Plaintext"].decode("utf-8") @@ -66,7 +65,7 @@ def get_api_key() -> str: DD_API_KEY = os.environ.get("DD_API_KEY", os.environ.get("DATADOG_API_KEY", "")) LAMBDA_REGION = os.environ.get("AWS_REGION", "") - if fips_mode_enabled: + if config.fips_mode_enabled: logger.debug( "FIPS mode is enabled, using FIPS endpoints for secrets management." ) @@ -82,7 +81,7 @@ def get_api_key() -> str: return "" endpoint_url = ( f"https://secretsmanager-fips.{secrets_region}.amazonaws.com/" - if fips_mode_enabled + if config.fips_mode_enabled else None ) secrets_manager_client = _boto3_client( @@ -95,7 +94,7 @@ def get_api_key() -> str: # SSM endpoints: https://docs.aws.amazon.com/general/latest/gr/ssm.html fips_endpoint = ( f"https://ssm-fips.{lambda_region}.amazonaws.com/" - if fips_mode_enabled + if config.fips_mode_enabled else None ) ssm_client = _boto3_client("ssm", endpoint_url=fips_endpoint) @@ -106,7 +105,7 @@ def get_api_key() -> str: # KMS endpoints: https://docs.aws.amazon.com/general/latest/gr/kms.html fips_endpoint = ( f"https://kms-fips.{lambda_region}.amazonaws.com/" - if fips_mode_enabled + if config.fips_mode_enabled else None ) kms_client = _boto3_client("kms", endpoint_url=fips_endpoint) @@ -118,7 +117,7 @@ def get_api_key() -> str: def init_api(): - if not os.environ.get("DD_FLUSH_TO_LOG", "").lower() == "true": + if not config.flush_to_log: # Make sure that this package would always be lazy-loaded/outside from the critical path # since underlying packages are quite heavy to load # and useless with the extension unless sending metrics with timestamps diff --git a/datadog_lambda/cold_start.py b/datadog_lambda/cold_start.py index ea10ea20..a40e2fcb 100644 --- a/datadog_lambda/cold_start.py +++ b/datadog_lambda/cold_start.py @@ -1,8 +1,9 @@ import time -import os from typing import List, Hashable import logging +from datadog_lambda.config import config + logger = logging.getLogger(__name__) _cold_start = True @@ -86,14 +87,12 @@ def reset_node_stacks(): def push_node(module_name, file_path): node = ImportNode(module_name, file_path, time.time_ns()) - global import_stack if import_stack: import_stack[-1].children.append(node) import_stack.append(node) def pop_node(module_name): - global import_stack if not import_stack: return node = import_stack.pop() @@ -102,7 +101,6 @@ def pop_node(module_name): end_time_ns = time.time_ns() node.end_time_ns = end_time_ns if not import_stack: # import_stack empty, a root node has been found - global root_nodes root_nodes.append(node) @@ -147,11 +145,7 @@ def wrapped_find_spec(*args, **kwargs): def initialize_cold_start_tracing(): - if ( - is_new_sandbox() - and os.environ.get("DD_TRACE_ENABLED", "true").lower() == "true" - and os.environ.get("DD_COLD_START_TRACING", "true").lower() == "true" - ): + if is_new_sandbox() and config.cold_start_tracing: from sys import meta_path for importer in meta_path: diff --git a/datadog_lambda/config.py b/datadog_lambda/config.py new file mode 100644 index 00000000..7a08d8a7 --- /dev/null +++ b/datadog_lambda/config.py @@ -0,0 +1,145 @@ +# Unless explicitly stated otherwise all files in this repository are licensed +# under the Apache License Version 2.0. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019 Datadog, Inc. + +import logging +import os + +logger = logging.getLogger(__name__) + + +def _get_env(key, default=None, cast=None, depends_on_tracing=False): + @property + def _getter(self): + if not hasattr(self, prop_key): + val = self._resolve_env(key, default, cast, depends_on_tracing) + setattr(self, prop_key, val) + return getattr(self, prop_key) + + prop_key = f"_config_{key}" + return _getter + + +def as_bool(val): + return val.lower() == "true" or val == "1" + + +def as_list(val): + return [val.strip() for val in val.split(",") if val.strip()] + + +class Config: + def _resolve_env(self, key, default=None, cast=None, depends_on_tracing=False): + if depends_on_tracing and not self.trace_enabled: + return False + val = os.environ.get(key, default) + if cast is not None: + try: + val = cast(val) + except (ValueError, TypeError): + msg = ( + "Failed to cast environment variable '%s' with " + "value '%s' to type %s. Using default value '%s'." + ) + logger.warning(msg, key, val, cast.__name__, default) + val = default + return val + + service = _get_env("DD_SERVICE") + env = _get_env("DD_ENV") + + cold_start_tracing = _get_env( + "DD_COLD_START_TRACING", "true", as_bool, depends_on_tracing=True + ) + min_cold_start_trace_duration = _get_env("DD_MIN_COLD_START_DURATION", 3, int) + cold_start_trace_skip_lib = _get_env( + "DD_COLD_START_TRACE_SKIP_LIB", + "ddtrace.internal.compat,ddtrace.filters", + as_list, + ) + + capture_payload_max_depth = _get_env("DD_CAPTURE_LAMBDA_PAYLOAD_MAX_DEPTH", 10, int) + capture_payload_enabled = _get_env("DD_CAPTURE_LAMBDA_PAYLOAD", "false", as_bool) + + trace_enabled = _get_env("DD_TRACE_ENABLED", "true", as_bool) + make_inferred_span = _get_env( + "DD_TRACE_MANAGED_SERVICES", "true", as_bool, depends_on_tracing=True + ) + encode_authorizer_context = _get_env( + "DD_ENCODE_AUTHORIZER_CONTEXT", "true", as_bool, depends_on_tracing=True + ) + decode_authorizer_context = _get_env( + "DD_DECODE_AUTHORIZER_CONTEXT", "true", as_bool, depends_on_tracing=True + ) + add_span_pointers = _get_env("DD_BOTOCORE_ADD_SPAN_POINTERS", "true", as_bool) + trace_extractor = _get_env("DD_TRACE_EXTRACTOR") + + enhanced_metrics_enabled = _get_env("DD_ENHANCED_METRICS", "true", as_bool) + + flush_in_thread = _get_env("DD_FLUSH_IN_THREAD", "false", as_bool) + flush_to_log = _get_env("DD_FLUSH_TO_LOG", "false", as_bool) + logs_injection = _get_env("DD_LOGS_INJECTION", "true", as_bool) + merge_xray_traces = _get_env("DD_MERGE_XRAY_TRACES", "false", as_bool) + + telemetry_enabled = _get_env( + "DD_INSTRUMENTATION_TELEMETRY_ENABLED", + "false", + as_bool, + depends_on_tracing=True, + ) + otel_enabled = _get_env("DD_TRACE_OTEL_ENABLED", "false", as_bool) + profiling_enabled = _get_env("DD_PROFILING_ENABLED", "false", as_bool) + llmobs_enabled = _get_env("DD_LLMOBS_ENABLED", "false", as_bool) + exception_replay_enabled = _get_env("DD_EXCEPTION_REPLAY_ENABLED", "false", as_bool) + data_streams_enabled = _get_env( + "DD_DATA_STREAMS_ENABLED", "false", as_bool, depends_on_tracing=True + ) + + is_gov_region = _get_env("AWS_REGION", "", lambda x: x.startswith("us-gov-")) + + local_test = _get_env("DD_LOCAL_TEST", "false", as_bool) + integration_test = _get_env("DD_INTEGRATION_TEST", "false", as_bool) + + aws_lambda_function_name = _get_env("AWS_LAMBDA_FUNCTION_NAME") + + @property + def function_name(self): + if not hasattr(self, "_config_function_name"): + if self.aws_lambda_function_name is None: + self._config_function_name = "function" + else: + self._config_function_name = self.aws_lambda_function_name + return self._config_function_name + + @property + def is_lambda_context(self): + if not hasattr(self, "_config_is_lambda_context"): + self._config_is_lambda_context = bool(self.aws_lambda_function_name) + return self._config_is_lambda_context + + @property + def fips_mode_enabled(self): + if not hasattr(self, "_config_fips_mode_enabled"): + self._config_fips_mode_enabled = ( + os.environ.get( + "DD_LAMBDA_FIPS_MODE", + "true" if self.is_gov_region else "false", + ).lower() + == "true" + ) + return self._config_fips_mode_enabled + + def _reset(self): + for attr in dir(self): + if attr.startswith("_config_"): + delattr(self, attr) + + +config = Config() + +if config.is_gov_region or config.fips_mode_enabled: + logger.debug( + "Python Lambda Layer FIPS mode is %s.", + "enabled" if config.fips_mode_enabled else "not enabled", + ) diff --git a/datadog_lambda/fips.py b/datadog_lambda/fips.py deleted file mode 100644 index 8442ddd9..00000000 --- a/datadog_lambda/fips.py +++ /dev/null @@ -1,19 +0,0 @@ -import logging -import os - -is_gov_region = os.environ.get("AWS_REGION", "").startswith("us-gov-") - -fips_mode_enabled = ( - os.environ.get( - "DD_LAMBDA_FIPS_MODE", - "true" if is_gov_region else "false", - ).lower() - == "true" -) - -if is_gov_region or fips_mode_enabled: - logger = logging.getLogger(__name__) - logger.debug( - "Python Lambda Layer FIPS mode is %s.", - "enabled" if fips_mode_enabled else "not enabled", - ) diff --git a/datadog_lambda/metric.py b/datadog_lambda/metric.py index c9b978d6..73bbeca3 100644 --- a/datadog_lambda/metric.py +++ b/datadog_lambda/metric.py @@ -5,14 +5,13 @@ import enum import logging -import os import time from datetime import datetime, timedelta import ujson as json +from datadog_lambda.config import config from datadog_lambda.extension import should_use_extension -from datadog_lambda.fips import fips_mode_enabled from datadog_lambda.tags import dd_lambda_layer_tag, get_enhanced_metrics_tags logger = logging.getLogger(__name__) @@ -28,10 +27,10 @@ class MetricsHandler(enum.Enum): def _select_metrics_handler(): if should_use_extension: return MetricsHandler.EXTENSION - if os.environ.get("DD_FLUSH_TO_LOG", "").lower() == "true": + if config.flush_to_log: return MetricsHandler.FORWARDER - if fips_mode_enabled: + if config.fips_mode_enabled: logger.debug( "With FIPS mode enabled, the Datadog API metrics handler is unavailable." ) @@ -58,14 +57,8 @@ def _select_metrics_handler(): from datadog_lambda.api import init_api from datadog_lambda.thread_stats_writer import ThreadStatsWriter - flush_in_thread = os.environ.get("DD_FLUSH_IN_THREAD", "").lower() == "true" init_api() - lambda_stats = ThreadStatsWriter(flush_in_thread) - - -enhanced_metrics_enabled = ( - os.environ.get("DD_ENHANCED_METRICS", "true").lower() == "true" -) + lambda_stats = ThreadStatsWriter(config.flush_in_thread) def lambda_metric(metric_name, value, timestamp=None, tags=None, force_async=False): @@ -191,7 +184,7 @@ def submit_enhanced_metric(metric_name, lambda_context): metric_name (str): metric name w/o enhanced prefix i.e. "invocations" or "errors" lambda_context (object): Lambda context dict passed to the function by AWS """ - if not enhanced_metrics_enabled: + if not config.enhanced_metrics_enabled: logger.debug( "Not submitting enhanced metric %s because enhanced metrics are disabled", metric_name, diff --git a/datadog_lambda/patch.py b/datadog_lambda/patch.py index 5b8a92c5..6d2af0dc 100644 --- a/datadog_lambda/patch.py +++ b/datadog_lambda/patch.py @@ -3,7 +3,6 @@ # This product includes software developed at Datadog (https://www.datadoghq.com/). # Copyright 2019 Datadog, Inc. -import os import sys import logging import zlib @@ -13,10 +12,8 @@ from wrapt.importer import when_imported from ddtrace import patch_all as patch_all_dd -from datadog_lambda.tracing import ( - get_dd_trace_context, - dd_tracing_enabled, -) +from datadog_lambda.config import config +from datadog_lambda.tracing import get_dd_trace_context from collections.abc import MutableMapping logger = logging.getLogger(__name__) @@ -32,7 +29,7 @@ def patch_all(): """ _patch_for_integration_tests() - if dd_tracing_enabled: + if config.trace_enabled: patch_all_dd() else: _patch_http() @@ -44,8 +41,7 @@ def _patch_for_integration_tests(): Patch `requests` to log the outgoing requests for integration tests. """ global _integration_tests_patched - is_in_tests = os.environ.get("DD_INTEGRATION_TEST", "false").lower() == "true" - if not _integration_tests_patched and is_in_tests: + if not _integration_tests_patched and config.integration_test: wrap("requests", "Session.send", _log_request) _integration_tests_patched = True diff --git a/datadog_lambda/span_pointers.py b/datadog_lambda/span_pointers.py index 40d959e6..45925d92 100644 --- a/datadog_lambda/span_pointers.py +++ b/datadog_lambda/span_pointers.py @@ -1,12 +1,12 @@ from itertools import chain import logging -import os from typing import List from typing import Optional from ddtrace._trace._span_pointer import _SpanPointerDirection from ddtrace._trace._span_pointer import _SpanPointerDescription +from datadog_lambda.config import config from datadog_lambda.metric import submit_dynamodb_stream_type_metric from datadog_lambda.trigger import EventTypes @@ -14,15 +14,10 @@ logger = logging.getLogger(__name__) -dd_botocore_add_span_pointers = os.environ.get( - "DD_BOTOCORE_ADD_SPAN_POINTERS", "true" -).lower() in ("true", "1") - - def calculate_span_pointers( event_source, event, - botocore_add_span_pointers=dd_botocore_add_span_pointers, + botocore_add_span_pointers=config.add_span_pointers, ) -> List[_SpanPointerDescription]: try: if botocore_add_span_pointers: diff --git a/datadog_lambda/tag_object.py b/datadog_lambda/tag_object.py index 6d82f83b..744e4893 100644 --- a/datadog_lambda/tag_object.py +++ b/datadog_lambda/tag_object.py @@ -4,18 +4,17 @@ # Copyright 2021 Datadog, Inc. from decimal import Decimal -import logging import ujson as json +from datadog_lambda.config import config + redactable_keys = ["authorization", "x-authorization", "password", "token"] -max_depth = 10 -logger = logging.getLogger(__name__) def tag_object(span, key, obj, depth=0): if obj is None: return span.set_tag(key, obj) - if depth >= max_depth: + if depth >= config.capture_payload_max_depth: return span.set_tag(key, _redact_val(key, str(obj)[0:5000])) depth += 1 if _should_try_string(obj): diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 4b6f300a..3d5f671e 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -32,6 +32,8 @@ from ddtrace import __version__ as ddtrace_version from ddtrace.propagation.http import HTTPPropagator from ddtrace.trace import Context, Span, tracer + +from datadog_lambda.config import config from datadog_lambda import __version__ as datadog_lambda_version from datadog_lambda.trigger import ( _EventSource, @@ -42,10 +44,7 @@ EventSubtypes, ) -dd_trace_otel_enabled = ( - os.environ.get("DD_TRACE_OTEL_ENABLED", "false").lower() == "true" -) -if dd_trace_otel_enabled: +if config.otel_enabled: from opentelemetry.trace import set_tracer_provider from ddtrace.opentelemetry import TracerProvider @@ -55,18 +54,11 @@ logger = logging.getLogger(__name__) dd_trace_context = None -dd_tracing_enabled = os.environ.get("DD_TRACE_ENABLED", "false").lower() == "true" -if dd_tracing_enabled: +if config.telemetry_enabled: # Enable the telemetry client if the user has opted in - if ( - os.environ.get("DD_INSTRUMENTATION_TELEMETRY_ENABLED", "false").lower() - == "true" - ): - from ddtrace.internal.telemetry import telemetry_writer + from ddtrace.internal.telemetry import telemetry_writer - telemetry_writer.enable() - -is_lambda_context = os.environ.get(XrayDaemon.FUNCTION_NAME_HEADER_NAME) != "" + telemetry_writer.enable() propagator = HTTPPropagator() @@ -97,7 +89,7 @@ def _convert_xray_sampling(xray_sampled): def _get_xray_trace_context(): - if not is_lambda_context: + if not config.is_lambda_context: return None xray_trace_entity = parse_xray_header( @@ -639,13 +631,11 @@ def get_dd_trace_context_obj(): automatically, but this function can be used to manually inject the trace context to an outgoing request. """ - if dd_tracing_enabled: + if config.trace_enabled: dd_trace_py_context = _get_dd_trace_py_context() if _is_context_complete(dd_trace_py_context): return dd_trace_py_context - global dd_trace_context - try: xray_context = _get_xray_trace_context() # xray (sub)segment except Exception as e: @@ -690,10 +680,10 @@ def set_correlation_ids(): TODO: Remove me when Datadog tracer is natively supported in Lambda. """ - if not is_lambda_context: + if not config.is_lambda_context: logger.debug("set_correlation_ids is only supported in LambdaContext") return - if dd_tracing_enabled: + if config.trace_enabled: logger.debug("using ddtrace implementation for spans") return @@ -1480,7 +1470,7 @@ def emit_telemetry_on_exception_outside_of_handler( Emit an enhanced error metric and create a span for exceptions occurring outside the handler """ submit_errors_metric(None) - if dd_tracing_enabled: + if config.trace_enabled: span = tracer.trace( "aws.lambda", service="aws.lambda", diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index 0e23b721..87063411 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -18,6 +18,7 @@ is_new_sandbox, ColdStartTracer, ) +from datadog_lambda.config import config from datadog_lambda.constants import ( TraceContextSource, XraySubsegment, @@ -26,11 +27,11 @@ from datadog_lambda.module_name import modify_module_name from datadog_lambda.patch import patch_all from datadog_lambda.span_pointers import calculate_span_pointers +from datadog_lambda.tag_object import tag_object from datadog_lambda.tracing import ( extract_dd_trace_context, create_dd_dummy_metadata_subsegment, inject_correlation_ids, - dd_tracing_enabled, mark_trace_as_error_for_5xx_responses, set_correlation_ids, set_dd_trace_py_root, @@ -46,65 +47,20 @@ extract_http_status_code_tag, ) -profiling_env_var = os.environ.get("DD_PROFILING_ENABLED", "false").lower() == "true" -if profiling_env_var: +if config.profiling_enabled: from ddtrace.profiling import profiler -llmobs_env_var = os.environ.get("DD_LLMOBS_ENABLED", "false").lower() in ("true", "1") -if llmobs_env_var: +if config.llmobs_enabled: from ddtrace.llmobs import LLMObs -exception_replay_env_var = os.environ.get( - "DD_EXCEPTION_REPLAY_ENABLED", "false" -).lower() in ("true", "1") -if exception_replay_env_var: +if config.exception_replay_enabled: from ddtrace.debugging._exception.replay import SpanExceptionHandler from ddtrace.debugging._uploader import LogsIntakeUploaderV1 logger = logging.getLogger(__name__) -DD_FLUSH_TO_LOG = "DD_FLUSH_TO_LOG" -DD_LOGS_INJECTION = "DD_LOGS_INJECTION" -DD_MERGE_XRAY_TRACES = "DD_MERGE_XRAY_TRACES" -AWS_LAMBDA_FUNCTION_NAME = "AWS_LAMBDA_FUNCTION_NAME" -DD_LOCAL_TEST = "DD_LOCAL_TEST" -DD_TRACE_EXTRACTOR = "DD_TRACE_EXTRACTOR" -DD_TRACE_MANAGED_SERVICES = "DD_TRACE_MANAGED_SERVICES" -DD_ENCODE_AUTHORIZER_CONTEXT = "DD_ENCODE_AUTHORIZER_CONTEXT" -DD_DECODE_AUTHORIZER_CONTEXT = "DD_DECODE_AUTHORIZER_CONTEXT" -DD_COLD_START_TRACING = "DD_COLD_START_TRACING" -DD_MIN_COLD_START_DURATION = "DD_MIN_COLD_START_DURATION" -DD_COLD_START_TRACE_SKIP_LIB = "DD_COLD_START_TRACE_SKIP_LIB" -DD_CAPTURE_LAMBDA_PAYLOAD = "DD_CAPTURE_LAMBDA_PAYLOAD" -DD_CAPTURE_LAMBDA_PAYLOAD_MAX_DEPTH = "DD_CAPTURE_LAMBDA_PAYLOAD_MAX_DEPTH" DD_REQUESTS_SERVICE_NAME = "DD_REQUESTS_SERVICE_NAME" DD_SERVICE = "DD_SERVICE" -DD_ENV = "DD_ENV" -DD_DATA_STREAMS_ENABLED = "DD_DATA_STREAMS_ENABLED" - - -def get_env_as_int(env_key, default_value: int) -> int: - try: - return int(os.environ.get(env_key, default_value)) - except Exception as e: - logger.warn( - f"Failed to parse {env_key} as int. Using default value: {default_value}. Error: {e}" - ) - return default_value - - -dd_capture_lambda_payload_enabled = ( - os.environ.get(DD_CAPTURE_LAMBDA_PAYLOAD, "false").lower() == "true" -) - -if dd_capture_lambda_payload_enabled: - import datadog_lambda.tag_object as tag_object - - tag_object.max_depth = get_env_as_int( - DD_CAPTURE_LAMBDA_PAYLOAD_MAX_DEPTH, tag_object.max_depth - ) - -env_env_var = os.environ.get(DD_ENV, None) init_timestamp_ns = time_ns() @@ -161,59 +117,16 @@ def __init__(self, func): """Executes when the wrapped function gets wrapped""" try: self.func = func - self.flush_to_log = os.environ.get(DD_FLUSH_TO_LOG, "").lower() == "true" - self.logs_injection = ( - os.environ.get(DD_LOGS_INJECTION, "true").lower() == "true" - ) - self.merge_xray_traces = ( - os.environ.get(DD_MERGE_XRAY_TRACES, "false").lower() == "true" - ) - self.function_name = os.environ.get(AWS_LAMBDA_FUNCTION_NAME, "function") - self.service = os.environ.get(DD_SERVICE, None) - self.extractor_env = os.environ.get(DD_TRACE_EXTRACTOR, None) self.trace_extractor = None self.span = None self.inferred_span = None - depends_on_dd_tracing_enabled = ( - lambda original_boolean: dd_tracing_enabled and original_boolean - ) - self.make_inferred_span = depends_on_dd_tracing_enabled( - os.environ.get(DD_TRACE_MANAGED_SERVICES, "true").lower() == "true" - ) - self.encode_authorizer_context = depends_on_dd_tracing_enabled( - os.environ.get(DD_ENCODE_AUTHORIZER_CONTEXT, "true").lower() == "true" - ) - self.decode_authorizer_context = depends_on_dd_tracing_enabled( - os.environ.get(DD_DECODE_AUTHORIZER_CONTEXT, "true").lower() == "true" - ) - self.cold_start_tracing = depends_on_dd_tracing_enabled( - os.environ.get(DD_COLD_START_TRACING, "true").lower() == "true" - ) - self.min_cold_start_trace_duration = get_env_as_int( - DD_MIN_COLD_START_DURATION, 3 - ) - self.data_streams_enabled = ( - os.environ.get(DD_DATA_STREAMS_ENABLED, "false").lower() == "true" - ) - self.local_testing_mode = os.environ.get( - DD_LOCAL_TEST, "false" - ).lower() in ("true", "1") - self.cold_start_trace_skip_lib = [ - "ddtrace.internal.compat", - "ddtrace.filters", - ] - if DD_COLD_START_TRACE_SKIP_LIB in os.environ: - try: - self.cold_start_trace_skip_lib = os.environ[ - DD_COLD_START_TRACE_SKIP_LIB - ].split(",") - except Exception: - logger.debug(f"Malformatted for env {DD_COLD_START_TRACE_SKIP_LIB}") self.response = None - if profiling_env_var: - self.prof = profiler.Profiler(env=env_env_var, service=self.service) - if self.extractor_env: - extractor_parts = self.extractor_env.rsplit(".", 1) + + if config.profiling_enabled: + self.prof = profiler.Profiler(env=config.env, service=config.service) + + if config.trace_extractor: + extractor_parts = config.trace_extractor.rsplit(".", 1) if len(extractor_parts) == 2: (mod_name, extractor_name) = extractor_parts modified_extractor_name = modify_module_name(mod_name) @@ -221,7 +134,7 @@ def __init__(self, func): self.trace_extractor = getattr(extractor_module, extractor_name) # Inject trace correlation ids to logs - if self.logs_injection: + if config.logs_injection: inject_correlation_ids() # This prevents a breaking change in ddtrace v0.49 regarding the service name @@ -233,11 +146,11 @@ def __init__(self, func): patch_all() # Enable LLM Observability - if llmobs_env_var: + if config.llmobs_enabled: LLMObs.enable() # Enable Exception Replay - if exception_replay_env_var: + if config.exception_replay_enabled: logger.debug("Enabling exception replay") SpanExceptionHandler.enable() @@ -307,7 +220,7 @@ def _before(self, event, context): event, context, extractor=self.trace_extractor, - decode_authorizer_context=self.decode_authorizer_context, + decode_authorizer_context=config.decode_authorizer_context, ) self.event_source = event_source # Create a Datadog X-Ray subsegment with the trace context @@ -321,28 +234,28 @@ def _before(self, event, context): XraySubsegment.TRACE_KEY, ) - if dd_tracing_enabled: - set_dd_trace_py_root(trace_context_source, self.merge_xray_traces) - if self.make_inferred_span: + if config.trace_enabled: + set_dd_trace_py_root(trace_context_source, config.merge_xray_traces) + if config.make_inferred_span: self.inferred_span = create_inferred_span( - event, context, event_source, self.decode_authorizer_context + event, context, event_source, config.decode_authorizer_context ) - if self.data_streams_enabled: + if config.data_streams_enabled: set_dsm_context(event, event_source) self.span = create_function_execution_span( context=context, - function_name=self.function_name, + function_name=config.function_name, is_cold_start=is_cold_start(), is_proactive_init=is_proactive_init(), trace_context_source=trace_context_source, - merge_xray_traces=self.merge_xray_traces, + merge_xray_traces=config.merge_xray_traces, trigger_tags=self.trigger_tags, parent_span=self.inferred_span, span_pointers=calculate_span_pointers(event_source, event), ) else: set_correlation_ids() - if profiling_env_var and is_new_sandbox(): + if config.profiling_enabled and is_new_sandbox(): self.prof.start(stop_on_exit=False, profile_children=True) logger.debug("datadog_lambda_wrapper _before() done") except Exception as e: @@ -361,14 +274,14 @@ def _after(self, event, context): create_dd_dummy_metadata_subsegment( self.trigger_tags, XraySubsegment.LAMBDA_FUNCTION_TAGS_KEY ) - should_trace_cold_start = self.cold_start_tracing and is_new_sandbox() + should_trace_cold_start = config.cold_start_tracing and is_new_sandbox() if should_trace_cold_start: trace_ctx = tracer.current_trace_context() if self.span: - if dd_capture_lambda_payload_enabled: - tag_object.tag_object(self.span, "function.request", event) - tag_object.tag_object(self.span, "function.response", self.response) + if config.capture_payload_enabled: + tag_object(self.span, "function.request", event) + tag_object(self.span, "function.response", self.response) if status_code: self.span.set_tag("http.status_code", status_code) @@ -378,8 +291,8 @@ def _after(self, event, context): if status_code: self.inferred_span.set_tag("http.status_code", status_code) - if self.service: - self.inferred_span.set_tag("peer.service", self.service) + if config.service: + self.inferred_span.set_tag("peer.service", config.service) if InferredSpanInfo.is_async(self.inferred_span) and self.span: self.inferred_span.finish(finish_time=self.span.start) @@ -391,33 +304,35 @@ def _after(self, event, context): following_span = self.span or self.inferred_span ColdStartTracer( tracer, - self.function_name, + config.function_name, following_span.start_ns, trace_ctx, - self.min_cold_start_trace_duration, - self.cold_start_trace_skip_lib, + config.min_cold_start_trace_duration, + config.cold_start_trace_skip_lib, ).trace() except Exception as e: logger.debug("Failed to create cold start spans. %s", e) - if not self.flush_to_log or should_use_extension: + if not config.flush_to_log or should_use_extension: from datadog_lambda.metric import flush_stats flush_stats(context) - if should_use_extension and self.local_testing_mode: + if should_use_extension and config.local_test: # when testing locally, the extension does not know when an # invocation completes because it does not have access to the # logs api flush_extension() - if llmobs_env_var: + if config.llmobs_enabled: LLMObs.flush() # Flush exception replay - if exception_replay_env_var: + if config.exception_replay_enabled: LogsIntakeUploaderV1._instance.periodic() - if self.encode_authorizer_context and is_authorizer_response(self.response): + if config.encode_authorizer_context and is_authorizer_response( + self.response + ): self._inject_authorizer_span_headers( event.get("requestContext", {}).get("requestId") ) diff --git a/tests/conftest.py b/tests/conftest.py new file mode 100644 index 00000000..33869802 --- /dev/null +++ b/tests/conftest.py @@ -0,0 +1,8 @@ +import pytest + +from datadog_lambda.config import config + + +@pytest.fixture(autouse=True) +def reset_config(): + config._reset() diff --git a/tests/test_api.py b/tests/test_api.py index 59ee4ee8..7fcc3c22 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -22,7 +22,10 @@ def setUp(self): ) self.env_patcher.start() - @patch("datadog_lambda.api.fips_mode_enabled", True) + def tearDown(self): + del os.environ["AWS_REGION"] + + @patch("datadog_lambda.config.Config.fips_mode_enabled", True) @patch("botocore.session.Session.create_client") def test_secrets_manager_fips_endpoint(self, mock_boto3_client): mock_client = MagicMock() @@ -63,7 +66,7 @@ def test_secrets_manager_different_region(self, mock_boto3_client): ) self.assertEqual(api_key, "test-api-key") - @patch("datadog_lambda.api.fips_mode_enabled", True) + @patch("datadog_lambda.config.Config.fips_mode_enabled", True) @patch("botocore.session.Session.create_client") def test_secrets_manager_different_region_but_still_fips(self, mock_boto3_client): mock_client = MagicMock() @@ -84,7 +87,7 @@ def test_secrets_manager_different_region_but_still_fips(self, mock_boto3_client ) self.assertEqual(api_key, "test-api-key") - @patch("datadog_lambda.api.fips_mode_enabled", True) + @patch("datadog_lambda.config.Config.fips_mode_enabled", True) @patch("botocore.session.Session.create_client") def test_ssm_fips_endpoint(self, mock_boto3_client): mock_client = MagicMock() @@ -103,7 +106,7 @@ def test_ssm_fips_endpoint(self, mock_boto3_client): ) self.assertEqual(api_key, "test-api-key") - @patch("datadog_lambda.api.fips_mode_enabled", True) + @patch("datadog_lambda.config.Config.fips_mode_enabled", True) @patch("botocore.session.Session.create_client") @patch("datadog_lambda.api.decrypt_kms_api_key") def test_kms_fips_endpoint(self, mock_decrypt_kms, mock_boto3_client): diff --git a/tests/test_cold_start.py b/tests/test_cold_start.py index c7444c49..d75b5f43 100644 --- a/tests/test_cold_start.py +++ b/tests/test_cold_start.py @@ -8,6 +8,8 @@ import datadog_lambda.cold_start as cold_start import datadog_lambda.wrapper as wrapper +from tests.utils import get_mock_context + class TestColdStartTracingSetup(unittest.TestCase): def test_proactive_init(self): @@ -247,7 +249,7 @@ def finish(span): monkeypatch.setattr(wrapper.tracer, "_on_span_finish", finish) monkeypatch.setattr(wrapper, "is_new_sandbox", lambda: True) - monkeypatch.setattr("datadog_lambda.wrapper.dd_tracing_enabled", True) + monkeypatch.setattr("datadog_lambda.config.Config.trace_enabled", True) monkeypatch.setenv( "DD_COLD_START_TRACE_SKIP_LIB", "ddtrace.contrib.logging,datadog_lambda.wrapper" ) @@ -257,10 +259,7 @@ def finish(span): def handler(event, context): import tabnanny - lambda_context = MagicMock() - lambda_context.invoked_function_arn = ( - "arn:aws:lambda:us-west-1:123457598159:function:python-layer-test:1" - ) + lambda_context = get_mock_context() handler.cold_start_tracing = True handler({}, lambda_context) diff --git a/tests/test_config.py b/tests/test_config.py new file mode 100644 index 00000000..92002439 --- /dev/null +++ b/tests/test_config.py @@ -0,0 +1,240 @@ +import pytest + +from datadog_lambda.config import config, _get_env, Config + + +@pytest.fixture +def setenv(monkeypatch): + def set_env(key, value): + if value is None: + monkeypatch.delenv(key, raising=False) + else: + monkeypatch.setenv(key, value) + + return set_env + + +def _test_as_bool(env_key, conf_key, default): + return ( + (env_key, conf_key, None, default), + (env_key, conf_key, "", False), + (env_key, conf_key, "true", True), + (env_key, conf_key, "TRUE", True), + (env_key, conf_key, "false", False), + (env_key, conf_key, "FALSE", False), + (env_key, conf_key, "1", True), + (env_key, conf_key, "0", False), + (env_key, conf_key, "purple", False), + ) + + +def _test_int(env_key, conf_key, default): + return ( + (env_key, conf_key, None, default), + (env_key, conf_key, "", default), + (env_key, conf_key, "5", 5), + (env_key, conf_key, "0", 0), + (env_key, conf_key, "2.5", default), + (env_key, conf_key, "-1", -1), + (env_key, conf_key, "purple", default), + ) + + +def _test_as_list(env_key, conf_key, default): + return ( + (env_key, conf_key, None, default.split(",")), + (env_key, conf_key, "", []), + (env_key, conf_key, " ", []), + (env_key, conf_key, ",", []), + (env_key, conf_key, " , ", []), + (env_key, conf_key, "a", ["a"]), + (env_key, conf_key, "a,", ["a"]), + (env_key, conf_key, "a, ", ["a"]), + (env_key, conf_key, "a,b", ["a", "b"]), + (env_key, conf_key, "a, b", ["a", "b"]), + ) + + +_test_config_from_environ = ( + *_test_as_bool("DD_FLUSH_TO_LOG", "flush_to_log", default=False), + *_test_as_bool("DD_LOGS_INJECTION", "logs_injection", default=True), + *_test_as_bool("DD_TRACE_ENABLED", "trace_enabled", default=True), + *_test_as_bool("DD_COLD_START_TRACING", "cold_start_tracing", default=True), + *_test_as_bool("DD_TRACE_MANAGED_SERVICES", "make_inferred_span", default=True), + *_test_as_bool( + "DD_ENCODE_AUTHORIZER_CONTEXT", "encode_authorizer_context", default=True + ), + *_test_as_bool( + "DD_DECODE_AUTHORIZER_CONTEXT", "decode_authorizer_context", default=True + ), + *_test_as_bool("DD_FLUSH_IN_THREAD", "flush_in_thread", default=False), + *_test_as_bool("DD_ENHANCED_METRICS", "enhanced_metrics_enabled", default=True), + *_test_as_bool("DD_INTEGRATION_TEST", "integration_test", default=False), + *_test_as_bool("DD_BOTOCORE_ADD_SPAN_POINTERS", "add_span_pointers", default=True), + *_test_as_bool("DD_TRACE_OTEL_ENABLED", "otel_enabled", default=False), + *_test_as_bool( + "DD_INSTRUMENTATION_TELEMETRY_ENABLED", "telemetry_enabled", default=False + ), + *_test_as_bool("DD_MERGE_XRAY_TRACES", "merge_xray_traces", default=False), + *_test_as_bool("DD_PROFILING_ENABLED", "profiling_enabled", default=False), + *_test_as_bool("DD_LLMOBS_ENABLED", "llmobs_enabled", default=False), + *_test_as_bool( + "DD_EXCEPTION_REPLAY_ENABLED", "exception_replay_enabled", default=False + ), + *_test_as_bool( + "DD_CAPTURE_LAMBDA_PAYLOAD", "capture_payload_enabled", default=False + ), + *_test_as_bool("DD_LOCAL_TEST", "local_test", default=False), + *_test_as_bool("DD_DATA_STREAMS_ENABLED", "data_streams_enabled", default=False), + *_test_int( + "DD_CAPTURE_LAMBDA_PAYLOAD_MAX_DEPTH", "capture_payload_max_depth", default=10 + ), + *_test_int( + "DD_MIN_COLD_START_DURATION", "min_cold_start_trace_duration", default=3 + ), + *_test_as_list( + "DD_COLD_START_TRACE_SKIP_LIB", + "cold_start_trace_skip_lib", + default="ddtrace.internal.compat,ddtrace.filters", + ), + ("DD_SERVICE", "service", None, None), + ("DD_SERVICE", "service", "", ""), + ("DD_SERVICE", "service", "my_service", "my_service"), + ("AWS_LAMBDA_FUNCTION_NAME", "aws_lambda_function_name", None, None), + ("AWS_LAMBDA_FUNCTION_NAME", "aws_lambda_function_name", "", ""), + ( + "AWS_LAMBDA_FUNCTION_NAME", + "aws_lambda_function_name", + "my_function", + "my_function", + ), + ("AWS_LAMBDA_FUNCTION_NAME", "function_name", None, "function"), + ("AWS_LAMBDA_FUNCTION_NAME", "function_name", "", ""), + ("AWS_LAMBDA_FUNCTION_NAME", "function_name", "my_function", "my_function"), + ("AWS_LAMBDA_FUNCTION_NAME", "is_lambda_context", None, False), + ("AWS_LAMBDA_FUNCTION_NAME", "is_lambda_context", "", False), + ("AWS_LAMBDA_FUNCTION_NAME", "is_lambda_context", "my_function", True), + ("AWS_REGION", "is_gov_region", None, False), + ("AWS_REGION", "is_gov_region", "", False), + ("AWS_REGION", "is_gov_region", "us-gov-1", True), + ("AWS_REGION", "is_gov_region", "us-est-1", False), + ("DD_TRACE_EXTRACTOR", "trace_extractor", None, None), + ("DD_TRACE_EXTRACTOR", "trace_extractor", "", ""), + ("DD_TRACE_EXTRACTOR", "trace_extractor", "my_extractor", "my_extractor"), + ("DD_ENV", "env", None, None), + ("DD_ENV", "env", "", ""), + ("DD_ENV", "env", "my_env", "my_env"), +) + + +@pytest.mark.parametrize("env_key,conf_key,env_val,conf_val", _test_config_from_environ) +def test_config_from_environ(env_key, conf_key, env_val, conf_val, setenv): + setenv(env_key, env_val) + assert getattr(config, conf_key) == conf_val + + +_test_config_from_environ_depends_on_tracing = ( + *_test_as_bool("DD_COLD_START_TRACING", "cold_start_tracing", default=True), + *_test_as_bool("DD_TRACE_MANAGED_SERVICES", "make_inferred_span", default=True), + *_test_as_bool( + "DD_ENCODE_AUTHORIZER_CONTEXT", "encode_authorizer_context", default=True + ), + *_test_as_bool( + "DD_DECODE_AUTHORIZER_CONTEXT", "decode_authorizer_context", default=True + ), + *_test_as_bool("DD_DATA_STREAMS_ENABLED", "data_streams_enabled", default=False), + *_test_as_bool( + "DD_INSTRUMENTATION_TELEMETRY_ENABLED", "telemetry_enabled", default=False + ), +) + + +@pytest.mark.parametrize( + "env_key,conf_key,env_val,conf_val", _test_config_from_environ_depends_on_tracing +) +def test_config_from_environ_depends_on_tracing( + env_key, conf_key, env_val, conf_val, setenv +): + setenv(env_key, env_val) + setenv("DD_TRACE_ENABLED", "false") + assert getattr(config, conf_key) is False + + +def test_config_aws_lambda_function_name(setenv): + # these config values all access the same environment variable, test to + # ensure the wrong value is not cached + setenv("AWS_LAMBDA_FUNCTION_NAME", "my_function") + assert config.aws_lambda_function_name == "my_function" + assert config.function_name == "my_function" + assert config.is_lambda_context is True + + +_test_fips_mode_from_environ = ( + (None, None, False), + (None, "", False), + (None, "us-gov-1", True), + (None, "us-east-1", False), + ("", None, False), + ("", "", False), + ("", "us-gov-1", False), + ("", "us-east-1", False), + ("true", None, True), + ("true", "", True), + ("true", "us-gov-1", True), + ("true", "us-east-1", True), + ("TRUE", None, True), + ("TRUE", "", True), + ("TRUE", "us-gov-1", True), + ("TRUE", "us-east-1", True), + ("false", None, False), + ("false", "", False), + ("false", "us-gov-1", False), + ("false", "us-east-1", False), + ("FALSE", None, False), + ("FALSE", "", False), + ("FALSE", "us-gov-1", False), + ("FALSE", "us-east-1", False), + ("1", None, False), + ("1", "", False), + ("1", "us-gov-1", False), + ("1", "us-east-1", False), + ("0", None, False), + ("0", "", False), + ("0", "us-gov-1", False), + ("0", "us-east-1", False), +) + + +@pytest.mark.parametrize("fips_mode,region,conf_val", _test_fips_mode_from_environ) +def test_fips_mode_from_environ(fips_mode, region, conf_val, setenv): + setenv("DD_LAMBDA_FIPS_MODE", fips_mode) + setenv("AWS_REGION", region) + assert config.fips_mode_enabled == conf_val + + +def test__get_env_does_not_log_when_env_not_set(setenv, monkeypatch): + setenv("TEST_1", None) + setenv("TEST_2", None) + setenv("TEST_3", None) + setenv("TEST_4", None) + + class Testing(Config): + test_1 = _get_env("TEST_1") + test_2 = _get_env("TEST_2", "purple") + test_3 = _get_env("TEST_3", "true", bool) + test_4 = _get_env("TEST_4", "true", bool, depends_on_tracing=True) + + logs = [] + + def cap_warn(*args, **kwargs): + logs.append(args) + + monkeypatch.setattr("datadog_lambda.config.logger.warning", cap_warn) + + testing = Testing() + testing.test_1 + testing.test_2 + testing.test_3 + testing.test_4 + + assert not logs diff --git a/tests/test_metric.py b/tests/test_metric.py index e7dab2c3..aa537d34 100644 --- a/tests/test_metric.py +++ b/tests/test_metric.py @@ -62,7 +62,7 @@ def test_select_metrics_handler_dd_api_fallback(self): self.assertEqual(MetricsHandler.DATADOG_API, _select_metrics_handler()) del os.environ["DD_FLUSH_TO_LOG"] - @patch("datadog_lambda.metric.fips_mode_enabled", True) + @patch("datadog_lambda.config.Config.fips_mode_enabled", True) @patch("datadog_lambda.metric.should_use_extension", False) def test_select_metrics_handler_has_no_fallback_in_fips_mode(self): os.environ["DD_FLUSH_TO_LOG"] = "False" diff --git a/tests/test_patch.py b/tests/test_patch.py index bf924875..b03d2e23 100644 --- a/tests/test_patch.py +++ b/tests/test_patch.py @@ -1,3 +1,4 @@ +import pytest import unittest from unittest.mock import patch, MagicMock @@ -5,6 +6,13 @@ from datadog_lambda.patch import _patch_http, _ensure_patch_requests from datadog_lambda.constants import TraceHeader +from ddtrace.contrib.internal.requests.patch import unpatch as unpatch_requests + + +@pytest.fixture(scope="module", autouse=True) +def reset_patches(): + unpatch_requests() + class TestPatchHTTPClients(unittest.TestCase): def setUp(self): diff --git a/tests/test_tag_object.py b/tests/test_tag_object.py index 77512164..574bb331 100644 --- a/tests/test_tag_object.py +++ b/tests/test_tag_object.py @@ -29,6 +29,7 @@ def test_tag_object(self): True, ) + @patch("datadog_lambda.config.Config.capture_payload_max_depth", 2) def test_tag_object_max_depth(self): payload = { "hello": "world", @@ -41,11 +42,8 @@ def test_tag_object_max_depth(self): "vals": [{"thingOne": 1}, {"thingTwo": 2}], } spanMock = MagicMock() - import datadog_lambda.tag_object as lib_ref - lib_ref.max_depth = 2 # setting up the test tag_object(spanMock, "function.request", payload) - lib_ref.max_depth = 10 # revert the setup spanMock.set_tag.assert_has_calls( [ call("function.request.vals.0", "{'thingOne': 1}"), @@ -62,6 +60,7 @@ def test_tag_object_max_depth(self): True, ) + @patch("datadog_lambda.config.Config.capture_payload_max_depth", 0) def test_tag_object_max_depth_0(self): payload = { "hello": "world", @@ -74,11 +73,8 @@ def test_tag_object_max_depth_0(self): "vals": [{"thingOne": 1}, {"thingTwo": 2}], } spanMock = MagicMock() - import datadog_lambda.tag_object as lib_ref - lib_ref.max_depth = 0 # setting up the test tag_object(spanMock, "function.request", payload) - lib_ref.max_depth = 10 # revert the setup spanMock.set_tag.assert_has_calls( [ call( diff --git a/tests/test_tracing.py b/tests/test_tracing.py index e38e4ecd..a629343e 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -251,20 +251,16 @@ def test_extract_dd_trace_context(event, expect): class TestExtractAndGetDDTraceContext(unittest.TestCase): def setUp(self): - global dd_tracing_enabled - dd_tracing_enabled = False os.environ["_X_AMZN_TRACE_ID"] = fake_xray_header_value patcher = patch("datadog_lambda.tracing.send_segment") self.mock_send_segment = patcher.start() self.addCleanup(patcher.stop) - patcher = patch("datadog_lambda.tracing.is_lambda_context") + patcher = patch("datadog_lambda.config.Config.is_lambda_context") self.mock_is_lambda_context = patcher.start() self.mock_is_lambda_context.return_value = True self.addCleanup(patcher.stop) def tearDown(self): - global dd_tracing_enabled - dd_tracing_enabled = False del os.environ["_X_AMZN_TRACE_ID"] @with_trace_propagation_style("datadog") @@ -984,11 +980,12 @@ def setUp(self): ) self.addCleanup(patcher.stop) - patcher = patch("datadog_lambda.tracing.is_lambda_context") + patcher = patch("datadog_lambda.config.Config.is_lambda_context") self.mock_is_lambda_context = patcher.start() self.mock_is_lambda_context.return_value = True self.addCleanup(patcher.stop) + @patch("datadog_lambda.config.Config.trace_enabled", False) def test_set_correlation_ids(self): set_correlation_ids() span = tracer.current_span() @@ -1124,13 +1121,11 @@ def test_function_with_span_pointers(self): class TestSetTraceRootSpan(unittest.TestCase): def setUp(self): - global dd_tracing_enabled - dd_tracing_enabled = False os.environ["_X_AMZN_TRACE_ID"] = fake_xray_header_value patcher = patch("datadog_lambda.tracing.send_segment") self.mock_send_segment = patcher.start() self.addCleanup(patcher.stop) - patcher = patch("datadog_lambda.tracing.is_lambda_context") + patcher = patch("datadog_lambda.config.Config.is_lambda_context") self.mock_is_lambda_context = patcher.start() self.mock_is_lambda_context.return_value = True self.addCleanup(patcher.stop) @@ -1143,8 +1138,6 @@ def setUp(self): self.addCleanup(patcher.stop) def tearDown(self): - global dd_tracing_enabled - dd_tracing_enabled = False del os.environ["_X_AMZN_TRACE_ID"] def test_mixed_parent_context_when_merging(self): @@ -1245,6 +1238,7 @@ def test_get_service_mapping(self): create_service_mapping(os.environ["DD_SERVICE_MAPPING"]) ) self.assertEqual(self.get_service_mapping(), expected_output) + del os.environ["DD_SERVICE_MAPPING"] def test_set_service_mapping(self): new_service_mapping = {"api3": "service3", "api4": "service4"} @@ -1285,6 +1279,8 @@ def test_determine_service_name(self): "default", ) + del os.environ["DD_SERVICE_MAPPING"] + def test_remaps_all_inferred_span_service_names_from_api_gateway_event(self): new_service_mapping = {"lambda_api_gateway": "new-name"} self.set_service_mapping(new_service_mapping) @@ -2386,7 +2382,7 @@ def test_deterministic_m5_hash__always_leading_with_zero(self): class TestExceptionOutsideHandler(unittest.TestCase): - @patch("datadog_lambda.tracing.dd_tracing_enabled", True) + @patch("datadog_lambda.config.Config.trace_enabled", True) @patch("datadog_lambda.tracing.submit_errors_metric") @patch("time.time_ns", return_value=42) def test_exception_outside_handler_tracing_enabled( @@ -2427,7 +2423,7 @@ def test_exception_outside_handler_tracing_enabled( assert mock_span.error == 1 assert mock_span.start_ns == 42 - @patch("datadog_lambda.tracing.dd_tracing_enabled", False) + @patch("datadog_lambda.config.Config.trace_enabled", False) @patch("datadog_lambda.tracing.submit_errors_metric") @patch("time.time_ns", return_value=42) def test_exception_outside_handler_tracing_disabled( diff --git a/tests/test_wrapper.py b/tests/test_wrapper.py index f482fa3d..f0240905 100644 --- a/tests/test_wrapper.py +++ b/tests/test_wrapper.py @@ -8,6 +8,8 @@ import datadog_lambda.wrapper as wrapper import datadog_lambda.xray as xray + +from datadog_lambda.config import config from datadog_lambda.metric import lambda_metric from datadog_lambda.thread_stats_writer import ThreadStatsWriter from ddtrace.trace import Span, tracer @@ -24,7 +26,6 @@ def setUp(self): patch("ddtrace.internal.writer.AgentWriter.flush_queue").start() wrapper.datadog_lambda_wrapper._force_wrap = True - wrapper.dd_tracing_enabled = True patcher = patch( "datadog.threadstats.reporters.HttpReporter.flush_distributions" ) @@ -80,9 +81,8 @@ def setUp(self): self.mock_set_dsm_context = patcher.start() self.addCleanup(patcher.stop) + @patch("datadog_lambda.config.Config.trace_enabled", False) def test_datadog_lambda_wrapper(self): - wrapper.dd_tracing_enabled = False - @wrapper.datadog_lambda_wrapper def lambda_handler(event, context): lambda_metric("test.metric", 100) @@ -92,7 +92,6 @@ def lambda_handler(event, context): lambda_context = get_mock_context() lambda_handler(lambda_event, lambda_context) - wrapper.dd_tracing_enabled = True self.mock_threadstats_flush_distributions.assert_has_calls( [ call( @@ -189,9 +188,9 @@ def lambda_handler(event, context): metric_module.lambda_stats.stop() metric_module.lambda_stats = ThreadStatsWriter(False) + @patch("datadog_lambda.config.Config.trace_enabled", False) def test_datadog_lambda_wrapper_inject_correlation_ids(self): os.environ["DD_LOGS_INJECTION"] = "True" - wrapper.dd_tracing_enabled = False @wrapper.datadog_lambda_wrapper def lambda_handler(event, context): @@ -199,7 +198,6 @@ def lambda_handler(event, context): lambda_event = {} lambda_handler(lambda_event, get_mock_context()) - wrapper.dd_tracing_enabled = True self.mock_set_correlation_ids.assert_called() self.mock_inject_correlation_ids.assert_called() @@ -457,11 +455,8 @@ def lambda_handler(event, context): ] ) + @patch("datadog_lambda.config.Config.enhanced_metrics_enabled", False) def test_no_enhanced_metrics_without_env_var(self): - patcher = patch("datadog_lambda.metric.enhanced_metrics_enabled", False) - patcher.start() - self.addCleanup(patcher.stop) - @wrapper.datadog_lambda_wrapper def lambda_handler(event, context): raise RuntimeError() @@ -515,6 +510,7 @@ def lambda_handler(event, context): self.assertEqual(os.environ.get("DD_REQUESTS_SERVICE_NAME"), "myAwesomeService") del os.environ["DD_SERVICE"] + @patch("datadog_lambda.config.Config.make_inferred_span", False) def test_encode_authorizer_span(self): @wrapper.datadog_lambda_wrapper def lambda_handler(event, context): @@ -541,7 +537,6 @@ def lambda_handler(event, context): trace_ctx.sampling_priority = 1 test_span.finish() lambda_handler.inferred_span = test_span - lambda_handler.make_inferred_span = False result = lambda_handler(lambda_event, lambda_context) raw_inject_data = result["context"]["_datadog"] self.assertIsInstance(raw_inject_data, str) @@ -569,7 +564,7 @@ def return_type_test(event, context): def test_set_dsm_context_called_when_DSM_and_tracing_enabled(self): os.environ["DD_DATA_STREAMS_ENABLED"] = "true" - wrapper.dd_tracing_enabled = True + os.environ["DD_TRACE_ENABLED"] = "true" @wrapper.datadog_lambda_wrapper def lambda_handler(event, context): @@ -583,7 +578,7 @@ def lambda_handler(event, context): def test_set_dsm_context_not_called_when_only_DSM_enabled(self): os.environ["DD_DATA_STREAMS_ENABLED"] = "true" - wrapper.dd_tracing_enabled = False + os.environ["DD_TRACE_ENABLED"] = "false" @wrapper.datadog_lambda_wrapper def lambda_handler(event, context): @@ -597,7 +592,7 @@ def lambda_handler(event, context): def test_set_dsm_context_not_called_when_only_tracing_enabled(self): os.environ["DD_DATA_STREAMS_ENABLED"] = "false" - wrapper.dd_tracing_enabled = True + os.environ["DD_TRACE_ENABLED"] = "true" @wrapper.datadog_lambda_wrapper def lambda_handler(event, context): @@ -611,7 +606,7 @@ def lambda_handler(event, context): def test_set_dsm_context_not_called_when_tracing_and_DSM_disabled(self): os.environ["DD_DATA_STREAMS_ENABLED"] = "false" - wrapper.dd_tracing_enabled = False + os.environ["DD_TRACE_ENABLED"] = "false" @wrapper.datadog_lambda_wrapper def lambda_handler(event, context): @@ -624,18 +619,6 @@ def lambda_handler(event, context): del os.environ["DD_DATA_STREAMS_ENABLED"] -class TestLambdaDecoratorSettings(unittest.TestCase): - def test_some_envs_should_depend_on_dd_tracing_enabled(self): - wrapper.dd_tracing_enabled = False - os.environ[wrapper.DD_TRACE_MANAGED_SERVICES] = "true" - os.environ[wrapper.DD_ENCODE_AUTHORIZER_CONTEXT] = "true" - os.environ[wrapper.DD_DECODE_AUTHORIZER_CONTEXT] = "true" - decorator = wrapper._LambdaDecorator(func=None) - self.assertFalse(decorator.make_inferred_span) - self.assertFalse(decorator.encode_authorizer_context) - self.assertFalse(decorator.decode_authorizer_context) - - class TestLambdaWrapperWithTraceContext(unittest.TestCase): xray_root = "1-5e272390-8c398be037738dc042009320" xray_parent = "94ae789b969f1cc5" @@ -706,14 +689,28 @@ def handler(event, context): class TestLambdaWrapperFlushExtension(unittest.TestCase): - def setUp(self): - self.orig_environ = os.environ + @patch("datadog_lambda.config.Config.local_test", True) + @patch("datadog_lambda.wrapper.should_use_extension", True) + def test_local_test_true_flushing(self): + flushes = [] + lambda_event = {} + lambda_context = get_mock_context() + + def flush(): + flushes.append(1) - def tearDown(self): - os.environ = self.orig_environ + @patch("datadog_lambda.wrapper.flush_extension", flush) + @wrapper.datadog_lambda_wrapper + def lambda_handler(event, context): + pass + lambda_handler(lambda_event, lambda_context) + + self.assertEqual(len(flushes), 1) + + @patch("datadog_lambda.config.Config.local_test", False) @patch("datadog_lambda.wrapper.should_use_extension", True) - def test_local_test_envvar_flushing(self): + def test_local_test_false_flushing(self): flushes = [] lambda_event = {} lambda_context = get_mock_context() @@ -721,24 +718,11 @@ def test_local_test_envvar_flushing(self): def flush(): flushes.append(1) - for environ, flush_called in ( - ({"DD_LOCAL_TEST": "True"}, True), - ({"DD_LOCAL_TEST": "true"}, True), - ({"DD_LOCAL_TEST": "1"}, True), - ({"DD_LOCAL_TEST": "False"}, False), - ({"DD_LOCAL_TEST": "false"}, False), - ({"DD_LOCAL_TEST": "0"}, False), - ({"DD_LOCAL_TEST": ""}, False), - ({}, False), - ): - os.environ = environ - flushes.clear() - - @patch("datadog_lambda.wrapper.flush_extension", flush) - @wrapper.datadog_lambda_wrapper - def lambda_handler(event, context): - pass + @patch("datadog_lambda.wrapper.flush_extension", flush) + @wrapper.datadog_lambda_wrapper + def lambda_handler(event, context): + pass - lambda_handler(lambda_event, lambda_context) + lambda_handler(lambda_event, lambda_context) - self.assertEqual(flush_called, len(flushes) == 1) + self.assertEqual(len(flushes), 0) diff --git a/tests/utils.py b/tests/utils.py index 0f246e68..2d56ca0c 100644 --- a/tests/utils.py +++ b/tests/utils.py @@ -22,6 +22,7 @@ def get_mock_context( lambda_context.invoked_function_arn = invoked_function_arn lambda_context.function_version = function_version lambda_context.function_name = function_name + lambda_context.get_remaining_time_in_millis = lambda: 100 lambda_context.client_context = ClientContext(custom) return lambda_context From e230d94554991136bc185bef2c46261f50073abc Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Wed, 11 Jun 2025 14:54:46 -0400 Subject: [PATCH 224/268] handle a case where the record is some customized item (#616) --- datadog_lambda/trigger.py | 2 +- tests/test_trigger.py | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/datadog_lambda/trigger.py b/datadog_lambda/trigger.py index 14cb06ac..bbd0d027 100644 --- a/datadog_lambda/trigger.py +++ b/datadog_lambda/trigger.py @@ -153,7 +153,7 @@ def parse_event_source(event: dict) -> _EventSource: event_source = _EventSource(EventTypes.STEPFUNCTIONS) event_record = get_first_record(event) - if event_record: + if event_record and isinstance(event_record, dict): aws_event_source = event_record.get("eventSource") or event_record.get( "EventSource" ) diff --git a/tests/test_trigger.py b/tests/test_trigger.py index c12e8f5c..15103937 100644 --- a/tests/test_trigger.py +++ b/tests/test_trigger.py @@ -280,6 +280,13 @@ def test_detect_lambda_function_url_domain_with_invalid_input(self): # Test with string that would normally cause an exception when split self.assertFalse(detect_lambda_function_url_domain("")) + def test_event_source_with_non_dict_event_record(self): + # Test with event_record that's not a dictionary + event = {"Records": "not_a_dict"} + event_source = parse_event_source(event) + # Should handle the first non-dict record gracefully and return unknown + self.assertEqual(event_source.to_string(), "unknown") + class GetTriggerTags(unittest.TestCase): def test_extract_trigger_tags_api_gateway(self): From 8f2a45af6d90845efaf69246349f572e0de0b445 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 18 Jun 2025 16:01:59 -0400 Subject: [PATCH 225/268] chore(deps): bump protobuf from 5.29.3 to 5.29.5 (#619) Bumps [protobuf](https://github.com/protocolbuffers/protobuf) from 5.29.3 to 5.29.5. - [Release notes](https://github.com/protocolbuffers/protobuf/releases) - [Changelog](https://github.com/protocolbuffers/protobuf/blob/main/protobuf_release.bzl) - [Commits](https://github.com/protocolbuffers/protobuf/compare/v5.29.3...v5.29.5) --- updated-dependencies: - dependency-name: protobuf dependency-version: 5.29.5 dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 145 ++++++++++++++++++++++++++++++---------------------- 1 file changed, 83 insertions(+), 62 deletions(-) diff --git a/poetry.lock b/poetry.lock index 3953f953..434f887c 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,23 +1,4 @@ -# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. - -[[package]] -name = "boto3" -version = "1.36.8" -description = "The AWS SDK for Python" -optional = true -python-versions = ">=3.8" -files = [ - {file = "boto3-1.36.8-py3-none-any.whl", hash = "sha256:7f61c9d0ea64f484a17c1e3115fdf90fd7b17ab6771e07cb4549f42b9fd28fb9"}, - {file = "boto3-1.36.8.tar.gz", hash = "sha256:ac47215d320b0c2534340db58d6d5284cb1860b7bff172b4dd6eee2dee1d5779"}, -] - -[package.dependencies] -botocore = ">=1.36.8,<1.37.0" -jmespath = ">=0.7.1,<2.0.0" -s3transfer = ">=0.11.0,<0.12.0" - -[package.extras] -crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] +# This file is automatically @generated by Poetry 2.1.1 and should not be changed by hand. [[package]] name = "botocore" @@ -25,6 +6,8 @@ version = "1.36.8" description = "Low-level, data-driven core of boto 3." optional = true python-versions = ">=3.8" +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "botocore-1.36.8-py3-none-any.whl", hash = "sha256:59d3fdfbae6d916b046e973bebcbeb70a102f9e570ca86d5ba512f1854b78fc2"}, {file = "botocore-1.36.8.tar.gz", hash = "sha256:81c88e5566cf018e1411a68304dc1fb9e4156ca2b50a3a0f0befc274299e67fa"}, @@ -34,8 +17,8 @@ files = [ jmespath = ">=0.7.1,<2.0.0" python-dateutil = ">=2.1,<3.0.0" urllib3 = [ - {version = ">=1.25.4,<2.2.0 || >2.2.0,<3", markers = "python_version >= \"3.10\""}, {version = ">=1.25.4,<1.27", markers = "python_version < \"3.10\""}, + {version = ">=1.25.4,<2.2.0 || >2.2.0,<3", markers = "python_version >= \"3.10\""}, ] [package.extras] @@ -47,6 +30,7 @@ version = "0.16.1" description = "Python module to generate and modify bytecode" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "bytecode-0.16.1-py3-none-any.whl", hash = "sha256:1d4b61ed6bade4bff44127c8283bef8131a664ce4dbe09d64a88caf329939f35"}, {file = "bytecode-0.16.1.tar.gz", hash = "sha256:8fbbb637c880f339e564858bc6c7984ede67ae97bc71343379a535a9a4baf398"}, @@ -61,6 +45,7 @@ version = "2024.12.14" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" +groups = ["main"] files = [ {file = "certifi-2024.12.14-py3-none-any.whl", hash = "sha256:1275f7a45be9464efc1173084eaa30f866fe2e47d389406136d332ed4967ec56"}, {file = "certifi-2024.12.14.tar.gz", hash = "sha256:b650d30f370c2b724812bee08008be0c4163b163ddaec3f2546c1caf65f191db"}, @@ -72,6 +57,7 @@ version = "3.4.1" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "charset_normalizer-3.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:91b36a978b5ae0ee86c394f5a54d6ef44db1de0815eb43de826d41d21e4af3de"}, {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7461baadb4dc00fd9e0acbe254e3d7d2112e7f92ced2adc96e54ef6501c5f176"}, @@ -173,6 +159,8 @@ version = "0.4.6" description = "Cross-platform colored terminal text." optional = true python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +groups = ["main"] +markers = "extra == \"dev\" and sys_platform == \"win32\"" files = [ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, @@ -184,6 +172,7 @@ version = "0.51.0" description = "The Datadog Python library" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +groups = ["main"] files = [ {file = "datadog-0.51.0-py2.py3-none-any.whl", hash = "sha256:a9764f091c96af4e0996d4400b168fc5fba380f911d6d672c9dcd4773e29ea3f"}, {file = "datadog-0.51.0.tar.gz", hash = "sha256:3279534f831ae0b4ae2d8ce42ef038b4ab38e667d7ed6ff7437982d7a0cf5250"}, @@ -198,6 +187,7 @@ version = "2.20.0" description = "Datadog APM client library" optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "ddtrace-2.20.0-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:e1dee099099b95acf7d0e552179925cfec58a52315cc914d153506367b195bc4"}, {file = "ddtrace-2.20.0-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:9d209bef14caafcd53be8c14e04741d86c08f76496c1bf755e2eaa38605ce3e0"}, @@ -271,10 +261,10 @@ files = [ [package.dependencies] bytecode = [ + {version = ">=0.13.0", markers = "python_version < \"3.11\""}, {version = ">=0.16.0", markers = "python_version >= \"3.13.0\""}, {version = ">=0.15.0", markers = "python_version ~= \"3.12.0\""}, {version = ">=0.14.0", markers = "python_version ~= \"3.11.0\""}, - {version = ">=0.13.0", markers = "python_version < \"3.11.0\""}, ] envier = ">=0.5,<1.0" legacy-cgi = {version = ">=2.0.0", markers = "python_version >= \"3.13.0\""} @@ -294,6 +284,7 @@ version = "1.2.18" description = "Python @deprecated decorator to deprecate old python classes, functions or methods." optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7" +groups = ["main"] files = [ {file = "Deprecated-1.2.18-py2.py3-none-any.whl", hash = "sha256:bd5011788200372a32418f888e326a09ff80d0214bd961147cfed01b5c018eec"}, {file = "deprecated-1.2.18.tar.gz", hash = "sha256:422b6f6d859da6f2ef57857761bfb392480502a64c3028ca9bbe86085d72115d"}, @@ -303,7 +294,7 @@ files = [ wrapt = ">=1.10,<2" [package.extras] -dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "setuptools", "tox"] +dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "setuptools ; python_version >= \"3.12\"", "tox"] [[package]] name = "envier" @@ -311,6 +302,7 @@ version = "0.6.1" description = "Python application configuration via the environment" optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "envier-0.6.1-py3-none-any.whl", hash = "sha256:73609040a76be48bbcb97074d9969666484aa0de706183a6e9ef773156a8a6a9"}, {file = "envier-0.6.1.tar.gz", hash = "sha256:3309a01bb3d8850c9e7a31a5166d5a836846db2faecb79b9cb32654dd50ca9f9"}, @@ -325,6 +317,8 @@ version = "1.2.2" description = "Backport of PEP 654 (exception groups)" optional = true python-versions = ">=3.7" +groups = ["main"] +markers = "extra == \"dev\" and python_version <= \"3.10\"" files = [ {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"}, {file = "exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"}, @@ -339,6 +333,8 @@ version = "5.0.4" description = "the modular source code checker: pep8 pyflakes and co" optional = true python-versions = ">=3.6.1" +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "flake8-5.0.4-py2.py3-none-any.whl", hash = "sha256:7a1cf6b73744f5806ab95e526f6f0d8c01c66d7bbe349562d22dfca20610b248"}, {file = "flake8-5.0.4.tar.gz", hash = "sha256:6fbe320aad8d6b95cec8b8e47bc933004678dc63095be98528b7bdd2a9f510db"}, @@ -355,6 +351,7 @@ version = "3.10" description = "Internationalized Domain Names in Applications (IDNA)" optional = false python-versions = ">=3.6" +groups = ["main"] files = [ {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, @@ -369,6 +366,7 @@ version = "8.5.0" description = "Read metadata from Python packages" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "importlib_metadata-8.5.0-py3-none-any.whl", hash = "sha256:45e54197d28b7a7f1559e60b95e7c567032b602131fbd588f1497f47880aa68b"}, {file = "importlib_metadata-8.5.0.tar.gz", hash = "sha256:71522656f0abace1d072b9e5481a48f07c138e00f079c38c8f883823f9c26bd7"}, @@ -378,12 +376,12 @@ files = [ zipp = ">=3.20" [package.extras] -check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)"] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\""] cover = ["pytest-cov"] doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] enabler = ["pytest-enabler (>=2.2)"] perf = ["ipython"] -test = ["flufl.flake8", "importlib-resources (>=1.3)", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6,!=8.1.*)", "pytest-perf (>=0.9.2)"] +test = ["flufl.flake8", "importlib-resources (>=1.3) ; python_version < \"3.9\"", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6,!=8.1.*)", "pytest-perf (>=0.9.2)"] type = ["pytest-mypy"] [[package]] @@ -392,6 +390,8 @@ version = "2.0.0" description = "brain-dead simple config-ini parsing" optional = true python-versions = ">=3.7" +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, @@ -403,6 +403,8 @@ version = "1.0.1" description = "JSON Matching Expressions" optional = true python-versions = ">=3.7" +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "jmespath-1.0.1-py3-none-any.whl", hash = "sha256:02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980"}, {file = "jmespath-1.0.1.tar.gz", hash = "sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe"}, @@ -414,6 +416,8 @@ version = "2.6.2" description = "Fork of the standard library cgi and cgitb modules, being deprecated in PEP-594" optional = false python-versions = ">=3.10" +groups = ["main"] +markers = "python_version >= \"3.13.0\"" files = [ {file = "legacy_cgi-2.6.2-py3-none-any.whl", hash = "sha256:a7b83afb1baf6ebeb56522537c5943ef9813cf933f6715e88a803f7edbce0bff"}, {file = "legacy_cgi-2.6.2.tar.gz", hash = "sha256:9952471ceb304043b104c22d00b4f333cac27a6abe446d8a528fc437cf13c85f"}, @@ -425,6 +429,8 @@ version = "0.7.0" description = "McCabe checker, plugin for flake8" optional = true python-versions = ">=3.6" +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"}, {file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"}, @@ -436,6 +442,7 @@ version = "1.29.0" description = "OpenTelemetry Python API" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "opentelemetry_api-1.29.0-py3-none-any.whl", hash = "sha256:5fcd94c4141cc49c736271f3e1efb777bebe9cc535759c54c936cca4f1b312b8"}, {file = "opentelemetry_api-1.29.0.tar.gz", hash = "sha256:d04a6cf78aad09614f52964ecb38021e248f5714dc32c2e0d8fd99517b4d69cf"}, @@ -451,6 +458,8 @@ version = "24.2" description = "Core utilities for Python packages" optional = true python-versions = ">=3.8" +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759"}, {file = "packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"}, @@ -462,6 +471,8 @@ version = "1.5.0" description = "plugin and hook calling mechanisms for python" optional = true python-versions = ">=3.8" +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, @@ -473,22 +484,23 @@ testing = ["pytest", "pytest-benchmark"] [[package]] name = "protobuf" -version = "5.29.3" +version = "5.29.5" description = "" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ - {file = "protobuf-5.29.3-cp310-abi3-win32.whl", hash = "sha256:3ea51771449e1035f26069c4c7fd51fba990d07bc55ba80701c78f886bf9c888"}, - {file = "protobuf-5.29.3-cp310-abi3-win_amd64.whl", hash = "sha256:a4fa6f80816a9a0678429e84973f2f98cbc218cca434abe8db2ad0bffc98503a"}, - {file = "protobuf-5.29.3-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:a8434404bbf139aa9e1300dbf989667a83d42ddda9153d8ab76e0d5dcaca484e"}, - {file = "protobuf-5.29.3-cp38-abi3-manylinux2014_aarch64.whl", hash = "sha256:daaf63f70f25e8689c072cfad4334ca0ac1d1e05a92fc15c54eb9cf23c3efd84"}, - {file = "protobuf-5.29.3-cp38-abi3-manylinux2014_x86_64.whl", hash = "sha256:c027e08a08be10b67c06bf2370b99c811c466398c357e615ca88c91c07f0910f"}, - {file = "protobuf-5.29.3-cp38-cp38-win32.whl", hash = "sha256:84a57163a0ccef3f96e4b6a20516cedcf5bb3a95a657131c5c3ac62200d23252"}, - {file = "protobuf-5.29.3-cp38-cp38-win_amd64.whl", hash = "sha256:b89c115d877892a512f79a8114564fb435943b59067615894c3b13cd3e1fa107"}, - {file = "protobuf-5.29.3-cp39-cp39-win32.whl", hash = "sha256:0eb32bfa5219fc8d4111803e9a690658aa2e6366384fd0851064b963b6d1f2a7"}, - {file = "protobuf-5.29.3-cp39-cp39-win_amd64.whl", hash = "sha256:6ce8cc3389a20693bfde6c6562e03474c40851b44975c9b2bf6df7d8c4f864da"}, - {file = "protobuf-5.29.3-py3-none-any.whl", hash = "sha256:0a18ed4a24198528f2333802eb075e59dea9d679ab7a6c5efb017a59004d849f"}, - {file = "protobuf-5.29.3.tar.gz", hash = "sha256:5da0f41edaf117bde316404bad1a486cb4ededf8e4a54891296f648e8e076620"}, + {file = "protobuf-5.29.5-cp310-abi3-win32.whl", hash = "sha256:3f1c6468a2cfd102ff4703976138844f78ebd1fb45f49011afc5139e9e283079"}, + {file = "protobuf-5.29.5-cp310-abi3-win_amd64.whl", hash = "sha256:3f76e3a3675b4a4d867b52e4a5f5b78a2ef9565549d4037e06cf7b0942b1d3fc"}, + {file = "protobuf-5.29.5-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e38c5add5a311f2a6eb0340716ef9b039c1dfa428b28f25a7838ac329204a671"}, + {file = "protobuf-5.29.5-cp38-abi3-manylinux2014_aarch64.whl", hash = "sha256:fa18533a299d7ab6c55a238bf8629311439995f2e7eca5caaff08663606e9015"}, + {file = "protobuf-5.29.5-cp38-abi3-manylinux2014_x86_64.whl", hash = "sha256:63848923da3325e1bf7e9003d680ce6e14b07e55d0473253a690c3a8b8fd6e61"}, + {file = "protobuf-5.29.5-cp38-cp38-win32.whl", hash = "sha256:ef91363ad4faba7b25d844ef1ada59ff1604184c0bcd8b39b8a6bef15e1af238"}, + {file = "protobuf-5.29.5-cp38-cp38-win_amd64.whl", hash = "sha256:7318608d56b6402d2ea7704ff1e1e4597bee46d760e7e4dd42a3d45e24b87f2e"}, + {file = "protobuf-5.29.5-cp39-cp39-win32.whl", hash = "sha256:6f642dc9a61782fa72b90878af134c5afe1917c89a568cd3476d758d3c3a0736"}, + {file = "protobuf-5.29.5-cp39-cp39-win_amd64.whl", hash = "sha256:470f3af547ef17847a28e1f47200a1cbf0ba3ff57b7de50d22776607cd2ea353"}, + {file = "protobuf-5.29.5-py3-none-any.whl", hash = "sha256:6cf42630262c59b2d8de33954443d94b746c952b01434fc58a417fdbd2e84bd5"}, + {file = "protobuf-5.29.5.tar.gz", hash = "sha256:bc1463bafd4b0929216c35f437a8e28731a2b7fe3d98bb77a600efced5a15c84"}, ] [[package]] @@ -497,6 +509,8 @@ version = "9.0.0" description = "Get CPU info with pure Python" optional = true python-versions = "*" +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "py-cpuinfo-9.0.0.tar.gz", hash = "sha256:3cdbbf3fac90dc6f118bfd64384f309edeadd902d7c8fb17f02ffa1fc3f49690"}, {file = "py_cpuinfo-9.0.0-py3-none-any.whl", hash = "sha256:859625bc251f64e21f077d099d4162689c762b5d6a4c3c97553d56241c9674d5"}, @@ -508,6 +522,8 @@ version = "2.9.1" description = "Python style guide checker" optional = true python-versions = ">=3.6" +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "pycodestyle-2.9.1-py2.py3-none-any.whl", hash = "sha256:d1735fc58b418fd7c5f658d28d943854f8a849b01a5d0a1e6f3f3fdd0166804b"}, {file = "pycodestyle-2.9.1.tar.gz", hash = "sha256:2c9607871d58c76354b697b42f5d57e1ada7d261c261efac224b664affdc5785"}, @@ -519,6 +535,8 @@ version = "2.5.0" description = "passive checker of Python programs" optional = true python-versions = ">=3.6" +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "pyflakes-2.5.0-py2.py3-none-any.whl", hash = "sha256:4579f67d887f804e67edb544428f264b7b24f435b263c4614f384135cea553d2"}, {file = "pyflakes-2.5.0.tar.gz", hash = "sha256:491feb020dca48ccc562a8c0cbe8df07ee13078df59813b83959cbdada312ea3"}, @@ -530,6 +548,8 @@ version = "8.3.4" description = "pytest: simple powerful testing with Python" optional = true python-versions = ">=3.8" +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "pytest-8.3.4-py3-none-any.whl", hash = "sha256:50e16d954148559c9a74109af1eaf0c945ba2d8f30f0a3d3335edde19788b6f6"}, {file = "pytest-8.3.4.tar.gz", hash = "sha256:965370d062bce11e73868e0335abac31b4d3de0e82f4007408d242b4f8610761"}, @@ -552,6 +572,8 @@ version = "4.0.0" description = "A ``pytest`` fixture for benchmarking code. It will group the tests into rounds that are calibrated to the chosen timer." optional = true python-versions = ">=3.7" +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "pytest-benchmark-4.0.0.tar.gz", hash = "sha256:fb0785b83efe599a6a956361c0691ae1dbb5318018561af10f3e915caa0048d1"}, {file = "pytest_benchmark-4.0.0-py3-none-any.whl", hash = "sha256:fdb7db64e31c8b277dff9850d2a2556d8b60bcb0ea6524e36e28ffd7c87f71d6"}, @@ -572,6 +594,8 @@ version = "2.9.0.post0" description = "Extensions to the standard Python datetime module" optional = true python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, @@ -586,6 +610,7 @@ version = "2.32.3" description = "Python HTTP for Humans." optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, @@ -601,29 +626,14 @@ urllib3 = ">=1.21.1,<3" socks = ["PySocks (>=1.5.6,!=1.5.7)"] use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] -[[package]] -name = "s3transfer" -version = "0.11.2" -description = "An Amazon S3 Transfer Manager" -optional = true -python-versions = ">=3.8" -files = [ - {file = "s3transfer-0.11.2-py3-none-any.whl", hash = "sha256:be6ecb39fadd986ef1701097771f87e4d2f821f27f6071c872143884d2950fbc"}, - {file = "s3transfer-0.11.2.tar.gz", hash = "sha256:3b39185cb72f5acc77db1a58b6e25b977f28d20496b6e58d6813d75f464d632f"}, -] - -[package.dependencies] -botocore = ">=1.36.0,<2.0a.0" - -[package.extras] -crt = ["botocore[crt] (>=1.36.0,<2.0a.0)"] - [[package]] name = "six" version = "1.17.0" description = "Python 2 and 3 compatibility utilities" optional = true python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274"}, {file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"}, @@ -635,6 +645,8 @@ version = "2.2.1" description = "A lil' TOML parser" optional = true python-versions = ">=3.8" +groups = ["main"] +markers = "extra == \"dev\" and python_version <= \"3.10\"" files = [ {file = "tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249"}, {file = "tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6"}, @@ -676,6 +688,7 @@ version = "4.12.2" description = "Backported and Experimental Type Hints for Python 3.8+" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, @@ -687,6 +700,7 @@ version = "5.10.0" description = "Ultra fast JSON encoder and decoder for Python" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "ujson-5.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2601aa9ecdbee1118a1c2065323bda35e2c5a2cf0797ef4522d485f9d3ef65bd"}, {file = "ujson-5.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:348898dd702fc1c4f1051bc3aacbf894caa0927fe2c53e68679c073375f732cf"}, @@ -774,14 +788,16 @@ version = "1.26.20" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" +groups = ["main"] +markers = "python_version < \"3.10\"" files = [ {file = "urllib3-1.26.20-py2.py3-none-any.whl", hash = "sha256:0ed14ccfbf1c30a9072c7ca157e4319b70d65f623e91e7b32fadb2853431016e"}, {file = "urllib3-1.26.20.tar.gz", hash = "sha256:40c2dc0c681e47eb8f90e7e27bf6ff7df2e677421fd46756da1161c39ca70d32"}, ] [package.extras] -brotli = ["brotli (==1.0.9)", "brotli (>=1.0.9)", "brotlicffi (>=0.8.0)", "brotlipy (>=0.6.0)"] -secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress", "pyOpenSSL (>=0.14)", "urllib3-secure-extra"] +brotli = ["brotli (==1.0.9) ; os_name != \"nt\" and python_version < \"3\" and platform_python_implementation == \"CPython\"", "brotli (>=1.0.9) ; python_version >= \"3\" and platform_python_implementation == \"CPython\"", "brotlicffi (>=0.8.0) ; (os_name != \"nt\" or python_version >= \"3\") and platform_python_implementation != \"CPython\"", "brotlipy (>=0.6.0) ; os_name == \"nt\" and python_version < \"3\""] +secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress ; python_version == \"2.7\"", "pyOpenSSL (>=0.14)", "urllib3-secure-extra"] socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] [[package]] @@ -790,13 +806,15 @@ version = "2.3.0" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.9" +groups = ["main"] +markers = "python_version >= \"3.10\"" files = [ {file = "urllib3-2.3.0-py3-none-any.whl", hash = "sha256:1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df"}, {file = "urllib3-2.3.0.tar.gz", hash = "sha256:f8c5449b3cf0861679ce7e0503c7b44b5ec981bec0d1d3795a07f1ba96f0204d"}, ] [package.extras] -brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] +brotli = ["brotli (>=1.0.9) ; platform_python_implementation == \"CPython\"", "brotlicffi (>=0.8.0) ; platform_python_implementation != \"CPython\""] h2 = ["h2 (>=4,<5)"] socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] zstd = ["zstandard (>=0.18.0)"] @@ -807,6 +825,7 @@ version = "1.17.2" description = "Module for decorators, wrappers and monkey patching." optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "wrapt-1.17.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3d57c572081fed831ad2d26fd430d565b76aa277ed1d30ff4d40670b1c0dd984"}, {file = "wrapt-1.17.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b5e251054542ae57ac7f3fba5d10bfff615b6c2fb09abeb37d2f1463f841ae22"}, @@ -895,6 +914,7 @@ version = "0.14.2" description = "Makes working with XML feel like you are working with JSON" optional = false python-versions = ">=3.6" +groups = ["main"] files = [ {file = "xmltodict-0.14.2-py2.py3-none-any.whl", hash = "sha256:20cc7d723ed729276e808f26fb6b3599f786cbc37e06c65e192ba77c40f20aac"}, {file = "xmltodict-0.14.2.tar.gz", hash = "sha256:201e7c28bb210e374999d1dde6382923ab0ed1a8a5faeece48ab525b7810a553"}, @@ -906,23 +926,24 @@ version = "3.20.2" description = "Backport of pathlib-compatible object wrapper for zip files" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "zipp-3.20.2-py3-none-any.whl", hash = "sha256:a817ac80d6cf4b23bf7f2828b7cabf326f15a001bea8b1f9b49631780ba28350"}, {file = "zipp-3.20.2.tar.gz", hash = "sha256:bc9eb26f4506fda01b81bcde0ca78103b6e62f991b381fec825435c836edbc29"}, ] [package.extras] -check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)"] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\""] cover = ["pytest-cov"] doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] enabler = ["pytest-enabler (>=2.2)"] -test = ["big-O", "importlib-resources", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-itertools", "pytest (>=6,!=8.1.*)", "pytest-ignore-flaky"] +test = ["big-O", "importlib-resources ; python_version < \"3.9\"", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-itertools", "pytest (>=6,!=8.1.*)", "pytest-ignore-flaky"] type = ["pytest-mypy"] [extras] -dev = ["boto3", "flake8", "pytest", "pytest-benchmark", "requests"] +dev = ["botocore", "flake8", "pytest", "pytest-benchmark", "requests"] [metadata] -lock-version = "2.0" +lock-version = "2.1" python-versions = ">=3.8.0,<4" -content-hash = "9128af5437fd535ec458c64280d8390574c632e704cace5ea783de3c5d453c8c" +content-hash = "f6a2f7355200da107aa5b027d6fe4fb6bdb5a898ce8298a56e6ac39fe8d8e34d" From f93bc0a88dff1cddb184938efddbb5289add21cc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 18 Jun 2025 16:02:16 -0400 Subject: [PATCH 226/268] chore(deps): bump brace-expansion in /tests/integration (#617) Bumps [brace-expansion](https://github.com/juliangruber/brace-expansion) from 1.1.11 to 1.1.12. - [Release notes](https://github.com/juliangruber/brace-expansion/releases) - [Commits](https://github.com/juliangruber/brace-expansion/compare/1.1.11...v1.1.12) --- updated-dependencies: - dependency-name: brace-expansion dependency-version: 1.1.12 dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- tests/integration/yarn.lock | 339 ++---------------------------------- 1 file changed, 16 insertions(+), 323 deletions(-) diff --git a/tests/integration/yarn.lock b/tests/integration/yarn.lock index f96feb52..37cb357d 100644 --- a/tests/integration/yarn.lock +++ b/tests/integration/yarn.lock @@ -2,28 +2,6 @@ # yarn lockfile v1 -"@iarna/toml@^2.2.5": - version "2.2.5" - resolved "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz" - integrity sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg== - -"@isaacs/cliui@^8.0.2": - version "8.0.2" - resolved "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz" - integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== - dependencies: - string-width "^5.1.2" - string-width-cjs "npm:string-width@^4.2.0" - strip-ansi "^7.0.1" - strip-ansi-cjs "npm:strip-ansi@^6.0.1" - wrap-ansi "^8.1.0" - wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" - -"@pkgjs/parseargs@^0.11.0": - version "0.11.0" - resolved "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz" - integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== - "2-thenable@^1.0.0": version "1.0.0" resolved "https://registry.npmjs.org/2-thenable/-/2-thenable-1.0.0.tgz" @@ -32,16 +10,16 @@ d "1" es5-ext "^0.10.47" +"@iarna/toml@^2.2.5": + version "2.2.5" + resolved "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz" + integrity sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg== + ansi-regex@^5.0.1: version "5.0.1" resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== -ansi-regex@^6.0.1: - version "6.1.0" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz" - integrity sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA== - ansi-styles@^4.0.0: version "4.3.0" resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" @@ -49,37 +27,11 @@ ansi-styles@^4.0.0: dependencies: color-convert "^2.0.1" -ansi-styles@^6.1.0: - version "6.2.1" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz" - integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== - appdirectory@^0.1.0: version "0.1.0" resolved "https://registry.npmjs.org/appdirectory/-/appdirectory-0.1.0.tgz" integrity sha512-DJ5DV8vZXBbusyiyPlH28xppwS8eAMRuuyMo88xeEcf4bV64lbLtbxRxqixZuJBXsZzLtXFmA13GwVjJc7vdQw== -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" - integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== - -axios-proxy-builder@^0.1.2: - version "0.1.2" - resolved "https://registry.npmjs.org/axios-proxy-builder/-/axios-proxy-builder-0.1.2.tgz" - integrity sha512-6uBVsBZzkB3tCC8iyx59mCjQckhB8+GQrI9Cop8eC7ybIsvs/KtnNgEBfRMSEa7GqK2VBGUzgjNYMdPIfotyPA== - dependencies: - tunnel "^0.0.6" - -axios@^1.7.4: - version "1.7.9" - resolved "https://registry.npmjs.org/axios/-/axios-1.7.9.tgz" - integrity sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw== - dependencies: - follow-redirects "^1.15.6" - form-data "^4.0.0" - proxy-from-env "^1.1.0" - balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" @@ -91,20 +43,13 @@ bluebird@^3.7.2: integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + version "1.1.12" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.12.tgz#ab9b454466e5a8cc3a187beaad580412a9c5b843" + integrity sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg== dependencies: balanced-match "^1.0.0" concat-map "0.0.1" -brace-expansion@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz" - integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== - dependencies: - balanced-match "^1.0.0" - camelcase@^5.0.0: version "5.3.1" resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" @@ -142,13 +87,6 @@ color-name@~1.1.4: resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -combined-stream@^1.0.8: - version "1.0.8" - resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - concat-map@0.0.1: version "0.0.1" resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" @@ -170,16 +108,7 @@ cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^7.0.0: - version "7.0.6" - resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz" - integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -d@^1.0.1, d@^1.0.2, d@1: +d@1, d@^1.0.1, d@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/d/-/d-1.0.2.tgz" integrity sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw== @@ -192,11 +121,6 @@ decamelize@^1.2.0: resolved "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" - integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== - duration@^0.2.2: version "0.2.2" resolved "https://registry.npmjs.org/duration/-/duration-0.2.2.tgz" @@ -205,21 +129,11 @@ duration@^0.2.2: d "1" es5-ext "~0.10.46" -eastasianwidth@^0.2.0: - version "0.2.0" - resolved "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz" - integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== - emoji-regex@^8.0.0: version "8.0.0" resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== -emoji-regex@^9.2.2: - version "9.2.2" - resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz" - integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== - es5-ext@^0.10.35, es5-ext@^0.10.47, es5-ext@^0.10.49, es5-ext@^0.10.53, es5-ext@^0.10.62, es5-ext@^0.10.64, es5-ext@~0.10.14, es5-ext@~0.10.46: version "0.10.64" resolved "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz" @@ -280,28 +194,6 @@ find-up@^4.1.0: locate-path "^5.0.0" path-exists "^4.0.0" -follow-redirects@^1.15.6: - version "1.15.9" - resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz" - integrity sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ== - -foreground-child@^3.1.0: - version "3.3.0" - resolved "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz" - integrity sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg== - dependencies: - cross-spawn "^7.0.0" - signal-exit "^4.0.1" - -form-data@^4.0.0: - version "4.0.1" - resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz" - integrity sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - mime-types "^2.1.12" - fs-extra@^10.1.0: version "10.1.0" resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz" @@ -329,31 +221,7 @@ glob-all@^3.3.1: glob "^7.2.3" yargs "^15.3.1" -glob@^10.3.7: - version "10.4.5" - resolved "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz" - integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg== - dependencies: - foreground-child "^3.1.0" - jackspeak "^3.1.2" - minimatch "^9.0.4" - minipass "^7.1.2" - package-json-from-dist "^1.0.0" - path-scurry "^1.11.1" - -glob@^7.1.3: - version "7.2.3" - resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.1.1" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^7.2.3: +glob@^7.1.3, glob@^7.2.3: version "7.2.3" resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== @@ -383,7 +251,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@^2.0.3, inherits@~2.0.3, inherits@2: +inherits@2, inherits@^2.0.3, inherits@~2.0.3: version "2.0.4" resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -437,15 +305,6 @@ isobject@^3.0.1: resolved "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz" integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== -jackspeak@^3.1.2: - version "3.4.3" - resolved "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz" - integrity sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw== - dependencies: - "@isaacs/cliui" "^8.0.2" - optionalDependencies: - "@pkgjs/parseargs" "^0.11.0" - jsonfile@^6.0.1: version "6.1.0" resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz" @@ -507,23 +366,6 @@ log@^6.0.0: type "^2.7.3" uni-global "^1.0.0" -lru-cache@^10.2.0: - version "10.4.3" - resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz" - integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== - -mime-db@1.52.0: - version "1.52.0" - resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" - integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== - -mime-types@^2.1.12: - version "2.1.35" - resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" - integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== - dependencies: - mime-db "1.52.0" - minimatch@^3.1.1: version "3.1.2" resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" @@ -531,18 +373,6 @@ minimatch@^3.1.1: dependencies: brace-expansion "^1.1.7" -minimatch@^9.0.4: - version "9.0.5" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz" - integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== - dependencies: - brace-expansion "^2.0.1" - -"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2: - version "7.1.2" - resolved "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz" - integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== - next-tick@^1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz" @@ -579,11 +409,6 @@ p-try@^2.0.0: resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== -package-json-from-dist@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz" - integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw== - pako@~1.0.2: version "1.0.11" resolved "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz" @@ -604,29 +429,11 @@ path-key@^2.0.1: resolved "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz" integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== -path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-scurry@^1.11.1: - version "1.11.1" - resolved "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz" - integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== - dependencies: - lru-cache "^10.2.0" - minipass "^5.0.0 || ^6.0.2 || ^7.0.0" - process-nextick-args@~2.0.0: version "2.0.1" resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== -proxy-from-env@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz" - integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== - readable-stream@^3.0.0: version "3.6.2" resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz" @@ -666,23 +473,11 @@ rimraf@^3.0.2: dependencies: glob "^7.1.3" -rimraf@^5.0.5: - version "5.0.10" - resolved "https://registry.npmjs.org/rimraf/-/rimraf-5.0.10.tgz" - integrity sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ== - dependencies: - glob "^10.3.7" - safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -sax@>=0.6.0: - version "1.4.1" - resolved "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz" - integrity sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg== - semver@^5.5.0: version "5.7.2" resolved "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz" @@ -720,16 +515,6 @@ serverless-python-requirements@^6.1.1: sha256-file "1.0.0" shell-quote "^1.8.1" -serverless@>=2.32: - version "4.5.0" - resolved "https://registry.npmjs.org/serverless/-/serverless-4.5.0.tgz" - integrity sha512-msbs5I/fuPiW0ZfBuFA7lpKazCTFtF0AhOCA0HsrJBGVaOrNbwzlC/krZKXn1YgDR2+cw/izKRNupZJXtpyxJQ== - dependencies: - axios "^1.7.4" - axios-proxy-builder "^0.1.2" - rimraf "^5.0.5" - xml2js "0.6.2" - set-blocking@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" @@ -760,33 +545,16 @@ shebang-command@^1.2.0: dependencies: shebang-regex "^1.0.0" -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - shebang-regex@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz" integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ== -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - shell-quote@^1.8.1: version "1.8.2" resolved "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.2.tgz" integrity sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA== -signal-exit@^4.0.1: - version "4.1.0" - resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz" - integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== - split2@^3.1.1: version "3.2.2" resolved "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz" @@ -810,22 +578,6 @@ stream-promise@^3.2.0: es5-ext "^0.10.49" is-stream "^1.1.0" -string_decoder@^1.1.1, string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -"string-width-cjs@npm:string-width@^4.2.0": - version "4.2.3" - resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - string-width@^4.1.0, string-width@^4.2.0: version "4.2.3" resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" @@ -835,21 +587,12 @@ string-width@^4.1.0, string-width@^4.2.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" -string-width@^5.0.1, string-width@^5.1.2: - version "5.1.2" - resolved "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz" - integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== - dependencies: - eastasianwidth "^0.2.0" - emoji-regex "^9.2.2" - strip-ansi "^7.0.1" - -"strip-ansi-cjs@npm:strip-ansi@^6.0.1": - version "6.0.1" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== +string_decoder@^1.1.1, string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== dependencies: - ansi-regex "^5.0.1" + safe-buffer "~5.1.0" strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" @@ -858,18 +601,6 @@ strip-ansi@^6.0.0, strip-ansi@^6.0.1: dependencies: ansi-regex "^5.0.1" -strip-ansi@^7.0.1: - version "7.1.0" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz" - integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== - dependencies: - ansi-regex "^6.0.1" - -tunnel@^0.0.6: - version "0.0.6" - resolved "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz" - integrity sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg== - type@^2.5.0, type@^2.7.2, type@^2.7.3: version "2.7.3" resolved "https://registry.npmjs.org/type/-/type-2.7.3.tgz" @@ -904,22 +635,6 @@ which@^1.2.9: dependencies: isexe "^2.0.0" -which@^2.0.1: - version "2.0.2" - resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": - version "7.0.0" - resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - wrap-ansi@^6.2.0: version "6.2.0" resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz" @@ -929,33 +644,11 @@ wrap-ansi@^6.2.0: string-width "^4.1.0" strip-ansi "^6.0.0" -wrap-ansi@^8.1.0: - version "8.1.0" - resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz" - integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== - dependencies: - ansi-styles "^6.1.0" - string-width "^5.0.1" - strip-ansi "^7.0.1" - wrappy@1: version "1.0.2" resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== -xml2js@0.6.2: - version "0.6.2" - resolved "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz" - integrity sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA== - dependencies: - sax ">=0.6.0" - xmlbuilder "~11.0.0" - -xmlbuilder@~11.0.0: - version "11.0.1" - resolved "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz" - integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== - y18n@^4.0.0: version "4.0.3" resolved "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz" From 267a5429a99e85746537a1585608497a9d355fef Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 19 Jun 2025 23:51:26 -0400 Subject: [PATCH 227/268] chore(deps): bump requests from 2.32.3 to 2.32.4 (#615) --- poetry.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/poetry.lock b/poetry.lock index 434f887c..4c37bf87 100644 --- a/poetry.lock +++ b/poetry.lock @@ -606,19 +606,19 @@ six = ">=1.5" [[package]] name = "requests" -version = "2.32.3" +version = "2.32.4" description = "Python HTTP for Humans." optional = false python-versions = ">=3.8" groups = ["main"] files = [ - {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, - {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, + {file = "requests-2.32.4-py3-none-any.whl", hash = "sha256:27babd3cda2a6d50b30443204ee89830707d396671944c998b5975b031ac2b2c"}, + {file = "requests-2.32.4.tar.gz", hash = "sha256:27d0316682c8a29834d3264820024b62a36942083d52caf2f14c0591336d3422"}, ] [package.dependencies] certifi = ">=2017.4.17" -charset-normalizer = ">=2,<4" +charset_normalizer = ">=2,<4" idna = ">=2.5,<4" urllib3 = ">=1.21.1,<3" From b08b7635675826278170dbb570e2d9307ae02cf9 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Mon, 23 Jun 2025 12:46:01 -0400 Subject: [PATCH 228/268] release v6.111.0 (#625) --- datadog_lambda/version.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index 9534f0c7..2bb1df7f 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "6.110.0" +__version__ = "6.111.0" diff --git a/pyproject.toml b/pyproject.toml index ba5bcb17..1d5feb7f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "6.110.0" +version = "6.111.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 555ed5bd0635afe57c8bdfe4c09767effe24f855 Mon Sep 17 00:00:00 2001 From: Florentin Labelle Date: Thu, 26 Jun 2025 09:54:10 +0200 Subject: [PATCH 229/268] feat: initial support for ASM inside the tracer (#621) * build: add back libddwaf in the layer * fix: ensure the start_ns of a function url inferred span is an int * feat(asm): enable Threat Detection inside AWS Lambda for HTTP events * test(asm): test parsing events for lambda * build: bump layer size check * fix(asm): work with non dictionary responses * fix(asm): add extra check + comment on listeners --- Dockerfile | 1 - datadog_lambda/asm.py | 174 +++++++++ datadog_lambda/config.py | 1 + datadog_lambda/tracing.py | 2 +- datadog_lambda/wrapper.py | 12 + scripts/check_layer_size.sh | 4 +- ...ation-load-balancer-mutivalue-headers.json | 31 ++ tests/test_asm.py | 329 ++++++++++++++++++ 8 files changed, 550 insertions(+), 4 deletions(-) create mode 100644 datadog_lambda/asm.py create mode 100644 tests/event_samples/application-load-balancer-mutivalue-headers.json create mode 100644 tests/test_asm.py diff --git a/Dockerfile b/Dockerfile index 0e79d884..c5824528 100644 --- a/Dockerfile +++ b/Dockerfile @@ -21,7 +21,6 @@ RUN pip install --no-cache-dir . -t ./python/lib/$runtime/site-packages RUN rm -rf ./python/lib/$runtime/site-packages/botocore* RUN rm -rf ./python/lib/$runtime/site-packages/setuptools RUN rm -rf ./python/lib/$runtime/site-packages/jsonschema/tests -RUN find . -name 'libddwaf.so' -delete RUN rm -f ./python/lib/$runtime/site-packages/ddtrace/appsec/_iast/_taint_tracking/*.so RUN rm -f ./python/lib/$runtime/site-packages/ddtrace/appsec/_iast/_stacktrace*.so RUN rm -f ./python/lib/$runtime/site-packages/ddtrace/internal/datadog/profiling/libdd_wrapper*.so diff --git a/datadog_lambda/asm.py b/datadog_lambda/asm.py new file mode 100644 index 00000000..aab0f1e9 --- /dev/null +++ b/datadog_lambda/asm.py @@ -0,0 +1,174 @@ +from copy import deepcopy +import logging +from typing import Any, Dict, List, Optional, Union + +from ddtrace.contrib.internal.trace_utils import _get_request_header_client_ip +from ddtrace.internal import core +from ddtrace.trace import Span + +from datadog_lambda.trigger import ( + EventSubtypes, + EventTypes, + _EventSource, + _http_event_types, +) + +logger = logging.getLogger(__name__) + + +def _to_single_value_headers(headers: Dict[str, List[str]]) -> Dict[str, str]: + """ + Convert multi-value headers to single-value headers. + If a header has multiple values, join them with commas. + """ + single_value_headers = {} + for key, values in headers.items(): + single_value_headers[key] = ", ".join(values) + return single_value_headers + + +def _merge_single_and_multi_value_headers( + single_value_headers: Dict[str, str], + multi_value_headers: Dict[str, List[str]], +): + """ + Merge single-value headers with multi-value headers. + If a header exists in both, we merge them removing duplicates + """ + merged_headers = deepcopy(multi_value_headers) + for key, value in single_value_headers.items(): + if key not in merged_headers: + merged_headers[key] = [value] + elif value not in merged_headers[key]: + merged_headers[key].append(value) + return _to_single_value_headers(merged_headers) + + +def asm_start_request( + span: Span, + event: Dict[str, Any], + event_source: _EventSource, + trigger_tags: Dict[str, str], +): + if event_source.event_type not in _http_event_types: + return + + request_headers: Dict[str, str] = {} + peer_ip: Optional[str] = None + request_path_parameters: Optional[Dict[str, Any]] = None + route: Optional[str] = None + + if event_source.event_type == EventTypes.ALB: + headers = event.get("headers") + multi_value_request_headers = event.get("multiValueHeaders") + if multi_value_request_headers: + request_headers = _to_single_value_headers(multi_value_request_headers) + else: + request_headers = headers or {} + + raw_uri = event.get("path") + parsed_query = event.get("multiValueQueryStringParameters") or event.get( + "queryStringParameters" + ) + + elif event_source.event_type == EventTypes.LAMBDA_FUNCTION_URL: + request_headers = event.get("headers", {}) + peer_ip = event.get("requestContext", {}).get("http", {}).get("sourceIp") + raw_uri = event.get("rawPath") + parsed_query = event.get("queryStringParameters") + + elif event_source.event_type == EventTypes.API_GATEWAY: + request_context = event.get("requestContext", {}) + request_path_parameters = event.get("pathParameters") + route = trigger_tags.get("http.route") + + if event_source.subtype == EventSubtypes.API_GATEWAY: + request_headers = event.get("headers", {}) + peer_ip = request_context.get("identity", {}).get("sourceIp") + raw_uri = event.get("path") + parsed_query = event.get("multiValueQueryStringParameters") + + elif event_source.subtype == EventSubtypes.HTTP_API: + request_headers = event.get("headers", {}) + peer_ip = request_context.get("http", {}).get("sourceIp") + raw_uri = event.get("rawPath") + parsed_query = event.get("queryStringParameters") + + elif event_source.subtype == EventSubtypes.WEBSOCKET: + request_headers = _to_single_value_headers( + event.get("multiValueHeaders", {}) + ) + peer_ip = request_context.get("identity", {}).get("sourceIp") + raw_uri = event.get("path") + parsed_query = event.get("multiValueQueryStringParameters") + + else: + return + + else: + return + + body = event.get("body") + is_base64_encoded = event.get("isBase64Encoded", False) + + request_ip = _get_request_header_client_ip(request_headers, peer_ip, True) + if request_ip is not None: + span.set_tag_str("http.client_ip", request_ip) + span.set_tag_str("network.client.ip", request_ip) + + core.dispatch( + # The matching listener is registered in ddtrace.appsec._handlers + "aws_lambda.start_request", + ( + span, + request_headers, + request_ip, + body, + is_base64_encoded, + raw_uri, + route, + trigger_tags.get("http.method"), + parsed_query, + request_path_parameters, + ), + ) + + +def asm_start_response( + span: Span, + status_code: str, + event_source: _EventSource, + response: Union[Dict[str, Any], str, None], +): + if event_source.event_type not in _http_event_types: + return + + if isinstance(response, dict) and ( + "headers" in response or "multiValueHeaders" in response + ): + headers = response.get("headers", {}) + multi_value_request_headers = response.get("multiValueHeaders") + if isinstance(multi_value_request_headers, dict) and isinstance(headers, dict): + response_headers = _merge_single_and_multi_value_headers( + headers, multi_value_request_headers + ) + elif isinstance(headers, dict): + response_headers = headers + else: + response_headers = { + "content-type": "application/json", + } + else: + response_headers = { + "content-type": "application/json", + } + + core.dispatch( + # The matching listener is registered in ddtrace.appsec._handlers + "aws_lambda.start_response", + ( + span, + status_code, + response_headers, + ), + ) diff --git a/datadog_lambda/config.py b/datadog_lambda/config.py index 7a08d8a7..aaa1af5e 100644 --- a/datadog_lambda/config.py +++ b/datadog_lambda/config.py @@ -95,6 +95,7 @@ def _resolve_env(self, key, default=None, cast=None, depends_on_tracing=False): data_streams_enabled = _get_env( "DD_DATA_STREAMS_ENABLED", "false", as_bool, depends_on_tracing=True ) + appsec_enabled = _get_env("DD_APPSEC_ENABLED", "false", as_bool) is_gov_region = _get_env("AWS_REGION", "", lambda x: x.startswith("us-gov-")) diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 3d5f671e..89a4126b 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -859,7 +859,7 @@ def create_inferred_span_from_lambda_function_url_event(event, context): InferredSpanInfo.set_tags(tags, tag_source="self", synchronicity="sync") if span: span.set_tags(tags) - span.start_ns = int(request_time_epoch) * 1e6 + span.start_ns = int(request_time_epoch * 1e6) return span diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index 87063411..29972bf4 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -9,6 +9,7 @@ from importlib import import_module from time import time_ns +from datadog_lambda.asm import asm_start_response, asm_start_request from datadog_lambda.dsm import set_dsm_context from datadog_lambda.extension import should_use_extension, flush_extension from datadog_lambda.cold_start import ( @@ -253,6 +254,8 @@ def _before(self, event, context): parent_span=self.inferred_span, span_pointers=calculate_span_pointers(event_source, event), ) + if config.appsec_enabled: + asm_start_request(self.span, event, event_source, self.trigger_tags) else: set_correlation_ids() if config.profiling_enabled and is_new_sandbox(): @@ -285,6 +288,15 @@ def _after(self, event, context): if status_code: self.span.set_tag("http.status_code", status_code) + + if config.appsec_enabled: + asm_start_response( + self.span, + status_code, + self.event_source, + response=self.response, + ) + self.span.finish() if self.inferred_span: diff --git a/scripts/check_layer_size.sh b/scripts/check_layer_size.sh index 90d5861b..626f9d31 100755 --- a/scripts/check_layer_size.sh +++ b/scripts/check_layer_size.sh @@ -8,8 +8,8 @@ # Compares layer size to threshold, and fails if below that threshold set -e -MAX_LAYER_COMPRESSED_SIZE_KB=$(expr 5 \* 1024) -MAX_LAYER_UNCOMPRESSED_SIZE_KB=$(expr 13 \* 1024) +MAX_LAYER_COMPRESSED_SIZE_KB=$(expr 6 \* 1024) +MAX_LAYER_UNCOMPRESSED_SIZE_KB=$(expr 15 \* 1024) LAYER_FILES_PREFIX="datadog_lambda_py" diff --git a/tests/event_samples/application-load-balancer-mutivalue-headers.json b/tests/event_samples/application-load-balancer-mutivalue-headers.json new file mode 100644 index 00000000..6d446d15 --- /dev/null +++ b/tests/event_samples/application-load-balancer-mutivalue-headers.json @@ -0,0 +1,31 @@ +{ + "requestContext": { + "elb": { + "targetGroupArn": "arn:aws:elasticloadbalancing:us-east-2:123456789012:targetgroup/lambda-xyz/123abc" + } + }, + "httpMethod": "GET", + "path": "/lambda", + "queryStringParameters": { + "query": "1234ABCD" + }, + "multiValueHeaders": { + "accept": ["text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8"], + "accept-encoding": ["gzip"], + "accept-language": ["en-US,en;q=0.9"], + "connection": ["keep-alive"], + "host": ["lambda-alb-123578498.us-east-2.elb.amazonaws.com"], + "upgrade-insecure-requests": ["1"], + "user-agent": ["Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36"], + "x-amzn-trace-id": ["Root=1-5c536348-3d683b8b04734faae651f476"], + "x-forwarded-for": ["72.12.164.125"], + "x-forwarded-port": ["80"], + "x-forwarded-proto": ["http"], + "x-imforwards": ["20"], + "x-datadog-trace-id": ["12345"], + "x-datadog-parent-id": ["67890"], + "x-datadog-sampling-priority": ["2"] + }, + "body": "", + "isBase64Encoded": false +} diff --git a/tests/test_asm.py b/tests/test_asm.py new file mode 100644 index 00000000..e57c289f --- /dev/null +++ b/tests/test_asm.py @@ -0,0 +1,329 @@ +import json +import pytest +from unittest.mock import MagicMock, patch + +from datadog_lambda.asm import asm_start_request, asm_start_response +from datadog_lambda.trigger import parse_event_source, extract_trigger_tags +from tests.utils import get_mock_context + +event_samples = "tests/event_samples/" + + +# Test cases for ASM start request +ASM_START_REQUEST_TEST_CASES = [ + ( + "application_load_balancer", + "application-load-balancer.json", + "72.12.164.125", + "/lambda", + "GET", + "", + False, + {"query": "1234ABCD"}, + None, + None, + ), + ( + "application_load_balancer_multivalue_headers", + "application-load-balancer-mutivalue-headers.json", + "72.12.164.125", + "/lambda", + "GET", + "", + False, + {"query": "1234ABCD"}, + None, + None, + ), + ( + "lambda_function_url", + "lambda-url.json", + "71.195.30.42", + "/", + "GET", + None, + False, + None, + None, + None, + ), + ( + "api_gateway", + "api-gateway.json", + "127.0.0.1", + "/path/to/resource", + "POST", + "eyJ0ZXN0IjoiYm9keSJ9", + True, + {"foo": ["bar"]}, + {"proxy": "/path/to/resource"}, + "/{proxy+}", + ), + ( + "api_gateway_v2_parametrized", + "api-gateway-v2-parametrized.json", + "76.115.124.192", + "/user/42", + "GET", + None, + False, + None, + {"id": "42"}, + "/user/{id}", + ), + ( + "api_gateway_websocket", + "api-gateway-websocket-default.json", + "38.122.226.210", + None, + None, + '"What\'s good in the hood?"', + False, + None, + None, + None, + ), +] + + +# Test cases for ASM start response +ASM_START_RESPONSE_TEST_CASES = [ + ( + "application_load_balancer", + "application-load-balancer.json", + { + "statusCode": 200, + "headers": {"Content-Type": "text/html"}, + }, + "200", + {"Content-Type": "text/html"}, + True, + ), + ( + "application_load_balancer_multivalue_headers", + "application-load-balancer-mutivalue-headers.json", + { + "statusCode": 404, + "multiValueHeaders": { + "Content-Type": ["text/plain"], + "X-Error": ["Not Found"], + }, + }, + "404", + { + "Content-Type": "text/plain", + "X-Error": "Not Found", + }, + True, + ), + ( + "lambda_function_url", + "lambda-url.json", + { + "statusCode": 201, + "headers": { + "Location": "/user/123", + "Content-Type": "application/json", + }, + }, + "201", + { + "Location": "/user/123", + "Content-Type": "application/json", + }, + True, + ), + ( + "api_gateway", + "api-gateway.json", + { + "statusCode": 200, + "headers": { + "Content-Type": "application/json", + "X-Custom-Header": "test-value", + }, + "body": '{"message": "success"}', + }, + "200", + { + "Content-Type": "application/json", + "X-Custom-Header": "test-value", + }, + True, + ), + ( + "api_gateway_v2_parametrized", + "api-gateway-v2-parametrized.json", + { + "statusCode": 200, + "headers": {"Content-Type": "application/json"}, + }, + "200", + {"Content-Type": "application/json"}, + True, + ), + ( + "api_gateway_websocket", + "api-gateway-websocket-default.json", + { + "statusCode": 200, + "headers": {"Content-Type": "text/plain"}, + }, + "200", + {"Content-Type": "text/plain"}, + True, + ), + ( + "non_http_event_s3", + "s3.json", + {"statusCode": 200}, + "200", + {}, + False, # Should not dispatch for non-HTTP events + ), + ( + "api_gateway_v2_string_response", + "api-gateway-v2-parametrized.json", + "Hello, World!", + "200", + {"content-type": "application/json"}, + True, + ), + ( + "api_gateway_v2_dict_response", + "api-gateway-v2-parametrized.json", + {"message": "Hello, World!"}, + "200", + {"content-type": "application/json"}, + True, + ), +] + + +@pytest.mark.parametrize( + "name,file,expected_ip,expected_uri,expected_method,expected_body,expected_base64,expected_query,expected_path_params,expected_route", + ASM_START_REQUEST_TEST_CASES, +) +@patch("datadog_lambda.asm.core") +def test_asm_start_request_parametrized( + mock_core, + name, + file, + expected_ip, + expected_uri, + expected_method, + expected_body, + expected_base64, + expected_query, + expected_path_params, + expected_route, +): + """Test ASM start request for various HTTP event types using parametrization""" + mock_span = MagicMock() + ctx = get_mock_context() + + # Reset mock for each test + mock_core.reset_mock() + mock_span.reset_mock() + + test_file = event_samples + file + with open(test_file, "r") as f: + event = json.load(f) + + event_source = parse_event_source(event) + trigger_tags = extract_trigger_tags(event, ctx) + + asm_start_request(mock_span, event, event_source, trigger_tags) + + # Verify core.dispatch was called + mock_core.dispatch.assert_called_once() + call_args = mock_core.dispatch.call_args + dispatch_args = call_args[0][1] + ( + span, + request_headers, + request_ip, + body, + is_base64_encoded, + raw_uri, + http_route, + http_method, + parsed_query, + request_path_parameters, + ) = dispatch_args + + # Common assertions + assert span == mock_span + assert isinstance(request_headers, dict) + + # Specific assertions based on test case + assert request_ip == expected_ip + assert raw_uri == expected_uri + assert http_method == expected_method + assert body == expected_body + assert is_base64_encoded == expected_base64 + + if expected_query is not None: + assert parsed_query == expected_query + else: + assert parsed_query is None + + if expected_path_params is not None: + assert request_path_parameters == expected_path_params + else: + assert request_path_parameters is None + + # Check route is correctly extracted and passed + assert http_route == expected_route + + # Check IP tags were set if IP is present + if expected_ip: + mock_span.set_tag_str.assert_any_call("http.client_ip", expected_ip) + mock_span.set_tag_str.assert_any_call("network.client.ip", expected_ip) + + +@pytest.mark.parametrize( + "name,event_file,response,status_code,expected_headers,should_dispatch", + ASM_START_RESPONSE_TEST_CASES, +) +@patch("datadog_lambda.asm.core") +def test_asm_start_response_parametrized( + mock_core, + name, + event_file, + response, + status_code, + expected_headers, + should_dispatch, +): + """Test ASM start response for various HTTP event types using parametrization""" + mock_span = MagicMock() + + # Reset mock for each test + mock_core.reset_mock() + mock_span.reset_mock() + + test_file = event_samples + event_file + with open(test_file, "r") as f: + event = json.load(f) + + event_source = parse_event_source(event) + + asm_start_response(mock_span, status_code, event_source, response) + + if should_dispatch: + # Verify core.dispatch was called + mock_core.dispatch.assert_called_once() + call_args = mock_core.dispatch.call_args + assert call_args[0][0] == "aws_lambda.start_response" + + # Extract the dispatched arguments + dispatch_args = call_args[0][1] + span, response_status_code, response_headers = dispatch_args + + assert span == mock_span + assert response_status_code == status_code + assert response_headers == expected_headers + else: + # Verify core.dispatch was not called for non-HTTP events + mock_core.dispatch.assert_not_called() From 495c7704cbace47bc7b6ad87756f9c2857f1dc7c Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Thu, 26 Jun 2025 12:16:07 -0400 Subject: [PATCH 230/268] bugfix: error metrics should be sent during exception handling (#626) Signed-off-by: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> --- datadog_lambda/wrapper.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index 29972bf4..98a1e87e 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -166,10 +166,9 @@ def __call__(self, event, context, **kwargs): self.response = self.func(event, context, **kwargs) return self.response except Exception: - if not should_use_extension: - from datadog_lambda.metric import submit_errors_metric + from datadog_lambda.metric import submit_errors_metric - submit_errors_metric(context) + submit_errors_metric(context) if self.span: self.span.set_traceback() From d72ebaaa960f48d06ba199dd69bef954bf535f92 Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Mon, 30 Jun 2025 14:33:24 -0700 Subject: [PATCH 231/268] fix: call `patch_all` before importing handler code. (#598) * Call `patch_all` before importing handler code. * Remove tests for patch_all. * Move patch_all to init. * Update integration tests. --- datadog_lambda/__init__.py | 7 ++ datadog_lambda/wrapper.py | 3 - .../logs/async-metrics_python310.log | 90 ++++++++------ .../logs/async-metrics_python311.log | 90 ++++++++------ .../logs/async-metrics_python312.log | 90 ++++++++------ .../logs/async-metrics_python313.log | 90 ++++++++------ .../snapshots/logs/async-metrics_python38.log | 90 ++++++++------ .../snapshots/logs/async-metrics_python39.log | 90 ++++++++------ .../snapshots/logs/sync-metrics_python310.log | 117 +++++++++++------- .../snapshots/logs/sync-metrics_python311.log | 117 +++++++++++------- .../snapshots/logs/sync-metrics_python312.log | 117 +++++++++++------- .../snapshots/logs/sync-metrics_python313.log | 117 +++++++++++------- .../snapshots/logs/sync-metrics_python38.log | 117 +++++++++++------- .../snapshots/logs/sync-metrics_python39.log | 117 +++++++++++------- tests/test_wrapper.py | 6 - 15 files changed, 763 insertions(+), 495 deletions(-) diff --git a/datadog_lambda/__init__.py b/datadog_lambda/__init__.py index 378fd15c..f319d2ed 100644 --- a/datadog_lambda/__init__.py +++ b/datadog_lambda/__init__.py @@ -17,3 +17,10 @@ initialize_logging(__name__) + + +from datadog_lambda.patch import patch_all # noqa: E402 + +# Patch third-party libraries for tracing, must be done before importing any +# handler code. +patch_all() diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index 98a1e87e..c7474f65 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -26,7 +26,6 @@ Headers, ) from datadog_lambda.module_name import modify_module_name -from datadog_lambda.patch import patch_all from datadog_lambda.span_pointers import calculate_span_pointers from datadog_lambda.tag_object import tag_object from datadog_lambda.tracing import ( @@ -143,8 +142,6 @@ def __init__(self, func): os.environ[DD_REQUESTS_SERVICE_NAME] = os.environ.get( DD_SERVICE, "aws.lambda" ) - # Patch third-party libraries for tracing - patch_all() # Enable LLM Observability if config.llmobs_enabled: diff --git a/tests/integration/snapshots/logs/async-metrics_python310.log b/tests/integration/snapshots/logs/async-metrics_python310.log index 0bd7237c..bda234df 100644 --- a/tests/integration/snapshots/logs/async-metrics_python310.log +++ b/tests/integration/snapshots/logs/async-metrics_python310.log @@ -119,7 +119,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -133,7 +133,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -145,7 +146,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -160,7 +161,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -326,7 +328,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -340,7 +342,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -352,7 +355,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -367,7 +370,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -485,7 +489,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -499,7 +503,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -511,7 +516,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -526,7 +531,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -660,7 +666,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -674,7 +680,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -686,7 +693,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -701,7 +708,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -826,7 +834,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -840,7 +848,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -852,7 +861,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -867,7 +876,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1001,7 +1011,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1015,7 +1025,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1027,7 +1038,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1042,7 +1053,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1165,7 +1177,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1179,7 +1191,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1191,7 +1204,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1206,7 +1219,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1328,7 +1342,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1342,7 +1356,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1354,7 +1369,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1369,7 +1384,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1499,7 +1515,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1513,7 +1529,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1525,7 +1542,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1540,7 +1557,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 diff --git a/tests/integration/snapshots/logs/async-metrics_python311.log b/tests/integration/snapshots/logs/async-metrics_python311.log index 8550a062..fd318de3 100644 --- a/tests/integration/snapshots/logs/async-metrics_python311.log +++ b/tests/integration/snapshots/logs/async-metrics_python311.log @@ -119,7 +119,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -133,7 +133,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -145,7 +146,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -160,7 +161,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -326,7 +328,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -340,7 +342,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -352,7 +355,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -367,7 +370,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -485,7 +489,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -499,7 +503,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -511,7 +516,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -526,7 +531,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -660,7 +666,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -674,7 +680,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -686,7 +693,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -701,7 +708,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -826,7 +834,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -840,7 +848,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -852,7 +861,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -867,7 +876,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1001,7 +1011,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1015,7 +1025,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1027,7 +1038,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1042,7 +1053,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1165,7 +1177,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1179,7 +1191,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1191,7 +1204,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1206,7 +1219,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1328,7 +1342,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1342,7 +1356,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1354,7 +1369,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1369,7 +1384,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1499,7 +1515,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1513,7 +1529,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1525,7 +1542,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1540,7 +1557,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 diff --git a/tests/integration/snapshots/logs/async-metrics_python312.log b/tests/integration/snapshots/logs/async-metrics_python312.log index 57c318ab..b51b6a2d 100644 --- a/tests/integration/snapshots/logs/async-metrics_python312.log +++ b/tests/integration/snapshots/logs/async-metrics_python312.log @@ -119,7 +119,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -133,7 +133,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -145,7 +146,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -160,7 +161,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -326,7 +328,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -340,7 +342,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -352,7 +355,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -367,7 +370,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -485,7 +489,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -499,7 +503,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -511,7 +516,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -526,7 +531,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -660,7 +666,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -674,7 +680,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -686,7 +693,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -701,7 +708,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -826,7 +834,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -840,7 +848,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -852,7 +861,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -867,7 +876,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1001,7 +1011,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1015,7 +1025,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1027,7 +1038,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1042,7 +1053,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1165,7 +1177,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1179,7 +1191,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1191,7 +1204,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1206,7 +1219,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1328,7 +1342,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1342,7 +1356,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1354,7 +1369,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1369,7 +1384,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1499,7 +1515,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1513,7 +1529,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1525,7 +1542,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1540,7 +1557,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 diff --git a/tests/integration/snapshots/logs/async-metrics_python313.log b/tests/integration/snapshots/logs/async-metrics_python313.log index 9204499b..89b73e92 100644 --- a/tests/integration/snapshots/logs/async-metrics_python313.log +++ b/tests/integration/snapshots/logs/async-metrics_python313.log @@ -119,7 +119,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -133,7 +133,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -145,7 +146,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -160,7 +161,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -326,7 +328,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -340,7 +342,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -352,7 +355,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -367,7 +370,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -485,7 +489,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -499,7 +503,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -511,7 +516,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -526,7 +531,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -660,7 +666,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -674,7 +680,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -686,7 +693,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -701,7 +708,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -826,7 +834,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -840,7 +848,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -852,7 +861,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -867,7 +876,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1001,7 +1011,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1015,7 +1025,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1027,7 +1038,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1042,7 +1053,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1165,7 +1177,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1179,7 +1191,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1191,7 +1204,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1206,7 +1219,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1328,7 +1342,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1342,7 +1356,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1354,7 +1369,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1369,7 +1384,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1499,7 +1515,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1513,7 +1529,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1525,7 +1542,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1540,7 +1557,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 diff --git a/tests/integration/snapshots/logs/async-metrics_python38.log b/tests/integration/snapshots/logs/async-metrics_python38.log index e6df054c..ff5e5a60 100644 --- a/tests/integration/snapshots/logs/async-metrics_python38.log +++ b/tests/integration/snapshots/logs/async-metrics_python38.log @@ -119,7 +119,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -133,7 +133,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -145,7 +146,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -160,7 +161,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -326,7 +328,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -340,7 +342,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -352,7 +355,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -367,7 +370,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -485,7 +489,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -499,7 +503,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -511,7 +516,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -526,7 +531,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -660,7 +666,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -674,7 +680,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -686,7 +693,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -701,7 +708,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -826,7 +834,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -840,7 +848,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -852,7 +861,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -867,7 +876,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1001,7 +1011,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1015,7 +1025,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1027,7 +1038,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1042,7 +1053,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1165,7 +1177,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1179,7 +1191,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1191,7 +1204,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1206,7 +1219,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1328,7 +1342,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1342,7 +1356,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1354,7 +1369,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1369,7 +1384,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1499,7 +1515,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1513,7 +1529,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1525,7 +1542,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1540,7 +1557,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 diff --git a/tests/integration/snapshots/logs/async-metrics_python39.log b/tests/integration/snapshots/logs/async-metrics_python39.log index 9bcb7a85..5e3d46b6 100644 --- a/tests/integration/snapshots/logs/async-metrics_python39.log +++ b/tests/integration/snapshots/logs/async-metrics_python39.log @@ -119,7 +119,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -133,7 +133,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -145,7 +146,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -160,7 +161,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -326,7 +328,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -340,7 +342,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -352,7 +355,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -367,7 +370,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -485,7 +489,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -499,7 +503,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -511,7 +516,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -526,7 +531,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -660,7 +666,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -674,7 +680,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -686,7 +693,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -701,7 +708,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -826,7 +834,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -840,7 +848,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -852,7 +861,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -867,7 +876,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1001,7 +1011,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1015,7 +1025,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1027,7 +1038,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1042,7 +1053,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1165,7 +1177,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1179,7 +1191,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1191,7 +1204,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1206,7 +1219,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1328,7 +1342,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1342,7 +1356,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1354,7 +1369,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1369,7 +1384,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1499,7 +1515,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1513,7 +1529,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1525,7 +1542,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1540,7 +1557,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 diff --git a/tests/integration/snapshots/logs/sync-metrics_python310.log b/tests/integration/snapshots/logs/sync-metrics_python310.log index 40562a6d..21569831 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python310.log +++ b/tests/integration/snapshots/logs/sync-metrics_python310.log @@ -99,7 +99,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -113,7 +113,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -125,7 +126,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -140,7 +141,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -158,7 +160,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -174,6 +176,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -325,7 +328,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -339,7 +342,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -351,7 +355,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -366,7 +370,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -384,7 +389,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -400,6 +405,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -503,7 +509,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -517,7 +523,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -529,7 +536,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -544,7 +551,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -562,7 +570,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -578,6 +586,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -697,7 +706,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -711,7 +720,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -723,7 +733,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -738,7 +748,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -756,7 +767,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -772,6 +783,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -882,7 +894,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -896,7 +908,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -908,7 +921,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -923,7 +936,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -941,7 +955,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -957,6 +971,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1076,7 +1091,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1090,7 +1105,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1102,7 +1118,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1117,7 +1133,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1135,7 +1152,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -1151,6 +1168,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1259,7 +1277,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1273,7 +1291,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1285,7 +1304,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1300,7 +1319,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1318,7 +1338,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -1334,6 +1354,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1441,7 +1462,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1455,7 +1476,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1467,7 +1489,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1482,7 +1504,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1500,7 +1523,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -1516,6 +1539,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1631,7 +1655,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1645,7 +1669,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1657,7 +1682,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1672,7 +1697,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1690,7 +1716,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -1706,6 +1732,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" diff --git a/tests/integration/snapshots/logs/sync-metrics_python311.log b/tests/integration/snapshots/logs/sync-metrics_python311.log index 52ec4c85..5fcd504d 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python311.log +++ b/tests/integration/snapshots/logs/sync-metrics_python311.log @@ -99,7 +99,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -113,7 +113,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -125,7 +126,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -140,7 +141,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -158,7 +160,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -174,6 +176,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -325,7 +328,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -339,7 +342,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -351,7 +355,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -366,7 +370,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -384,7 +389,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -400,6 +405,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -503,7 +509,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -517,7 +523,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -529,7 +536,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -544,7 +551,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -562,7 +570,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -578,6 +586,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -697,7 +706,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -711,7 +720,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -723,7 +733,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -738,7 +748,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -756,7 +767,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -772,6 +783,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -882,7 +894,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -896,7 +908,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -908,7 +921,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -923,7 +936,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -941,7 +955,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -957,6 +971,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1076,7 +1091,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1090,7 +1105,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1102,7 +1118,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1117,7 +1133,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1135,7 +1152,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -1151,6 +1168,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1259,7 +1277,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1273,7 +1291,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1285,7 +1304,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1300,7 +1319,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1318,7 +1338,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -1334,6 +1354,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1441,7 +1462,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1455,7 +1476,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1467,7 +1489,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1482,7 +1504,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1500,7 +1523,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -1516,6 +1539,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1631,7 +1655,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1645,7 +1669,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1657,7 +1682,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1672,7 +1697,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1690,7 +1716,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -1706,6 +1732,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" diff --git a/tests/integration/snapshots/logs/sync-metrics_python312.log b/tests/integration/snapshots/logs/sync-metrics_python312.log index 3ec0f01f..9a05404c 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python312.log +++ b/tests/integration/snapshots/logs/sync-metrics_python312.log @@ -99,7 +99,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -113,7 +113,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -125,7 +126,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -140,7 +141,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -158,7 +160,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -174,6 +176,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -325,7 +328,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -339,7 +342,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -351,7 +355,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -366,7 +370,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -384,7 +389,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -400,6 +405,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -503,7 +509,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -517,7 +523,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -529,7 +536,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -544,7 +551,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -562,7 +570,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -578,6 +586,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -697,7 +706,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -711,7 +720,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -723,7 +733,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -738,7 +748,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -756,7 +767,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -772,6 +783,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -882,7 +894,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -896,7 +908,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -908,7 +921,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -923,7 +936,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -941,7 +955,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -957,6 +971,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1076,7 +1091,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1090,7 +1105,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1102,7 +1118,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1117,7 +1133,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1135,7 +1152,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -1151,6 +1168,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1259,7 +1277,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1273,7 +1291,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1285,7 +1304,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1300,7 +1319,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1318,7 +1338,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -1334,6 +1354,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1441,7 +1462,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1455,7 +1476,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1467,7 +1489,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1482,7 +1504,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1500,7 +1523,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -1516,6 +1539,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1631,7 +1655,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1645,7 +1669,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1657,7 +1682,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1672,7 +1697,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1690,7 +1716,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -1706,6 +1732,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" diff --git a/tests/integration/snapshots/logs/sync-metrics_python313.log b/tests/integration/snapshots/logs/sync-metrics_python313.log index d2c20dc0..5d17bed5 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python313.log +++ b/tests/integration/snapshots/logs/sync-metrics_python313.log @@ -99,7 +99,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -113,7 +113,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -125,7 +126,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -140,7 +141,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -158,7 +160,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -174,6 +176,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -325,7 +328,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -339,7 +342,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -351,7 +355,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -366,7 +370,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -384,7 +389,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -400,6 +405,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -503,7 +509,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -517,7 +523,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -529,7 +536,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -544,7 +551,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -562,7 +570,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -578,6 +586,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -697,7 +706,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -711,7 +720,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -723,7 +733,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -738,7 +748,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -756,7 +767,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -772,6 +783,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -882,7 +894,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -896,7 +908,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -908,7 +921,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -923,7 +936,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -941,7 +955,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -957,6 +971,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1076,7 +1091,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1090,7 +1105,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1102,7 +1118,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1117,7 +1133,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1135,7 +1152,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -1151,6 +1168,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1259,7 +1277,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1273,7 +1291,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1285,7 +1304,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1300,7 +1319,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1318,7 +1338,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -1334,6 +1354,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1441,7 +1462,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1455,7 +1476,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1467,7 +1489,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1482,7 +1504,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1500,7 +1523,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -1516,6 +1539,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1631,7 +1655,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1645,7 +1669,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1657,7 +1682,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1672,7 +1697,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1690,7 +1716,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -1706,6 +1732,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" diff --git a/tests/integration/snapshots/logs/sync-metrics_python38.log b/tests/integration/snapshots/logs/sync-metrics_python38.log index 57a354a6..37ed391e 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python38.log +++ b/tests/integration/snapshots/logs/sync-metrics_python38.log @@ -99,7 +99,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -113,7 +113,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -125,7 +126,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -140,7 +141,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -158,7 +160,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -174,6 +176,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -325,7 +328,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -339,7 +342,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -351,7 +355,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -366,7 +370,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -384,7 +389,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -400,6 +405,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -503,7 +509,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -517,7 +523,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -529,7 +536,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -544,7 +551,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -562,7 +570,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -578,6 +586,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -697,7 +706,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -711,7 +720,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -723,7 +733,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -738,7 +748,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -756,7 +767,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -772,6 +783,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -882,7 +894,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -896,7 +908,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -908,7 +921,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -923,7 +936,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -941,7 +955,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -957,6 +971,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1076,7 +1091,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1090,7 +1105,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1102,7 +1118,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1117,7 +1133,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1135,7 +1152,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -1151,6 +1168,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1259,7 +1277,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1273,7 +1291,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1285,7 +1304,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1300,7 +1319,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1318,7 +1338,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -1334,6 +1354,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1441,7 +1462,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1455,7 +1476,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1467,7 +1489,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1482,7 +1504,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1500,7 +1523,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -1516,6 +1539,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1631,7 +1655,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1645,7 +1669,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1657,7 +1682,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1672,7 +1697,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1690,7 +1716,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -1706,6 +1732,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" diff --git a/tests/integration/snapshots/logs/sync-metrics_python39.log b/tests/integration/snapshots/logs/sync-metrics_python39.log index 8b7bb31b..f147744b 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python39.log +++ b/tests/integration/snapshots/logs/sync-metrics_python39.log @@ -99,7 +99,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -113,7 +113,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -125,7 +126,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -140,7 +141,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -158,7 +160,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -174,6 +176,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -325,7 +328,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -339,7 +342,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -351,7 +355,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -366,7 +370,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -384,7 +389,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -400,6 +405,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -503,7 +509,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -517,7 +523,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -529,7 +536,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -544,7 +551,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -562,7 +570,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -578,6 +586,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -697,7 +706,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -711,7 +720,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -723,7 +733,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -738,7 +748,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -756,7 +767,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -772,6 +783,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -882,7 +894,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -896,7 +908,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -908,7 +921,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -923,7 +936,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -941,7 +955,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -957,6 +971,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1076,7 +1091,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1090,7 +1105,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1102,7 +1118,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1117,7 +1133,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1135,7 +1152,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -1151,6 +1168,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1259,7 +1277,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1273,7 +1291,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1285,7 +1304,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1300,7 +1319,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1318,7 +1338,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -1334,6 +1354,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1441,7 +1462,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1455,7 +1476,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1467,7 +1489,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1482,7 +1504,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1500,7 +1523,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -1516,6 +1539,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1631,7 +1655,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1645,7 +1669,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1657,7 +1682,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1672,7 +1697,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1690,7 +1716,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -1706,6 +1732,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" diff --git a/tests/test_wrapper.py b/tests/test_wrapper.py index f0240905..09f48c8a 100644 --- a/tests/test_wrapper.py +++ b/tests/test_wrapper.py @@ -45,10 +45,6 @@ def setUp(self): self.mock_inject_correlation_ids = patcher.start() self.addCleanup(patcher.stop) - patcher = patch("datadog_lambda.wrapper.patch_all") - self.mock_patch_all = patcher.start() - self.addCleanup(patcher.stop) - patcher = patch("datadog_lambda.tags.get_cold_start_tag") self.mock_get_cold_start_tag = patcher.start() self.mock_get_cold_start_tag.return_value = "cold_start:true" @@ -117,7 +113,6 @@ def lambda_handler(event, context): ) self.mock_set_correlation_ids.assert_called() self.mock_inject_correlation_ids.assert_called() - self.mock_patch_all.assert_called() def test_datadog_lambda_wrapper_flush_to_log(self): os.environ["DD_FLUSH_TO_LOG"] = "True" @@ -487,7 +482,6 @@ def lambda_handler(event, context): lambda_handler_double_wrapped(lambda_event, get_mock_context()) - self.mock_patch_all.assert_called_once() self.mock_submit_invocations_metric.assert_called_once() def test_dd_requests_service_name_default(self): From ae7df53a7c92a6e64c982f5bbe30ed890dc3d1ff Mon Sep 17 00:00:00 2001 From: Florentin Labelle Date: Fri, 4 Jul 2025 09:10:24 +0200 Subject: [PATCH 232/268] feat(appsec): skip processing spans for events that are not http requests (#627) --- datadog_lambda/asm.py | 10 ++++++++++ datadog_lambda/wrapper.py | 6 +++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/datadog_lambda/asm.py b/datadog_lambda/asm.py index aab0f1e9..9636760c 100644 --- a/datadog_lambda/asm.py +++ b/datadog_lambda/asm.py @@ -44,6 +44,16 @@ def _merge_single_and_multi_value_headers( return _to_single_value_headers(merged_headers) +def asm_set_context(event_source: _EventSource): + """Add asm specific items to the ExecutionContext. + + This allows the AppSecSpanProcessor to know information about the event + at the moment the span is created and skip it when not relevant. + """ + if event_source.event_type not in _http_event_types: + core.set_item("appsec_skip_next_lambda_event", True) + + def asm_start_request( span: Span, event: Dict[str, Any], diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index c7474f65..7abe0fc1 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -9,7 +9,7 @@ from importlib import import_module from time import time_ns -from datadog_lambda.asm import asm_start_response, asm_start_request +from datadog_lambda.asm import asm_set_context, asm_start_response, asm_start_request from datadog_lambda.dsm import set_dsm_context from datadog_lambda.extension import should_use_extension, flush_extension from datadog_lambda.cold_start import ( @@ -239,6 +239,10 @@ def _before(self, event, context): ) if config.data_streams_enabled: set_dsm_context(event, event_source) + + if config.appsec_enabled: + asm_set_context(event_source) + self.span = create_function_execution_span( context=context, function_name=config.function_name, From d2a195e3b4d1dfe7af125837d54f9d50acb20376 Mon Sep 17 00:00:00 2001 From: michael-zhao459 Date: Wed, 9 Jul 2025 17:31:48 -0400 Subject: [PATCH 233/268] feat: lambda support for DSM (#622) * removed current dsm implementation * new dsm lambda implementation * check env variable in proper way * add tests * add more detailed comment to function * fixed lint for tests * remove not needed tests * fix * error handling * fix * some fixes * renamed to extract_context_with_datastreams * changed to explicit check of dsm context * move dsm tests to test_tracing.py * add wanted tests * caught sns -> sqs bug * revert back to original tracing.py implementation * fix lint * revert spacing stuff to original * remove unneccessary checks, still set checkpoints even when dsm context fails to be propagated * remove not needed comment * fixes * lambda functions not allowed by lint * use lambda function, add checks before checkpoint * remove unneccesary import * move if statement with least work first * changed function name to original, arn exception handle w test, return None instead of {} * some fixes * remove comments that are not needed * fix * fix * extra check * remove unneccesary work associated with event_source * fix lint * add tests for empty arn logic * more descriptive name * fix lint * fix * moved arn check to checkpoint, remove comments, add variable dec * kinesis fix, tests fix * remove not needed test * formatting fix * made tests clearer and more comprehensive * fix * made comments more obvious on point of tests * update toml file * edit build make more sense * made sure tests match with table * fix * removed not needed comments * addc comment * add some more kinesis tests * add logger check in exception test cases * fix comment * fix * updated tests to use inner checkpoint check, keep build at <4 * fix * change to 3.10.2 --- datadog_lambda/dsm.py | 38 -- datadog_lambda/tracing.py | 50 +- datadog_lambda/wrapper.py | 3 - pyproject.toml | 2 +- tests/test_dsm.py | 112 ----- tests/test_tracing.py | 932 +++++++++++++++++++++++++++++++++++++- tests/test_wrapper.py | 60 --- 7 files changed, 976 insertions(+), 221 deletions(-) delete mode 100644 datadog_lambda/dsm.py delete mode 100644 tests/test_dsm.py diff --git a/datadog_lambda/dsm.py b/datadog_lambda/dsm.py deleted file mode 100644 index 427f5e47..00000000 --- a/datadog_lambda/dsm.py +++ /dev/null @@ -1,38 +0,0 @@ -from datadog_lambda import logger -from datadog_lambda.trigger import EventTypes - - -def set_dsm_context(event, event_source): - - if event_source.equals(EventTypes.SQS): - _dsm_set_sqs_context(event) - - -def _dsm_set_sqs_context(event): - from datadog_lambda.wrapper import format_err_with_traceback - from ddtrace.internal.datastreams import data_streams_processor - from ddtrace.internal.datastreams.processor import DsmPathwayCodec - from ddtrace.internal.datastreams.botocore import ( - get_datastreams_context, - calculate_sqs_payload_size, - ) - - records = event.get("Records") - if records is None: - return - processor = data_streams_processor() - - for record in records: - try: - queue_arn = record.get("eventSourceARN", "") - - contextjson = get_datastreams_context(record) - payload_size = calculate_sqs_payload_size(record) - - ctx = DsmPathwayCodec.decode(contextjson, processor) - ctx.set_checkpoint( - ["direction:in", f"topic:{queue_arn}", "type:sqs"], - payload_size=payload_size, - ) - except Exception as e: - logger.error(format_err_with_traceback(e)) diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 89a4126b..f4057480 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -67,6 +67,24 @@ LOWER_64_BITS = "LOWER_64_BITS" +def _dsm_set_checkpoint(context_json, event_type, arn): + if not config.data_streams_enabled: + return + + if not arn: + return + + try: + from ddtrace.data_streams import set_consume_checkpoint + + carrier_get = lambda k: context_json and context_json.get(k) # noqa: E731 + set_consume_checkpoint(event_type, arn, carrier_get, manual_checkpoint=False) + except Exception as e: + logger.debug( + f"DSM:Failed to set consume checkpoint for {event_type} {arn}: {e}" + ) + + def _convert_xray_trace_id(xray_trace_id): """ Convert X-Ray trace id (hex)'s last 63 bits to a Datadog trace id (int). @@ -202,7 +220,9 @@ def create_sns_event(message): } -def extract_context_from_sqs_or_sns_event_or_context(event, lambda_context): +def extract_context_from_sqs_or_sns_event_or_context( + event, lambda_context, event_source +): """ Extract Datadog trace context from an SQS event. @@ -214,7 +234,10 @@ def extract_context_from_sqs_or_sns_event_or_context(event, lambda_context): Lambda Context. Falls back to lambda context if no trace data is found in the SQS message attributes. + Set a DSM checkpoint if DSM is enabled and the method for context propagation is supported. """ + source_arn = "" + event_type = "sqs" if event_source.equals(EventTypes.SQS) else "sns" # EventBridge => SQS try: @@ -226,6 +249,7 @@ def extract_context_from_sqs_or_sns_event_or_context(event, lambda_context): try: first_record = event.get("Records")[0] + source_arn = first_record.get("eventSourceARN", "") # logic to deal with SNS => SQS event if "body" in first_record: @@ -241,6 +265,9 @@ def extract_context_from_sqs_or_sns_event_or_context(event, lambda_context): msg_attributes = first_record.get("messageAttributes") if msg_attributes is None: sns_record = first_record.get("Sns") or {} + # SNS->SQS event would extract SNS arn without this check + if event_source.equals(EventTypes.SNS): + source_arn = sns_record.get("TopicArn", "") msg_attributes = sns_record.get("MessageAttributes") or {} dd_payload = msg_attributes.get("_datadog") if dd_payload: @@ -272,8 +299,9 @@ def extract_context_from_sqs_or_sns_event_or_context(event, lambda_context): logger.debug( "Failed to extract Step Functions context from SQS/SNS event." ) - - return propagator.extract(dd_data) + context = propagator.extract(dd_data) + _dsm_set_checkpoint(dd_data, event_type, source_arn) + return context else: # Handle case where trace context is injected into attributes.AWSTraceHeader # example: Root=1-654321ab-000000001234567890abcdef;Parent=0123456789abcdef;Sampled=1 @@ -296,9 +324,13 @@ def extract_context_from_sqs_or_sns_event_or_context(event, lambda_context): span_id=int(x_ray_context["parent_id"], 16), sampling_priority=float(x_ray_context["sampled"]), ) + # Still want to set a DSM checkpoint even if DSM context not propagated + _dsm_set_checkpoint(None, event_type, source_arn) return extract_context_from_lambda_context(lambda_context) except Exception as e: logger.debug("The trace extractor returned with error %s", e) + # Still want to set a DSM checkpoint even if DSM context not propagated + _dsm_set_checkpoint(None, event_type, source_arn) return extract_context_from_lambda_context(lambda_context) @@ -357,9 +389,12 @@ def extract_context_from_eventbridge_event(event, lambda_context): def extract_context_from_kinesis_event(event, lambda_context): """ Extract datadog trace context from a Kinesis Stream's base64 encoded data string + Set a DSM checkpoint if DSM is enabled and the method for context propagation is supported. """ + source_arn = "" try: record = get_first_record(event) + source_arn = record.get("eventSourceARN", "") kinesis = record.get("kinesis") if not kinesis: return extract_context_from_lambda_context(lambda_context) @@ -373,10 +408,13 @@ def extract_context_from_kinesis_event(event, lambda_context): data_obj = json.loads(data_str) dd_ctx = data_obj.get("_datadog") if dd_ctx: - return propagator.extract(dd_ctx) + context = propagator.extract(dd_ctx) + _dsm_set_checkpoint(dd_ctx, "kinesis", source_arn) + return context except Exception as e: logger.debug("The trace extractor returned with error %s", e) - + # Still want to set a DSM checkpoint even if DSM context not propagated + _dsm_set_checkpoint(None, "kinesis", source_arn) return extract_context_from_lambda_context(lambda_context) @@ -594,7 +632,7 @@ def extract_dd_trace_context( ) elif event_source.equals(EventTypes.SNS) or event_source.equals(EventTypes.SQS): context = extract_context_from_sqs_or_sns_event_or_context( - event, lambda_context + event, lambda_context, event_source ) elif event_source.equals(EventTypes.EVENTBRIDGE): context = extract_context_from_eventbridge_event(event, lambda_context) diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index 7abe0fc1..06f8884c 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -10,7 +10,6 @@ from time import time_ns from datadog_lambda.asm import asm_set_context, asm_start_response, asm_start_request -from datadog_lambda.dsm import set_dsm_context from datadog_lambda.extension import should_use_extension, flush_extension from datadog_lambda.cold_start import ( set_cold_start, @@ -237,8 +236,6 @@ def _before(self, event, context): self.inferred_span = create_inferred_span( event, context, event_source, config.decode_authorizer_context ) - if config.data_streams_enabled: - set_dsm_context(event, event_source) if config.appsec_enabled: asm_set_context(event_source) diff --git a/pyproject.toml b/pyproject.toml index 1d5feb7f..f8e4d7ef 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -28,7 +28,7 @@ classifiers = [ python = ">=3.8.0,<4" datadog = ">=0.51.0,<1.0.0" wrapt = "^1.11.2" -ddtrace = ">=2.20.0,<4" +ddtrace = ">=3.10.2,<4" ujson = ">=5.9.0" botocore = { version = "^1.34.0", optional = true } requests = { version ="^2.22.0", optional = true } diff --git a/tests/test_dsm.py b/tests/test_dsm.py deleted file mode 100644 index 544212d8..00000000 --- a/tests/test_dsm.py +++ /dev/null @@ -1,112 +0,0 @@ -import unittest -from unittest.mock import patch, MagicMock - -from datadog_lambda.dsm import set_dsm_context, _dsm_set_sqs_context -from datadog_lambda.trigger import EventTypes, _EventSource - - -class TestDsmSQSContext(unittest.TestCase): - def setUp(self): - patcher = patch("datadog_lambda.dsm._dsm_set_sqs_context") - self.mock_dsm_set_sqs_context = patcher.start() - self.addCleanup(patcher.stop) - - patcher = patch("ddtrace.internal.datastreams.data_streams_processor") - self.mock_data_streams_processor = patcher.start() - self.addCleanup(patcher.stop) - - patcher = patch("ddtrace.internal.datastreams.botocore.get_datastreams_context") - self.mock_get_datastreams_context = patcher.start() - self.mock_get_datastreams_context.return_value = {} - self.addCleanup(patcher.stop) - - patcher = patch( - "ddtrace.internal.datastreams.botocore.calculate_sqs_payload_size" - ) - self.mock_calculate_sqs_payload_size = patcher.start() - self.mock_calculate_sqs_payload_size.return_value = 100 - self.addCleanup(patcher.stop) - - patcher = patch("ddtrace.internal.datastreams.processor.DsmPathwayCodec.decode") - self.mock_dsm_pathway_codec_decode = patcher.start() - self.addCleanup(patcher.stop) - - def test_non_sqs_event_source_does_nothing(self): - """Test that non-SQS event sources don't trigger DSM context setting""" - event = {} - # Use Unknown Event Source - event_source = _EventSource(EventTypes.UNKNOWN) - set_dsm_context(event, event_source) - - # DSM context should not be set for non-SQS events - self.mock_dsm_set_sqs_context.assert_not_called() - - def test_sqs_event_with_no_records_does_nothing(self): - """Test that events where Records is None don't trigger DSM processing""" - events_with_no_records = [ - {}, - {"Records": None}, - {"someOtherField": "value"}, - ] - - for event in events_with_no_records: - _dsm_set_sqs_context(event) - self.mock_data_streams_processor.assert_not_called() - - def test_sqs_event_triggers_dsm_sqs_context(self): - """Test that SQS event sources trigger the SQS-specific DSM context function""" - sqs_event = { - "Records": [ - { - "eventSource": "aws:sqs", - "eventSourceARN": "arn:aws:sqs:us-east-1:123456789012:my-queue", - "body": "Hello from SQS!", - } - ] - } - - event_source = _EventSource(EventTypes.SQS) - set_dsm_context(sqs_event, event_source) - - self.mock_dsm_set_sqs_context.assert_called_once_with(sqs_event) - - def test_sqs_multiple_records_process_each_record(self): - """Test that each record in an SQS event gets processed individually""" - multi_record_event = { - "Records": [ - { - "eventSourceARN": "arn:aws:sqs:us-east-1:123456789012:queue1", - "body": "Message 1", - }, - { - "eventSourceARN": "arn:aws:sqs:us-east-1:123456789012:queue2", - "body": "Message 2", - }, - { - "eventSourceARN": "arn:aws:sqs:us-east-1:123456789012:queue3", - "body": "Message 3", - }, - ] - } - - mock_context = MagicMock() - self.mock_dsm_pathway_codec_decode.return_value = mock_context - - _dsm_set_sqs_context(multi_record_event) - - self.assertEqual(mock_context.set_checkpoint.call_count, 3) - - calls = mock_context.set_checkpoint.call_args_list - expected_arns = [ - "arn:aws:sqs:us-east-1:123456789012:queue1", - "arn:aws:sqs:us-east-1:123456789012:queue2", - "arn:aws:sqs:us-east-1:123456789012:queue3", - ] - - for i, call in enumerate(calls): - args, kwargs = call - tags = args[0] - self.assertIn("direction:in", tags) - self.assertIn(f"topic:{expected_arns[i]}", tags) - self.assertIn("type:sqs", tags) - self.assertEqual(kwargs["payload_size"], 100) diff --git a/tests/test_tracing.py b/tests/test_tracing.py index a629343e..fcedd516 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -1,3 +1,4 @@ +import base64 import copy import functools import json @@ -6,7 +7,7 @@ import os import unittest -from unittest.mock import Mock, patch, call +from unittest.mock import Mock, patch, call, ANY import ddtrace @@ -41,8 +42,12 @@ service_mapping as global_service_mapping, propagator, emit_telemetry_on_exception_outside_of_handler, + _dsm_set_checkpoint, + extract_context_from_kinesis_event, + extract_context_from_sqs_or_sns_event_or_context, ) +from datadog_lambda.trigger import parse_event_source from tests.utils import get_mock_context @@ -2438,3 +2443,928 @@ def test_exception_outside_handler_tracing_disabled( mock_submit_errors_metric.assert_called_once_with(None) mock_trace.assert_not_called() + + +class TestExtractDDContextWithDSMLogic(unittest.TestCase): + def setUp(self): + checkpoint_patcher = patch("ddtrace.data_streams.set_consume_checkpoint") + self.mock_checkpoint = checkpoint_patcher.start() + self.addCleanup(checkpoint_patcher.stop) + self.lambda_context = get_mock_context() + config_patcher = patch( + "datadog_lambda.config.Config.data_streams_enabled", True + ) + config_patcher.start() + self.addCleanup(config_patcher.stop) + + # SQS TESTS + + def test_sqs_context_propagated_string_value(self): + dd_data = {"dd-pathway-ctx-base64": "12345"} + dd_json_data = json.dumps(dd_data) + + event = { + "Records": [ + { + "eventSourceARN": "arn:aws:sqs:us-east-1:123456789012:test-queue", + "messageAttributes": { + "_datadog": {"dataType": "String", "stringValue": dd_json_data} + }, + "eventSource": "aws:sqs", + } + ] + } + + extract_context_from_sqs_or_sns_event_or_context( + event, self.lambda_context, parse_event_source(event) + ) + + self.assertEqual(self.mock_checkpoint.call_count, 1) + args, _ = self.mock_checkpoint.call_args + self.assertEqual(args[0], "sqs") + self.assertEqual(args[1], "arn:aws:sqs:us-east-1:123456789012:test-queue") + carrier_get = args[2] + self.assertEqual(carrier_get("dd-pathway-ctx-base64"), "12345") + + def test_sqs_context_propagated_binary_value(self): + dd_data = {"dd-pathway-ctx-base64": "12345"} + dd_json_data = json.dumps(dd_data) + encoded_data = base64.b64encode(dd_json_data.encode()).decode() + + event = { + "Records": [ + { + "eventSourceARN": "arn:aws:sqs:us-east-1:123456789012:test-queue", + "messageAttributes": { + "_datadog": {"dataType": "Binary", "binaryValue": encoded_data} + }, + "eventSource": "aws:sqs", + } + ] + } + + extract_context_from_sqs_or_sns_event_or_context( + event, self.lambda_context, parse_event_source(event) + ) + + self.assertEqual(self.mock_checkpoint.call_count, 1) + args, _ = self.mock_checkpoint.call_args + self.assertEqual(args[0], "sqs") + self.assertEqual(args[1], "arn:aws:sqs:us-east-1:123456789012:test-queue") + carrier_get = args[2] + self.assertEqual(carrier_get("dd-pathway-ctx-base64"), "12345") + + def test_sqs_no_datadog_message_attribute(self): + event = { + "Records": [ + { + "eventSourceARN": "arn:aws:sqs:us-east-1:123456789012:test-queue", + "messageAttributes": {}, # No _datadog key + "eventSource": "aws:sqs", + } + ] + } + + extract_context_from_sqs_or_sns_event_or_context( + event, self.lambda_context, parse_event_source(event) + ) + self.assertEqual(self.mock_checkpoint.call_count, 1) + args, _ = self.mock_checkpoint.call_args + self.assertEqual(args[0], "sqs") + self.assertEqual(args[1], "arn:aws:sqs:us-east-1:123456789012:test-queue") + carrier_get = args[2] + # None indicates no DSM context propagation + self.assertEqual(carrier_get("dd-pathway-ctx-base64"), None) + + def test_sqs_empty_datadog_message_attribute(self): + event = { + "Records": [ + { + "eventSourceARN": "arn:aws:sqs:us-east-1:123456789012:test-queue", + "messageAttributes": { + "_datadog": { + "dataType": "String", + "stringValue": "null", + } # json.loads("null") => None + }, + "eventSource": "aws:sqs", + } + ] + } + + extract_context_from_sqs_or_sns_event_or_context( + event, self.lambda_context, parse_event_source(event) + ) + self.assertEqual(self.mock_checkpoint.call_count, 1) + args, _ = self.mock_checkpoint.call_args + self.assertEqual(args[0], "sqs") + self.assertEqual(args[1], "arn:aws:sqs:us-east-1:123456789012:test-queue") + carrier_get = args[2] + # None indicates no DSM context propagation + self.assertEqual(carrier_get("dd-pathway-ctx-base64"), None) + + def test_sqs_no_DSM_context_in_message_attribute(self): + dd_data = {"NOT-DSM-KEY": "12345"} + dd_json_data = json.dumps(dd_data) + event = { + "Records": [ + { + "eventSourceARN": "arn:aws:sqs:us-east-1:123456789012:test-queue", + "messageAttributes": { + "_datadog": {"dataType": "String", "stringValue": dd_json_data} + }, + "eventSource": "aws:sqs", + } + ] + } + + extract_context_from_sqs_or_sns_event_or_context( + event, self.lambda_context, parse_event_source(event) + ) + + self.assertEqual(self.mock_checkpoint.call_count, 1) + args, _ = self.mock_checkpoint.call_args + self.assertEqual(args[0], "sqs") + self.assertEqual(args[1], "arn:aws:sqs:us-east-1:123456789012:test-queue") + carrier_get = args[2] + # None indicates no DSM context propagation + self.assertEqual(carrier_get("dd-pathway-ctx-base64"), None) + + @patch("datadog_lambda.tracing.logger") + def test_sqs_invalid_datadog_message_attribute(self, mock_logger): + test_cases = [ + { + "name": "invalid_base64", + "event": { + "Records": [ + { + "eventSourceARN": "arn:aws:sqs:us-east-1:123456789012:test-queue", + "messageAttributes": { + "_datadog": { + "dataType": "Binary", + "binaryValue": "invalid-base64", + } + }, + "eventSource": "aws:sqs", + } + ] + }, + "expected_log": ("The trace extractor returned with error %s", ANY), + }, + { + "name": "unsupported_datatype", + "event": { + "Records": [ + { + "eventSourceARN": "arn:aws:sqs:us-east-1:123456789012:test-queue", + "messageAttributes": { + "_datadog": { + "dataType": "Number", + "numberValue": 123, + } # Unsupported type + }, + "eventSource": "aws:sqs", + } + ] + }, + "expected_log": ( + "Datadog Lambda Python only supports extracting trace" + "context from String or Binary SQS/SNS message attributes", + ), + }, + ] + + for test_case in test_cases: + with self.subTest(test_case=test_case["name"]): + mock_logger.reset_mock() + self.mock_checkpoint.reset_mock() + + extract_context_from_sqs_or_sns_event_or_context( + test_case["event"], + self.lambda_context, + parse_event_source(test_case["event"]), + ) + + # Exception triggers logger + mock_logger.debug.assert_any_call(*test_case["expected_log"]) + + self.assertEqual(self.mock_checkpoint.call_count, 1) + args, _ = self.mock_checkpoint.call_args + self.assertEqual(args[0], "sqs") + self.assertEqual( + args[1], "arn:aws:sqs:us-east-1:123456789012:test-queue" + ) + carrier_get = args[2] + # None indicates no DSM context propagation + self.assertEqual(carrier_get("dd-pathway-ctx-base64"), None) + + def test_sqs_source_arn_not_found(self): + event = { + "Records": [ + { + "eventSourceARN": "", + "messageAttributes": {}, + "eventSource": "aws:sqs", + } + ] + } + + extract_context_from_sqs_or_sns_event_or_context( + event, self.lambda_context, parse_event_source(event) + ) + + self.mock_checkpoint.assert_not_called() + + @patch("datadog_lambda.config.Config.data_streams_enabled", False) + def test_sqs_data_streams_disabled(self): + context_json = {"dd-pathway-ctx-base64": "12345"} + event_type = "sqs" + arn = "arn:aws:sqs:us-east-1:123456789012:test-queue" + + _dsm_set_checkpoint(context_json, event_type, arn) + + self.mock_checkpoint.assert_not_called() + + # SNS TESTS + + def test_sns_context_propagated_string_value(self): + dd_data = {"dd-pathway-ctx-base64": "12345"} + dd_json_data = json.dumps(dd_data) + + event = { + "Records": [ + { + "eventSourceARN": "", + "Sns": { + "TopicArn": "arn:aws:sns:us-east-1:123456789012:test-topic", + "MessageAttributes": { + "_datadog": {"Type": "String", "Value": dd_json_data} + }, + }, + "eventSource": "aws:sns", + } + ] + } + + extract_context_from_sqs_or_sns_event_or_context( + event, self.lambda_context, parse_event_source(event) + ) + + self.assertEqual(self.mock_checkpoint.call_count, 1) + args, _ = self.mock_checkpoint.call_args + self.assertEqual(args[0], "sns") + self.assertEqual(args[1], "arn:aws:sns:us-east-1:123456789012:test-topic") + carrier_get = args[2] + self.assertEqual(carrier_get("dd-pathway-ctx-base64"), "12345") + + def test_sns_context_propagated_binary_value(self): + dd_data = {"dd-pathway-ctx-base64": "12345"} + dd_json_data = json.dumps(dd_data) + encoded_data = base64.b64encode(dd_json_data.encode()).decode() + + event = { + "Records": [ + { + "eventSourceARN": "", + "Sns": { + "TopicArn": "arn:aws:sns:us-east-1:123456789012:test-topic", + "MessageAttributes": { + "_datadog": {"Type": "Binary", "Value": encoded_data} + }, + }, + "eventSource": "aws:sns", + } + ] + } + + extract_context_from_sqs_or_sns_event_or_context( + event, self.lambda_context, parse_event_source(event) + ) + + self.assertEqual(self.mock_checkpoint.call_count, 1) + args, _ = self.mock_checkpoint.call_args + self.assertEqual(args[0], "sns") + self.assertEqual(args[1], "arn:aws:sns:us-east-1:123456789012:test-topic") + carrier_get = args[2] + self.assertEqual(carrier_get("dd-pathway-ctx-base64"), "12345") + + def test_sns_no_datadog_message_attribute(self): + event = { + "Records": [ + { + "Sns": { + "TopicArn": "arn:aws:sns:us-east-1:123456789012:test-topic", + "MessageAttributes": {}, # No _datadog key + }, + "eventSource": "aws:sns", + } + ] + } + + extract_context_from_sqs_or_sns_event_or_context( + event, self.lambda_context, parse_event_source(event) + ) + self.assertEqual(self.mock_checkpoint.call_count, 1) + args, _ = self.mock_checkpoint.call_args + self.assertEqual(args[0], "sns") + self.assertEqual(args[1], "arn:aws:sns:us-east-1:123456789012:test-topic") + carrier_get = args[2] + # None indicates no DSM context propagation + self.assertEqual(carrier_get("dd-pathway-ctx-base64"), None) + + def test_sns_empty_datadog_message_attribute(self): + event = { + "Records": [ + { + "Sns": { + "TopicArn": "arn:aws:sns:us-east-1:123456789012:test-topic", + "MessageAttributes": { + "_datadog": { + "Type": "String", + "Value": "null", + } # json.loads("null") => None + }, + }, + "eventSource": "aws:sns", + } + ] + } + + extract_context_from_sqs_or_sns_event_or_context( + event, self.lambda_context, parse_event_source(event) + ) + self.assertEqual(self.mock_checkpoint.call_count, 1) + args, _ = self.mock_checkpoint.call_args + self.assertEqual(args[0], "sns") + self.assertEqual(args[1], "arn:aws:sns:us-east-1:123456789012:test-topic") + carrier_get = args[2] + # None indicates no DSM context propagation + self.assertEqual(carrier_get("dd-pathway-ctx-base64"), None) + + def test_sns_no_DSM_context_in_message_attribute(self): + dd_data = {"NOT-DSM-KEY": "12345"} + dd_json_data = json.dumps(dd_data) + + event = { + "Records": [ + { + "eventSourceARN": "", + "Sns": { + "TopicArn": "arn:aws:sns:us-east-1:123456789012:test-topic", + "MessageAttributes": { + "_datadog": {"Type": "String", "Value": dd_json_data} + }, + }, + "eventSource": "aws:sns", + } + ] + } + + extract_context_from_sqs_or_sns_event_or_context( + event, self.lambda_context, parse_event_source(event) + ) + + self.assertEqual(self.mock_checkpoint.call_count, 1) + args, _ = self.mock_checkpoint.call_args + self.assertEqual(args[0], "sns") + self.assertEqual(args[1], "arn:aws:sns:us-east-1:123456789012:test-topic") + carrier_get = args[2] + # None indicates no DSM context propagation + self.assertEqual(carrier_get("dd-pathway-ctx-base64"), None) + + @patch("datadog_lambda.tracing.logger") + def test_sns_invalid_datadog_message_attribute(self, mock_logger): + test_cases = [ + { + "name": "invalid_base64", + "event": { + "Records": [ + { + "Sns": { + "TopicArn": "arn:aws:sns:us-east-1:123456789012:test-topic", + "MessageAttributes": { + "_datadog": { + "Type": "Binary", + "Value": "invalid-base64", + } + }, + }, + "eventSource": "aws:sns", + } + ] + }, + "expected_log": ("The trace extractor returned with error %s", ANY), + }, + { + "name": "unsupported_datatype", + "event": { + "Records": [ + { + "Sns": { + "TopicArn": "arn:aws:sns:us-east-1:123456789012:test-topic", + "MessageAttributes": { + "_datadog": { + "Type": "Number", + "numberValue": 123, + } # Unsupported type + }, + }, + "eventSource": "aws:sns", + } + ] + }, + "expected_log": ( + "Datadog Lambda Python only supports extracting trace" + "context from String or Binary SQS/SNS message attributes", + ), + }, + ] + + for test_case in test_cases: + with self.subTest(test_case=test_case["name"]): + mock_logger.reset_mock() + self.mock_checkpoint.reset_mock() + + extract_context_from_sqs_or_sns_event_or_context( + test_case["event"], + self.lambda_context, + parse_event_source(test_case["event"]), + ) + + # Exception triggers logger + mock_logger.debug.assert_any_call(*test_case["expected_log"]) + + self.assertEqual(self.mock_checkpoint.call_count, 1) + args, _ = self.mock_checkpoint.call_args + self.assertEqual(args[0], "sns") + self.assertEqual( + args[1], "arn:aws:sns:us-east-1:123456789012:test-topic" + ) + carrier_get = args[2] + # None indicates no DSM context propagation + self.assertEqual(carrier_get("dd-pathway-ctx-base64"), None) + + def test_sns_source_arn_not_found(self): + event = { + "Records": [ + { + "Sns": { + "TopicArn": "", + "MessageAttributes": {}, + }, + "eventSource": "aws:sns", + "eventSourceARN": "", + } + ] + } + + extract_context_from_sqs_or_sns_event_or_context( + event, self.lambda_context, parse_event_source(event) + ) + + self.mock_checkpoint.assert_not_called() + + @patch("datadog_lambda.config.Config.data_streams_enabled", False) + def test_sns_data_streams_disabled(self): + context_json = {"dd-pathway-ctx-base64": "12345"} + event_type = "sns" + arn = "arn:aws:sns:us-east-1:123456789012:test-topic" + + _dsm_set_checkpoint(context_json, event_type, arn) + + self.mock_checkpoint.assert_not_called() + + # SNS -> SQS TESTS + + def test_sns_to_sqs_context_propagated_string_value(self): + dd_data = {"dd-pathway-ctx-base64": "12345"} + dd_json_data = json.dumps(dd_data) + + sns_notification = { + "Type": "Notification", + "TopicArn": "arn:aws:sns:us-east-1:123456789012:test-topic", + "MessageAttributes": { + "_datadog": {"Type": "String", "Value": dd_json_data} + }, + "Message": "test message", + } + + event = { + "Records": [ + { + "eventSourceARN": "arn:aws:sqs:us-east-1:123456789012:test-queue", + "body": json.dumps(sns_notification), + "eventSource": "aws:sqs", + } + ] + } + + extract_context_from_sqs_or_sns_event_or_context( + event, self.lambda_context, parse_event_source(event) + ) + + self.assertEqual(self.mock_checkpoint.call_count, 1) + args, _ = self.mock_checkpoint.call_args + self.assertEqual(args[0], "sqs") + # Should use SQS ARN, not SNS ARN + self.assertEqual(args[1], "arn:aws:sqs:us-east-1:123456789012:test-queue") + carrier_get = args[2] + self.assertEqual(carrier_get("dd-pathway-ctx-base64"), "12345") + + def test_sns_to_sqs_context_propagated_binary_value(self): + dd_data = {"dd-pathway-ctx-base64": "12345"} + dd_json_data = json.dumps(dd_data) + encoded_data = base64.b64encode(dd_json_data.encode()).decode() + + sns_notification = { + "Type": "Notification", + "TopicArn": "arn:aws:sns:us-east-1:123456789012:test-topic", + "MessageAttributes": { + "_datadog": {"Type": "Binary", "Value": encoded_data} + }, + "Message": "test message", + } + + event = { + "Records": [ + { + "eventSourceARN": "arn:aws:sqs:us-east-1:123456789012:test-queue", + "body": json.dumps(sns_notification), + "eventSource": "aws:sqs", + } + ] + } + + extract_context_from_sqs_or_sns_event_or_context( + event, self.lambda_context, parse_event_source(event) + ) + self.assertEqual(self.mock_checkpoint.call_count, 1) + args, _ = self.mock_checkpoint.call_args + self.assertEqual(args[0], "sqs") + # Should use SQS ARN, not SNS ARN + self.assertEqual(args[1], "arn:aws:sqs:us-east-1:123456789012:test-queue") + carrier_get = args[2] + self.assertEqual(carrier_get("dd-pathway-ctx-base64"), "12345") + + def test_sns_to_sqs_no_datadog_message_attribute(self): + sns_notification = { + "Type": "Notification", + "TopicArn": "arn:aws:sns:us-east-1:123456789012:test-topic", + "MessageAttributes": {}, # No _datadog key + "Message": "test message", + } + + event = { + "Records": [ + { + "eventSourceARN": "arn:aws:sqs:us-east-1:123456789012:test-queue", + "body": json.dumps(sns_notification), + "eventSource": "aws:sqs", + } + ] + } + + extract_context_from_sqs_or_sns_event_or_context( + event, self.lambda_context, parse_event_source(event) + ) + self.assertEqual(self.mock_checkpoint.call_count, 1) + args, _ = self.mock_checkpoint.call_args + self.assertEqual(args[0], "sqs") + # Should use SQS ARN, not SNS ARN + self.assertEqual(args[1], "arn:aws:sqs:us-east-1:123456789012:test-queue") + carrier_get = args[2] + # None indicates no DSM context propagation + self.assertEqual(carrier_get("dd-pathway-ctx-base64"), None) + + def test_sns_to_sqs_empty_datadog_message_attribute(self): + sns_notification = { + "Type": "Notification", + "TopicArn": "arn:aws:sns:us-east-1:123456789012:test-topic", + "MessageAttributes": { + "_datadog": { + "Type": "String", + "Value": "null", + } # json.loads("null") => None + }, + "Message": "test message", + } + + event = { + "Records": [ + { + "eventSourceARN": "arn:aws:sqs:us-east-1:123456789012:test-queue", + "body": json.dumps(sns_notification), + "eventSource": "aws:sqs", + } + ] + } + + extract_context_from_sqs_or_sns_event_or_context( + event, self.lambda_context, parse_event_source(event) + ) + self.assertEqual(self.mock_checkpoint.call_count, 1) + args, _ = self.mock_checkpoint.call_args + self.assertEqual(args[0], "sqs") + # Should use SQS ARN, not SNS ARN + self.assertEqual(args[1], "arn:aws:sqs:us-east-1:123456789012:test-queue") + carrier_get = args[2] + # None indicates no DSM context propagation + self.assertEqual(carrier_get("dd-pathway-ctx-base64"), None) + + def test_sns_to_sqs_no_DSM_context_in_message_attribute(self): + dd_data = {"NOT-DSM-KEY": "12345"} + dd_json_data = json.dumps(dd_data) + encoded_data = base64.b64encode(dd_json_data.encode()).decode() + + sns_notification = { + "Type": "Notification", + "TopicArn": "arn:aws:sns:us-east-1:123456789012:test-topic", + "MessageAttributes": { + "_datadog": {"Type": "Binary", "Value": encoded_data} + }, + "Message": "test message", + } + + event = { + "Records": [ + { + "eventSourceARN": "arn:aws:sqs:us-east-1:123456789012:test-queue", + "body": json.dumps(sns_notification), + "eventSource": "aws:sqs", + } + ] + } + + extract_context_from_sqs_or_sns_event_or_context( + event, self.lambda_context, parse_event_source(event) + ) + + self.assertEqual(self.mock_checkpoint.call_count, 1) + args, _ = self.mock_checkpoint.call_args + self.assertEqual(args[0], "sqs") + # Should use SQS ARN, not SNS ARN + self.assertEqual(args[1], "arn:aws:sqs:us-east-1:123456789012:test-queue") + carrier_get = args[2] + # None indicates no DSM context propagation + self.assertEqual(carrier_get("dd-pathway-ctx-base64"), None) + + @patch("datadog_lambda.tracing.logger") + def test_sns_to_sqs_invalid_datadog_message_attribute(self, mock_logger): + test_cases = [ + { + "name": "invalid_base64", + "sns_notification": { + "Type": "Notification", + "TopicArn": "arn:aws:sns:us-east-1:123456789012:test-topic", + "MessageAttributes": { + "_datadog": {"Type": "Binary", "Value": "not-base64"} + }, + "Message": "test message", + }, + "expected_log": ("The trace extractor returned with error %s", ANY), + }, + { + "name": "unsupported_datatype", + "sns_notification": { + "Type": "Notification", + "TopicArn": "arn:aws:sns:us-east-1:123456789012:test-topic", + "MessageAttributes": { + "_datadog": { + "Type": "Number", + "numberValue": 123, + } # Unsupported type + }, + "Message": "test message", + }, + "expected_log": ( + "Datadog Lambda Python only supports extracting trace" + "context from String or Binary SQS/SNS message attributes", + ), + }, + ] + + for test_case in test_cases: + with self.subTest(test_case=test_case["name"]): + mock_logger.reset_mock() + self.mock_checkpoint.reset_mock() + + event = { + "Records": [ + { + "eventSourceARN": "arn:aws:sqs:us-east-1:123456789012:test-queue", + "body": json.dumps(test_case["sns_notification"]), + "eventSource": "aws:sqs", + } + ] + } + + extract_context_from_sqs_or_sns_event_or_context( + event, self.lambda_context, parse_event_source(event) + ) + + # Exception triggers logger + mock_logger.debug.assert_any_call(*test_case["expected_log"]) + + self.assertEqual(self.mock_checkpoint.call_count, 1) + args, _ = self.mock_checkpoint.call_args + self.assertEqual(args[0], "sqs") + # Should use SQS ARN, not SNS ARN + self.assertEqual( + args[1], "arn:aws:sqs:us-east-1:123456789012:test-queue" + ) + carrier_get = args[2] + # None indicates no DSM context propagation + self.assertEqual(carrier_get("dd-pathway-ctx-base64"), None) + + def test_sns_to_sqs_source_arn_not_found(self): + sns_notification = { + "Type": "Notification", + "TopicArn": "arn:aws:sns:us-east-1:123456789012:test-topic", + "MessageAttributes": {}, + "Message": "test message", + } + + event = { + "Records": [ + { + "eventSourceARN": "", # Empty SQS ARN + "body": json.dumps(sns_notification), + "eventSource": "aws:sqs", + } + ] + } + + extract_context_from_sqs_or_sns_event_or_context( + event, self.lambda_context, parse_event_source(event) + ) + + self.mock_checkpoint.assert_not_called() + + @patch("datadog_lambda.config.Config.data_streams_enabled", False) + def test_sns_to_sqs_data_streams_disabled(self): + context_json = {"dd-pathway-ctx-base64": "12345"} + event_type = "sqs" + arn = "arn:aws:sqs:us-east-1:123456789012:test-queue" + + _dsm_set_checkpoint(context_json, event_type, arn) + + self.mock_checkpoint.assert_not_called() + + # KINESIS TESTS + + def test_kinesis_context_propagated_binary_value(self): + dd_data = {"dd-pathway-ctx-base64": "12345"} + kinesis_data = {"_datadog": dd_data, "message": "test"} + kinesis_data_str = json.dumps(kinesis_data) + encoded_data = base64.b64encode(kinesis_data_str.encode()).decode() + + event = { + "Records": [ + { + "eventSourceARN": "arn:aws:kinesis:us-east-1:123456789012:stream/test-stream", + "kinesis": {"data": encoded_data}, + } + ] + } + + extract_context_from_kinesis_event(event, self.lambda_context) + + self.assertEqual(self.mock_checkpoint.call_count, 1) + args, _ = self.mock_checkpoint.call_args + self.assertEqual(args[0], "kinesis") + self.assertEqual( + args[1], "arn:aws:kinesis:us-east-1:123456789012:stream/test-stream" + ) + carrier_get = args[2] + self.assertEqual(carrier_get("dd-pathway-ctx-base64"), "12345") + + def test_kinesis_no_datadog_message_attribute(self): + kinesis_data = {"message": "test"} # No _datadog key + kinesis_data_str = json.dumps(kinesis_data) + encoded_data = base64.b64encode(kinesis_data_str.encode()).decode() + + event = { + "Records": [ + { + "eventSourceARN": "arn:aws:kinesis:us-east-1:123456789012:stream/test-stream", + "kinesis": {"data": encoded_data}, + } + ] + } + + extract_context_from_kinesis_event(event, self.lambda_context) + + self.assertEqual(self.mock_checkpoint.call_count, 1) + args, _ = self.mock_checkpoint.call_args + self.assertEqual(args[0], "kinesis") + self.assertEqual( + args[1], "arn:aws:kinesis:us-east-1:123456789012:stream/test-stream" + ) + carrier_get = args[2] + # None indicates no DSM context propagation + self.assertEqual(carrier_get("dd-pathway-ctx-base64"), None) + + def test_kinesis_empty_message_attribute(self): + kinesis_data = {"_datadog": None, "message": "test"} # _datadog is None + kinesis_data_str = json.dumps(kinesis_data) + encoded_data = base64.b64encode(kinesis_data_str.encode()).decode() + + event = { + "Records": [ + { + "eventSourceARN": "arn:aws:kinesis:us-east-1:123456789012:stream/test-stream", + "kinesis": {"data": encoded_data}, + } + ] + } + + extract_context_from_kinesis_event(event, self.lambda_context) + self.assertEqual(self.mock_checkpoint.call_count, 1) + args, _ = self.mock_checkpoint.call_args + self.assertEqual(args[0], "kinesis") + self.assertEqual( + args[1], "arn:aws:kinesis:us-east-1:123456789012:stream/test-stream" + ) + carrier_get = args[2] + # None indicates no DSM context propagation + self.assertEqual(carrier_get("dd-pathway-ctx-base64"), None) + + def test_kinesis_no_DSM_context_in_message_attribute(self): + dd_data = {"NOT-DSM-KEY": "12345"} + kinesis_data = {"_datadog": dd_data, "message": "test"} + kinesis_data_str = json.dumps(kinesis_data) + encoded_data = base64.b64encode(kinesis_data_str.encode()).decode() + + event = { + "Records": [ + { + "eventSourceARN": "arn:aws:kinesis:us-east-1:123456789012:stream/test-stream", + "kinesis": {"data": encoded_data}, + } + ] + } + + extract_context_from_kinesis_event(event, self.lambda_context) + + self.assertEqual(self.mock_checkpoint.call_count, 1) + args, _ = self.mock_checkpoint.call_args + self.assertEqual(args[0], "kinesis") + self.assertEqual( + args[1], "arn:aws:kinesis:us-east-1:123456789012:stream/test-stream" + ) + carrier_get = args[2] + # None indicates no DSM context propagation + self.assertEqual(carrier_get("dd-pathway-ctx-base64"), None) + + @patch("datadog_lambda.tracing.logger") + def test_kinesis_invalid_datadog_message_attribute(self, mock_logger): + event = { + "Records": [ + { + "eventSourceARN": "arn:aws:kinesis:us-east-1:123456789012:stream/test-stream", + "kinesis": {"data": "invalid-base64"}, + } + ] + } + + extract_context_from_kinesis_event(event, self.lambda_context) + # Exception triggers logger + mock_logger.debug.assert_any_call( + "The trace extractor returned with error %s", + ANY, + ) + self.assertEqual(self.mock_checkpoint.call_count, 1) + args, _ = self.mock_checkpoint.call_args + self.assertEqual(args[0], "kinesis") + self.assertEqual( + args[1], "arn:aws:kinesis:us-east-1:123456789012:stream/test-stream" + ) + carrier_get = args[2] + # None indicates no DSM context propagation + self.assertEqual(carrier_get("dd-pathway-ctx-base64"), None) + + def test_kinesis_source_arn_not_found(self): + kinesis_data = {"message": "test"} + kinesis_data_str = json.dumps(kinesis_data) + encoded_data = base64.b64encode(kinesis_data_str.encode()).decode() + + event = { + "Records": [ + { + "eventSourceARN": "", + "kinesis": {"data": encoded_data}, + } + ] + } + + extract_context_from_kinesis_event(event, self.lambda_context) + + self.mock_checkpoint.assert_not_called() + + @patch("datadog_lambda.config.Config.data_streams_enabled", False) + def test_kinesis_data_streams_disabled(self): + context_json = {"dd-pathway-ctx-base64": "12345"} + event_type = "kinesis" + arn = "arn:aws:kinesis:us-east-1:123456789012:stream/test-stream" + + _dsm_set_checkpoint(context_json, event_type, arn) diff --git a/tests/test_wrapper.py b/tests/test_wrapper.py index 09f48c8a..fc081e90 100644 --- a/tests/test_wrapper.py +++ b/tests/test_wrapper.py @@ -73,10 +73,6 @@ def setUp(self): self.mock_dd_lambda_layer_tag = patcher.start() self.addCleanup(patcher.stop) - patcher = patch("datadog_lambda.wrapper.set_dsm_context") - self.mock_set_dsm_context = patcher.start() - self.addCleanup(patcher.stop) - @patch("datadog_lambda.config.Config.trace_enabled", False) def test_datadog_lambda_wrapper(self): @wrapper.datadog_lambda_wrapper @@ -556,62 +552,6 @@ def return_type_test(event, context): self.assertEqual(result, test_result) self.assertFalse(MockPrintExc.called) - def test_set_dsm_context_called_when_DSM_and_tracing_enabled(self): - os.environ["DD_DATA_STREAMS_ENABLED"] = "true" - os.environ["DD_TRACE_ENABLED"] = "true" - - @wrapper.datadog_lambda_wrapper - def lambda_handler(event, context): - return "ok" - - result = lambda_handler({}, get_mock_context()) - self.assertEqual(result, "ok") - self.mock_set_dsm_context.assert_called_once() - - del os.environ["DD_DATA_STREAMS_ENABLED"] - - def test_set_dsm_context_not_called_when_only_DSM_enabled(self): - os.environ["DD_DATA_STREAMS_ENABLED"] = "true" - os.environ["DD_TRACE_ENABLED"] = "false" - - @wrapper.datadog_lambda_wrapper - def lambda_handler(event, context): - return "ok" - - result = lambda_handler({}, get_mock_context()) - self.assertEqual(result, "ok") - self.mock_set_dsm_context.assert_not_called() - - del os.environ["DD_DATA_STREAMS_ENABLED"] - - def test_set_dsm_context_not_called_when_only_tracing_enabled(self): - os.environ["DD_DATA_STREAMS_ENABLED"] = "false" - os.environ["DD_TRACE_ENABLED"] = "true" - - @wrapper.datadog_lambda_wrapper - def lambda_handler(event, context): - return "ok" - - result = lambda_handler({}, get_mock_context()) - self.assertEqual(result, "ok") - self.mock_set_dsm_context.assert_not_called() - - del os.environ["DD_DATA_STREAMS_ENABLED"] - - def test_set_dsm_context_not_called_when_tracing_and_DSM_disabled(self): - os.environ["DD_DATA_STREAMS_ENABLED"] = "false" - os.environ["DD_TRACE_ENABLED"] = "false" - - @wrapper.datadog_lambda_wrapper - def lambda_handler(event, context): - return "ok" - - result = lambda_handler({}, get_mock_context()) - self.assertEqual(result, "ok") - self.mock_set_dsm_context.assert_not_called() - - del os.environ["DD_DATA_STREAMS_ENABLED"] - class TestLambdaWrapperWithTraceContext(unittest.TestCase): xray_root = "1-5e272390-8c398be037738dc042009320" From a97a1c9c097a0d28d0caf095c3516eb61a0c4502 Mon Sep 17 00:00:00 2001 From: Florentin Labelle Date: Fri, 11 Jul 2025 13:37:15 +0200 Subject: [PATCH 234/268] build: publish artifacts of built layers on main updates (#629) --- .github/workflows/build_layer.yml | 35 +++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 .github/workflows/build_layer.yml diff --git a/.github/workflows/build_layer.yml b/.github/workflows/build_layer.yml new file mode 100644 index 00000000..789868ed --- /dev/null +++ b/.github/workflows/build_layer.yml @@ -0,0 +1,35 @@ +name: Build Layers for system-Tests + +on: + push: + branches: + - "main" + +jobs: + build: + runs-on: ${{ matrix.arch == 'arm64' && 'ubuntu-24.04-arm' || 'ubuntu-latest' }} + + strategy: + matrix: + arch: [arm64, amd64] + python_version: ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"] + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Patch pyproject.toml + run: | + echo "Patching pyproject.toml to use main branch of dd-trace-py" + sed -i 's|^ddtrace =.*$|ddtrace = { git = "https://github.com/DataDog/dd-trace-py.git" }|' pyproject.toml + + - name: Build layer for Python ${{ matrix.python_version }} on ${{ matrix.arch }} + run: | + echo "Building layer for Python ${{ matrix.python_version }} on ${{ matrix.arch }}" + ARCH=${{ matrix.arch }} PYTHON_VERSION=${{ matrix.python_version }} ./scripts/build_layers.sh + + - name: Upload layer artifact + uses: actions/upload-artifact@v4 + with: + path: .layers/datadog_lambda_py-${{ matrix.arch }}-${{ matrix.python_version }}.zip + name: datadog-lambda-python-${{ matrix.python_version }}-${{ matrix.arch }} From 4c9348660c44d03f23a7560aeae5625ca56498fb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 14 Jul 2025 15:03:57 -0400 Subject: [PATCH 235/268] chore(deps): bump requests from 2.32.3 to 2.32.4 in /tests/integration (#632) Bumps [requests](https://github.com/psf/requests) from 2.32.3 to 2.32.4. - [Release notes](https://github.com/psf/requests/releases) - [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md) - [Commits](https://github.com/psf/requests/compare/v2.32.3...v2.32.4) --- updated-dependencies: - dependency-name: requests dependency-version: 2.32.4 dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- tests/integration/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/integration/requirements.txt b/tests/integration/requirements.txt index 5678a66c..343ea025 100644 --- a/tests/integration/requirements.txt +++ b/tests/integration/requirements.txt @@ -1,4 +1,4 @@ certifi==2024.12.14 charset-normalizer==3.4.1 idna==3.10 -requests==2.32.3 +requests==2.32.4 From 664124e2acb10ba356ae9af62ea188facb8a365d Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Thu, 17 Jul 2025 10:15:25 -0400 Subject: [PATCH 236/268] version 7.112.0 (#631) --- datadog_lambda/version.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index 2bb1df7f..e1dbe71f 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "6.111.0" +__version__ = "7.112.0" diff --git a/pyproject.toml b/pyproject.toml index f8e4d7ef..1a43b9e8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "6.111.0" +version = "7.112.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From c7739ebcdb0a93bd01745fb5ad5922a96a783b89 Mon Sep 17 00:00:00 2001 From: Florentin Labelle Date: Mon, 21 Jul 2025 09:13:37 +0200 Subject: [PATCH 237/268] feat(appsec): enable request blocking (#630) --- datadog_lambda/asm.py | 47 ++++++++++++++- datadog_lambda/wrapper.py | 22 ++++++- tests/test_asm.py | 81 ++++++++++++++++++++++++-- tests/test_wrapper.py | 117 +++++++++++++++++++++++++++++++++++++- 4 files changed, 258 insertions(+), 9 deletions(-) diff --git a/datadog_lambda/asm.py b/datadog_lambda/asm.py index 9636760c..11df2471 100644 --- a/datadog_lambda/asm.py +++ b/datadog_lambda/asm.py @@ -1,9 +1,12 @@ -from copy import deepcopy import logging +import urllib.parse +from copy import deepcopy from typing import Any, Dict, List, Optional, Union from ddtrace.contrib.internal.trace_utils import _get_request_header_client_ip from ddtrace.internal import core +from ddtrace.internal.utils import get_blocked +from ddtrace.internal.utils import http as http_utils from ddtrace.trace import Span from datadog_lambda.trigger import ( @@ -50,6 +53,7 @@ def asm_set_context(event_source: _EventSource): This allows the AppSecSpanProcessor to know information about the event at the moment the span is created and skip it when not relevant. """ + if event_source.event_type not in _http_event_types: core.set_item("appsec_skip_next_lambda_event", True) @@ -126,6 +130,14 @@ def asm_start_request( span.set_tag_str("http.client_ip", request_ip) span.set_tag_str("network.client.ip", request_ip) + # Encode the parsed query and append it to reconstruct the original raw URI expected by AppSec. + if parsed_query: + try: + encoded_query = urllib.parse.urlencode(parsed_query, doseq=True) + raw_uri += "?" + encoded_query # type: ignore + except Exception: + pass + core.dispatch( # The matching listener is registered in ddtrace.appsec._handlers "aws_lambda.start_request", @@ -182,3 +194,36 @@ def asm_start_response( response_headers, ), ) + + +def get_asm_blocked_response( + event_source: _EventSource, +) -> Optional[Dict[str, Any]]: + """Get the blocked response for the given event source.""" + if event_source.event_type not in _http_event_types: + return None + + blocked = get_blocked() + if not blocked: + return None + + desired_type = blocked.get("type", "auto") + if desired_type == "none": + content_type = "text/plain; charset=utf-8" + content = "" + else: + content_type = blocked.get("content-type", "application/json") + content = http_utils._get_blocked_template(content_type) + + response_headers = { + "content-type": content_type, + } + if "location" in blocked: + response_headers["location"] = blocked["location"] + + return { + "statusCode": blocked.get("status_code", 403), + "headers": response_headers, + "body": content, + "isBase64Encoded": False, + } diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index 06f8884c..917a4fa0 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -9,7 +9,7 @@ from importlib import import_module from time import time_ns -from datadog_lambda.asm import asm_set_context, asm_start_response, asm_start_request +from ddtrace.internal._exceptions import BlockingException from datadog_lambda.extension import should_use_extension, flush_extension from datadog_lambda.cold_start import ( set_cold_start, @@ -46,6 +46,14 @@ extract_http_status_code_tag, ) +if config.appsec_enabled: + from datadog_lambda.asm import ( + asm_set_context, + asm_start_response, + asm_start_request, + get_asm_blocked_response, + ) + if config.profiling_enabled: from ddtrace.profiling import profiler @@ -120,6 +128,7 @@ def __init__(self, func): self.span = None self.inferred_span = None self.response = None + self.blocking_response = None if config.profiling_enabled: self.prof = profiler.Profiler(env=config.env, service=config.service) @@ -159,8 +168,12 @@ def __call__(self, event, context, **kwargs): """Executes when the wrapped function gets called""" self._before(event, context) try: + if self.blocking_response: + return self.blocking_response self.response = self.func(event, context, **kwargs) return self.response + except BlockingException: + self.blocking_response = get_asm_blocked_response(self.event_source) except Exception: from datadog_lambda.metric import submit_errors_metric @@ -171,6 +184,8 @@ def __call__(self, event, context, **kwargs): raise finally: self._after(event, context) + if self.blocking_response: + return self.blocking_response def _inject_authorizer_span_headers(self, request_id): reference_span = self.inferred_span if self.inferred_span else self.span @@ -203,6 +218,7 @@ def _inject_authorizer_span_headers(self, request_id): def _before(self, event, context): try: self.response = None + self.blocking_response = None set_cold_start(init_timestamp_ns) if not should_use_extension: @@ -253,6 +269,7 @@ def _before(self, event, context): ) if config.appsec_enabled: asm_start_request(self.span, event, event_source, self.trigger_tags) + self.blocking_response = get_asm_blocked_response(self.event_source) else: set_correlation_ids() if config.profiling_enabled and is_new_sandbox(): @@ -286,13 +303,14 @@ def _after(self, event, context): if status_code: self.span.set_tag("http.status_code", status_code) - if config.appsec_enabled: + if config.appsec_enabled and not self.blocking_response: asm_start_response( self.span, status_code, self.event_source, response=self.response, ) + self.blocking_response = get_asm_blocked_response(self.event_source) self.span.finish() diff --git a/tests/test_asm.py b/tests/test_asm.py index e57c289f..e3a5e027 100644 --- a/tests/test_asm.py +++ b/tests/test_asm.py @@ -2,8 +2,17 @@ import pytest from unittest.mock import MagicMock, patch -from datadog_lambda.asm import asm_start_request, asm_start_response -from datadog_lambda.trigger import parse_event_source, extract_trigger_tags +from datadog_lambda.asm import ( + asm_start_request, + asm_start_response, + get_asm_blocked_response, +) +from datadog_lambda.trigger import ( + EventTypes, + _EventSource, + extract_trigger_tags, + parse_event_source, +) from tests.utils import get_mock_context event_samples = "tests/event_samples/" @@ -15,7 +24,7 @@ "application_load_balancer", "application-load-balancer.json", "72.12.164.125", - "/lambda", + "/lambda?query=1234ABCD", "GET", "", False, @@ -27,7 +36,7 @@ "application_load_balancer_multivalue_headers", "application-load-balancer-mutivalue-headers.json", "72.12.164.125", - "/lambda", + "/lambda?query=1234ABCD", "GET", "", False, @@ -51,7 +60,7 @@ "api_gateway", "api-gateway.json", "127.0.0.1", - "/path/to/resource", + "/path/to/resource?foo=bar", "POST", "eyJ0ZXN0IjoiYm9keSJ9", True, @@ -199,6 +208,40 @@ ), ] +ASM_BLOCKED_RESPONSE_TEST_CASES = [ + # JSON blocking response + ( + {"status_code": 403, "type": "auto", "content-type": "application/json"}, + 403, + {"content-type": "application/json"}, + ), + # HTML blocking response + ( + { + "status_code": 401, + "type": "html", + "content-type": "text/html", + }, + 401, + {"content-type": "text/html"}, + ), + # Plain text redirect response + ( + {"status_code": 301, "type": "none", "location": "https://example.com/blocked"}, + 301, + { + "content-type": "text/plain; charset=utf-8", + "location": "https://example.com/blocked", + }, + ), + # Default to content-type application/json and status code 403 when not provided + ( + {"type": "auto"}, + 403, + {"content-type": "application/json"}, + ), +] + @pytest.mark.parametrize( "name,file,expected_ip,expected_uri,expected_method,expected_body,expected_base64,expected_query,expected_path_params,expected_route", @@ -327,3 +370,31 @@ def test_asm_start_response_parametrized( else: # Verify core.dispatch was not called for non-HTTP events mock_core.dispatch.assert_not_called() + + +@pytest.mark.parametrize( + "blocked_config, expected_status, expected_headers", + ASM_BLOCKED_RESPONSE_TEST_CASES, +) +@patch("datadog_lambda.asm.get_blocked") +def test_get_asm_blocked_response_blocked( + mock_get_blocked, + blocked_config, + expected_status, + expected_headers, +): + mock_get_blocked.return_value = blocked_config + event_source = _EventSource(event_type=EventTypes.API_GATEWAY) + response = get_asm_blocked_response(event_source) + assert response["statusCode"] == expected_status + assert response["headers"] == expected_headers + + +@patch("datadog_lambda.asm.get_blocked") +def test_get_asm_blocked_response_not_blocked( + mock_get_blocked, +): + mock_get_blocked.return_value = None + event_source = _EventSource(event_type=EventTypes.API_GATEWAY) + response = get_asm_blocked_response(event_source) + assert response is None diff --git a/tests/test_wrapper.py b/tests/test_wrapper.py index fc081e90..e07b5ca9 100644 --- a/tests/test_wrapper.py +++ b/tests/test_wrapper.py @@ -2,8 +2,9 @@ import json import os import unittest +import importlib -from unittest.mock import patch, call, ANY +from unittest.mock import MagicMock, patch, call, ANY from datadog_lambda.constants import TraceHeader import datadog_lambda.wrapper as wrapper @@ -660,3 +661,117 @@ def lambda_handler(event, context): lambda_handler(lambda_event, lambda_context) self.assertEqual(len(flushes), 0) + + +class TestLambdaWrapperAppsecBlocking(unittest.TestCase): + def setUp(self): + os.environ["DD_APPSEC_ENABLED"] = "true" + os.environ["DD_TRACE_ENABLED"] = "true" + + importlib.reload(wrapper) + + self.addCleanup(os.environ.pop, "DD_APPSEC_ENABLED", None) + self.addCleanup(os.environ.pop, "DD_TRACE_ENABLED", None) + self.addCleanup(lambda: importlib.reload(wrapper)) + + patcher = patch("datadog_lambda.wrapper.asm_set_context") + self.mock_asm_set_context = patcher.start() + self.addCleanup(patcher.stop) + + patcher = patch("datadog_lambda.wrapper.asm_start_request") + self.mock_asm_start_request = patcher.start() + self.addCleanup(patcher.stop) + + patcher = patch("datadog_lambda.wrapper.asm_start_response") + self.mock_asm_start_response = patcher.start() + self.addCleanup(patcher.stop) + + patcher = patch("datadog_lambda.wrapper.get_asm_blocked_response") + self.mock_get_asm_blocking_response = patcher.start() + self.addCleanup(patcher.stop) + + self.fake_blocking_response = { + "statusCode": "403", + "headers": { + "Content-Type": "application/json", + }, + "body": '{"message": "Blocked by AppSec"}', + "isBase64Encoded": False, + } + + def test_blocking_before(self): + self.mock_get_asm_blocking_response.return_value = self.fake_blocking_response + + mock_handler = MagicMock() + + lambda_handler = wrapper.datadog_lambda_wrapper(mock_handler) + + response = lambda_handler({}, get_mock_context()) + self.assertEqual(response, self.fake_blocking_response) + + mock_handler.assert_not_called() + + self.mock_asm_set_context.assert_called_once() + self.mock_asm_start_request.assert_called_once() + self.mock_asm_start_response.assert_not_called() + + def test_blocking_during(self): + self.mock_get_asm_blocking_response.return_value = None + + @wrapper.datadog_lambda_wrapper + def lambda_handler(event, context): + self.mock_get_asm_blocking_response.return_value = ( + self.fake_blocking_response + ) + raise wrapper.BlockingException() + + response = lambda_handler({}, get_mock_context()) + self.assertEqual(response, self.fake_blocking_response) + + self.mock_asm_set_context.assert_called_once() + self.mock_asm_start_request.assert_called_once() + self.mock_asm_start_response.assert_not_called() + + def test_blocking_after(self): + self.mock_get_asm_blocking_response.return_value = None + + @wrapper.datadog_lambda_wrapper + def lambda_handler(event, context): + self.mock_get_asm_blocking_response.return_value = ( + self.fake_blocking_response + ) + return { + "statusCode": 200, + "body": "This should not be returned", + } + + response = lambda_handler({}, get_mock_context()) + self.assertEqual(response, self.fake_blocking_response) + + self.mock_asm_set_context.assert_called_once() + self.mock_asm_start_request.assert_called_once() + self.mock_asm_start_response.assert_called_once() + + def test_no_blocking_appsec_disabled(self): + os.environ["DD_APPSEC_ENABLED"] = "false" + + importlib.reload(wrapper) + + self.mock_get_asm_blocking_response.return_value = self.fake_blocking_response + + expected_response = { + "statusCode": 200, + "body": "This should be returned", + } + + @wrapper.datadog_lambda_wrapper + def lambda_handler(event, context): + return expected_response + + response = lambda_handler({}, get_mock_context()) + self.assertEqual(response, expected_response) + + self.mock_get_asm_blocking_response.assert_not_called() + self.mock_asm_set_context.assert_not_called() + self.mock_asm_start_request.assert_not_called() + self.mock_asm_start_response.assert_not_called() From 37078c336b29c32ed379dc23cd0ee1ccc3359736 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Thu, 24 Jul 2025 10:06:49 -0400 Subject: [PATCH 238/268] v7.113.0-dev (#634) * v7.113.0.dev0 PEP 400 requires it to be devN * remove .devN versioning from logs --- datadog_lambda/version.py | 2 +- pyproject.toml | 2 +- scripts/run_integration_tests.sh | 2 ++ 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index e1dbe71f..ae708026 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "7.112.0" +__version__ = "7.113.0.dev0" diff --git a/pyproject.toml b/pyproject.toml index 1a43b9e8..9efbd0fa 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "7.112.0" +version = "7.113.0.dev0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" diff --git a/scripts/run_integration_tests.sh b/scripts/run_integration_tests.sh index 9ea2f013..f6e4f537 100755 --- a/scripts/run_integration_tests.sh +++ b/scripts/run_integration_tests.sh @@ -212,6 +212,8 @@ for handler_name in "${LAMBDA_HANDLERS[@]}"; do sed -E "s/(datadog_lambda:v)([0-9]+\.[0-9]+\.[0-9]+)/\1XX/g" | sed -E "s/(datadogpy\/)([0-9]+\.[0-9]+\.[0-9]+)/\1XX/g" | sed -E "s/(python )([0-9]\.[0-9]+\.[0-9]+)/\1XX/g" | + # Remove .devN versioning from logs + sed -E "s/\.dev[0-9]+//g" | # Strip out run ID (from function name, resource, etc.) sed -E "s/${!run_id}/XXXX/g" | # Normalize python-requests version From 502303d672aac543e3e36cf08d44d325d464635c Mon Sep 17 00:00:00 2001 From: Taegyun Kim Date: Fri, 25 Jul 2025 03:14:42 +0900 Subject: [PATCH 239/268] fix(profiling): include ddup and dd_wrapper so files to enable profiling (#638) * chore(profiling): include ddup and dd_wrapper so files * bump up layer size limit * set to 21 --- Dockerfile | 2 -- scripts/check_layer_size.sh | 4 ++-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index c5824528..02910a78 100644 --- a/Dockerfile +++ b/Dockerfile @@ -23,8 +23,6 @@ RUN rm -rf ./python/lib/$runtime/site-packages/setuptools RUN rm -rf ./python/lib/$runtime/site-packages/jsonschema/tests RUN rm -f ./python/lib/$runtime/site-packages/ddtrace/appsec/_iast/_taint_tracking/*.so RUN rm -f ./python/lib/$runtime/site-packages/ddtrace/appsec/_iast/_stacktrace*.so -RUN rm -f ./python/lib/$runtime/site-packages/ddtrace/internal/datadog/profiling/libdd_wrapper*.so -RUN rm -f ./python/lib/$runtime/site-packages/ddtrace/internal/datadog/profiling/ddup/_ddup.*.so # _stack_v2 may not exist for some versions of ddtrace (e.g. under python 3.13) RUN rm -f ./python/lib/$runtime/site-packages/ddtrace/internal/datadog/profiling/stack_v2/_stack_v2.*.so # remove *.dist-info directories except any entry_points.txt files diff --git a/scripts/check_layer_size.sh b/scripts/check_layer_size.sh index 626f9d31..0b835cb0 100755 --- a/scripts/check_layer_size.sh +++ b/scripts/check_layer_size.sh @@ -8,8 +8,8 @@ # Compares layer size to threshold, and fails if below that threshold set -e -MAX_LAYER_COMPRESSED_SIZE_KB=$(expr 6 \* 1024) -MAX_LAYER_UNCOMPRESSED_SIZE_KB=$(expr 15 \* 1024) +MAX_LAYER_COMPRESSED_SIZE_KB=$(expr 8 \* 1024) +MAX_LAYER_UNCOMPRESSED_SIZE_KB=$(expr 21 \* 1024) LAYER_FILES_PREFIX="datadog_lambda_py" From 50d893a402a9ef28d958457a0293b6ab1eb18498 Mon Sep 17 00:00:00 2001 From: Florentin Labelle Date: Mon, 28 Jul 2025 16:46:21 +0200 Subject: [PATCH 240/268] feat(appsec): enable api security (#636) --- datadog_lambda/asm.py | 11 ++++++ datadog_lambda/wrapper.py | 3 ++ .../logs/async-metrics_python310.log | 2 ++ .../logs/async-metrics_python311.log | 2 ++ .../logs/async-metrics_python312.log | 2 ++ .../logs/async-metrics_python313.log | 2 ++ .../snapshots/logs/async-metrics_python38.log | 2 ++ .../snapshots/logs/async-metrics_python39.log | 2 ++ .../snapshots/logs/sync-metrics_python310.log | 2 ++ .../snapshots/logs/sync-metrics_python311.log | 2 ++ .../snapshots/logs/sync-metrics_python312.log | 2 ++ .../snapshots/logs/sync-metrics_python313.log | 2 ++ .../snapshots/logs/sync-metrics_python38.log | 2 ++ .../snapshots/logs/sync-metrics_python39.log | 2 ++ tests/test_asm.py | 35 ++++++++++++------- 15 files changed, 60 insertions(+), 13 deletions(-) diff --git a/datadog_lambda/asm.py b/datadog_lambda/asm.py index 11df2471..31f750d8 100644 --- a/datadog_lambda/asm.py +++ b/datadog_lambda/asm.py @@ -195,6 +195,17 @@ def asm_start_response( ), ) + if isinstance(response, dict) and "statusCode" in response: + body = response.get("body") + else: + body = response + + core.dispatch( + # The matching listener is registered in ddtrace.appsec._handlers + "aws_lambda.parse_body", + (body,), + ) + def get_asm_blocked_response( event_source: _EventSource, diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index 917a4fa0..49455625 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -318,6 +318,9 @@ def _after(self, event, context): if status_code: self.inferred_span.set_tag("http.status_code", status_code) + if self.trigger_tags and (route := self.trigger_tags.get("http.route")): + self.inferred_span.set_tag("http.route", route) + if config.service: self.inferred_span.set_tag("peer.service", config.service) diff --git a/tests/integration/snapshots/logs/async-metrics_python310.log b/tests/integration/snapshots/logs/async-metrics_python310.log index bda234df..6de63bec 100644 --- a/tests/integration/snapshots/logs/async-metrics_python310.log +++ b/tests/integration/snapshots/logs/async-metrics_python310.log @@ -66,6 +66,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "http.route": "/", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python", @@ -613,6 +614,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "http.route": "/httpapi/get", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python", diff --git a/tests/integration/snapshots/logs/async-metrics_python311.log b/tests/integration/snapshots/logs/async-metrics_python311.log index fd318de3..18bd119d 100644 --- a/tests/integration/snapshots/logs/async-metrics_python311.log +++ b/tests/integration/snapshots/logs/async-metrics_python311.log @@ -66,6 +66,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "http.route": "/", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python", @@ -613,6 +614,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "http.route": "/httpapi/get", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python", diff --git a/tests/integration/snapshots/logs/async-metrics_python312.log b/tests/integration/snapshots/logs/async-metrics_python312.log index b51b6a2d..e884a96d 100644 --- a/tests/integration/snapshots/logs/async-metrics_python312.log +++ b/tests/integration/snapshots/logs/async-metrics_python312.log @@ -66,6 +66,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "http.route": "/", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python", @@ -613,6 +614,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "http.route": "/httpapi/get", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python", diff --git a/tests/integration/snapshots/logs/async-metrics_python313.log b/tests/integration/snapshots/logs/async-metrics_python313.log index 89b73e92..3393f684 100644 --- a/tests/integration/snapshots/logs/async-metrics_python313.log +++ b/tests/integration/snapshots/logs/async-metrics_python313.log @@ -66,6 +66,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "http.route": "/", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python", @@ -613,6 +614,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "http.route": "/httpapi/get", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python", diff --git a/tests/integration/snapshots/logs/async-metrics_python38.log b/tests/integration/snapshots/logs/async-metrics_python38.log index ff5e5a60..0495ba45 100644 --- a/tests/integration/snapshots/logs/async-metrics_python38.log +++ b/tests/integration/snapshots/logs/async-metrics_python38.log @@ -66,6 +66,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "http.route": "/", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python", @@ -613,6 +614,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "http.route": "/httpapi/get", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python", diff --git a/tests/integration/snapshots/logs/async-metrics_python39.log b/tests/integration/snapshots/logs/async-metrics_python39.log index 5e3d46b6..d2aad04c 100644 --- a/tests/integration/snapshots/logs/async-metrics_python39.log +++ b/tests/integration/snapshots/logs/async-metrics_python39.log @@ -66,6 +66,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "http.route": "/", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python", @@ -613,6 +614,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "http.route": "/httpapi/get", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python", diff --git a/tests/integration/snapshots/logs/sync-metrics_python310.log b/tests/integration/snapshots/logs/sync-metrics_python310.log index 21569831..aa96b02d 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python310.log +++ b/tests/integration/snapshots/logs/sync-metrics_python310.log @@ -46,6 +46,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "http.route": "/", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python", @@ -653,6 +654,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "http.route": "/httpapi/get", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python", diff --git a/tests/integration/snapshots/logs/sync-metrics_python311.log b/tests/integration/snapshots/logs/sync-metrics_python311.log index 5fcd504d..91ae2e51 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python311.log +++ b/tests/integration/snapshots/logs/sync-metrics_python311.log @@ -46,6 +46,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "http.route": "/", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python", @@ -653,6 +654,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "http.route": "/httpapi/get", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python", diff --git a/tests/integration/snapshots/logs/sync-metrics_python312.log b/tests/integration/snapshots/logs/sync-metrics_python312.log index 9a05404c..81e897ca 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python312.log +++ b/tests/integration/snapshots/logs/sync-metrics_python312.log @@ -46,6 +46,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "http.route": "/", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python", @@ -653,6 +654,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "http.route": "/httpapi/get", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python", diff --git a/tests/integration/snapshots/logs/sync-metrics_python313.log b/tests/integration/snapshots/logs/sync-metrics_python313.log index 5d17bed5..77376e6b 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python313.log +++ b/tests/integration/snapshots/logs/sync-metrics_python313.log @@ -46,6 +46,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "http.route": "/", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python", @@ -653,6 +654,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "http.route": "/httpapi/get", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python", diff --git a/tests/integration/snapshots/logs/sync-metrics_python38.log b/tests/integration/snapshots/logs/sync-metrics_python38.log index 37ed391e..ddc8d751 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python38.log +++ b/tests/integration/snapshots/logs/sync-metrics_python38.log @@ -46,6 +46,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "http.route": "/", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python", @@ -653,6 +654,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "http.route": "/httpapi/get", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python", diff --git a/tests/integration/snapshots/logs/sync-metrics_python39.log b/tests/integration/snapshots/logs/sync-metrics_python39.log index f147744b..128319f6 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python39.log +++ b/tests/integration/snapshots/logs/sync-metrics_python39.log @@ -46,6 +46,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "http.route": "/", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python", @@ -653,6 +654,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "http.route": "/httpapi/get", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python", diff --git a/tests/test_asm.py b/tests/test_asm.py index e3a5e027..7a5e6c56 100644 --- a/tests/test_asm.py +++ b/tests/test_asm.py @@ -106,6 +106,7 @@ }, "200", {"Content-Type": "text/html"}, + None, True, ), ( @@ -123,6 +124,7 @@ "Content-Type": "text/plain", "X-Error": "Not Found", }, + None, True, ), ( @@ -140,6 +142,7 @@ "Location": "/user/123", "Content-Type": "application/json", }, + None, True, ), ( @@ -158,6 +161,7 @@ "Content-Type": "application/json", "X-Custom-Header": "test-value", }, + '{"message": "success"}', True, ), ( @@ -169,6 +173,7 @@ }, "200", {"Content-Type": "application/json"}, + None, True, ), ( @@ -180,6 +185,7 @@ }, "200", {"Content-Type": "text/plain"}, + None, True, ), ( @@ -188,6 +194,7 @@ {"statusCode": 200}, "200", {}, + None, False, # Should not dispatch for non-HTTP events ), ( @@ -196,6 +203,7 @@ "Hello, World!", "200", {"content-type": "application/json"}, + "Hello, World!", True, ), ( @@ -204,6 +212,7 @@ {"message": "Hello, World!"}, "200", {"content-type": "application/json"}, + {"message": "Hello, World!"}, True, ), ] @@ -326,7 +335,7 @@ def test_asm_start_request_parametrized( @pytest.mark.parametrize( - "name,event_file,response,status_code,expected_headers,should_dispatch", + "name,event_file,response,status_code,expected_headers,expected_body,should_dispatch", ASM_START_RESPONSE_TEST_CASES, ) @patch("datadog_lambda.asm.core") @@ -337,6 +346,7 @@ def test_asm_start_response_parametrized( response, status_code, expected_headers, + expected_body, should_dispatch, ): """Test ASM start response for various HTTP event types using parametrization""" @@ -355,18 +365,17 @@ def test_asm_start_response_parametrized( asm_start_response(mock_span, status_code, event_source, response) if should_dispatch: - # Verify core.dispatch was called - mock_core.dispatch.assert_called_once() - call_args = mock_core.dispatch.call_args - assert call_args[0][0] == "aws_lambda.start_response" - - # Extract the dispatched arguments - dispatch_args = call_args[0][1] - span, response_status_code, response_headers = dispatch_args - - assert span == mock_span - assert response_status_code == status_code - assert response_headers == expected_headers + assert mock_core.dispatch.call_count == 2 + + assert mock_core.dispatch.call_args_list[0].args == ( + "aws_lambda.start_response", + (mock_span, status_code, expected_headers), + ) + + assert mock_core.dispatch.call_args_list[1].args == ( + "aws_lambda.parse_body", + (expected_body,), + ) else: # Verify core.dispatch was not called for non-HTTP events mock_core.dispatch.assert_not_called() From 7806d7283bbf175da805adf35a8b3747bc60ab19 Mon Sep 17 00:00:00 2001 From: Zarir Hamza Date: Mon, 28 Jul 2025 15:41:47 -0400 Subject: [PATCH 241/268] Enhance Synthetic Span Service Representation (#635) * Update naming and corresponding tracer changes --- datadog_lambda/tracing.py | 65 +++++++-- pyproject.toml | 2 +- tests/event_samples/kinesisStream.json | 20 +++ .../logs/async-metrics_python310.log | 128 +++++++--------- .../logs/async-metrics_python311.log | 128 +++++++--------- .../logs/async-metrics_python312.log | 128 +++++++--------- .../logs/async-metrics_python313.log | 128 +++++++--------- .../snapshots/logs/async-metrics_python38.log | 128 +++++++--------- .../snapshots/logs/async-metrics_python39.log | 128 +++++++--------- .../snapshots/logs/sync-metrics_python310.log | 137 +++++++----------- .../snapshots/logs/sync-metrics_python311.log | 137 +++++++----------- .../snapshots/logs/sync-metrics_python312.log | 137 +++++++----------- .../snapshots/logs/sync-metrics_python313.log | 137 +++++++----------- .../snapshots/logs/sync-metrics_python38.log | 137 +++++++----------- .../snapshots/logs/sync-metrics_python39.log | 137 +++++++----------- tests/test_tracing.py | 72 ++++++--- 16 files changed, 726 insertions(+), 1023 deletions(-) create mode 100644 tests/event_samples/kinesisStream.json diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index f4057480..51157f6a 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -4,6 +4,7 @@ # Copyright 2019 Datadog, Inc. import logging import os +import re import traceback import ujson as json from datetime import datetime, timezone @@ -856,15 +857,31 @@ def create_service_mapping(val): return new_service_mapping -def determine_service_name(service_mapping, specific_key, generic_key, default_value): - service_name = service_mapping.get(specific_key) - if service_name is None: - service_name = service_mapping.get(generic_key, default_value) - return service_name +def determine_service_name( + service_mapping, specific_key, generic_key, extracted_key, fallback=None +): + # Check for mapped service (specific key first, then generic key) + mapped_service = service_mapping.get(specific_key) or service_mapping.get( + generic_key + ) + if mapped_service: + return mapped_service + + # Check if AWS service representation is disabled + aws_service_representation = os.environ.get( + "DD_TRACE_AWS_SERVICE_REPRESENTATION_ENABLED", "" + ).lower() + if aws_service_representation in ("false", "0"): + return fallback + + # Use extracted_key if it exists and is not empty, otherwise use fallback + return ( + extracted_key.strip() if extracted_key and extracted_key.strip() else fallback + ) # Initialization code -service_mapping_str = os.getenv("DD_SERVICE_MAPPING", "") +service_mapping_str = os.environ.get("DD_SERVICE_MAPPING", "") service_mapping = create_service_mapping(service_mapping_str) _dd_origin = {"_dd.origin": "lambda"} @@ -988,6 +1005,7 @@ def create_inferred_span_from_api_gateway_websocket_event( "http.url": http_url, "endpoint": endpoint, "resource_names": endpoint, + "span.kind": "server", "apiid": api_id, "apiname": api_id, "stage": request_context.get("stage"), @@ -1046,6 +1064,7 @@ def create_inferred_span_from_api_gateway_event( "endpoint": path, "http.method": method, "resource_names": resource, + "span.kind": "server", "apiid": api_id, "apiname": api_id, "stage": request_context.get("stage"), @@ -1150,12 +1169,13 @@ def create_inferred_span_from_sqs_event(event, context): event_source_arn = event_record.get("eventSourceARN") queue_name = event_source_arn.split(":")[-1] service_name = determine_service_name( - service_mapping, queue_name, "lambda_sqs", "sqs" + service_mapping, queue_name, "lambda_sqs", queue_name, "sqs" ) attrs = event_record.get("attributes") or {} tags = { "operation_name": "aws.sqs", "resource_names": queue_name, + "span.kind": "server", "queuename": queue_name, "event_source_arn": event_source_arn, "receipt_handle": event_record.get("receiptHandle"), @@ -1217,11 +1237,12 @@ def create_inferred_span_from_sns_event(event, context): topic_arn = sns_message.get("TopicArn") topic_name = topic_arn.split(":")[-1] service_name = determine_service_name( - service_mapping, topic_name, "lambda_sns", "sns" + service_mapping, topic_name, "lambda_sns", topic_name, "sns" ) tags = { "operation_name": "aws.sns", "resource_names": topic_name, + "span.kind": "server", "topicname": topic_name, "topic_arn": topic_arn, "message_id": sns_message.get("MessageId"), @@ -1252,15 +1273,16 @@ def create_inferred_span_from_kinesis_event(event, context): event_record = get_first_record(event) event_source_arn = event_record.get("eventSourceARN") event_id = event_record.get("eventID") - stream_name = event_source_arn.split(":")[-1] + stream_name = re.sub(r"^stream/", "", (event_source_arn or "").split(":")[-1]) shard_id = event_id.split(":")[0] service_name = determine_service_name( - service_mapping, stream_name, "lambda_kinesis", "kinesis" + service_mapping, stream_name, "lambda_kinesis", stream_name, "kinesis" ) kinesis = event_record.get("kinesis") or {} tags = { "operation_name": "aws.kinesis", "resource_names": stream_name, + "span.kind": "server", "streamname": stream_name, "shardid": shard_id, "event_source_arn": event_source_arn, @@ -1287,12 +1309,13 @@ def create_inferred_span_from_dynamodb_event(event, context): event_source_arn = event_record.get("eventSourceARN") table_name = event_source_arn.split("/")[1] service_name = determine_service_name( - service_mapping, table_name, "lambda_dynamodb", "dynamodb" + service_mapping, table_name, "lambda_dynamodb", table_name, "dynamodb" ) dynamodb_message = event_record.get("dynamodb") or {} tags = { "operation_name": "aws.dynamodb", "resource_names": table_name, + "span.kind": "server", "tablename": table_name, "event_source_arn": event_source_arn, "event_id": event_record.get("eventID"), @@ -1321,11 +1344,12 @@ def create_inferred_span_from_s3_event(event, context): obj = s3.get("object") or {} bucket_name = bucket.get("name") service_name = determine_service_name( - service_mapping, bucket_name, "lambda_s3", "s3" + service_mapping, bucket_name, "lambda_s3", bucket_name, "s3" ) tags = { "operation_name": "aws.s3", "resource_names": bucket_name, + "span.kind": "server", "event_name": event_record.get("eventName"), "bucketname": bucket_name, "bucket_arn": bucket.get("arn"), @@ -1351,11 +1375,12 @@ def create_inferred_span_from_s3_event(event, context): def create_inferred_span_from_eventbridge_event(event, context): source = event.get("source") service_name = determine_service_name( - service_mapping, source, "lambda_eventbridge", "eventbridge" + service_mapping, source, "lambda_eventbridge", source, "eventbridge" ) tags = { "operation_name": "aws.eventbridge", "resource_names": source, + "span.kind": "server", "detail_type": event.get("detail-type"), } InferredSpanInfo.set_tags( @@ -1429,9 +1454,21 @@ def create_function_execution_span( tags["_dd.parent_source"] = trace_context_source tags.update(trigger_tags) tracer.set_tags(_dd_origin) + # Determine service name based on config and env var + if config.service: + service_name = config.service + else: + aws_service_representation = os.environ.get( + "DD_TRACE_AWS_SERVICE_REPRESENTATION_ENABLED", "" + ).lower() + if aws_service_representation in ("false", "0"): + service_name = "aws.lambda" + else: + service_name = function_name if function_name else "aws.lambda" + span = tracer.trace( "aws.lambda", - service="aws.lambda", + service=service_name, resource=function_name, span_type="serverless", ) diff --git a/pyproject.toml b/pyproject.toml index 9efbd0fa..77c08cb5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -28,7 +28,7 @@ classifiers = [ python = ">=3.8.0,<4" datadog = ">=0.51.0,<1.0.0" wrapt = "^1.11.2" -ddtrace = ">=3.10.2,<4" +ddtrace = ">=3.11.0,<4" ujson = ">=5.9.0" botocore = { version = "^1.34.0", optional = true } requests = { version ="^2.22.0", optional = true } diff --git a/tests/event_samples/kinesisStream.json b/tests/event_samples/kinesisStream.json new file mode 100644 index 00000000..a320fc44 --- /dev/null +++ b/tests/event_samples/kinesisStream.json @@ -0,0 +1,20 @@ +{ + "Records": [ + { + "kinesis": { + "kinesisSchemaVersion": "1.0", + "partitionKey": "partitionkey", + "sequenceNumber": "49624230154685806402418173680709770494154422022871973922", + "data": "eyJmb28iOiAiYmFyIiwgIl9kYXRhZG9nIjogeyJ4LWRhdGFkb2ctdHJhY2UtaWQiOiAiNDk0ODM3NzMxNjM1NzI5MTQyMSIsICJ4LWRhdGFkb2ctcGFyZW50LWlkIjogIjI4NzYyNTMzODAwMTg2ODEwMjYiLCAieC1kYXRhZG9nLXNhbXBsaW5nLXByaW9yaXR5IjogIjEifX0=", + "approximateArrivalTimestamp": 1643638425.163 + }, + "eventSource": "aws:kinesis", + "eventVersion": "1.0", + "eventID": "shardId-000000000002:49624230154685806402418173680709770494154422022871973922", + "eventName": "aws:kinesis:record", + "invokeIdentityArn": "arn:aws:iam::601427279990:role/inferred-spans-python-dev-eu-west-1-lambdaRole", + "awsRegion": "eu-west-1", + "eventSourceARN": "arn:aws:kinesis:eu-west-1:601427279990:stream/kinesisStream" + } + ] +} diff --git a/tests/integration/snapshots/logs/async-metrics_python310.log b/tests/integration/snapshots/logs/async-metrics_python310.log index 6de63bec..66351a99 100644 --- a/tests/integration/snapshots/logs/async-metrics_python310.log +++ b/tests/integration/snapshots/logs/async-metrics_python310.log @@ -59,6 +59,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "endpoint": "/", "http.method": "GET", "resource_names": "GET /", + "span.kind": "server", "apiid": "XXXX", "apiname": "XXXX", "stage": "Prod", @@ -69,7 +70,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.route": "/", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -85,7 +85,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python310", "name": "aws.lambda", "error": 0, @@ -108,8 +108,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url_details.path": "/Prod/", "http.method": "GET", "http.route": "/", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" + "http.status_code": "200" }, "metrics": { "_dd.top_level": 1 @@ -134,8 +133,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -162,8 +160,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -229,7 +226,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "dynamodb", + "service": "ExampleTableWithStream", "resource": "ExampleTableWithStream", "name": "aws.dynamodb", "error": 0, @@ -240,6 +237,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.dynamodb", "resource_names": "ExampleTableWithStream", + "span.kind": "server", "tablename": "ExampleTableWithStream", "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", "event_id": "XXXX", @@ -251,7 +249,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -299,7 +296,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python310", "name": "aws.lambda", "error": 0, @@ -317,8 +314,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -343,8 +339,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -371,8 +366,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -429,7 +423,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "eventbridge", + "service": "eventbridge.custom.event.sender", "resource": "eventbridge.custom.event.sender", "name": "aws.eventbridge", "error": 0, @@ -440,12 +434,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.eventbridge", "resource_names": "eventbridge.custom.event.sender", + "span.kind": "server", "detail_type": "testdetail", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -461,7 +455,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python310", "name": "aws.lambda", "error": 0, @@ -478,8 +472,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "function_trigger.event_source": "eventbridge", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source": "eventbridge" }, "metrics": { "_dd.top_level": 1 @@ -504,8 +497,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -532,8 +524,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -617,7 +608,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.route": "/httpapi/get", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -633,7 +623,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python310", "name": "aws.lambda", "error": 0, @@ -656,8 +646,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url_details.path": "/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" + "http.status_code": "200" }, "metrics": { "_dd.top_level": 1 @@ -682,8 +671,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -710,8 +698,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -768,7 +755,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "kinesis", + "service": "EXAMPLE", "resource": "EXAMPLE", "name": "aws.kinesis", "error": 0, @@ -779,6 +766,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.kinesis", "resource_names": "EXAMPLE", + "span.kind": "server", "streamname": "EXAMPLE", "shardid": "shardId-XXXX", "event_source_arn": "arn:aws:kinesis:EXAMPLE", @@ -790,7 +778,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -806,7 +793,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python310", "name": "aws.lambda", "error": 0, @@ -824,8 +811,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "kinesis", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -850,8 +836,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -878,8 +863,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -936,7 +920,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "s3", + "service": "example-bucket", "resource": "example-bucket", "name": "aws.s3", "error": 0, @@ -945,6 +929,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.s3", "resource_names": "example-bucket", + "span.kind": "server", "event_name": "ObjectCreated:Put", "bucketname": "example-bucket", "bucket_arn": "arn:aws:s3:::example-bucket", @@ -955,7 +940,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -983,7 +967,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python310", "name": "aws.lambda", "error": 0, @@ -1001,8 +985,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "s3", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -1027,8 +1010,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1055,8 +1037,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1113,7 +1094,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "sns", + "service": "sns-lambda", "resource": "sns-lambda", "name": "aws.sns", "error": 0, @@ -1124,6 +1105,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.sns", "resource_names": "sns-lambda", + "span.kind": "server", "topicname": "sns-lambda", "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", "message_id": "XXXX", @@ -1133,7 +1115,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1149,7 +1130,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python310", "name": "aws.lambda", "error": 0, @@ -1167,8 +1148,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sns", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -1193,8 +1173,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1221,8 +1200,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1279,7 +1257,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "sqs", + "service": "my-queue", "resource": "my-queue", "name": "aws.sqs", "error": 0, @@ -1290,6 +1268,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.sqs", "resource_names": "my-queue", + "span.kind": "server", "queuename": "my-queue", "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", @@ -1298,7 +1277,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1314,7 +1292,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python310", "name": "aws.lambda", "error": 0, @@ -1332,8 +1310,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sqs", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -1358,8 +1335,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1386,8 +1362,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1457,6 +1432,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com$default/", "endpoint": "$default", "resource_names": "$default", + "span.kind": "server", "apiid": "XXXX", "apiname": "XXXX", "stage": "dev", @@ -1469,7 +1445,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1485,7 +1460,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python310", "name": "aws.lambda", "error": 0, @@ -1505,8 +1480,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" + "http.status_code": "200" }, "metrics": { "_dd.top_level": 1 @@ -1531,8 +1505,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1559,8 +1532,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 diff --git a/tests/integration/snapshots/logs/async-metrics_python311.log b/tests/integration/snapshots/logs/async-metrics_python311.log index 18bd119d..8e19e239 100644 --- a/tests/integration/snapshots/logs/async-metrics_python311.log +++ b/tests/integration/snapshots/logs/async-metrics_python311.log @@ -59,6 +59,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "endpoint": "/", "http.method": "GET", "resource_names": "GET /", + "span.kind": "server", "apiid": "XXXX", "apiname": "XXXX", "stage": "Prod", @@ -69,7 +70,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.route": "/", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -85,7 +85,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python311", "name": "aws.lambda", "error": 0, @@ -108,8 +108,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url_details.path": "/Prod/", "http.method": "GET", "http.route": "/", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" + "http.status_code": "200" }, "metrics": { "_dd.top_level": 1 @@ -134,8 +133,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -162,8 +160,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -229,7 +226,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "dynamodb", + "service": "ExampleTableWithStream", "resource": "ExampleTableWithStream", "name": "aws.dynamodb", "error": 0, @@ -240,6 +237,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.dynamodb", "resource_names": "ExampleTableWithStream", + "span.kind": "server", "tablename": "ExampleTableWithStream", "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", "event_id": "XXXX", @@ -251,7 +249,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -299,7 +296,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python311", "name": "aws.lambda", "error": 0, @@ -317,8 +314,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -343,8 +339,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -371,8 +366,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -429,7 +423,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "eventbridge", + "service": "eventbridge.custom.event.sender", "resource": "eventbridge.custom.event.sender", "name": "aws.eventbridge", "error": 0, @@ -440,12 +434,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.eventbridge", "resource_names": "eventbridge.custom.event.sender", + "span.kind": "server", "detail_type": "testdetail", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -461,7 +455,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python311", "name": "aws.lambda", "error": 0, @@ -478,8 +472,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "function_trigger.event_source": "eventbridge", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source": "eventbridge" }, "metrics": { "_dd.top_level": 1 @@ -504,8 +497,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -532,8 +524,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -617,7 +608,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.route": "/httpapi/get", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -633,7 +623,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python311", "name": "aws.lambda", "error": 0, @@ -656,8 +646,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url_details.path": "/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" + "http.status_code": "200" }, "metrics": { "_dd.top_level": 1 @@ -682,8 +671,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -710,8 +698,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -768,7 +755,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "kinesis", + "service": "EXAMPLE", "resource": "EXAMPLE", "name": "aws.kinesis", "error": 0, @@ -779,6 +766,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.kinesis", "resource_names": "EXAMPLE", + "span.kind": "server", "streamname": "EXAMPLE", "shardid": "shardId-XXXX", "event_source_arn": "arn:aws:kinesis:EXAMPLE", @@ -790,7 +778,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -806,7 +793,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python311", "name": "aws.lambda", "error": 0, @@ -824,8 +811,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "kinesis", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -850,8 +836,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -878,8 +863,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -936,7 +920,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "s3", + "service": "example-bucket", "resource": "example-bucket", "name": "aws.s3", "error": 0, @@ -945,6 +929,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.s3", "resource_names": "example-bucket", + "span.kind": "server", "event_name": "ObjectCreated:Put", "bucketname": "example-bucket", "bucket_arn": "arn:aws:s3:::example-bucket", @@ -955,7 +940,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -983,7 +967,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python311", "name": "aws.lambda", "error": 0, @@ -1001,8 +985,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "s3", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -1027,8 +1010,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1055,8 +1037,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1113,7 +1094,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "sns", + "service": "sns-lambda", "resource": "sns-lambda", "name": "aws.sns", "error": 0, @@ -1124,6 +1105,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.sns", "resource_names": "sns-lambda", + "span.kind": "server", "topicname": "sns-lambda", "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", "message_id": "XXXX", @@ -1133,7 +1115,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1149,7 +1130,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python311", "name": "aws.lambda", "error": 0, @@ -1167,8 +1148,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sns", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -1193,8 +1173,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1221,8 +1200,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1279,7 +1257,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "sqs", + "service": "my-queue", "resource": "my-queue", "name": "aws.sqs", "error": 0, @@ -1290,6 +1268,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.sqs", "resource_names": "my-queue", + "span.kind": "server", "queuename": "my-queue", "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", @@ -1298,7 +1277,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1314,7 +1292,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python311", "name": "aws.lambda", "error": 0, @@ -1332,8 +1310,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sqs", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -1358,8 +1335,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1386,8 +1362,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1457,6 +1432,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com$default/", "endpoint": "$default", "resource_names": "$default", + "span.kind": "server", "apiid": "XXXX", "apiname": "XXXX", "stage": "dev", @@ -1469,7 +1445,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1485,7 +1460,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python311", "name": "aws.lambda", "error": 0, @@ -1505,8 +1480,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" + "http.status_code": "200" }, "metrics": { "_dd.top_level": 1 @@ -1531,8 +1505,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1559,8 +1532,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 diff --git a/tests/integration/snapshots/logs/async-metrics_python312.log b/tests/integration/snapshots/logs/async-metrics_python312.log index e884a96d..9879d875 100644 --- a/tests/integration/snapshots/logs/async-metrics_python312.log +++ b/tests/integration/snapshots/logs/async-metrics_python312.log @@ -59,6 +59,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "endpoint": "/", "http.method": "GET", "resource_names": "GET /", + "span.kind": "server", "apiid": "XXXX", "apiname": "XXXX", "stage": "Prod", @@ -69,7 +70,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.route": "/", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -85,7 +85,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python312", "name": "aws.lambda", "error": 0, @@ -108,8 +108,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url_details.path": "/Prod/", "http.method": "GET", "http.route": "/", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" + "http.status_code": "200" }, "metrics": { "_dd.top_level": 1 @@ -134,8 +133,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -162,8 +160,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -229,7 +226,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "dynamodb", + "service": "ExampleTableWithStream", "resource": "ExampleTableWithStream", "name": "aws.dynamodb", "error": 0, @@ -240,6 +237,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.dynamodb", "resource_names": "ExampleTableWithStream", + "span.kind": "server", "tablename": "ExampleTableWithStream", "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", "event_id": "XXXX", @@ -251,7 +249,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -299,7 +296,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python312", "name": "aws.lambda", "error": 0, @@ -317,8 +314,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -343,8 +339,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -371,8 +366,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -429,7 +423,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "eventbridge", + "service": "eventbridge.custom.event.sender", "resource": "eventbridge.custom.event.sender", "name": "aws.eventbridge", "error": 0, @@ -440,12 +434,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.eventbridge", "resource_names": "eventbridge.custom.event.sender", + "span.kind": "server", "detail_type": "testdetail", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -461,7 +455,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python312", "name": "aws.lambda", "error": 0, @@ -478,8 +472,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "function_trigger.event_source": "eventbridge", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source": "eventbridge" }, "metrics": { "_dd.top_level": 1 @@ -504,8 +497,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -532,8 +524,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -617,7 +608,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.route": "/httpapi/get", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -633,7 +623,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python312", "name": "aws.lambda", "error": 0, @@ -656,8 +646,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url_details.path": "/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" + "http.status_code": "200" }, "metrics": { "_dd.top_level": 1 @@ -682,8 +671,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -710,8 +698,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -768,7 +755,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "kinesis", + "service": "EXAMPLE", "resource": "EXAMPLE", "name": "aws.kinesis", "error": 0, @@ -779,6 +766,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.kinesis", "resource_names": "EXAMPLE", + "span.kind": "server", "streamname": "EXAMPLE", "shardid": "shardId-XXXX", "event_source_arn": "arn:aws:kinesis:EXAMPLE", @@ -790,7 +778,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -806,7 +793,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python312", "name": "aws.lambda", "error": 0, @@ -824,8 +811,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "kinesis", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -850,8 +836,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -878,8 +863,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -936,7 +920,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "s3", + "service": "example-bucket", "resource": "example-bucket", "name": "aws.s3", "error": 0, @@ -945,6 +929,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.s3", "resource_names": "example-bucket", + "span.kind": "server", "event_name": "ObjectCreated:Put", "bucketname": "example-bucket", "bucket_arn": "arn:aws:s3:::example-bucket", @@ -955,7 +940,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -983,7 +967,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python312", "name": "aws.lambda", "error": 0, @@ -1001,8 +985,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "s3", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -1027,8 +1010,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1055,8 +1037,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1113,7 +1094,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "sns", + "service": "sns-lambda", "resource": "sns-lambda", "name": "aws.sns", "error": 0, @@ -1124,6 +1105,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.sns", "resource_names": "sns-lambda", + "span.kind": "server", "topicname": "sns-lambda", "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", "message_id": "XXXX", @@ -1133,7 +1115,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1149,7 +1130,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python312", "name": "aws.lambda", "error": 0, @@ -1167,8 +1148,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sns", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -1193,8 +1173,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1221,8 +1200,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1279,7 +1257,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "sqs", + "service": "my-queue", "resource": "my-queue", "name": "aws.sqs", "error": 0, @@ -1290,6 +1268,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.sqs", "resource_names": "my-queue", + "span.kind": "server", "queuename": "my-queue", "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", @@ -1298,7 +1277,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1314,7 +1292,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python312", "name": "aws.lambda", "error": 0, @@ -1332,8 +1310,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sqs", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -1358,8 +1335,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1386,8 +1362,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1457,6 +1432,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com$default/", "endpoint": "$default", "resource_names": "$default", + "span.kind": "server", "apiid": "XXXX", "apiname": "XXXX", "stage": "dev", @@ -1469,7 +1445,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1485,7 +1460,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python312", "name": "aws.lambda", "error": 0, @@ -1505,8 +1480,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" + "http.status_code": "200" }, "metrics": { "_dd.top_level": 1 @@ -1531,8 +1505,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1559,8 +1532,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 diff --git a/tests/integration/snapshots/logs/async-metrics_python313.log b/tests/integration/snapshots/logs/async-metrics_python313.log index 3393f684..92bb83ef 100644 --- a/tests/integration/snapshots/logs/async-metrics_python313.log +++ b/tests/integration/snapshots/logs/async-metrics_python313.log @@ -59,6 +59,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "endpoint": "/", "http.method": "GET", "resource_names": "GET /", + "span.kind": "server", "apiid": "XXXX", "apiname": "XXXX", "stage": "Prod", @@ -69,7 +70,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.route": "/", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -85,7 +85,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python313", "name": "aws.lambda", "error": 0, @@ -108,8 +108,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url_details.path": "/Prod/", "http.method": "GET", "http.route": "/", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" + "http.status_code": "200" }, "metrics": { "_dd.top_level": 1 @@ -134,8 +133,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -162,8 +160,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -229,7 +226,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "dynamodb", + "service": "ExampleTableWithStream", "resource": "ExampleTableWithStream", "name": "aws.dynamodb", "error": 0, @@ -240,6 +237,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.dynamodb", "resource_names": "ExampleTableWithStream", + "span.kind": "server", "tablename": "ExampleTableWithStream", "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", "event_id": "XXXX", @@ -251,7 +249,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -299,7 +296,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python313", "name": "aws.lambda", "error": 0, @@ -317,8 +314,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -343,8 +339,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -371,8 +366,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -429,7 +423,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "eventbridge", + "service": "eventbridge.custom.event.sender", "resource": "eventbridge.custom.event.sender", "name": "aws.eventbridge", "error": 0, @@ -440,12 +434,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.eventbridge", "resource_names": "eventbridge.custom.event.sender", + "span.kind": "server", "detail_type": "testdetail", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -461,7 +455,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python313", "name": "aws.lambda", "error": 0, @@ -478,8 +472,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "function_trigger.event_source": "eventbridge", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source": "eventbridge" }, "metrics": { "_dd.top_level": 1 @@ -504,8 +497,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -532,8 +524,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -617,7 +608,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.route": "/httpapi/get", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -633,7 +623,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python313", "name": "aws.lambda", "error": 0, @@ -656,8 +646,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url_details.path": "/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" + "http.status_code": "200" }, "metrics": { "_dd.top_level": 1 @@ -682,8 +671,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -710,8 +698,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -768,7 +755,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "kinesis", + "service": "EXAMPLE", "resource": "EXAMPLE", "name": "aws.kinesis", "error": 0, @@ -779,6 +766,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.kinesis", "resource_names": "EXAMPLE", + "span.kind": "server", "streamname": "EXAMPLE", "shardid": "shardId-XXXX", "event_source_arn": "arn:aws:kinesis:EXAMPLE", @@ -790,7 +778,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -806,7 +793,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python313", "name": "aws.lambda", "error": 0, @@ -824,8 +811,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "kinesis", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -850,8 +836,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -878,8 +863,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -936,7 +920,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "s3", + "service": "example-bucket", "resource": "example-bucket", "name": "aws.s3", "error": 0, @@ -945,6 +929,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.s3", "resource_names": "example-bucket", + "span.kind": "server", "event_name": "ObjectCreated:Put", "bucketname": "example-bucket", "bucket_arn": "arn:aws:s3:::example-bucket", @@ -955,7 +940,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -983,7 +967,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python313", "name": "aws.lambda", "error": 0, @@ -1001,8 +985,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "s3", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -1027,8 +1010,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1055,8 +1037,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1113,7 +1094,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "sns", + "service": "sns-lambda", "resource": "sns-lambda", "name": "aws.sns", "error": 0, @@ -1124,6 +1105,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.sns", "resource_names": "sns-lambda", + "span.kind": "server", "topicname": "sns-lambda", "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", "message_id": "XXXX", @@ -1133,7 +1115,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1149,7 +1130,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python313", "name": "aws.lambda", "error": 0, @@ -1167,8 +1148,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sns", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -1193,8 +1173,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1221,8 +1200,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1279,7 +1257,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "sqs", + "service": "my-queue", "resource": "my-queue", "name": "aws.sqs", "error": 0, @@ -1290,6 +1268,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.sqs", "resource_names": "my-queue", + "span.kind": "server", "queuename": "my-queue", "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", @@ -1298,7 +1277,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1314,7 +1292,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python313", "name": "aws.lambda", "error": 0, @@ -1332,8 +1310,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sqs", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -1358,8 +1335,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1386,8 +1362,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1457,6 +1432,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com$default/", "endpoint": "$default", "resource_names": "$default", + "span.kind": "server", "apiid": "XXXX", "apiname": "XXXX", "stage": "dev", @@ -1469,7 +1445,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1485,7 +1460,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python313", "name": "aws.lambda", "error": 0, @@ -1505,8 +1480,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" + "http.status_code": "200" }, "metrics": { "_dd.top_level": 1 @@ -1531,8 +1505,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1559,8 +1532,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 diff --git a/tests/integration/snapshots/logs/async-metrics_python38.log b/tests/integration/snapshots/logs/async-metrics_python38.log index 0495ba45..6c502146 100644 --- a/tests/integration/snapshots/logs/async-metrics_python38.log +++ b/tests/integration/snapshots/logs/async-metrics_python38.log @@ -59,6 +59,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "endpoint": "/", "http.method": "GET", "resource_names": "GET /", + "span.kind": "server", "apiid": "XXXX", "apiname": "XXXX", "stage": "Prod", @@ -69,7 +70,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.route": "/", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -85,7 +85,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python38", "name": "aws.lambda", "error": 0, @@ -108,8 +108,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url_details.path": "/Prod/", "http.method": "GET", "http.route": "/", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" + "http.status_code": "200" }, "metrics": { "_dd.top_level": 1 @@ -134,8 +133,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -162,8 +160,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -229,7 +226,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "dynamodb", + "service": "ExampleTableWithStream", "resource": "ExampleTableWithStream", "name": "aws.dynamodb", "error": 0, @@ -240,6 +237,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.dynamodb", "resource_names": "ExampleTableWithStream", + "span.kind": "server", "tablename": "ExampleTableWithStream", "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", "event_id": "XXXX", @@ -251,7 +249,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -299,7 +296,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python38", "name": "aws.lambda", "error": 0, @@ -317,8 +314,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -343,8 +339,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -371,8 +366,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -429,7 +423,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "eventbridge", + "service": "eventbridge.custom.event.sender", "resource": "eventbridge.custom.event.sender", "name": "aws.eventbridge", "error": 0, @@ -440,12 +434,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.eventbridge", "resource_names": "eventbridge.custom.event.sender", + "span.kind": "server", "detail_type": "testdetail", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -461,7 +455,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python38", "name": "aws.lambda", "error": 0, @@ -478,8 +472,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "function_trigger.event_source": "eventbridge", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source": "eventbridge" }, "metrics": { "_dd.top_level": 1 @@ -504,8 +497,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -532,8 +524,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -617,7 +608,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.route": "/httpapi/get", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -633,7 +623,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python38", "name": "aws.lambda", "error": 0, @@ -656,8 +646,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url_details.path": "/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" + "http.status_code": "200" }, "metrics": { "_dd.top_level": 1 @@ -682,8 +671,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -710,8 +698,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -768,7 +755,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "kinesis", + "service": "EXAMPLE", "resource": "EXAMPLE", "name": "aws.kinesis", "error": 0, @@ -779,6 +766,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.kinesis", "resource_names": "EXAMPLE", + "span.kind": "server", "streamname": "EXAMPLE", "shardid": "shardId-XXXX", "event_source_arn": "arn:aws:kinesis:EXAMPLE", @@ -790,7 +778,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -806,7 +793,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python38", "name": "aws.lambda", "error": 0, @@ -824,8 +811,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "kinesis", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -850,8 +836,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -878,8 +863,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -936,7 +920,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "s3", + "service": "example-bucket", "resource": "example-bucket", "name": "aws.s3", "error": 0, @@ -945,6 +929,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.s3", "resource_names": "example-bucket", + "span.kind": "server", "event_name": "ObjectCreated:Put", "bucketname": "example-bucket", "bucket_arn": "arn:aws:s3:::example-bucket", @@ -955,7 +940,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -983,7 +967,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python38", "name": "aws.lambda", "error": 0, @@ -1001,8 +985,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "s3", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -1027,8 +1010,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1055,8 +1037,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1113,7 +1094,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "sns", + "service": "sns-lambda", "resource": "sns-lambda", "name": "aws.sns", "error": 0, @@ -1124,6 +1105,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.sns", "resource_names": "sns-lambda", + "span.kind": "server", "topicname": "sns-lambda", "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", "message_id": "XXXX", @@ -1133,7 +1115,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1149,7 +1130,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python38", "name": "aws.lambda", "error": 0, @@ -1167,8 +1148,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sns", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -1193,8 +1173,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1221,8 +1200,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1279,7 +1257,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "sqs", + "service": "my-queue", "resource": "my-queue", "name": "aws.sqs", "error": 0, @@ -1290,6 +1268,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.sqs", "resource_names": "my-queue", + "span.kind": "server", "queuename": "my-queue", "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", @@ -1298,7 +1277,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1314,7 +1292,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python38", "name": "aws.lambda", "error": 0, @@ -1332,8 +1310,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sqs", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -1358,8 +1335,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1386,8 +1362,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1457,6 +1432,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com$default/", "endpoint": "$default", "resource_names": "$default", + "span.kind": "server", "apiid": "XXXX", "apiname": "XXXX", "stage": "dev", @@ -1469,7 +1445,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1485,7 +1460,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python38", "name": "aws.lambda", "error": 0, @@ -1505,8 +1480,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" + "http.status_code": "200" }, "metrics": { "_dd.top_level": 1 @@ -1531,8 +1505,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1559,8 +1532,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 diff --git a/tests/integration/snapshots/logs/async-metrics_python39.log b/tests/integration/snapshots/logs/async-metrics_python39.log index d2aad04c..42bdaeb8 100644 --- a/tests/integration/snapshots/logs/async-metrics_python39.log +++ b/tests/integration/snapshots/logs/async-metrics_python39.log @@ -59,6 +59,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "endpoint": "/", "http.method": "GET", "resource_names": "GET /", + "span.kind": "server", "apiid": "XXXX", "apiname": "XXXX", "stage": "Prod", @@ -69,7 +70,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.route": "/", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -85,7 +85,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python39", "name": "aws.lambda", "error": 0, @@ -108,8 +108,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url_details.path": "/Prod/", "http.method": "GET", "http.route": "/", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" + "http.status_code": "200" }, "metrics": { "_dd.top_level": 1 @@ -134,8 +133,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -162,8 +160,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -229,7 +226,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "dynamodb", + "service": "ExampleTableWithStream", "resource": "ExampleTableWithStream", "name": "aws.dynamodb", "error": 0, @@ -240,6 +237,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.dynamodb", "resource_names": "ExampleTableWithStream", + "span.kind": "server", "tablename": "ExampleTableWithStream", "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", "event_id": "XXXX", @@ -251,7 +249,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -299,7 +296,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python39", "name": "aws.lambda", "error": 0, @@ -317,8 +314,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -343,8 +339,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -371,8 +366,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -429,7 +423,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "eventbridge", + "service": "eventbridge.custom.event.sender", "resource": "eventbridge.custom.event.sender", "name": "aws.eventbridge", "error": 0, @@ -440,12 +434,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.eventbridge", "resource_names": "eventbridge.custom.event.sender", + "span.kind": "server", "detail_type": "testdetail", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -461,7 +455,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python39", "name": "aws.lambda", "error": 0, @@ -478,8 +472,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "function_trigger.event_source": "eventbridge", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source": "eventbridge" }, "metrics": { "_dd.top_level": 1 @@ -504,8 +497,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -532,8 +524,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -617,7 +608,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.route": "/httpapi/get", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -633,7 +623,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python39", "name": "aws.lambda", "error": 0, @@ -656,8 +646,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url_details.path": "/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" + "http.status_code": "200" }, "metrics": { "_dd.top_level": 1 @@ -682,8 +671,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -710,8 +698,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -768,7 +755,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "kinesis", + "service": "EXAMPLE", "resource": "EXAMPLE", "name": "aws.kinesis", "error": 0, @@ -779,6 +766,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.kinesis", "resource_names": "EXAMPLE", + "span.kind": "server", "streamname": "EXAMPLE", "shardid": "shardId-XXXX", "event_source_arn": "arn:aws:kinesis:EXAMPLE", @@ -790,7 +778,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -806,7 +793,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python39", "name": "aws.lambda", "error": 0, @@ -824,8 +811,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "kinesis", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -850,8 +836,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -878,8 +863,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -936,7 +920,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "s3", + "service": "example-bucket", "resource": "example-bucket", "name": "aws.s3", "error": 0, @@ -945,6 +929,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.s3", "resource_names": "example-bucket", + "span.kind": "server", "event_name": "ObjectCreated:Put", "bucketname": "example-bucket", "bucket_arn": "arn:aws:s3:::example-bucket", @@ -955,7 +940,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -983,7 +967,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python39", "name": "aws.lambda", "error": 0, @@ -1001,8 +985,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "s3", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -1027,8 +1010,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1055,8 +1037,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1113,7 +1094,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "sns", + "service": "sns-lambda", "resource": "sns-lambda", "name": "aws.sns", "error": 0, @@ -1124,6 +1105,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.sns", "resource_names": "sns-lambda", + "span.kind": "server", "topicname": "sns-lambda", "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", "message_id": "XXXX", @@ -1133,7 +1115,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1149,7 +1130,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python39", "name": "aws.lambda", "error": 0, @@ -1167,8 +1148,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sns", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -1193,8 +1173,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1221,8 +1200,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1279,7 +1257,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "sqs", + "service": "my-queue", "resource": "my-queue", "name": "aws.sqs", "error": 0, @@ -1290,6 +1268,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.sqs", "resource_names": "my-queue", + "span.kind": "server", "queuename": "my-queue", "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", @@ -1298,7 +1277,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1314,7 +1292,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python39", "name": "aws.lambda", "error": 0, @@ -1332,8 +1310,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sqs", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -1358,8 +1335,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1386,8 +1362,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1457,6 +1432,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com$default/", "endpoint": "$default", "resource_names": "$default", + "span.kind": "server", "apiid": "XXXX", "apiname": "XXXX", "stage": "dev", @@ -1469,7 +1445,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1485,7 +1460,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python39", "name": "aws.lambda", "error": 0, @@ -1505,8 +1480,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" + "http.status_code": "200" }, "metrics": { "_dd.top_level": 1 @@ -1531,8 +1505,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1559,8 +1532,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 diff --git a/tests/integration/snapshots/logs/sync-metrics_python310.log b/tests/integration/snapshots/logs/sync-metrics_python310.log index aa96b02d..201ca82a 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python310.log +++ b/tests/integration/snapshots/logs/sync-metrics_python310.log @@ -39,6 +39,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "endpoint": "/", "http.method": "GET", "resource_names": "GET /", + "span.kind": "server", "apiid": "XXXX", "apiname": "XXXX", "stage": "Prod", @@ -49,7 +50,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.route": "/", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -65,7 +65,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python310", "name": "aws.lambda", "error": 0, @@ -88,8 +88,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url_details.path": "/Prod/", "http.method": "GET", "http.route": "/", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" + "http.status_code": "200" }, "metrics": { "_dd.top_level": 1 @@ -114,8 +113,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -142,8 +140,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -177,7 +174,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -229,7 +225,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "dynamodb", + "service": "ExampleTableWithStream", "resource": "ExampleTableWithStream", "name": "aws.dynamodb", "error": 0, @@ -240,6 +236,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.dynamodb", "resource_names": "ExampleTableWithStream", + "span.kind": "server", "tablename": "ExampleTableWithStream", "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", "event_id": "XXXX", @@ -251,7 +248,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -299,7 +295,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python310", "name": "aws.lambda", "error": 0, @@ -317,8 +313,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -343,8 +338,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -371,8 +365,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -406,7 +399,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -449,7 +441,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "eventbridge", + "service": "eventbridge.custom.event.sender", "resource": "eventbridge.custom.event.sender", "name": "aws.eventbridge", "error": 0, @@ -460,12 +452,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.eventbridge", "resource_names": "eventbridge.custom.event.sender", + "span.kind": "server", "detail_type": "testdetail", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -481,7 +473,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python310", "name": "aws.lambda", "error": 0, @@ -498,8 +490,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "function_trigger.event_source": "eventbridge", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source": "eventbridge" }, "metrics": { "_dd.top_level": 1 @@ -524,8 +515,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -552,8 +542,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -587,7 +576,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -657,7 +645,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.route": "/httpapi/get", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -673,7 +660,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python310", "name": "aws.lambda", "error": 0, @@ -696,8 +683,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url_details.path": "/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" + "http.status_code": "200" }, "metrics": { "_dd.top_level": 1 @@ -722,8 +708,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -750,8 +735,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -785,7 +769,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -828,7 +811,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "kinesis", + "service": "EXAMPLE", "resource": "EXAMPLE", "name": "aws.kinesis", "error": 0, @@ -839,6 +822,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.kinesis", "resource_names": "EXAMPLE", + "span.kind": "server", "streamname": "EXAMPLE", "shardid": "shardId-XXXX", "event_source_arn": "arn:aws:kinesis:EXAMPLE", @@ -850,7 +834,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -866,7 +849,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python310", "name": "aws.lambda", "error": 0, @@ -884,8 +867,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "kinesis", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -910,8 +892,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -938,8 +919,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -973,7 +953,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1016,7 +995,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "s3", + "service": "example-bucket", "resource": "example-bucket", "name": "aws.s3", "error": 0, @@ -1025,6 +1004,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.s3", "resource_names": "example-bucket", + "span.kind": "server", "event_name": "ObjectCreated:Put", "bucketname": "example-bucket", "bucket_arn": "arn:aws:s3:::example-bucket", @@ -1035,7 +1015,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1063,7 +1042,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python310", "name": "aws.lambda", "error": 0, @@ -1081,8 +1060,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "s3", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -1107,8 +1085,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1135,8 +1112,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1170,7 +1146,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1213,7 +1188,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "sns", + "service": "sns-lambda", "resource": "sns-lambda", "name": "aws.sns", "error": 0, @@ -1224,6 +1199,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.sns", "resource_names": "sns-lambda", + "span.kind": "server", "topicname": "sns-lambda", "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", "message_id": "XXXX", @@ -1233,7 +1209,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1249,7 +1224,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python310", "name": "aws.lambda", "error": 0, @@ -1267,8 +1242,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sns", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -1293,8 +1267,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1321,8 +1294,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1356,7 +1328,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1399,7 +1370,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "sqs", + "service": "my-queue", "resource": "my-queue", "name": "aws.sqs", "error": 0, @@ -1410,6 +1381,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.sqs", "resource_names": "my-queue", + "span.kind": "server", "queuename": "my-queue", "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", @@ -1418,7 +1390,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1434,7 +1405,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python310", "name": "aws.lambda", "error": 0, @@ -1452,8 +1423,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sqs", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -1478,8 +1448,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1506,8 +1475,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1541,7 +1509,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1597,6 +1564,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com$default/", "endpoint": "$default", "resource_names": "$default", + "span.kind": "server", "apiid": "XXXX", "apiname": "XXXX", "stage": "dev", @@ -1609,7 +1577,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1625,7 +1592,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python310", "name": "aws.lambda", "error": 0, @@ -1645,8 +1612,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" + "http.status_code": "200" }, "metrics": { "_dd.top_level": 1 @@ -1671,8 +1637,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1699,8 +1664,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1734,7 +1698,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" diff --git a/tests/integration/snapshots/logs/sync-metrics_python311.log b/tests/integration/snapshots/logs/sync-metrics_python311.log index 91ae2e51..564db4a9 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python311.log +++ b/tests/integration/snapshots/logs/sync-metrics_python311.log @@ -39,6 +39,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "endpoint": "/", "http.method": "GET", "resource_names": "GET /", + "span.kind": "server", "apiid": "XXXX", "apiname": "XXXX", "stage": "Prod", @@ -49,7 +50,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.route": "/", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -65,7 +65,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python311", "name": "aws.lambda", "error": 0, @@ -88,8 +88,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url_details.path": "/Prod/", "http.method": "GET", "http.route": "/", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" + "http.status_code": "200" }, "metrics": { "_dd.top_level": 1 @@ -114,8 +113,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -142,8 +140,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -177,7 +174,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -229,7 +225,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "dynamodb", + "service": "ExampleTableWithStream", "resource": "ExampleTableWithStream", "name": "aws.dynamodb", "error": 0, @@ -240,6 +236,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.dynamodb", "resource_names": "ExampleTableWithStream", + "span.kind": "server", "tablename": "ExampleTableWithStream", "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", "event_id": "XXXX", @@ -251,7 +248,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -299,7 +295,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python311", "name": "aws.lambda", "error": 0, @@ -317,8 +313,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -343,8 +338,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -371,8 +365,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -406,7 +399,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -449,7 +441,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "eventbridge", + "service": "eventbridge.custom.event.sender", "resource": "eventbridge.custom.event.sender", "name": "aws.eventbridge", "error": 0, @@ -460,12 +452,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.eventbridge", "resource_names": "eventbridge.custom.event.sender", + "span.kind": "server", "detail_type": "testdetail", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -481,7 +473,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python311", "name": "aws.lambda", "error": 0, @@ -498,8 +490,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "function_trigger.event_source": "eventbridge", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source": "eventbridge" }, "metrics": { "_dd.top_level": 1 @@ -524,8 +515,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -552,8 +542,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -587,7 +576,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -657,7 +645,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.route": "/httpapi/get", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -673,7 +660,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python311", "name": "aws.lambda", "error": 0, @@ -696,8 +683,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url_details.path": "/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" + "http.status_code": "200" }, "metrics": { "_dd.top_level": 1 @@ -722,8 +708,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -750,8 +735,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -785,7 +769,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -828,7 +811,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "kinesis", + "service": "EXAMPLE", "resource": "EXAMPLE", "name": "aws.kinesis", "error": 0, @@ -839,6 +822,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.kinesis", "resource_names": "EXAMPLE", + "span.kind": "server", "streamname": "EXAMPLE", "shardid": "shardId-XXXX", "event_source_arn": "arn:aws:kinesis:EXAMPLE", @@ -850,7 +834,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -866,7 +849,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python311", "name": "aws.lambda", "error": 0, @@ -884,8 +867,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "kinesis", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -910,8 +892,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -938,8 +919,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -973,7 +953,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1016,7 +995,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "s3", + "service": "example-bucket", "resource": "example-bucket", "name": "aws.s3", "error": 0, @@ -1025,6 +1004,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.s3", "resource_names": "example-bucket", + "span.kind": "server", "event_name": "ObjectCreated:Put", "bucketname": "example-bucket", "bucket_arn": "arn:aws:s3:::example-bucket", @@ -1035,7 +1015,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1063,7 +1042,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python311", "name": "aws.lambda", "error": 0, @@ -1081,8 +1060,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "s3", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -1107,8 +1085,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1135,8 +1112,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1170,7 +1146,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1213,7 +1188,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "sns", + "service": "sns-lambda", "resource": "sns-lambda", "name": "aws.sns", "error": 0, @@ -1224,6 +1199,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.sns", "resource_names": "sns-lambda", + "span.kind": "server", "topicname": "sns-lambda", "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", "message_id": "XXXX", @@ -1233,7 +1209,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1249,7 +1224,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python311", "name": "aws.lambda", "error": 0, @@ -1267,8 +1242,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sns", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -1293,8 +1267,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1321,8 +1294,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1356,7 +1328,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1399,7 +1370,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "sqs", + "service": "my-queue", "resource": "my-queue", "name": "aws.sqs", "error": 0, @@ -1410,6 +1381,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.sqs", "resource_names": "my-queue", + "span.kind": "server", "queuename": "my-queue", "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", @@ -1418,7 +1390,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1434,7 +1405,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python311", "name": "aws.lambda", "error": 0, @@ -1452,8 +1423,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sqs", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -1478,8 +1448,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1506,8 +1475,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1541,7 +1509,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1597,6 +1564,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com$default/", "endpoint": "$default", "resource_names": "$default", + "span.kind": "server", "apiid": "XXXX", "apiname": "XXXX", "stage": "dev", @@ -1609,7 +1577,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1625,7 +1592,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python311", "name": "aws.lambda", "error": 0, @@ -1645,8 +1612,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" + "http.status_code": "200" }, "metrics": { "_dd.top_level": 1 @@ -1671,8 +1637,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1699,8 +1664,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1734,7 +1698,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" diff --git a/tests/integration/snapshots/logs/sync-metrics_python312.log b/tests/integration/snapshots/logs/sync-metrics_python312.log index 81e897ca..6010a364 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python312.log +++ b/tests/integration/snapshots/logs/sync-metrics_python312.log @@ -39,6 +39,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "endpoint": "/", "http.method": "GET", "resource_names": "GET /", + "span.kind": "server", "apiid": "XXXX", "apiname": "XXXX", "stage": "Prod", @@ -49,7 +50,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.route": "/", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -65,7 +65,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python312", "name": "aws.lambda", "error": 0, @@ -88,8 +88,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url_details.path": "/Prod/", "http.method": "GET", "http.route": "/", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" + "http.status_code": "200" }, "metrics": { "_dd.top_level": 1 @@ -114,8 +113,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -142,8 +140,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -177,7 +174,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -229,7 +225,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "dynamodb", + "service": "ExampleTableWithStream", "resource": "ExampleTableWithStream", "name": "aws.dynamodb", "error": 0, @@ -240,6 +236,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.dynamodb", "resource_names": "ExampleTableWithStream", + "span.kind": "server", "tablename": "ExampleTableWithStream", "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", "event_id": "XXXX", @@ -251,7 +248,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -299,7 +295,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python312", "name": "aws.lambda", "error": 0, @@ -317,8 +313,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -343,8 +338,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -371,8 +365,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -406,7 +399,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -449,7 +441,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "eventbridge", + "service": "eventbridge.custom.event.sender", "resource": "eventbridge.custom.event.sender", "name": "aws.eventbridge", "error": 0, @@ -460,12 +452,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.eventbridge", "resource_names": "eventbridge.custom.event.sender", + "span.kind": "server", "detail_type": "testdetail", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -481,7 +473,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python312", "name": "aws.lambda", "error": 0, @@ -498,8 +490,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "function_trigger.event_source": "eventbridge", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source": "eventbridge" }, "metrics": { "_dd.top_level": 1 @@ -524,8 +515,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -552,8 +542,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -587,7 +576,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -657,7 +645,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.route": "/httpapi/get", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -673,7 +660,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python312", "name": "aws.lambda", "error": 0, @@ -696,8 +683,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url_details.path": "/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" + "http.status_code": "200" }, "metrics": { "_dd.top_level": 1 @@ -722,8 +708,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -750,8 +735,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -785,7 +769,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -828,7 +811,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "kinesis", + "service": "EXAMPLE", "resource": "EXAMPLE", "name": "aws.kinesis", "error": 0, @@ -839,6 +822,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.kinesis", "resource_names": "EXAMPLE", + "span.kind": "server", "streamname": "EXAMPLE", "shardid": "shardId-XXXX", "event_source_arn": "arn:aws:kinesis:EXAMPLE", @@ -850,7 +834,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -866,7 +849,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python312", "name": "aws.lambda", "error": 0, @@ -884,8 +867,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "kinesis", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -910,8 +892,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -938,8 +919,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -973,7 +953,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1016,7 +995,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "s3", + "service": "example-bucket", "resource": "example-bucket", "name": "aws.s3", "error": 0, @@ -1025,6 +1004,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.s3", "resource_names": "example-bucket", + "span.kind": "server", "event_name": "ObjectCreated:Put", "bucketname": "example-bucket", "bucket_arn": "arn:aws:s3:::example-bucket", @@ -1035,7 +1015,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1063,7 +1042,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python312", "name": "aws.lambda", "error": 0, @@ -1081,8 +1060,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "s3", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -1107,8 +1085,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1135,8 +1112,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1170,7 +1146,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1213,7 +1188,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "sns", + "service": "sns-lambda", "resource": "sns-lambda", "name": "aws.sns", "error": 0, @@ -1224,6 +1199,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.sns", "resource_names": "sns-lambda", + "span.kind": "server", "topicname": "sns-lambda", "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", "message_id": "XXXX", @@ -1233,7 +1209,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1249,7 +1224,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python312", "name": "aws.lambda", "error": 0, @@ -1267,8 +1242,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sns", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -1293,8 +1267,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1321,8 +1294,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1356,7 +1328,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1399,7 +1370,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "sqs", + "service": "my-queue", "resource": "my-queue", "name": "aws.sqs", "error": 0, @@ -1410,6 +1381,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.sqs", "resource_names": "my-queue", + "span.kind": "server", "queuename": "my-queue", "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", @@ -1418,7 +1390,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1434,7 +1405,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python312", "name": "aws.lambda", "error": 0, @@ -1452,8 +1423,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sqs", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -1478,8 +1448,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1506,8 +1475,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1541,7 +1509,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1597,6 +1564,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com$default/", "endpoint": "$default", "resource_names": "$default", + "span.kind": "server", "apiid": "XXXX", "apiname": "XXXX", "stage": "dev", @@ -1609,7 +1577,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1625,7 +1592,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python312", "name": "aws.lambda", "error": 0, @@ -1645,8 +1612,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" + "http.status_code": "200" }, "metrics": { "_dd.top_level": 1 @@ -1671,8 +1637,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1699,8 +1664,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1734,7 +1698,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" diff --git a/tests/integration/snapshots/logs/sync-metrics_python313.log b/tests/integration/snapshots/logs/sync-metrics_python313.log index 77376e6b..21d03362 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python313.log +++ b/tests/integration/snapshots/logs/sync-metrics_python313.log @@ -39,6 +39,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "endpoint": "/", "http.method": "GET", "resource_names": "GET /", + "span.kind": "server", "apiid": "XXXX", "apiname": "XXXX", "stage": "Prod", @@ -49,7 +50,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.route": "/", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -65,7 +65,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python313", "name": "aws.lambda", "error": 0, @@ -88,8 +88,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url_details.path": "/Prod/", "http.method": "GET", "http.route": "/", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" + "http.status_code": "200" }, "metrics": { "_dd.top_level": 1 @@ -114,8 +113,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -142,8 +140,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -177,7 +174,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -229,7 +225,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "dynamodb", + "service": "ExampleTableWithStream", "resource": "ExampleTableWithStream", "name": "aws.dynamodb", "error": 0, @@ -240,6 +236,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.dynamodb", "resource_names": "ExampleTableWithStream", + "span.kind": "server", "tablename": "ExampleTableWithStream", "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", "event_id": "XXXX", @@ -251,7 +248,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -299,7 +295,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python313", "name": "aws.lambda", "error": 0, @@ -317,8 +313,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -343,8 +338,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -371,8 +365,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -406,7 +399,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -449,7 +441,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "eventbridge", + "service": "eventbridge.custom.event.sender", "resource": "eventbridge.custom.event.sender", "name": "aws.eventbridge", "error": 0, @@ -460,12 +452,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.eventbridge", "resource_names": "eventbridge.custom.event.sender", + "span.kind": "server", "detail_type": "testdetail", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -481,7 +473,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python313", "name": "aws.lambda", "error": 0, @@ -498,8 +490,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "function_trigger.event_source": "eventbridge", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source": "eventbridge" }, "metrics": { "_dd.top_level": 1 @@ -524,8 +515,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -552,8 +542,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -587,7 +576,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -657,7 +645,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.route": "/httpapi/get", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -673,7 +660,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python313", "name": "aws.lambda", "error": 0, @@ -696,8 +683,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url_details.path": "/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" + "http.status_code": "200" }, "metrics": { "_dd.top_level": 1 @@ -722,8 +708,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -750,8 +735,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -785,7 +769,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -828,7 +811,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "kinesis", + "service": "EXAMPLE", "resource": "EXAMPLE", "name": "aws.kinesis", "error": 0, @@ -839,6 +822,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.kinesis", "resource_names": "EXAMPLE", + "span.kind": "server", "streamname": "EXAMPLE", "shardid": "shardId-XXXX", "event_source_arn": "arn:aws:kinesis:EXAMPLE", @@ -850,7 +834,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -866,7 +849,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python313", "name": "aws.lambda", "error": 0, @@ -884,8 +867,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "kinesis", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -910,8 +892,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -938,8 +919,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -973,7 +953,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1016,7 +995,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "s3", + "service": "example-bucket", "resource": "example-bucket", "name": "aws.s3", "error": 0, @@ -1025,6 +1004,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.s3", "resource_names": "example-bucket", + "span.kind": "server", "event_name": "ObjectCreated:Put", "bucketname": "example-bucket", "bucket_arn": "arn:aws:s3:::example-bucket", @@ -1035,7 +1015,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1063,7 +1042,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python313", "name": "aws.lambda", "error": 0, @@ -1081,8 +1060,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "s3", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -1107,8 +1085,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1135,8 +1112,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1170,7 +1146,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1213,7 +1188,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "sns", + "service": "sns-lambda", "resource": "sns-lambda", "name": "aws.sns", "error": 0, @@ -1224,6 +1199,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.sns", "resource_names": "sns-lambda", + "span.kind": "server", "topicname": "sns-lambda", "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", "message_id": "XXXX", @@ -1233,7 +1209,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1249,7 +1224,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python313", "name": "aws.lambda", "error": 0, @@ -1267,8 +1242,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sns", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -1293,8 +1267,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1321,8 +1294,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1356,7 +1328,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1399,7 +1370,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "sqs", + "service": "my-queue", "resource": "my-queue", "name": "aws.sqs", "error": 0, @@ -1410,6 +1381,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.sqs", "resource_names": "my-queue", + "span.kind": "server", "queuename": "my-queue", "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", @@ -1418,7 +1390,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1434,7 +1405,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python313", "name": "aws.lambda", "error": 0, @@ -1452,8 +1423,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sqs", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -1478,8 +1448,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1506,8 +1475,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1541,7 +1509,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1597,6 +1564,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com$default/", "endpoint": "$default", "resource_names": "$default", + "span.kind": "server", "apiid": "XXXX", "apiname": "XXXX", "stage": "dev", @@ -1609,7 +1577,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1625,7 +1592,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python313", "name": "aws.lambda", "error": 0, @@ -1645,8 +1612,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" + "http.status_code": "200" }, "metrics": { "_dd.top_level": 1 @@ -1671,8 +1637,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1699,8 +1664,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1734,7 +1698,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" diff --git a/tests/integration/snapshots/logs/sync-metrics_python38.log b/tests/integration/snapshots/logs/sync-metrics_python38.log index ddc8d751..a6828904 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python38.log +++ b/tests/integration/snapshots/logs/sync-metrics_python38.log @@ -39,6 +39,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "endpoint": "/", "http.method": "GET", "resource_names": "GET /", + "span.kind": "server", "apiid": "XXXX", "apiname": "XXXX", "stage": "Prod", @@ -49,7 +50,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.route": "/", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -65,7 +65,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python38", "name": "aws.lambda", "error": 0, @@ -88,8 +88,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url_details.path": "/Prod/", "http.method": "GET", "http.route": "/", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" + "http.status_code": "200" }, "metrics": { "_dd.top_level": 1 @@ -114,8 +113,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -142,8 +140,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -177,7 +174,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -229,7 +225,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "dynamodb", + "service": "ExampleTableWithStream", "resource": "ExampleTableWithStream", "name": "aws.dynamodb", "error": 0, @@ -240,6 +236,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.dynamodb", "resource_names": "ExampleTableWithStream", + "span.kind": "server", "tablename": "ExampleTableWithStream", "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", "event_id": "XXXX", @@ -251,7 +248,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -299,7 +295,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python38", "name": "aws.lambda", "error": 0, @@ -317,8 +313,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -343,8 +338,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -371,8 +365,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -406,7 +399,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -449,7 +441,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "eventbridge", + "service": "eventbridge.custom.event.sender", "resource": "eventbridge.custom.event.sender", "name": "aws.eventbridge", "error": 0, @@ -460,12 +452,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.eventbridge", "resource_names": "eventbridge.custom.event.sender", + "span.kind": "server", "detail_type": "testdetail", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -481,7 +473,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python38", "name": "aws.lambda", "error": 0, @@ -498,8 +490,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "function_trigger.event_source": "eventbridge", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source": "eventbridge" }, "metrics": { "_dd.top_level": 1 @@ -524,8 +515,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -552,8 +542,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -587,7 +576,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -657,7 +645,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.route": "/httpapi/get", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -673,7 +660,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python38", "name": "aws.lambda", "error": 0, @@ -696,8 +683,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url_details.path": "/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" + "http.status_code": "200" }, "metrics": { "_dd.top_level": 1 @@ -722,8 +708,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -750,8 +735,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -785,7 +769,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -828,7 +811,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "kinesis", + "service": "EXAMPLE", "resource": "EXAMPLE", "name": "aws.kinesis", "error": 0, @@ -839,6 +822,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.kinesis", "resource_names": "EXAMPLE", + "span.kind": "server", "streamname": "EXAMPLE", "shardid": "shardId-XXXX", "event_source_arn": "arn:aws:kinesis:EXAMPLE", @@ -850,7 +834,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -866,7 +849,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python38", "name": "aws.lambda", "error": 0, @@ -884,8 +867,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "kinesis", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -910,8 +892,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -938,8 +919,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -973,7 +953,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1016,7 +995,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "s3", + "service": "example-bucket", "resource": "example-bucket", "name": "aws.s3", "error": 0, @@ -1025,6 +1004,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.s3", "resource_names": "example-bucket", + "span.kind": "server", "event_name": "ObjectCreated:Put", "bucketname": "example-bucket", "bucket_arn": "arn:aws:s3:::example-bucket", @@ -1035,7 +1015,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1063,7 +1042,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python38", "name": "aws.lambda", "error": 0, @@ -1081,8 +1060,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "s3", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -1107,8 +1085,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1135,8 +1112,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1170,7 +1146,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1213,7 +1188,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "sns", + "service": "sns-lambda", "resource": "sns-lambda", "name": "aws.sns", "error": 0, @@ -1224,6 +1199,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.sns", "resource_names": "sns-lambda", + "span.kind": "server", "topicname": "sns-lambda", "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", "message_id": "XXXX", @@ -1233,7 +1209,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1249,7 +1224,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python38", "name": "aws.lambda", "error": 0, @@ -1267,8 +1242,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sns", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -1293,8 +1267,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1321,8 +1294,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1356,7 +1328,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1399,7 +1370,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "sqs", + "service": "my-queue", "resource": "my-queue", "name": "aws.sqs", "error": 0, @@ -1410,6 +1381,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.sqs", "resource_names": "my-queue", + "span.kind": "server", "queuename": "my-queue", "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", @@ -1418,7 +1390,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1434,7 +1405,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python38", "name": "aws.lambda", "error": 0, @@ -1452,8 +1423,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sqs", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -1478,8 +1448,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1506,8 +1475,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1541,7 +1509,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1597,6 +1564,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com$default/", "endpoint": "$default", "resource_names": "$default", + "span.kind": "server", "apiid": "XXXX", "apiname": "XXXX", "stage": "dev", @@ -1609,7 +1577,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1625,7 +1592,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python38", "name": "aws.lambda", "error": 0, @@ -1645,8 +1612,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" + "http.status_code": "200" }, "metrics": { "_dd.top_level": 1 @@ -1671,8 +1637,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1699,8 +1664,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1734,7 +1698,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" diff --git a/tests/integration/snapshots/logs/sync-metrics_python39.log b/tests/integration/snapshots/logs/sync-metrics_python39.log index 128319f6..6a8d692e 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python39.log +++ b/tests/integration/snapshots/logs/sync-metrics_python39.log @@ -39,6 +39,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "endpoint": "/", "http.method": "GET", "resource_names": "GET /", + "span.kind": "server", "apiid": "XXXX", "apiname": "XXXX", "stage": "Prod", @@ -49,7 +50,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.route": "/", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -65,7 +65,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python39", "name": "aws.lambda", "error": 0, @@ -88,8 +88,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url_details.path": "/Prod/", "http.method": "GET", "http.route": "/", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" + "http.status_code": "200" }, "metrics": { "_dd.top_level": 1 @@ -114,8 +113,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -142,8 +140,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -177,7 +174,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -229,7 +225,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "dynamodb", + "service": "ExampleTableWithStream", "resource": "ExampleTableWithStream", "name": "aws.dynamodb", "error": 0, @@ -240,6 +236,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.dynamodb", "resource_names": "ExampleTableWithStream", + "span.kind": "server", "tablename": "ExampleTableWithStream", "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", "event_id": "XXXX", @@ -251,7 +248,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -299,7 +295,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python39", "name": "aws.lambda", "error": 0, @@ -317,8 +313,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -343,8 +338,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -371,8 +365,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -406,7 +399,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -449,7 +441,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "eventbridge", + "service": "eventbridge.custom.event.sender", "resource": "eventbridge.custom.event.sender", "name": "aws.eventbridge", "error": 0, @@ -460,12 +452,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.eventbridge", "resource_names": "eventbridge.custom.event.sender", + "span.kind": "server", "detail_type": "testdetail", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -481,7 +473,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python39", "name": "aws.lambda", "error": 0, @@ -498,8 +490,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "function_trigger.event_source": "eventbridge", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source": "eventbridge" }, "metrics": { "_dd.top_level": 1 @@ -524,8 +515,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -552,8 +542,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -587,7 +576,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -657,7 +645,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.route": "/httpapi/get", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -673,7 +660,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python39", "name": "aws.lambda", "error": 0, @@ -696,8 +683,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url_details.path": "/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" + "http.status_code": "200" }, "metrics": { "_dd.top_level": 1 @@ -722,8 +708,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -750,8 +735,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -785,7 +769,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -828,7 +811,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "kinesis", + "service": "EXAMPLE", "resource": "EXAMPLE", "name": "aws.kinesis", "error": 0, @@ -839,6 +822,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.kinesis", "resource_names": "EXAMPLE", + "span.kind": "server", "streamname": "EXAMPLE", "shardid": "shardId-XXXX", "event_source_arn": "arn:aws:kinesis:EXAMPLE", @@ -850,7 +834,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -866,7 +849,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python39", "name": "aws.lambda", "error": 0, @@ -884,8 +867,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "kinesis", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -910,8 +892,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -938,8 +919,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -973,7 +953,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1016,7 +995,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "s3", + "service": "example-bucket", "resource": "example-bucket", "name": "aws.s3", "error": 0, @@ -1025,6 +1004,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.s3", "resource_names": "example-bucket", + "span.kind": "server", "event_name": "ObjectCreated:Put", "bucketname": "example-bucket", "bucket_arn": "arn:aws:s3:::example-bucket", @@ -1035,7 +1015,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1063,7 +1042,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python39", "name": "aws.lambda", "error": 0, @@ -1081,8 +1060,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "s3", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -1107,8 +1085,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1135,8 +1112,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1170,7 +1146,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1213,7 +1188,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "sns", + "service": "sns-lambda", "resource": "sns-lambda", "name": "aws.sns", "error": 0, @@ -1224,6 +1199,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.sns", "resource_names": "sns-lambda", + "span.kind": "server", "topicname": "sns-lambda", "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", "message_id": "XXXX", @@ -1233,7 +1209,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1249,7 +1224,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python39", "name": "aws.lambda", "error": 0, @@ -1267,8 +1242,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sns", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -1293,8 +1267,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1321,8 +1294,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1356,7 +1328,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1399,7 +1370,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "sqs", + "service": "my-queue", "resource": "my-queue", "name": "aws.sqs", "error": 0, @@ -1410,6 +1381,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.sqs", "resource_names": "my-queue", + "span.kind": "server", "queuename": "my-queue", "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", @@ -1418,7 +1390,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1434,7 +1405,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python39", "name": "aws.lambda", "error": 0, @@ -1452,8 +1423,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sqs", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -1478,8 +1448,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1506,8 +1475,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1541,7 +1509,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1597,6 +1564,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com$default/", "endpoint": "$default", "resource_names": "$default", + "span.kind": "server", "apiid": "XXXX", "apiname": "XXXX", "stage": "dev", @@ -1609,7 +1577,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1625,7 +1592,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python39", "name": "aws.lambda", "error": 0, @@ -1645,8 +1612,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" + "http.status_code": "200" }, "metrics": { "_dd.top_level": 1 @@ -1671,8 +1637,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1699,8 +1664,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1734,7 +1698,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" diff --git a/tests/test_tracing.py b/tests/test_tracing.py index fcedd516..c87a0971 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -1284,6 +1284,42 @@ def test_determine_service_name(self): "default", ) + # Test with DD_TRACE_AWS_SERVICE_REPRESENTATION_ENABLED set to false + os.environ["DD_TRACE_AWS_SERVICE_REPRESENTATION_ENABLED"] = "false" + self.assertEqual( + determine_service_name( + self.get_service_mapping(), "api4", "api4", "extracted", "fallback" + ), + "fallback", + ) + + # Test with DD_TRACE_AWS_SERVICE_REPRESENTATION_ENABLED set to 0 + os.environ["DD_TRACE_AWS_SERVICE_REPRESENTATION_ENABLED"] = "0" + self.assertEqual( + determine_service_name( + self.get_service_mapping(), "api4", "api4", "extracted", "fallback" + ), + "fallback", + ) + + # Test with DD_TRACE_AWS_SERVICE_REPRESENTATION_ENABLED not set (default behavior) + if "DD_TRACE_AWS_SERVICE_REPRESENTATION_ENABLED" in os.environ: + del os.environ["DD_TRACE_AWS_SERVICE_REPRESENTATION_ENABLED"] + self.assertEqual( + determine_service_name( + self.get_service_mapping(), "api4", "api4", "extracted", "fallback" + ), + "extracted", + ) + + # Test with empty extracted key + self.assertEqual( + determine_service_name( + self.get_service_mapping(), "api4", "api4", " ", "fallback" + ), + "fallback", + ) + del os.environ["DD_SERVICE_MAPPING"] def test_remaps_all_inferred_span_service_names_from_api_gateway_event(self): @@ -1478,7 +1514,7 @@ def test_remaps_specific_inferred_span_service_names_from_sqs_event(self): ] = "arn:aws:sqs:eu-west-1:123456789012:different-sqs-url" span2 = create_inferred_span(event2, ctx) self.assertEqual(span2.get_tag("operation_name"), "aws.sqs") - self.assertEqual(span2.service, "sqs") + self.assertEqual(span2.service, "different-sqs-url") def test_remaps_all_inferred_span_service_names_from_sns_event(self): self.set_service_mapping({"lambda_sns": "new-name"}) @@ -1524,7 +1560,7 @@ def test_remaps_specific_inferred_span_service_names_from_sns_event(self): ] = "arn:aws:sns:us-west-2:123456789012:different-sns-topic" span2 = create_inferred_span(event2, ctx) self.assertEqual(span2.get_tag("operation_name"), "aws.sns") - self.assertEqual(span2.service, "sns") + self.assertEqual(span2.service, "different-sns-topic") def test_remaps_all_inferred_span_service_names_from_kinesis_event(self): self.set_service_mapping({"lambda_kinesis": "new-name"}) @@ -1561,7 +1597,7 @@ def test_remaps_specific_inferred_span_service_names_from_kinesis_event(self): span1 = create_inferred_span(original_event, ctx) self.assertEqual(span1.get_tag("operation_name"), "aws.kinesis") - self.assertEqual(span1.service, "kinesis") + self.assertEqual(span1.service, "kinesisStream") # Testing the second event event2 = copy.deepcopy(original_event) @@ -1570,7 +1606,7 @@ def test_remaps_specific_inferred_span_service_names_from_kinesis_event(self): ] = "arn:aws:kinesis:eu-west-1:601427279990:stream/DifferentKinesisStream" span2 = create_inferred_span(event2, ctx) self.assertEqual(span2.get_tag("operation_name"), "aws.kinesis") - self.assertEqual(span2.service, "kinesis") + self.assertEqual(span2.service, "DifferentKinesisStream") def test_remaps_all_inferred_span_service_names_from_s3_event(self): self.set_service_mapping({"lambda_s3": "new-name"}) @@ -1614,7 +1650,7 @@ def test_remaps_specific_inferred_span_service_names_from_s3_event(self): event2["Records"][0]["s3"]["bucket"]["name"] = "different-example-bucket" span2 = create_inferred_span(event2, ctx) self.assertEqual(span2.get_tag("operation_name"), "aws.s3") - self.assertEqual(span2.service, "s3") + self.assertEqual(span2.service, "different-example-bucket") def test_remaps_all_inferred_span_service_names_from_dynamodb_event(self): self.set_service_mapping({"lambda_dynamodb": "new-name"}) @@ -1660,7 +1696,7 @@ def test_remaps_specific_inferred_span_service_names_from_dynamodb_event(self): ] = "arn:aws:dynamodb:us-east-1:123456789012:table/DifferentExampleTableWithStream/stream/2015-06-27T00:48:05.899" span2 = create_inferred_span(event2, ctx) self.assertEqual(span2.get_tag("operation_name"), "aws.dynamodb") - self.assertEqual(span2.service, "dynamodb") + self.assertEqual(span2.service, "DifferentExampleTableWithStream") def test_remaps_all_inferred_span_service_names_from_eventbridge_event(self): self.set_service_mapping({"lambda_eventbridge": "new-name"}) @@ -1704,7 +1740,7 @@ def test_remaps_specific_inferred_span_service_names_from_eventbridge_event( event2["source"] = "different.eventbridge.custom.event.sender" span2 = create_inferred_span(event2, ctx) self.assertEqual(span2.get_tag("operation_name"), "aws.eventbridge") - self.assertEqual(span2.service, "eventbridge") + self.assertEqual(span2.service, "different.eventbridge.custom.event.sender") class _Span(object): @@ -1927,7 +1963,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): ( "sqs-string-msg-attribute", _Span( - service="sqs", + service="InferredSpansQueueNode", start=1634662094.538, span_type="web", tags={ @@ -1945,7 +1981,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): ( "sns-string-msg-attribute", _Span( - service="sns", + service="serverlessTracingTopicPy", start=1643638421.637, span_type="web", tags={ @@ -1964,7 +2000,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): ( "sns-b64-msg-attribute", _Span( - service="sns", + service="serverlessTracingTopicPy", start=1643638421.637, span_type="web", tags={ @@ -1981,9 +2017,9 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): ), ), ( - "kinesis", + "kinesisStream", _Span( - service="kinesis", + service="kinesisStream", start=1643638425.163, span_type="web", tags={ @@ -2000,16 +2036,16 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): "operation_name": "aws.kinesis", "partition_key": "partitionkey", "request_id": None, - "resource_names": "stream/kinesisStream", + "resource_names": "kinesisStream", "shardid": "shardId-000000000002", - "streamname": "stream/kinesisStream", + "streamname": "kinesisStream", }, ), ), ( "dynamodb", _Span( - service="dynamodb", + service="ExampleTableWithStream", start=1428537600.0, span_type="web", tags={ @@ -2035,7 +2071,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): ( "s3", _Span( - service="s3", + service="example-bucket", start=0.0, span_type="web", tags={ @@ -2060,7 +2096,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): ( "eventbridge-custom", _Span( - service="eventbridge", + service="eventbridge.custom.event.sender", start=1635989865.0, span_type="web", tags={ @@ -2079,7 +2115,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): ( "eventbridge-sqs", _Span( - service="sqs", + service="eventbridge-sqs-queue", start=1691102943.638, span_type="web", parent_name="aws.eventbridge", From f8b610dacdc1bcd27873d81fd79b040f3729d914 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Tue, 29 Jul 2025 11:23:43 -0400 Subject: [PATCH 242/268] v8.113.0 (#640) --- datadog_lambda/version.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index ae708026..7fb332f2 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "7.113.0.dev0" +__version__ = "8.113.0" diff --git a/pyproject.toml b/pyproject.toml index 77c08cb5..1ef66fd5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "7.113.0.dev0" +version = "8.113.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From f1a4cb4f52abd42f99a42d8764963fd0c0a9297d Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Tue, 29 Jul 2025 13:04:08 -0400 Subject: [PATCH 243/268] v8.114.0.dev0 (#642) --- datadog_lambda/version.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index 7fb332f2..d5b71e8d 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "8.113.0" +__version__ = "8.114.0.dev0" diff --git a/pyproject.toml b/pyproject.toml index 1ef66fd5..a2fc7b74 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "8.113.0" +version = "8.114.0.dev0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From f2808fbe252fb9c97f8ec330a61ebf2e6b1e8fd9 Mon Sep 17 00:00:00 2001 From: Florentin Labelle Date: Thu, 31 Jul 2025 09:36:08 +0200 Subject: [PATCH 244/268] feat(appsec): enable telemetry when appsec is enabled through the tracer and not the extension (#641) * feat(appsec): default to telemetry enabled * build: keep dist-info/METADATA files for SCA to work correctly --- Dockerfile | 7 +++++-- datadog_lambda/__init__.py | 5 ++++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index 02910a78..77125129 100644 --- a/Dockerfile +++ b/Dockerfile @@ -25,8 +25,11 @@ RUN rm -f ./python/lib/$runtime/site-packages/ddtrace/appsec/_iast/_taint_tracki RUN rm -f ./python/lib/$runtime/site-packages/ddtrace/appsec/_iast/_stacktrace*.so # _stack_v2 may not exist for some versions of ddtrace (e.g. under python 3.13) RUN rm -f ./python/lib/$runtime/site-packages/ddtrace/internal/datadog/profiling/stack_v2/_stack_v2.*.so -# remove *.dist-info directories except any entry_points.txt files -RUN find ./python/lib/$runtime/site-packages/*.dist-info -not -name "entry_points.txt" -type f -delete +# remove *.dist-info directories except any entry_points.txt files and METADATA files required for Appsec Software Composition Analysis +RUN find ./python/lib/$runtime/site-packages/*.dist-info \ + -type f \ + ! \( -name 'entry_points.txt' -o -name 'METADATA' \) \ + -delete RUN find ./python/lib/$runtime/site-packages -type d -empty -delete # Remove requests and dependencies diff --git a/datadog_lambda/__init__.py b/datadog_lambda/__init__.py index f319d2ed..0166f077 100644 --- a/datadog_lambda/__init__.py +++ b/datadog_lambda/__init__.py @@ -3,7 +3,10 @@ if os.environ.get("DD_INSTRUMENTATION_TELEMETRY_ENABLED") is None: - os.environ["DD_INSTRUMENTATION_TELEMETRY_ENABLED"] = "false" + # Telemetry is required for Appsec Software Composition Analysis + os.environ["DD_INSTRUMENTATION_TELEMETRY_ENABLED"] = os.environ.get( + "DD_APPSEC_ENABLED", "false" + ) if os.environ.get("DD_API_SECURITY_ENABLED") is None: os.environ["DD_API_SECURITY_ENABLED"] = "False" From 7bdc7d6659d0432170023fbd7371ef432de5f4d7 Mon Sep 17 00:00:00 2001 From: Yiming Luo Date: Mon, 4 Aug 2025 11:54:40 -0400 Subject: [PATCH 245/268] chore: Fix update_deps workflow (#607) --- .github/workflows/update_deps.yml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/.github/workflows/update_deps.yml b/.github/workflows/update_deps.yml index 33a524b2..15a3ac66 100644 --- a/.github/workflows/update_deps.yml +++ b/.github/workflows/update_deps.yml @@ -25,18 +25,17 @@ jobs: - name: Set up Python uses: actions/setup-python@v4 with: - python-version: 3.7 + python-version: 3.13 - name: Update Dependencies run: | - curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python - - source $HOME/.poetry/env - poetry build + pip install poetry poetry update - name: Create Pull Request uses: peter-evans/create-pull-request@v3 with: + token: ${{ steps.generate_token.outputs.token }} commit-message: update dependencies title: Update Dependencies body: | From 2163fb49295bd8b654edea85f0713605967b272d Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Thu, 14 Aug 2025 11:40:24 -0700 Subject: [PATCH 246/268] Increase allowed layer package size. (#649) --- scripts/check_layer_size.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/check_layer_size.sh b/scripts/check_layer_size.sh index 0b835cb0..b7460976 100755 --- a/scripts/check_layer_size.sh +++ b/scripts/check_layer_size.sh @@ -8,8 +8,8 @@ # Compares layer size to threshold, and fails if below that threshold set -e -MAX_LAYER_COMPRESSED_SIZE_KB=$(expr 8 \* 1024) -MAX_LAYER_UNCOMPRESSED_SIZE_KB=$(expr 21 \* 1024) +MAX_LAYER_COMPRESSED_SIZE_KB=$(expr 17 \* 1024 / 2) # 8704 KB +MAX_LAYER_UNCOMPRESSED_SIZE_KB=$(expr 23 \* 1024) # 23552 KB LAYER_FILES_PREFIX="datadog_lambda_py" From 6c296ab7d3121379cde00ea7e48f786736cfce4a Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Fri, 15 Aug 2025 13:01:51 -0700 Subject: [PATCH 247/268] Run e2e tests on each PR. (#584) --- ci/input_files/build.yaml.tpl | 74 ++++++++++++++++++++++++++++++++--- ci/publish_layers.sh | 8 ++++ 2 files changed, 76 insertions(+), 6 deletions(-) diff --git a/ci/input_files/build.yaml.tpl b/ci/input_files/build.yaml.tpl index 769f87f5..8624a806 100644 --- a/ci/input_files/build.yaml.tpl +++ b/ci/input_files/build.yaml.tpl @@ -1,8 +1,11 @@ +{{- $e2e_region := "us-west-2" -}} + stages: - build - test - sign - publish + - e2e .python-before-script: &python-before-script - pip install virtualenv @@ -56,11 +59,11 @@ check-layer-size ({{ $runtime.name }}-{{ $runtime.arch }}): stage: test tags: ["arch:amd64"] image: registry.ddbuild.io/images/docker:20.10 - needs: + needs: - build-layer ({{ $runtime.name }}-{{ $runtime.arch }}) dependencies: - build-layer ({{ $runtime.name }}-{{ $runtime.arch }}) - script: + script: - PYTHON_VERSION={{ $runtime.python_version }} ARCH={{ $runtime.arch }} ./scripts/check_layer_size.sh lint python: @@ -69,7 +72,7 @@ lint python: image: registry.ddbuild.io/images/mirror/python:{{ $runtime.image }} cache: &{{ $runtime.name }}-{{ $runtime.arch }}-cache before_script: *python-before-script - script: + script: - source venv/bin/activate - ./scripts/check_format.sh @@ -79,7 +82,7 @@ unit-test ({{ $runtime.name }}-{{ $runtime.arch }}): image: registry.ddbuild.io/images/mirror/python:{{ $runtime.image }} cache: &{{ $runtime.name }}-{{ $runtime.arch }}-cache before_script: *python-before-script - script: + script: - source venv/bin/activate - pytest -vv @@ -87,7 +90,7 @@ integration-test ({{ $runtime.name }}-{{ $runtime.arch }}): stage: test tags: ["arch:amd64"] image: registry.ddbuild.io/images/docker:20.10-py3 - needs: + needs: - build-layer ({{ $runtime.name }}-{{ $runtime.arch }}) dependencies: - build-layer ({{ $runtime.name }}-{{ $runtime.arch }}) @@ -132,16 +135,22 @@ sign-layer ({{ $runtime.name }}-{{ $runtime.arch }}): - LAYER_FILE=datadog_lambda_py-{{ $runtime.arch}}-{{ $runtime.python_version }}.zip ./scripts/sign_layers.sh prod {{ range $environment_name, $environment := (ds "environments").environments }} +{{ $dotenv := print $runtime.name "_" $runtime.arch "_" $environment_name ".env" }} publish-layer-{{ $environment_name }} ({{ $runtime.name }}-{{ $runtime.arch }}): stage: publish tags: ["arch:amd64"] image: registry.ddbuild.io/images/docker:20.10-py3 rules: + - if: '"{{ $environment_name }}" == "sandbox" && $REGION == "{{ $e2e_region }}" && "{{ $runtime.arch }}" == "amd64"' + when: on_success - if: '"{{ $environment_name }}" == "sandbox"' when: manual allow_failure: true - if: '$CI_COMMIT_TAG =~ /^v.*/' + artifacts: + reports: + dotenv: {{ $dotenv }} needs: {{ if or (eq $environment_name "prod") }} - sign-layer ({{ $runtime.name }}-{{ $runtime.arch}}) @@ -166,7 +175,7 @@ publish-layer-{{ $environment_name }} ({{ $runtime.name }}-{{ $runtime.arch }}): before_script: - EXTERNAL_ID_NAME={{ $environment.external_id }} ROLE_TO_ASSUME={{ $environment.role_to_assume }} AWS_ACCOUNT={{ $environment.account }} source ./ci/get_secrets.sh script: - - STAGE={{ $environment_name }} PYTHON_VERSION={{ $runtime.python_version }} ARCH={{ $runtime.arch }} ./ci/publish_layers.sh + - STAGE={{ $environment_name }} PYTHON_VERSION={{ $runtime.python_version }} ARCH={{ $runtime.arch }} DOTENV={{ $dotenv }} ./ci/publish_layers.sh {{- end }} @@ -232,3 +241,56 @@ signed layer bundle: - rm -rf datadog_lambda_py-signed-bundle-${CI_JOB_ID} - mkdir -p datadog_lambda_py-signed-bundle-${CI_JOB_ID} - cp .layers/datadog_lambda_py-*.zip datadog_lambda_py-signed-bundle-${CI_JOB_ID} + +e2e-test: + stage: e2e + trigger: + project: DataDog/serverless-e2e-tests + strategy: depend + variables: + LANGUAGES_SUBSET: python + # These env vars are inherited from the dotenv reports of the publish-layer jobs + {{- range (ds "runtimes").runtimes }} + {{- if eq .arch "amd64" }} + {{- $version := print (.name | strings.Trim "python") }} + PYTHON_{{ $version }}_VERSION: $PYTHON_{{ $version }}_VERSION + {{- end }} + {{- end }} + needs: {{ range (ds "runtimes").runtimes }} + {{- if eq .arch "amd64" }} + - "publish-layer-sandbox ({{ .name }}-{{ .arch }}): [{{ $e2e_region }}]" + {{- end }} + {{- end }} + +e2e-test-status: + stage: e2e + image: registry.ddbuild.io/images/docker:20.10-py3 + tags: ["arch:amd64"] + timeout: 3h + script: | + GITLAB_API_TOKEN=$(aws ssm get-parameter --region us-east-1 --name "ci.${CI_PROJECT_NAME}.serverless-e2e-gitlab-token" --with-decryption --query "Parameter.Value" --out text) + URL="${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/pipelines/${CI_PIPELINE_ID}/bridges" + echo "Fetching E2E job status from: $URL" + while true; do + RESPONSE=$(curl -s --header "PRIVATE-TOKEN: ${GITLAB_API_TOKEN}" "$URL") + E2E_JOB_STATUS=$(echo "$RESPONSE" | jq -r '.[] | select(.name=="e2e-test") | .downstream_pipeline.status') + echo -n "E2E job status: $E2E_JOB_STATUS, " + if [ "$E2E_JOB_STATUS" == "success" ]; then + echo "✅ E2E tests completed successfully" + exit 0 + elif [ "$E2E_JOB_STATUS" == "failed" ]; then + echo "❌ E2E tests failed" + exit 1 + elif [ "$E2E_JOB_STATUS" == "running" ]; then + echo "⏳ E2E tests are still running, retrying in 1 minute..." + elif [ "$E2E_JOB_STATUS" == "canceled" ]; then + echo "🚫 E2E tests were canceled" + exit 1 + elif [ "$E2E_JOB_STATUS" == "skipped" ]; then + echo "⏭️ E2E tests were skipped" + exit 0 + else + echo "❓ Unknown E2E test status: $E2E_JOB_STATUS, retrying in 1 minute..." + fi + sleep 60 + done diff --git a/ci/publish_layers.sh b/ci/publish_layers.sh index 58257bf1..9654582a 100755 --- a/ci/publish_layers.sh +++ b/ci/publish_layers.sh @@ -199,6 +199,8 @@ fi while [ $latest_version -lt $VERSION ]; do latest_version=$(publish_layer $REGION $layer $aws_cli_python_version_key $layer_path) printf "[$REGION] Published version $latest_version for layer $layer in region $REGION\n" + latest_arn=$(aws lambda get-layer-version --layer-name $layer --version-number $latest_version --region $REGION --query 'LayerVersionArn' --output text) + printf "[$REGION] Published arn $latest_arn\n" # This shouldn't happen unless someone manually deleted the latest version, say 28, and # then tries to republish 28 again. The published version would actually be 29, because @@ -209,4 +211,10 @@ while [ $latest_version -lt $VERSION ]; do fi done +if [ -n "$DOTENV" ]; then + printf "[$REGION] Exporting layer version to $DOTENV file...\n" + echo "PYTHON_${PYTHON_VERSION/./}_VERSION=$latest_arn" >> "$DOTENV" + cat "$DOTENV" +fi + printf "[$REGION] Finished publishing layers...\n\n" From db673844725793182e20f8a45fcfac90a9789fe9 Mon Sep 17 00:00:00 2001 From: Florentin Labelle Date: Mon, 18 Aug 2025 09:18:19 +0200 Subject: [PATCH 248/268] fix(appsec): enable appsec through the ddtrace product interface (#647) --- datadog_lambda/wrapper.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index 49455625..28c7ae88 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -53,6 +53,9 @@ asm_start_request, get_asm_blocked_response, ) + from ddtrace.internal.appsec.product import start + + start() if config.profiling_enabled: from ddtrace.profiling import profiler From 3b5260d2f2f846379787df284c6e3c0916ce027d Mon Sep 17 00:00:00 2001 From: Florentin Labelle Date: Wed, 20 Aug 2025 10:31:31 +0200 Subject: [PATCH 249/268] build: use lambda image to ensure binary compatibility when building from source (#650) * build: use lambda python image instead of debian * use sam build-python images --- Dockerfile | 10 ++++++++++ scripts/build_layers.sh | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 77125129..ee4c7efd 100644 --- a/Dockerfile +++ b/Dockerfile @@ -7,6 +7,16 @@ ARG runtime RUN mkdir -p /build/python/lib/$runtime/site-packages WORKDIR /build +# Install newer version of GCC on AL2 +RUN set -eux; \ + if command -v yum >/dev/null 2>&1; then \ + yum -y install git gcc10 gcc10-c++; \ + cd /usr/bin; \ + rm gcc && ln -s gcc10-gcc gcc; \ + rm g++ && ln -s gcc10-g++ g++; \ + rm cc && ln -s gcc10-cc cc; \ + fi + # Add Rust compiler which is needed to build dd-trace-py from source RUN curl https://sh.rustup.rs -sSf | \ sh -s -- --default-toolchain stable -y diff --git a/scripts/build_layers.sh b/scripts/build_layers.sh index a0d6ee39..23941b7a 100755 --- a/scripts/build_layers.sh +++ b/scripts/build_layers.sh @@ -61,7 +61,7 @@ function docker_build_zip { # between different python runtimes. temp_dir=$(mktemp -d) docker buildx build -t datadog-lambda-python-${arch}:$1 . --no-cache \ - --build-arg image=public.ecr.aws/docker/library/python:$1 \ + --build-arg image=public.ecr.aws/sam/build-python$1:1 \ --build-arg runtime=python$1 \ --platform linux/${arch} \ --progress=plain \ From 33fcbce8e28c0938ebab6cb6a2b0775deec754d1 Mon Sep 17 00:00:00 2001 From: Taegyun Kim Date: Thu, 21 Aug 2025 05:33:46 +0900 Subject: [PATCH 250/268] chore(build): strip debug symbols using `strip -g` (#652) * chore(build): build dd-trace-py with release mode by default * does this make difference * debug print * try setting here * Revert "debug print" This reverts commit 07df11ac23f48c66d638ddefef811032afbaa4b6. * Revert "try setting here" This reverts commit 6f061439e3561ca88eb3d838e457f00ab7953ca9. * comment * debug print * aggressively strip debug symbols * remove debug print * update comments * can this work too? --- Dockerfile | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Dockerfile b/Dockerfile index ee4c7efd..36b236f0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -72,5 +72,11 @@ RUN find ./python/lib/$runtime/site-packages/ddtrace -name \*.h -delete RUN find ./python/lib/$runtime/site-packages/ddtrace -name \*.hpp -delete RUN find ./python/lib/$runtime/site-packages/ddtrace -name \*.pyx -delete +# Strip debug symbols using strip -g for all .so files in ddtrace. This is to +# reduce the size when ddtrace is built from sources. The release wheels are +# already stripped of debug symbols. We should revisit this when serverless +# benchmark uses pre-built wheels instead of building from sources. +RUN find ./python/lib/$runtime/site-packages/ddtrace -name "*.so" -exec strip -g {} \; + FROM scratch COPY --from=builder /build/python / From 7184dafff0a729c4e32df325dfc4d49070a0f732 Mon Sep 17 00:00:00 2001 From: Alberto Vara Date: Fri, 29 Aug 2025 07:47:22 +0200 Subject: [PATCH 251/268] Re-remove more iast .so files (#653) * Re-remove more iast .so files * itr:noskip * Update MAX_LAYER_UNCOMPRESSED_SIZE_KB value --- Dockerfile | 1 + scripts/check_layer_size.sh | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 36b236f0..8da968fb 100644 --- a/Dockerfile +++ b/Dockerfile @@ -31,6 +31,7 @@ RUN pip install --no-cache-dir . -t ./python/lib/$runtime/site-packages RUN rm -rf ./python/lib/$runtime/site-packages/botocore* RUN rm -rf ./python/lib/$runtime/site-packages/setuptools RUN rm -rf ./python/lib/$runtime/site-packages/jsonschema/tests +RUN rm -f ./python/lib/$runtime/site-packages/ddtrace/appsec/_iast/_ast/iastpatch*.so RUN rm -f ./python/lib/$runtime/site-packages/ddtrace/appsec/_iast/_taint_tracking/*.so RUN rm -f ./python/lib/$runtime/site-packages/ddtrace/appsec/_iast/_stacktrace*.so # _stack_v2 may not exist for some versions of ddtrace (e.g. under python 3.13) diff --git a/scripts/check_layer_size.sh b/scripts/check_layer_size.sh index b7460976..27988e85 100755 --- a/scripts/check_layer_size.sh +++ b/scripts/check_layer_size.sh @@ -9,7 +9,7 @@ set -e MAX_LAYER_COMPRESSED_SIZE_KB=$(expr 17 \* 1024 / 2) # 8704 KB -MAX_LAYER_UNCOMPRESSED_SIZE_KB=$(expr 23 \* 1024) # 23552 KB +MAX_LAYER_UNCOMPRESSED_SIZE_KB=$(expr 22 \* 1024) # 22528 KB LAYER_FILES_PREFIX="datadog_lambda_py" From b55e5382d91890d453302dc80a8378c01d1b5047 Mon Sep 17 00:00:00 2001 From: Florentin Labelle Date: Wed, 3 Sep 2025 13:20:12 +0200 Subject: [PATCH 252/268] appsec: fixes for API Security (#654) --- datadog_lambda/__init__.py | 2 -- datadog_lambda/trigger.py | 2 +- .../logs/async-metrics_python310.log | 3 +++ .../logs/async-metrics_python311.log | 3 +++ .../logs/async-metrics_python312.log | 3 +++ .../logs/async-metrics_python313.log | 3 +++ .../snapshots/logs/async-metrics_python38.log | 3 +++ .../snapshots/logs/async-metrics_python39.log | 3 +++ .../snapshots/logs/sync-metrics_python310.log | 3 +++ .../snapshots/logs/sync-metrics_python311.log | 3 +++ .../snapshots/logs/sync-metrics_python312.log | 3 +++ .../snapshots/logs/sync-metrics_python313.log | 3 +++ .../snapshots/logs/sync-metrics_python38.log | 3 +++ .../snapshots/logs/sync-metrics_python39.log | 3 +++ tests/test_trigger.py | 20 +++++++++++++++---- 15 files changed, 53 insertions(+), 7 deletions(-) diff --git a/datadog_lambda/__init__.py b/datadog_lambda/__init__.py index 0166f077..2034d3cb 100644 --- a/datadog_lambda/__init__.py +++ b/datadog_lambda/__init__.py @@ -8,8 +8,6 @@ "DD_APPSEC_ENABLED", "false" ) -if os.environ.get("DD_API_SECURITY_ENABLED") is None: - os.environ["DD_API_SECURITY_ENABLED"] = "False" initialize_cold_start_tracing() diff --git a/datadog_lambda/trigger.py b/datadog_lambda/trigger.py index bbd0d027..65800cf7 100644 --- a/datadog_lambda/trigger.py +++ b/datadog_lambda/trigger.py @@ -288,7 +288,7 @@ def extract_http_tags(event): """ Extracts HTTP facet tags from the triggering event """ - http_tags = {} + http_tags = {"span.kind": "server"} # Safely get request_context and ensure it's a dictionary request_context = event.get("requestContext") diff --git a/tests/integration/snapshots/logs/async-metrics_python310.log b/tests/integration/snapshots/logs/async-metrics_python310.log index 66351a99..d72afba3 100644 --- a/tests/integration/snapshots/logs/async-metrics_python310.log +++ b/tests/integration/snapshots/logs/async-metrics_python310.log @@ -104,6 +104,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://xxxx.execute-api.us-east-2.amazonaws.com/", "http.url_details.path": "/Prod/", "http.method": "GET", @@ -642,6 +643,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", + "span.kind": "server", "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", "http.url_details.path": "/httpapi/get", "http.method": "GET", @@ -1479,6 +1481,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", "http.status_code": "200" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python311.log b/tests/integration/snapshots/logs/async-metrics_python311.log index 8e19e239..dac9c427 100644 --- a/tests/integration/snapshots/logs/async-metrics_python311.log +++ b/tests/integration/snapshots/logs/async-metrics_python311.log @@ -104,6 +104,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://xxxx.execute-api.us-east-2.amazonaws.com/", "http.url_details.path": "/Prod/", "http.method": "GET", @@ -642,6 +643,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", + "span.kind": "server", "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", "http.url_details.path": "/httpapi/get", "http.method": "GET", @@ -1479,6 +1481,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", "http.status_code": "200" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python312.log b/tests/integration/snapshots/logs/async-metrics_python312.log index 9879d875..c2b624ff 100644 --- a/tests/integration/snapshots/logs/async-metrics_python312.log +++ b/tests/integration/snapshots/logs/async-metrics_python312.log @@ -104,6 +104,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://xxxx.execute-api.us-east-2.amazonaws.com/", "http.url_details.path": "/Prod/", "http.method": "GET", @@ -642,6 +643,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", + "span.kind": "server", "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", "http.url_details.path": "/httpapi/get", "http.method": "GET", @@ -1479,6 +1481,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", "http.status_code": "200" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python313.log b/tests/integration/snapshots/logs/async-metrics_python313.log index 92bb83ef..9a5e763f 100644 --- a/tests/integration/snapshots/logs/async-metrics_python313.log +++ b/tests/integration/snapshots/logs/async-metrics_python313.log @@ -104,6 +104,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://xxxx.execute-api.us-east-2.amazonaws.com/", "http.url_details.path": "/Prod/", "http.method": "GET", @@ -642,6 +643,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", + "span.kind": "server", "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", "http.url_details.path": "/httpapi/get", "http.method": "GET", @@ -1479,6 +1481,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", "http.status_code": "200" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python38.log b/tests/integration/snapshots/logs/async-metrics_python38.log index 6c502146..9e6370b5 100644 --- a/tests/integration/snapshots/logs/async-metrics_python38.log +++ b/tests/integration/snapshots/logs/async-metrics_python38.log @@ -104,6 +104,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://xxxx.execute-api.us-east-2.amazonaws.com/", "http.url_details.path": "/Prod/", "http.method": "GET", @@ -642,6 +643,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", + "span.kind": "server", "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", "http.url_details.path": "/httpapi/get", "http.method": "GET", @@ -1479,6 +1481,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", "http.status_code": "200" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python39.log b/tests/integration/snapshots/logs/async-metrics_python39.log index 42bdaeb8..70f7a59f 100644 --- a/tests/integration/snapshots/logs/async-metrics_python39.log +++ b/tests/integration/snapshots/logs/async-metrics_python39.log @@ -104,6 +104,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://xxxx.execute-api.us-east-2.amazonaws.com/", "http.url_details.path": "/Prod/", "http.method": "GET", @@ -642,6 +643,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", + "span.kind": "server", "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", "http.url_details.path": "/httpapi/get", "http.method": "GET", @@ -1479,6 +1481,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", "http.status_code": "200" }, diff --git a/tests/integration/snapshots/logs/sync-metrics_python310.log b/tests/integration/snapshots/logs/sync-metrics_python310.log index 201ca82a..7d504bdc 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python310.log +++ b/tests/integration/snapshots/logs/sync-metrics_python310.log @@ -84,6 +84,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://xxxx.execute-api.us-east-2.amazonaws.com/", "http.url_details.path": "/Prod/", "http.method": "GET", @@ -679,6 +680,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", + "span.kind": "server", "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", "http.url_details.path": "/httpapi/get", "http.method": "GET", @@ -1611,6 +1613,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", "http.status_code": "200" }, diff --git a/tests/integration/snapshots/logs/sync-metrics_python311.log b/tests/integration/snapshots/logs/sync-metrics_python311.log index 564db4a9..aa242652 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python311.log +++ b/tests/integration/snapshots/logs/sync-metrics_python311.log @@ -84,6 +84,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://xxxx.execute-api.us-east-2.amazonaws.com/", "http.url_details.path": "/Prod/", "http.method": "GET", @@ -679,6 +680,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", + "span.kind": "server", "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", "http.url_details.path": "/httpapi/get", "http.method": "GET", @@ -1611,6 +1613,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", "http.status_code": "200" }, diff --git a/tests/integration/snapshots/logs/sync-metrics_python312.log b/tests/integration/snapshots/logs/sync-metrics_python312.log index 6010a364..99471eaf 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python312.log +++ b/tests/integration/snapshots/logs/sync-metrics_python312.log @@ -84,6 +84,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://xxxx.execute-api.us-east-2.amazonaws.com/", "http.url_details.path": "/Prod/", "http.method": "GET", @@ -679,6 +680,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", + "span.kind": "server", "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", "http.url_details.path": "/httpapi/get", "http.method": "GET", @@ -1611,6 +1613,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", "http.status_code": "200" }, diff --git a/tests/integration/snapshots/logs/sync-metrics_python313.log b/tests/integration/snapshots/logs/sync-metrics_python313.log index 21d03362..e53aae50 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python313.log +++ b/tests/integration/snapshots/logs/sync-metrics_python313.log @@ -84,6 +84,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://xxxx.execute-api.us-east-2.amazonaws.com/", "http.url_details.path": "/Prod/", "http.method": "GET", @@ -679,6 +680,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", + "span.kind": "server", "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", "http.url_details.path": "/httpapi/get", "http.method": "GET", @@ -1611,6 +1613,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", "http.status_code": "200" }, diff --git a/tests/integration/snapshots/logs/sync-metrics_python38.log b/tests/integration/snapshots/logs/sync-metrics_python38.log index a6828904..9cbf4564 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python38.log +++ b/tests/integration/snapshots/logs/sync-metrics_python38.log @@ -84,6 +84,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://xxxx.execute-api.us-east-2.amazonaws.com/", "http.url_details.path": "/Prod/", "http.method": "GET", @@ -679,6 +680,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", + "span.kind": "server", "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", "http.url_details.path": "/httpapi/get", "http.method": "GET", @@ -1611,6 +1613,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", "http.status_code": "200" }, diff --git a/tests/integration/snapshots/logs/sync-metrics_python39.log b/tests/integration/snapshots/logs/sync-metrics_python39.log index 6a8d692e..cc0407c1 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python39.log +++ b/tests/integration/snapshots/logs/sync-metrics_python39.log @@ -84,6 +84,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://xxxx.execute-api.us-east-2.amazonaws.com/", "http.url_details.path": "/Prod/", "http.method": "GET", @@ -679,6 +680,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", + "span.kind": "server", "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", "http.url_details.path": "/httpapi/get", "http.method": "GET", @@ -1611,6 +1613,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", "http.status_code": "200" }, diff --git a/tests/test_trigger.py b/tests/test_trigger.py index 15103937..452635cf 100644 --- a/tests/test_trigger.py +++ b/tests/test_trigger.py @@ -305,6 +305,7 @@ def test_extract_trigger_tags_api_gateway(self): "http.url_details.path": "/prod/path/to/resource", "http.method": "POST", "http.route": "/{proxy+}", + "span.kind": "server", }, ) @@ -324,6 +325,7 @@ def test_extract_trigger_tags_api_gateway_non_proxy(self): "http.url_details.path": "/dev/http/get", "http.method": "GET", "http.route": "/http/get", + "span.kind": "server", }, ) @@ -340,6 +342,7 @@ def test_extract_trigger_tags_api_gateway_websocket_connect(self): "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "arn:aws:apigateway:us-west-1::/restapis/p62c47itsb/stages/dev", "http.url": "https://p62c47itsb.execute-api.eu-west-1.amazonaws.com/", + "span.kind": "server", }, ) @@ -356,6 +359,7 @@ def test_extract_trigger_tags_api_gateway_websocket_default(self): "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "arn:aws:apigateway:us-west-1::/restapis/p62c47itsb/stages/dev", "http.url": "https://p62c47itsb.execute-api.eu-west-1.amazonaws.com/", + "span.kind": "server", }, ) @@ -372,6 +376,7 @@ def test_extract_trigger_tags_api_gateway_websocket_disconnect(self): "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "arn:aws:apigateway:us-west-1::/restapis/p62c47itsb/stages/dev", "http.url": "https://p62c47itsb.execute-api.eu-west-1.amazonaws.com/", + "span.kind": "server", }, ) @@ -390,6 +395,7 @@ def test_extract_trigger_tags_api_gateway_http_api(self): "http.url": "https://x02yirxc7a.execute-api.eu-west-1.amazonaws.com/", "http.url_details.path": "/httpapi/get", "http.method": "GET", + "span.kind": "server", "http.route": "/httpapi/get", }, ) @@ -408,6 +414,7 @@ def test_extract_trigger_tags_application_load_balancer(self): "function_trigger.event_source_arn": "arn:aws:elasticloadbalancing:us-east-2:123456789012:targetgroup/lambda-xyz/123abc", "http.url_details.path": "/lambda", "http.method": "GET", + "span.kind": "server", }, ) @@ -569,7 +576,12 @@ def test_extract_http_tags_with_invalid_request_context(self): http_tags = extract_http_tags(event) # Should still extract valid tags from the event self.assertEqual( - http_tags, {"http.url_details.path": "/test", "http.method": "GET"} + http_tags, + { + "span.kind": "server", + "http.url_details.path": "/test", + "http.method": "GET", + }, ) def test_extract_http_tags_with_invalid_apigateway_http(self): @@ -582,7 +594,7 @@ def test_extract_http_tags_with_invalid_apigateway_http(self): } http_tags = extract_http_tags(event) # Should not raise an exception - self.assertEqual(http_tags, {}) + self.assertEqual(http_tags, {"span.kind": "server"}) def test_extract_http_tags_with_invalid_headers(self): from datadog_lambda.trigger import extract_http_tags @@ -591,7 +603,7 @@ def test_extract_http_tags_with_invalid_headers(self): event = {"headers": "not_a_dict"} http_tags = extract_http_tags(event) # Should not raise an exception - self.assertEqual(http_tags, {}) + self.assertEqual(http_tags, {"span.kind": "server"}) def test_extract_http_tags_with_invalid_route(self): from datadog_lambda.trigger import extract_http_tags @@ -600,7 +612,7 @@ def test_extract_http_tags_with_invalid_route(self): event = {"routeKey": 12345} # Not a string http_tags = extract_http_tags(event) # Should not raise an exception - self.assertEqual(http_tags, {}) + self.assertEqual(http_tags, {"span.kind": "server"}) class ExtractHTTPStatusCodeTag(unittest.TestCase): From 9c93e475318d2044d5b2a142f374d529483e9d33 Mon Sep 17 00:00:00 2001 From: Florentin Labelle Date: Fri, 5 Sep 2025 16:10:25 +0200 Subject: [PATCH 253/268] ci: add appsec system-tests to the ci (#651) --- .github/workflows/system_tests.yml | 38 ++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 .github/workflows/system_tests.yml diff --git a/.github/workflows/system_tests.yml b/.github/workflows/system_tests.yml new file mode 100644 index 00000000..b61725b1 --- /dev/null +++ b/.github/workflows/system_tests.yml @@ -0,0 +1,38 @@ +name: System Tests + +on: + push: + branches: + - main + pull_request: + branches: + - "**" + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Build layer + run: | + ARCH=amd64 PYTHON_VERSION=3.13 ./scripts/build_layers.sh + + - uses: actions/upload-artifact@v4 + with: + path: .layers/datadog_lambda_py-amd64-3.13.zip + name: binaries + + system-tests: + needs: + - build + uses: DataDog/system-tests/.github/workflows/system-tests.yml@main + secrets: inherit + permissions: + contents: read + packages: write + with: + library: python_lambda + binaries_artifact: binaries + scenarios_groups: appsec + skip_empty_scenarios: true From b171bda519984959227f941012a8b28e3254e737 Mon Sep 17 00:00:00 2001 From: Florentin Labelle Date: Tue, 9 Sep 2025 10:18:38 +0200 Subject: [PATCH 254/268] [APPSEC]: blocking for alb multi value headers events (#655) * fix: alb multi val headers also has multi val query params * appsec: fix blocking for alb multivalue headers events --- datadog_lambda/asm.py | 47 ++++++++++++------- datadog_lambda/trigger.py | 11 ++++- ...ion-load-balancer-multivalue-headers.json} | 2 +- tests/test_asm.py | 24 +++++++++- tests/test_trigger.py | 17 +++++++ 5 files changed, 79 insertions(+), 22 deletions(-) rename tests/event_samples/{application-load-balancer-mutivalue-headers.json => application-load-balancer-multivalue-headers.json} (96%) diff --git a/datadog_lambda/asm.py b/datadog_lambda/asm.py index 31f750d8..7bd8272f 100644 --- a/datadog_lambda/asm.py +++ b/datadog_lambda/asm.py @@ -73,17 +73,16 @@ def asm_start_request( route: Optional[str] = None if event_source.event_type == EventTypes.ALB: - headers = event.get("headers") - multi_value_request_headers = event.get("multiValueHeaders") - if multi_value_request_headers: - request_headers = _to_single_value_headers(multi_value_request_headers) - else: - request_headers = headers or {} - raw_uri = event.get("path") - parsed_query = event.get("multiValueQueryStringParameters") or event.get( - "queryStringParameters" - ) + + if event_source.subtype == EventSubtypes.ALB: + request_headers = event.get("headers", {}) + parsed_query = event.get("queryStringParameters") + if event_source.subtype == EventSubtypes.ALB_MULTI_VALUE_HEADERS: + request_headers = _to_single_value_headers( + event.get("multiValueHeaders", {}) + ) + parsed_query = event.get("multiValueQueryStringParameters") elif event_source.event_type == EventTypes.LAMBDA_FUNCTION_URL: request_headers = event.get("headers", {}) @@ -226,15 +225,27 @@ def get_asm_blocked_response( content_type = blocked.get("content-type", "application/json") content = http_utils._get_blocked_template(content_type) - response_headers = { - "content-type": content_type, - } - if "location" in blocked: - response_headers["location"] = blocked["location"] - - return { + response = { "statusCode": blocked.get("status_code", 403), - "headers": response_headers, "body": content, "isBase64Encoded": False, } + + needs_multi_value_headers = event_source.equals( + EventTypes.ALB, EventSubtypes.ALB_MULTI_VALUE_HEADERS + ) + + if needs_multi_value_headers: + response["multiValueHeaders"] = { + "content-type": [content_type], + } + if "location" in blocked: + response["multiValueHeaders"]["location"] = [blocked["location"]] + else: + response["headers"] = { + "content-type": content_type, + } + if "location" in blocked: + response["headers"]["location"] = blocked["location"] + + return response diff --git a/datadog_lambda/trigger.py b/datadog_lambda/trigger.py index 65800cf7..e0c3c4fa 100644 --- a/datadog_lambda/trigger.py +++ b/datadog_lambda/trigger.py @@ -54,6 +54,10 @@ class EventSubtypes(_stringTypedEnum): WEBSOCKET = "websocket" HTTP_API = "http-api" + ALB = "alb" # regular alb + # ALB with the multi-value headers option checked on the target group + ALB_MULTI_VALUE_HEADERS = "alb-multi-value-headers" + class _EventSource: """ @@ -133,7 +137,12 @@ def parse_event_source(event: dict) -> _EventSource: event_source.subtype = EventSubtypes.WEBSOCKET if request_context and request_context.get("elb"): - event_source = _EventSource(EventTypes.ALB) + if "multiValueHeaders" in event: + event_source = _EventSource( + EventTypes.ALB, EventSubtypes.ALB_MULTI_VALUE_HEADERS + ) + else: + event_source = _EventSource(EventTypes.ALB, EventSubtypes.ALB) if event.get("awslogs"): event_source = _EventSource(EventTypes.CLOUDWATCH_LOGS) diff --git a/tests/event_samples/application-load-balancer-mutivalue-headers.json b/tests/event_samples/application-load-balancer-multivalue-headers.json similarity index 96% rename from tests/event_samples/application-load-balancer-mutivalue-headers.json rename to tests/event_samples/application-load-balancer-multivalue-headers.json index 6d446d15..a35ca502 100644 --- a/tests/event_samples/application-load-balancer-mutivalue-headers.json +++ b/tests/event_samples/application-load-balancer-multivalue-headers.json @@ -6,7 +6,7 @@ }, "httpMethod": "GET", "path": "/lambda", - "queryStringParameters": { + "multiValueQueryStringParameters": { "query": "1234ABCD" }, "multiValueHeaders": { diff --git a/tests/test_asm.py b/tests/test_asm.py index 7a5e6c56..1e11b102 100644 --- a/tests/test_asm.py +++ b/tests/test_asm.py @@ -8,6 +8,7 @@ get_asm_blocked_response, ) from datadog_lambda.trigger import ( + EventSubtypes, EventTypes, _EventSource, extract_trigger_tags, @@ -34,7 +35,7 @@ ), ( "application_load_balancer_multivalue_headers", - "application-load-balancer-mutivalue-headers.json", + "application-load-balancer-multivalue-headers.json", "72.12.164.125", "/lambda?query=1234ABCD", "GET", @@ -111,7 +112,7 @@ ), ( "application_load_balancer_multivalue_headers", - "application-load-balancer-mutivalue-headers.json", + "application-load-balancer-multivalue-headers.json", { "statusCode": 404, "multiValueHeaders": { @@ -397,6 +398,25 @@ def test_get_asm_blocked_response_blocked( response = get_asm_blocked_response(event_source) assert response["statusCode"] == expected_status assert response["headers"] == expected_headers + assert "multiValueHeaders" not in response + + +@patch("datadog_lambda.asm.get_blocked") +def test_get_asm_blocked_response_blocked_multi_value_headers( + mock_get_blocked, +): + # HTML blocking response + mock_get_blocked.return_value = { + "status_code": 401, + "type": "html", + "content-type": "text/html", + } + + event_source = _EventSource(EventTypes.ALB, EventSubtypes.ALB_MULTI_VALUE_HEADERS) + response = get_asm_blocked_response(event_source) + assert response["statusCode"] == 401 + assert response["multiValueHeaders"] == {"content-type": ["text/html"]} + assert "headers" not in response @patch("datadog_lambda.asm.get_blocked") diff --git a/tests/test_trigger.py b/tests/test_trigger.py index 452635cf..182e61d8 100644 --- a/tests/test_trigger.py +++ b/tests/test_trigger.py @@ -5,6 +5,7 @@ from datadog_lambda.trigger import ( EventSubtypes, + EventTypes, parse_event_source, get_event_source_arn, extract_trigger_tags, @@ -117,6 +118,22 @@ def test_event_source_application_load_balancer(self): event_source = parse_event_source(event) event_source_arn = get_event_source_arn(event_source, event, ctx) self.assertEqual(event_source.to_string(), event_sample_source) + self.assertEqual(event_source.subtype, EventSubtypes.ALB) + self.assertEqual( + event_source_arn, + "arn:aws:elasticloadbalancing:us-east-2:123456789012:targetgroup/lambda-xyz/123abc", + ) + + def test_event_source_application_load_balancer_multi_value_headers(self): + event_sample_source = "application-load-balancer-multivalue-headers" + test_file = event_samples + event_sample_source + ".json" + with open(test_file, "r") as event: + event = json.load(event) + ctx = get_mock_context() + event_source = parse_event_source(event) + event_source_arn = get_event_source_arn(event_source, event, ctx) + self.assertEqual(event_source.event_type, EventTypes.ALB) + self.assertEqual(event_source.subtype, EventSubtypes.ALB_MULTI_VALUE_HEADERS) self.assertEqual( event_source_arn, "arn:aws:elasticloadbalancing:us-east-2:123456789012:targetgroup/lambda-xyz/123abc", From 2389ec30f666eebcb8f5350ebb90853a72ee4e8b Mon Sep 17 00:00:00 2001 From: Florentin Labelle Date: Wed, 10 Sep 2025 13:14:34 +0200 Subject: [PATCH 255/268] fix(appsec): perform _after extractions on the blocking_response (#656) --- datadog_lambda/wrapper.py | 47 +++++++++++++++++++++++---------------- tests/test_wrapper.py | 28 +++++++++++++++++------ 2 files changed, 49 insertions(+), 26 deletions(-) diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index 28c7ae88..51e5bcfa 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -284,6 +284,34 @@ def _before(self, event, context): def _after(self, event, context): try: status_code = extract_http_status_code_tag(self.trigger_tags, self.response) + + if self.span: + if config.appsec_enabled and not self.blocking_response: + asm_start_response( + self.span, + status_code, + self.event_source, + response=self.response, + ) + self.blocking_response = get_asm_blocked_response(self.event_source) + + if self.blocking_response: + status_code = str(self.blocking_response.get("statusCode")) + if config.capture_payload_enabled and self.response: + tag_object( + self.span, "function.blocked_response", self.response + ) + self.response = self.blocking_response + + if config.capture_payload_enabled: + tag_object(self.span, "function.request", event) + tag_object(self.span, "function.response", self.response) + + if status_code: + self.span.set_tag("http.status_code", status_code) + + self.span.finish() + if status_code: self.trigger_tags["http.status_code"] = status_code mark_trace_as_error_for_5xx_responses(context, status_code, self.span) @@ -298,25 +326,6 @@ def _after(self, event, context): if should_trace_cold_start: trace_ctx = tracer.current_trace_context() - if self.span: - if config.capture_payload_enabled: - tag_object(self.span, "function.request", event) - tag_object(self.span, "function.response", self.response) - - if status_code: - self.span.set_tag("http.status_code", status_code) - - if config.appsec_enabled and not self.blocking_response: - asm_start_response( - self.span, - status_code, - self.event_source, - response=self.response, - ) - self.blocking_response = get_asm_blocked_response(self.event_source) - - self.span.finish() - if self.inferred_span: if status_code: self.inferred_span.set_tag("http.status_code", status_code) diff --git a/tests/test_wrapper.py b/tests/test_wrapper.py index e07b5ca9..0083b3fa 100644 --- a/tests/test_wrapper.py +++ b/tests/test_wrapper.py @@ -690,6 +690,9 @@ def setUp(self): self.mock_get_asm_blocking_response = patcher.start() self.addCleanup(patcher.stop) + with open("tests/event_samples/api-gateway.json") as f: + self.api_gateway_request = json.loads(f.read()) + self.fake_blocking_response = { "statusCode": "403", "headers": { @@ -706,7 +709,7 @@ def test_blocking_before(self): lambda_handler = wrapper.datadog_lambda_wrapper(mock_handler) - response = lambda_handler({}, get_mock_context()) + response = lambda_handler(self.api_gateway_request, get_mock_context()) self.assertEqual(response, self.fake_blocking_response) mock_handler.assert_not_called() @@ -715,27 +718,31 @@ def test_blocking_before(self): self.mock_asm_start_request.assert_called_once() self.mock_asm_start_response.assert_not_called() + assert lambda_handler.span.get_tag("http.status_code") == "403" + def test_blocking_during(self): self.mock_get_asm_blocking_response.return_value = None - @wrapper.datadog_lambda_wrapper def lambda_handler(event, context): self.mock_get_asm_blocking_response.return_value = ( self.fake_blocking_response ) raise wrapper.BlockingException() - response = lambda_handler({}, get_mock_context()) + lambda_handler = wrapper.datadog_lambda_wrapper(lambda_handler) + + response = lambda_handler(self.api_gateway_request, get_mock_context()) self.assertEqual(response, self.fake_blocking_response) self.mock_asm_set_context.assert_called_once() self.mock_asm_start_request.assert_called_once() self.mock_asm_start_response.assert_not_called() + assert lambda_handler.span.get_tag("http.status_code") == "403" + def test_blocking_after(self): self.mock_get_asm_blocking_response.return_value = None - @wrapper.datadog_lambda_wrapper def lambda_handler(event, context): self.mock_get_asm_blocking_response.return_value = ( self.fake_blocking_response @@ -745,13 +752,17 @@ def lambda_handler(event, context): "body": "This should not be returned", } - response = lambda_handler({}, get_mock_context()) + lambda_handler = wrapper.datadog_lambda_wrapper(lambda_handler) + + response = lambda_handler(self.api_gateway_request, get_mock_context()) self.assertEqual(response, self.fake_blocking_response) self.mock_asm_set_context.assert_called_once() self.mock_asm_start_request.assert_called_once() self.mock_asm_start_response.assert_called_once() + assert lambda_handler.span.get_tag("http.status_code") == "403" + def test_no_blocking_appsec_disabled(self): os.environ["DD_APPSEC_ENABLED"] = "false" @@ -764,14 +775,17 @@ def test_no_blocking_appsec_disabled(self): "body": "This should be returned", } - @wrapper.datadog_lambda_wrapper def lambda_handler(event, context): return expected_response - response = lambda_handler({}, get_mock_context()) + lambda_handler = wrapper.datadog_lambda_wrapper(lambda_handler) + + response = lambda_handler(self.api_gateway_request, get_mock_context()) self.assertEqual(response, expected_response) self.mock_get_asm_blocking_response.assert_not_called() self.mock_asm_set_context.assert_not_called() self.mock_asm_start_request.assert_not_called() self.mock_asm_start_response.assert_not_called() + + assert lambda_handler.span.get_tag("http.status_code") == "200" From 7b54882d322c2233835c6f45ee500a404919eaf9 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Tue, 16 Sep 2025 11:28:10 -0400 Subject: [PATCH 256/268] v8.114.0 (#658) --- datadog_lambda/version.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index d5b71e8d..ac6691b0 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "8.114.0.dev0" +__version__ = "8.114.0" diff --git a/pyproject.toml b/pyproject.toml index a2fc7b74..ae46ce3d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "8.114.0.dev0" +version = "8.114.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 784a41b74498b062e2a3a1e326199a197150a23d Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Tue, 16 Sep 2025 22:44:05 -0400 Subject: [PATCH 257/268] update version to v8.115.0.dev0 --- datadog_lambda/version.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index ac6691b0..653b589b 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "8.114.0" +__version__ = "8.115.0.dev0" diff --git a/pyproject.toml b/pyproject.toml index ae46ce3d..aebd15b4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "8.114.0" +version = "8.115.0.dev0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From bb2271c40a9d645696057d5ec146a4bdcc9e3205 Mon Sep 17 00:00:00 2001 From: Rithika Narayan <93233069+rithikanarayan@users.noreply.github.com> Date: Wed, 24 Sep 2025 11:53:32 -0400 Subject: [PATCH 258/268] Increasing allowed uncompressed layer size to 25 MB (#659) --- scripts/check_layer_size.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/check_layer_size.sh b/scripts/check_layer_size.sh index 27988e85..b074d74e 100755 --- a/scripts/check_layer_size.sh +++ b/scripts/check_layer_size.sh @@ -9,7 +9,7 @@ set -e MAX_LAYER_COMPRESSED_SIZE_KB=$(expr 17 \* 1024 / 2) # 8704 KB -MAX_LAYER_UNCOMPRESSED_SIZE_KB=$(expr 22 \* 1024) # 22528 KB +MAX_LAYER_UNCOMPRESSED_SIZE_KB=$(expr 25 \* 1024) # 25600 KB LAYER_FILES_PREFIX="datadog_lambda_py" From b6131e5c7a052d8e08727c9196d1a83b50be1b68 Mon Sep 17 00:00:00 2001 From: Christian Wygoda <103508637+c-wygoda@users.noreply.github.com> Date: Wed, 1 Oct 2025 18:44:39 +0200 Subject: [PATCH 259/268] fix: support ddtrace 3.x.x, including >=3.15 (#661) --- datadog_lambda/wrapper.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index 51e5bcfa..de24d71d 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -65,7 +65,11 @@ if config.exception_replay_enabled: from ddtrace.debugging._exception.replay import SpanExceptionHandler - from ddtrace.debugging._uploader import LogsIntakeUploaderV1 + + try: + from ddtrace.debugging._uploader import SignalUploader + except ImportError: + from ddtrace.debugging._uploader import LogsIntakeUploaderV1 as SignalUploader logger = logging.getLogger(__name__) @@ -370,7 +374,7 @@ def _after(self, event, context): # Flush exception replay if config.exception_replay_enabled: - LogsIntakeUploaderV1._instance.periodic() + SignalUploader._instance.periodic() if config.encode_authorizer_context and is_authorizer_response( self.response From 09143fe76ba033c698fc63bd90495155d36a47f1 Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Fri, 3 Oct 2025 11:04:27 -0700 Subject: [PATCH 260/268] Improve testing for ddtrace imports. (#662) --- .github/workflows/build.yml | 2 + datadog_lambda/wrapper.py | 4 ++ scripts/check_layer_size.sh | 2 +- tests/test_wrapper.py | 110 ++++++++++++++++++++++++++++++++++++ 4 files changed, 117 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d218bdef..05062447 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -5,6 +5,8 @@ on: branches: - "main" pull_request: + schedule: + - cron: '0 0,12 * * *' # Runs every day at midnight and noon utc jobs: lint: diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index de24d71d..0cbedd9f 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -46,6 +46,10 @@ extract_http_status_code_tag, ) +# ddtrace imports are also tested in +# dd-trace-py/tests/internal/test_serverless.py please update those tests when +# making changes to any ddtrace import. + if config.appsec_enabled: from datadog_lambda.asm import ( asm_set_context, diff --git a/scripts/check_layer_size.sh b/scripts/check_layer_size.sh index b074d74e..ce67d92d 100755 --- a/scripts/check_layer_size.sh +++ b/scripts/check_layer_size.sh @@ -8,7 +8,7 @@ # Compares layer size to threshold, and fails if below that threshold set -e -MAX_LAYER_COMPRESSED_SIZE_KB=$(expr 17 \* 1024 / 2) # 8704 KB +MAX_LAYER_COMPRESSED_SIZE_KB=$(expr 9 \* 1024) # 9216 KB MAX_LAYER_UNCOMPRESSED_SIZE_KB=$(expr 25 \* 1024) # 25600 KB diff --git a/tests/test_wrapper.py b/tests/test_wrapper.py index 0083b3fa..fe7678ac 100644 --- a/tests/test_wrapper.py +++ b/tests/test_wrapper.py @@ -789,3 +789,113 @@ def lambda_handler(event, context): self.mock_asm_start_response.assert_not_called() assert lambda_handler.span.get_tag("http.status_code") == "200" + + +@patch("datadog_lambda.config.Config.exception_replay_enabled", True) +def test_exception_replay_enabled(monkeypatch): + importlib.reload(wrapper) + + original_SpanExceptionHandler_enable = wrapper.SpanExceptionHandler.enable + SpanExceptionHandler_enable_calls = [] + + def SpanExceptionHandler_enable(*args, **kwargs): + SpanExceptionHandler_enable_calls.append((args, kwargs)) + return original_SpanExceptionHandler_enable(*args, **kwargs) + + original_SignalUploader_periodic = wrapper.SignalUploader.periodic + SignalUploader_periodic_calls = [] + + def SignalUploader_periodic(*args, **kwargs): + SignalUploader_periodic_calls.append((args, kwargs)) + return original_SignalUploader_periodic(*args, **kwargs) + + monkeypatch.setattr( + "datadog_lambda.wrapper.SpanExceptionHandler.enable", + SpanExceptionHandler_enable, + ) + monkeypatch.setattr( + "datadog_lambda.wrapper.SignalUploader.periodic", SignalUploader_periodic + ) + + expected_response = { + "statusCode": 200, + "body": "This should be returned", + } + + @wrapper.datadog_lambda_wrapper + def lambda_handler(event, context): + return expected_response + + response = lambda_handler({}, get_mock_context()) + + assert response == expected_response + assert len(SpanExceptionHandler_enable_calls) == 1 + assert len(SignalUploader_periodic_calls) == 1 + + +@patch("datadog_lambda.config.Config.profiling_enabled", True) +def test_profiling_enabled(monkeypatch): + importlib.reload(wrapper) + + original_Profiler_start = wrapper.profiler.Profiler.start + Profiler_start_calls = [] + + def Profiler_start(*args, **kwargs): + Profiler_start_calls.append((args, kwargs)) + return original_Profiler_start(*args, **kwargs) + + monkeypatch.setattr("datadog_lambda.wrapper.is_new_sandbox", lambda: True) + monkeypatch.setattr( + "datadog_lambda.wrapper.profiler.Profiler.start", Profiler_start + ) + + expected_response = { + "statusCode": 200, + "body": "This should be returned", + } + + @wrapper.datadog_lambda_wrapper + def lambda_handler(event, context): + return expected_response + + response = lambda_handler({}, get_mock_context()) + + assert response == expected_response + assert len(Profiler_start_calls) == 1 + + +@patch("datadog_lambda.config.Config.llmobs_enabled", True) +def test_llmobs_enabled(monkeypatch): + importlib.reload(wrapper) + + original_LLMObs_enable = wrapper.LLMObs.enable + LLMObs_enable_calls = [] + + def LLMObs_enable(*args, **kwargs): + LLMObs_enable_calls.append((args, kwargs)) + return original_LLMObs_enable(*args, **kwargs) + + original_LLMObs_flush = wrapper.LLMObs.flush + LLMObs_flush_calls = [] + + def LLMObs_flush(*args, **kwargs): + LLMObs_flush_calls.append((args, kwargs)) + return original_LLMObs_flush(*args, **kwargs) + + monkeypatch.setattr("datadog_lambda.wrapper.LLMObs.enable", LLMObs_enable) + monkeypatch.setattr("datadog_lambda.wrapper.LLMObs.flush", LLMObs_flush) + + expected_response = { + "statusCode": 200, + "body": "This should be returned", + } + + @wrapper.datadog_lambda_wrapper + def lambda_handler(event, context): + return expected_response + + response = lambda_handler({}, get_mock_context()) + + assert response == expected_response + assert len(LLMObs_enable_calls) == 1 + assert len(LLMObs_flush_calls) == 1 From 93d4a07fa61a4d4d2feec08e722505a9e0cc8657 Mon Sep 17 00:00:00 2001 From: Rithika Narayan <93233069+rithikanarayan@users.noreply.github.com> Date: Wed, 8 Oct 2025 13:21:43 -0400 Subject: [PATCH 261/268] APMSVLS-65 Extract Trace Context For AppSync Events (#657) APMSVLS-65 first draft of extractor helper function and inclusion in extract_dd_trace_context Second draft of implementation for extracting trace context from event['request']['headers'] Merge branch 'main' into rithika.narayan/APMSVLS-65/extract-context-from-appsync Removing unnecessary allocations from header extraction Added unit tests for extracting context from event['request']['headers'] Refactoring change to use extract_context_from_http_event_or_context Removing extra testing file linting Merge branch 'main' into rithika.narayan/APMSVLS-65/extract-context-from-appsync Cleaned up repeated get calls Checking for request header field without raising exception Removing extraneous file Refactored code, added more unit tests More comprehensive unit testing for coverage Removing imported files Removing more unnecessary files WIP testing whether decode_authorizer_context is set Cleanup More cleanup Testing refactoring for size Removed comments removing changes in tracer Restoring implementation Bump zipped layer size Integer layer size Merge branch 'main' into rithika.narayan/APMSVLS-65/extract-context-from-appsync Fixing layer size calculation Adding unit test for using extract_context_from_lambda_context linting Merge branch 'main' into rithika.narayan/APMSVLS-65/extract-context-from-appsync --- datadog_lambda/tracing.py | 18 + .../event_samples/rum-appsync-no-headers.json | 14 + .../rum-appsync-request-not-dict.json | 12 + tests/event_samples/rum-appsync.json | 53 + tests/integration/input_events/appsync.json | 49 + tests/integration/package-lock.json | 1119 +++++++++++++++++ tests/integration/package.json | 2 +- .../logs/async-metrics_python310.log | 128 ++ .../logs/async-metrics_python311.log | 128 ++ .../logs/async-metrics_python312.log | 128 ++ .../logs/async-metrics_python313.log | 128 ++ .../snapshots/logs/async-metrics_python38.log | 128 ++ .../snapshots/logs/async-metrics_python39.log | 128 ++ .../snapshots/logs/sync-metrics_python310.log | 147 +++ .../snapshots/logs/sync-metrics_python311.log | 147 +++ .../snapshots/logs/sync-metrics_python312.log | 147 +++ .../snapshots/logs/sync-metrics_python313.log | 147 +++ .../snapshots/logs/sync-metrics_python38.log | 147 +++ .../snapshots/logs/sync-metrics_python39.log | 147 +++ .../return_values/async-metrics_appsync.json | 8 + .../return_values/sync-metrics_appsync.json | 8 + tests/integration/yarn.lock | 38 +- tests/test_tracing.py | 48 +- 23 files changed, 2998 insertions(+), 21 deletions(-) create mode 100644 tests/event_samples/rum-appsync-no-headers.json create mode 100644 tests/event_samples/rum-appsync-request-not-dict.json create mode 100644 tests/event_samples/rum-appsync.json create mode 100644 tests/integration/input_events/appsync.json create mode 100644 tests/integration/package-lock.json create mode 100644 tests/integration/snapshots/return_values/async-metrics_appsync.json create mode 100644 tests/integration/snapshots/return_values/sync-metrics_appsync.json diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 51157f6a..4faaed2d 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -209,6 +209,20 @@ def extract_context_from_http_event_or_context( return context +def extract_context_from_request_header_or_context(event, lambda_context, event_source): + request = event.get("request") + if isinstance(request, (set, dict)) and "headers" in request: + context = extract_context_from_http_event_or_context( + request, + lambda_context, + event_source, + decode_authorizer_context=False, + ) + else: + context = extract_context_from_lambda_context(lambda_context) + return context + + def create_sns_event(message): return { "Records": [ @@ -627,6 +641,10 @@ def extract_dd_trace_context( if extractor is not None: context = extract_context_custom_extractor(extractor, event, lambda_context) + elif isinstance(event, (set, dict)) and "request" in event: + context = extract_context_from_request_header_or_context( + event, lambda_context, event_source + ) elif isinstance(event, (set, dict)) and "headers" in event: context = extract_context_from_http_event_or_context( event, lambda_context, event_source, decode_authorizer_context diff --git a/tests/event_samples/rum-appsync-no-headers.json b/tests/event_samples/rum-appsync-no-headers.json new file mode 100644 index 00000000..ce42c972 --- /dev/null +++ b/tests/event_samples/rum-appsync-no-headers.json @@ -0,0 +1,14 @@ +{ + "identity": "None", + "info": { + "fieldName": "getItems", + "parentTypeName": "Query", + "selectionSetGraphQL": "{\n id\n}", + "selectionSetList":["id"] + }, + "prev": "None", + "request": { + "domainName": "None" + }, + "source": "None" +} \ No newline at end of file diff --git a/tests/event_samples/rum-appsync-request-not-dict.json b/tests/event_samples/rum-appsync-request-not-dict.json new file mode 100644 index 00000000..1ab6dba8 --- /dev/null +++ b/tests/event_samples/rum-appsync-request-not-dict.json @@ -0,0 +1,12 @@ +{ + "identity": "None", + "info": { + "fieldName": "getItems", + "parentTypeName": "Query", + "selectionSetGraphQL": "{\n id\n}", + "selectionSetList":["id"] + }, + "prev": "None", + "request": "hello", + "source": "None" +} \ No newline at end of file diff --git a/tests/event_samples/rum-appsync.json b/tests/event_samples/rum-appsync.json new file mode 100644 index 00000000..ae085359 --- /dev/null +++ b/tests/event_samples/rum-appsync.json @@ -0,0 +1,53 @@ +{ + "identity": "None", + "info": { + "fieldName": "getItems", + "parentTypeName": "Query", + "selectionSetGraphQL": "{\n id\n}", + "selectionSetList":["id"] + }, + "prev": "None", + "request": { + "domainName": "None", + "headers": { + "accept": "*/*", + "accept-encoding": "gzip, deflate, br, zstd", + "accept-language": "en-US,en;q=0.9", + "cloudfront-forwarded-proto": "https", + "cloudfront-is-desktop-viewer": "True", + "cloudfront-is-mobile-viewer": "False", + "cloudfront-is-smarttv-viewer":"False", + "cloudfront-is-tablet-viewer":" False", + "cloudfront-viewer-asn": "6461", + "cloudfront-viewer-country": "US", + "content-length": "47", + "content-type": "application/graphql", + "host": "4aowrg2uhvbw5mn7osu6searqi.appsync-api.us-east-1.amazonaws.com", + "origin": "http://localhost:5173/", + "priority": "u=1, i", + "referer": "http://localhost:5173/", + "sec-ch-ua": "\"Chromium\";v=\"140\", \"Not=A?Brand\";v=\"24\", \"Google Chrome\";v=\"140\"", + "sec-ch-ua-mobile": "?0", + "sec-ch-ua-platform": "macOS", + "sec-fetch-dest": "empty", + "sec-fetch-mode": "cors", + "sec-fetch-site": "cross-site", + "traceparent": "00-0000000000000000d9f454c80b9a529a-73ac6ca3427073a3-01", + "tracestate": "dd=s:1;o:rum", + "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36","via":"2.0 62f9f3967e93a923f21c8acb20cf10b6.cloudfront.net (CloudFront)", + "x-amz-cf-id": "Femhicb_Vbva-J8qWjdI4hKMmqusCeQSp207UGyY3u8VOUrdE8BBvg==", + "x-amzn-appsync-is-vpce-request": "False", + "x-amzn-remote-ip": "64.124.12.19", + "x-amzn-requestid": "1ee1669a-eda3-4d4f-911c-35f74ebef31d", + "x-amzn-trace-id": "Root=1-68cdb7e9-438bf88259d7ce3535723bdd", + "x-datadog-origin": "rum", + "x-datadog-parent-id": "67890", + "x-datadog-sampling-priority": "1", + "x-datadog-trace-id": "12345", + "x-forwarded-for": "64.124.12.19,15.158.225.229", + "x-forwarded-port": "443", + "x-forwarded-proto": "https" + } + }, + "source": "None" +} \ No newline at end of file diff --git a/tests/integration/input_events/appsync.json b/tests/integration/input_events/appsync.json new file mode 100644 index 00000000..dacf24e7 --- /dev/null +++ b/tests/integration/input_events/appsync.json @@ -0,0 +1,49 @@ +{ + "identity": "None", + "info": { + "fieldName": "getItems", + "parentTypeName": "Query", + "selectionSetGraphQL": "{\n id\n}", + "selectionSetList":["id"] + }, + "prev": "None", + "request": { + "domainName": "None", + "headers": { + "accept": "*/*", + "accept-encoding": "gzip, deflate, br, zstd", + "accept-language": "en-US,en;q=0.9", + "cloudfront-forwarded-proto": "https", + "cloudfront-is-desktop-viewer": "True", + "cloudfront-is-mobile-viewer": "False", + "cloudfront-is-smarttv-viewer":"False", + "cloudfront-is-tablet-viewer":" False", + "cloudfront-viewer-asn": "6461", + "cloudfront-viewer-country": "US", + "content-length": "47", + "content-type": "application/graphql", + "host": "4aowrg2uhvbw5mn7osu6searqi.appsync-api.us-east-1.amazonaws.com", + "origin": "http://localhost:5173/", + "priority": "u=1, i", + "referer": "http://localhost:5173/", + "sec-ch-ua": "\"Chromium\";v=\"140\", \"Not=A?Brand\";v=\"24\", \"Google Chrome\";v=\"140\"", + "sec-ch-ua-mobile": "?0", + "sec-ch-ua-platform": "macOS", + "sec-fetch-dest": "empty", + "sec-fetch-mode": "cors", + "sec-fetch-site": "cross-site", + "traceparent": "00-0000000000000000d9f454c80b9a529a-73ac6ca3427073a3-01", + "tracestate": "dd=s:1;o:rum", + "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36","via":"2.0 62f9f3967e93a923f21c8acb20cf10b6.cloudfront.net (CloudFront)", + "x-amz-cf-id": "Femhicb_Vbva-J8qWjdI4hKMmqusCeQSp207UGyY3u8VOUrdE8BBvg==", + "x-amzn-appsync-is-vpce-request": "False", + "x-amzn-remote-ip": "64.124.12.19", + "x-amzn-requestid": "1ee1669a-eda3-4d4f-911c-35f74ebef31d", + "x-amzn-trace-id": "Root=1-68cdb7e9-438bf88259d7ce3535723bdd", + "x-forwarded-for": "64.124.12.19,15.158.225.229", + "x-forwarded-port": "443", + "x-forwarded-proto": "https" + } + }, + "source": "None" +} \ No newline at end of file diff --git a/tests/integration/package-lock.json b/tests/integration/package-lock.json new file mode 100644 index 00000000..5990cc8d --- /dev/null +++ b/tests/integration/package-lock.json @@ -0,0 +1,1119 @@ +{ + "name": "integration", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "devDependencies": { + "serverless-plugin-datadog": "^2.18.0", + "serverless-python-requirements": "^6.1.2" + } + }, + "node_modules/@iarna/toml": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz", + "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==", + "dev": true, + "license": "ISC" + }, + "node_modules/2-thenable": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/2-thenable/-/2-thenable-1.0.0.tgz", + "integrity": "sha512-HqiDzaLDFCXkcCO/SwoyhRwqYtINFHF7t9BDRq4x90TOKNAJpiqUt9X5lQ08bwxYzc067HUywDjGySpebHcUpw==", + "dev": true, + "license": "ISC", + "dependencies": { + "d": "1", + "es5-ext": "^0.10.47" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/appdirectory": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/appdirectory/-/appdirectory-0.1.0.tgz", + "integrity": "sha512-DJ5DV8vZXBbusyiyPlH28xppwS8eAMRuuyMo88xeEcf4bV64lbLtbxRxqixZuJBXsZzLtXFmA13GwVjJc7vdQw==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", + "dev": true, + "license": "MIT" + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true, + "license": "MIT" + }, + "node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/child-process-ext": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/child-process-ext/-/child-process-ext-2.1.1.tgz", + "integrity": "sha512-0UQ55f51JBkOFa+fvR76ywRzxiPwQS3Xe8oe5bZRphpv+dIMeerW5Zn5e4cUy4COJwVtJyU0R79RMnw+aCqmGA==", + "dev": true, + "license": "ISC", + "dependencies": { + "cross-spawn": "^6.0.5", + "es5-ext": "^0.10.53", + "log": "^6.0.0", + "split2": "^3.1.1", + "stream-promise": "^3.2.0" + } + }, + "node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/cross-spawn": { + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.6.tgz", + "integrity": "sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==", + "dev": true, + "license": "MIT", + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/cross-spawn/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/d": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.2.tgz", + "integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==", + "dev": true, + "license": "ISC", + "dependencies": { + "es5-ext": "^0.10.64", + "type": "^2.7.2" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/duration": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/duration/-/duration-0.2.2.tgz", + "integrity": "sha512-06kgtea+bGreF5eKYgI/36A6pLXggY7oR4p1pq4SmdFBn1ReOL5D8RhG64VrqfTTKNucqqtBAwEj8aB88mcqrg==", + "dev": true, + "license": "ISC", + "dependencies": { + "d": "1", + "es5-ext": "~0.10.46" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/es5-ext": { + "version": "0.10.64", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz", + "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==", + "dev": true, + "hasInstallScript": true, + "license": "ISC", + "dependencies": { + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "esniff": "^2.0.1", + "next-tick": "^1.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", + "dev": true, + "license": "MIT", + "dependencies": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/es6-symbol": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz", + "integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==", + "dev": true, + "license": "ISC", + "dependencies": { + "d": "^1.0.2", + "ext": "^1.7.0" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/esniff": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz", + "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==", + "dev": true, + "license": "ISC", + "dependencies": { + "d": "^1.0.1", + "es5-ext": "^0.10.62", + "event-emitter": "^0.3.5", + "type": "^2.7.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "node_modules/ext": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", + "dev": true, + "license": "ISC", + "dependencies": { + "type": "^2.7.2" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true, + "license": "ISC" + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-all": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/glob-all/-/glob-all-3.3.1.tgz", + "integrity": "sha512-Y+ESjdI7ZgMwfzanHZYQ87C59jOO0i+Hd+QYtVt9PhLi6d8wlOpzQnfBxWUlaTuAoR3TkybLqqbIoWveU4Ji7Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "glob": "^7.2.3", + "yargs": "^15.3.1" + }, + "bin": { + "glob-all": "bin/glob-all" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "license": "MIT", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-primitive": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-3.0.1.tgz", + "integrity": "sha512-GljRxhWvlCNRfZyORiH77FwdFwGcMO620o37EOYC0ORWdq+WYNVqW0w2Juzew4M+L81l6/QS3t5gkkihyRqv9w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jszip": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", + "dev": true, + "license": "(MIT OR GPL-3.0-or-later)", + "dependencies": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + } + }, + "node_modules/lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "immediate": "~3.0.5" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", + "deprecated": "This package is deprecated. Use the optional chaining (?.) operator instead.", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.uniqby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz", + "integrity": "sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.values": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.values/-/lodash.values-4.3.0.tgz", + "integrity": "sha512-r0RwvdCv8id9TUblb/O7rYPwVy6lerCbcawrfdo9iC/1t1wsNMJknO79WNBgwkH0hIeJ08jmvvESbFpNb4jH0Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/log": { + "version": "6.3.2", + "resolved": "https://registry.npmjs.org/log/-/log-6.3.2.tgz", + "integrity": "sha512-ek8NRg/OPvS9ISOJNWNAz5vZcpYacWNFDWNJjj5OXsc6YuKacfey6wF04cXz/tOJIVrZ2nGSkHpAY5qKtF6ISg==", + "dev": true, + "license": "ISC", + "dependencies": { + "d": "^1.0.2", + "duration": "^0.2.2", + "es5-ext": "^0.10.64", + "event-emitter": "^0.3.5", + "sprintf-kit": "^2.0.2", + "type": "^2.7.3", + "uni-global": "^1.0.0" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true, + "license": "(MIT AND Zlib)" + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true, + "license": "MIT" + }, + "node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true, + "license": "ISC" + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/serverless-plugin-datadog": { + "version": "2.18.0", + "resolved": "https://registry.npmjs.org/serverless-plugin-datadog/-/serverless-plugin-datadog-2.18.0.tgz", + "integrity": "sha512-RUdCNjUk+uUKQYgQBjK0WNeYJ7lM2/RScqg/LjVSfv5EACeJ3iIUPz1c4bS2jtiH05al8qXudNb6QDkv9zxG7w==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/serverless-python-requirements": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/serverless-python-requirements/-/serverless-python-requirements-6.1.2.tgz", + "integrity": "sha512-pas27CBxxaLTU5XMYnCVPJc+LVdm65Ys5olNvRWRqfUaZwTfD/7KSSt2XPSRme8BeJubroslaiOtWPP+IrxTVA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@iarna/toml": "^2.2.5", + "appdirectory": "^0.1.0", + "bluebird": "^3.7.2", + "child-process-ext": "^2.1.1", + "fs-extra": "^10.1.0", + "glob-all": "^3.3.1", + "is-wsl": "^2.2.0", + "jszip": "^3.10.1", + "lodash.get": "^4.4.2", + "lodash.uniqby": "^4.7.0", + "lodash.values": "^4.3.0", + "rimraf": "^3.0.2", + "semver": "^7.6.0", + "set-value": "^4.1.0", + "sha256-file": "1.0.0", + "shell-quote": "^1.8.1" + }, + "engines": { + "node": ">=12.0" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true, + "license": "ISC" + }, + "node_modules/set-value": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-4.1.0.tgz", + "integrity": "sha512-zTEg4HL0RwVrqcWs3ztF+x1vkxfm0lP+MQQFPiMJTKVceBwEV0A569Ou8l9IYQG8jOZdMVI1hGsc0tmeD2o/Lw==", + "dev": true, + "funding": [ + "https://github.com/sponsors/jonschlinkert", + "https://paypal.me/jonathanschlinkert", + "https://jonschlinkert.dev/sponsor" + ], + "license": "MIT", + "dependencies": { + "is-plain-object": "^2.0.4", + "is-primitive": "^3.0.1" + }, + "engines": { + "node": ">=11.0" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "dev": true, + "license": "MIT" + }, + "node_modules/sha256-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/sha256-file/-/sha256-file-1.0.0.tgz", + "integrity": "sha512-nqf+g0veqgQAkDx0U2y2Tn2KWyADuuludZTw9A7J3D+61rKlIIl9V5TS4mfnwKuXZOH9B7fQyjYJ9pKRHIsAyg==", + "dev": true, + "license": "MIT" + }, + "node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shell-quote": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.2.tgz", + "integrity": "sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/split2": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", + "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", + "dev": true, + "license": "ISC", + "dependencies": { + "readable-stream": "^3.0.0" + } + }, + "node_modules/split2/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/sprintf-kit": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/sprintf-kit/-/sprintf-kit-2.0.2.tgz", + "integrity": "sha512-lnapdj6W4LflHZGKvl9eVkz5YF0xaTrqpRWVA4cNVOTedwqifIP8ooGImldzT/4IAN5KXFQAyXTdLidYVQdyag==", + "dev": true, + "license": "ISC", + "dependencies": { + "es5-ext": "^0.10.64" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/stream-promise": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/stream-promise/-/stream-promise-3.2.0.tgz", + "integrity": "sha512-P+7muTGs2C8yRcgJw/PPt61q7O517tDHiwYEzMWo1GSBCcZedUMT/clz7vUNsSxFphIlJ6QUL4GexQKlfJoVtA==", + "dev": true, + "license": "ISC", + "dependencies": { + "2-thenable": "^1.0.0", + "es5-ext": "^0.10.49", + "is-stream": "^1.1.0" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/type": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.3.tgz", + "integrity": "sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/uni-global": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/uni-global/-/uni-global-1.0.0.tgz", + "integrity": "sha512-WWM3HP+siTxzIWPNUg7hZ4XO8clKi6NoCAJJWnuRL+BAqyFXF8gC03WNyTefGoUXYc47uYgXxpKLIEvo65PEHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "type": "^2.5.0" + } + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true, + "license": "MIT" + }, + "node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/which-module": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + } + } +} diff --git a/tests/integration/package.json b/tests/integration/package.json index 1a178462..8dae6aca 100644 --- a/tests/integration/package.json +++ b/tests/integration/package.json @@ -1,6 +1,6 @@ { "devDependencies": { "serverless-plugin-datadog": "^2.18.0", - "serverless-python-requirements": "^6.1.1" + "serverless-python-requirements": "^6.1.2" } } diff --git a/tests/integration/snapshots/logs/async-metrics_python310.log b/tests/integration/snapshots/logs/async-metrics_python310.log index d72afba3..ea8bf42f 100644 --- a/tests/integration/snapshots/logs/async-metrics_python310.log +++ b/tests/integration/snapshots/logs/async-metrics_python310.log @@ -189,6 +189,134 @@ START "dd_lambda_layer:datadog-python310_X.X.X" ] } +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "integration-tests-python-XXXX-async-metrics_python310", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python310", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python310", + "functionname": "integration-tests-python-XXXX-async-metrics_python310", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python310", + "resource:integration-tests-python-XXXX-async-metrics_python310", + "memorysize:1024", + "cold_start:false", + "runtime:python3.10", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} { "m": "datadog.serverless.dynamodb.stream.type", "v": 1, diff --git a/tests/integration/snapshots/logs/async-metrics_python311.log b/tests/integration/snapshots/logs/async-metrics_python311.log index dac9c427..5aa9c554 100644 --- a/tests/integration/snapshots/logs/async-metrics_python311.log +++ b/tests/integration/snapshots/logs/async-metrics_python311.log @@ -189,6 +189,134 @@ START "dd_lambda_layer:datadog-python311_X.X.X" ] } +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "integration-tests-python-XXXX-async-metrics_python311", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python311", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python311", + "functionname": "integration-tests-python-XXXX-async-metrics_python311", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python311", + "resource:integration-tests-python-XXXX-async-metrics_python311", + "memorysize:1024", + "cold_start:false", + "runtime:python3.11", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} { "m": "datadog.serverless.dynamodb.stream.type", "v": 1, diff --git a/tests/integration/snapshots/logs/async-metrics_python312.log b/tests/integration/snapshots/logs/async-metrics_python312.log index c2b624ff..67732da6 100644 --- a/tests/integration/snapshots/logs/async-metrics_python312.log +++ b/tests/integration/snapshots/logs/async-metrics_python312.log @@ -189,6 +189,134 @@ START "dd_lambda_layer:datadog-python312_X.X.X" ] } +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "integration-tests-python-XXXX-async-metrics_python312", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python312", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python312", + "functionname": "integration-tests-python-XXXX-async-metrics_python312", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python312", + "resource:integration-tests-python-XXXX-async-metrics_python312", + "memorysize:1024", + "cold_start:false", + "runtime:python3.12", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} { "m": "datadog.serverless.dynamodb.stream.type", "v": 1, diff --git a/tests/integration/snapshots/logs/async-metrics_python313.log b/tests/integration/snapshots/logs/async-metrics_python313.log index 9a5e763f..18b3109e 100644 --- a/tests/integration/snapshots/logs/async-metrics_python313.log +++ b/tests/integration/snapshots/logs/async-metrics_python313.log @@ -189,6 +189,134 @@ START "dd_lambda_layer:datadog-python313_X.X.X" ] } +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "integration-tests-python-XXXX-async-metrics_python313", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python313", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python313", + "functionname": "integration-tests-python-XXXX-async-metrics_python313", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python313", + "resource:integration-tests-python-XXXX-async-metrics_python313", + "memorysize:1024", + "cold_start:false", + "runtime:python3.13", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} { "m": "datadog.serverless.dynamodb.stream.type", "v": 1, diff --git a/tests/integration/snapshots/logs/async-metrics_python38.log b/tests/integration/snapshots/logs/async-metrics_python38.log index 9e6370b5..c9fe147f 100644 --- a/tests/integration/snapshots/logs/async-metrics_python38.log +++ b/tests/integration/snapshots/logs/async-metrics_python38.log @@ -189,6 +189,134 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python38_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python38_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "integration-tests-python-XXXX-async-metrics_python38", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python38", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python38", + "functionname": "integration-tests-python-XXXX-async-metrics_python38", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python38", + "resource:integration-tests-python-XXXX-async-metrics_python38", + "memorysize:1024", + "cold_start:false", + "runtime:python3.8", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python38_X.X.X" + ] +} { "m": "datadog.serverless.dynamodb.stream.type", "v": 1, diff --git a/tests/integration/snapshots/logs/async-metrics_python39.log b/tests/integration/snapshots/logs/async-metrics_python39.log index 70f7a59f..47fd9c87 100644 --- a/tests/integration/snapshots/logs/async-metrics_python39.log +++ b/tests/integration/snapshots/logs/async-metrics_python39.log @@ -189,6 +189,134 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python39_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python39_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "integration-tests-python-XXXX-async-metrics_python39", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python39", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python39", + "functionname": "integration-tests-python-XXXX-async-metrics_python39", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python39", + "resource:integration-tests-python-XXXX-async-metrics_python39", + "memorysize:1024", + "cold_start:false", + "runtime:python3.9", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python39_X.X.X" + ] +} { "m": "datadog.serverless.dynamodb.stream.type", "v": 1, diff --git a/tests/integration/snapshots/logs/sync-metrics_python310.log b/tests/integration/snapshots/logs/sync-metrics_python310.log index 7d504bdc..1e1b8a7b 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python310.log +++ b/tests/integration/snapshots/logs/sync-metrics_python310.log @@ -208,6 +208,153 @@ START "dd_lambda_layer:datadog-python310_X.X.X" ] } +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "integration-tests-python-XXXX-sync-metrics_python310", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python310", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python310", + "functionname": "integration-tests-python-XXXX-sync-metrics_python310", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "POST /api/v1/distribution_points", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python310", + "resource:integration-tests-python-XXXX-sync-metrics_python310", + "memorysize:1024", + "cold_start:false", + "runtime:python3.10", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} { "m": "datadog.serverless.dynamodb.stream.type", "v": 1, diff --git a/tests/integration/snapshots/logs/sync-metrics_python311.log b/tests/integration/snapshots/logs/sync-metrics_python311.log index aa242652..adc6d215 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python311.log +++ b/tests/integration/snapshots/logs/sync-metrics_python311.log @@ -208,6 +208,153 @@ START "dd_lambda_layer:datadog-python311_X.X.X" ] } +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "integration-tests-python-XXXX-sync-metrics_python311", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python311", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python311", + "functionname": "integration-tests-python-XXXX-sync-metrics_python311", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "POST /api/v1/distribution_points", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python311", + "resource:integration-tests-python-XXXX-sync-metrics_python311", + "memorysize:1024", + "cold_start:false", + "runtime:python3.11", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} { "m": "datadog.serverless.dynamodb.stream.type", "v": 1, diff --git a/tests/integration/snapshots/logs/sync-metrics_python312.log b/tests/integration/snapshots/logs/sync-metrics_python312.log index 99471eaf..a7934c86 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python312.log +++ b/tests/integration/snapshots/logs/sync-metrics_python312.log @@ -208,6 +208,153 @@ START "dd_lambda_layer:datadog-python312_X.X.X" ] } +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "integration-tests-python-XXXX-sync-metrics_python312", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python312", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python312", + "functionname": "integration-tests-python-XXXX-sync-metrics_python312", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "POST /api/v1/distribution_points", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python312", + "resource:integration-tests-python-XXXX-sync-metrics_python312", + "memorysize:1024", + "cold_start:false", + "runtime:python3.12", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} { "m": "datadog.serverless.dynamodb.stream.type", "v": 1, diff --git a/tests/integration/snapshots/logs/sync-metrics_python313.log b/tests/integration/snapshots/logs/sync-metrics_python313.log index e53aae50..a5516973 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python313.log +++ b/tests/integration/snapshots/logs/sync-metrics_python313.log @@ -208,6 +208,153 @@ START "dd_lambda_layer:datadog-python313_X.X.X" ] } +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "integration-tests-python-XXXX-sync-metrics_python313", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python313", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python313", + "functionname": "integration-tests-python-XXXX-sync-metrics_python313", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "POST /api/v1/distribution_points", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python313", + "resource:integration-tests-python-XXXX-sync-metrics_python313", + "memorysize:1024", + "cold_start:false", + "runtime:python3.13", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} { "m": "datadog.serverless.dynamodb.stream.type", "v": 1, diff --git a/tests/integration/snapshots/logs/sync-metrics_python38.log b/tests/integration/snapshots/logs/sync-metrics_python38.log index 9cbf4564..8cd4eb2c 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python38.log +++ b/tests/integration/snapshots/logs/sync-metrics_python38.log @@ -208,6 +208,153 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "integration-tests-python-XXXX-sync-metrics_python38", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python38", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python38", + "functionname": "integration-tests-python-XXXX-sync-metrics_python38", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "POST /api/v1/distribution_points", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python38", + "resource:integration-tests-python-XXXX-sync-metrics_python38", + "memorysize:1024", + "cold_start:false", + "runtime:python3.8", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python38_X.X.X" + ] +} { "m": "datadog.serverless.dynamodb.stream.type", "v": 1, diff --git a/tests/integration/snapshots/logs/sync-metrics_python39.log b/tests/integration/snapshots/logs/sync-metrics_python39.log index cc0407c1..5e5e9cf3 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python39.log +++ b/tests/integration/snapshots/logs/sync-metrics_python39.log @@ -208,6 +208,153 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "integration-tests-python-XXXX-sync-metrics_python39", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python39", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python39", + "functionname": "integration-tests-python-XXXX-sync-metrics_python39", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "POST /api/v1/distribution_points", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python39", + "resource:integration-tests-python-XXXX-sync-metrics_python39", + "memorysize:1024", + "cold_start:false", + "runtime:python3.9", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python39_X.X.X" + ] +} { "m": "datadog.serverless.dynamodb.stream.type", "v": 1, diff --git a/tests/integration/snapshots/return_values/async-metrics_appsync.json b/tests/integration/snapshots/return_values/async-metrics_appsync.json new file mode 100644 index 00000000..1ad668ec --- /dev/null +++ b/tests/integration/snapshots/return_values/async-metrics_appsync.json @@ -0,0 +1,8 @@ +{ + "statusCode": 200, + "body": { + "message": "hello, dog!", + "request_id": null, + "event_record_ids": [] + } +} diff --git a/tests/integration/snapshots/return_values/sync-metrics_appsync.json b/tests/integration/snapshots/return_values/sync-metrics_appsync.json new file mode 100644 index 00000000..1ad668ec --- /dev/null +++ b/tests/integration/snapshots/return_values/sync-metrics_appsync.json @@ -0,0 +1,8 @@ +{ + "statusCode": 200, + "body": { + "message": "hello, dog!", + "request_id": null, + "event_record_ids": [] + } +} diff --git a/tests/integration/yarn.lock b/tests/integration/yarn.lock index 37cb357d..7477e8da 100644 --- a/tests/integration/yarn.lock +++ b/tests/integration/yarn.lock @@ -2,6 +2,11 @@ # yarn lockfile v1 +"@iarna/toml@^2.2.5": + version "2.2.5" + resolved "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz" + integrity sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg== + "2-thenable@^1.0.0": version "1.0.0" resolved "https://registry.npmjs.org/2-thenable/-/2-thenable-1.0.0.tgz" @@ -10,11 +15,6 @@ d "1" es5-ext "^0.10.47" -"@iarna/toml@^2.2.5": - version "2.2.5" - resolved "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz" - integrity sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg== - ansi-regex@^5.0.1: version "5.0.1" resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" @@ -44,7 +44,7 @@ bluebird@^3.7.2: brace-expansion@^1.1.7: version "1.1.12" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.12.tgz#ab9b454466e5a8cc3a187beaad580412a9c5b843" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz" integrity sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg== dependencies: balanced-match "^1.0.0" @@ -108,7 +108,7 @@ cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" -d@1, d@^1.0.1, d@^1.0.2: +d@^1.0.1, d@^1.0.2, d@1: version "1.0.2" resolved "https://registry.npmjs.org/d/-/d-1.0.2.tgz" integrity sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw== @@ -251,7 +251,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@^2.0.3, inherits@~2.0.3: +inherits@^2.0.3, inherits@~2.0.3, inherits@2: version "2.0.4" resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -493,10 +493,10 @@ serverless-plugin-datadog@^2.18.0: resolved "https://registry.npmjs.org/serverless-plugin-datadog/-/serverless-plugin-datadog-2.18.0.tgz" integrity sha512-RUdCNjUk+uUKQYgQBjK0WNeYJ7lM2/RScqg/LjVSfv5EACeJ3iIUPz1c4bS2jtiH05al8qXudNb6QDkv9zxG7w== -serverless-python-requirements@^6.1.1: - version "6.1.1" - resolved "https://registry.npmjs.org/serverless-python-requirements/-/serverless-python-requirements-6.1.1.tgz" - integrity sha512-SQsDKjoZXWvRJNsKL7NvHiMM+B6kG0a4RkVexhPCxId/rVMLVyz0UHg7v34kzaklfsXTQIkez+9x7HP3FwdRVQ== +serverless-python-requirements@^6.1.2: + version "6.1.2" + resolved "https://registry.npmjs.org/serverless-python-requirements/-/serverless-python-requirements-6.1.2.tgz" + integrity sha512-pas27CBxxaLTU5XMYnCVPJc+LVdm65Ys5olNvRWRqfUaZwTfD/7KSSt2XPSRme8BeJubroslaiOtWPP+IrxTVA== dependencies: "@iarna/toml" "^2.2.5" appdirectory "^0.1.0" @@ -578,6 +578,13 @@ stream-promise@^3.2.0: es5-ext "^0.10.49" is-stream "^1.1.0" +string_decoder@^1.1.1, string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + string-width@^4.1.0, string-width@^4.2.0: version "4.2.3" resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" @@ -587,13 +594,6 @@ string-width@^4.1.0, string-width@^4.2.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" -string_decoder@^1.1.1, string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" diff --git a/tests/test_tracing.py b/tests/test_tracing.py index c87a0971..0fddd52b 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -48,7 +48,7 @@ ) from datadog_lambda.trigger import parse_event_source -from tests.utils import get_mock_context +from tests.utils import get_mock_context, ClientContext function_arn = "arn:aws:lambda:us-west-1:123457598159:function:python-layer-test" @@ -179,6 +179,16 @@ def _wrap(*args, **kwargs): ), ), ("lambda-url", None), + ( + "rum-appsync", + Context( + trace_id=12345, + span_id=67890, + sampling_priority=1, + ), + ), + ("rum-appsync-no-headers", None), + ("rum-appsync-request-not-dict", None), ("s3", None), ( "sns-b64-msg-attribute", @@ -611,6 +621,42 @@ def test_with_complete_datadog_trace_headers_with_trigger_tags(self): ] ) + def test_request_header_malformed(self): + """Testing that if a RUM AppSync event is malformed, the tracer will attempt + to get the trace context from the lambda context in the + extract_context_from_request_header_or_context function.""" + lambda_ctx = get_mock_context() + lambda_ctx.client_context = ClientContext( + custom={ + "_datadog": { + "x-datadog-parent-id": "67890", + "x-datadog-sampling-priority": "1", + "x-datadog-trace-id": "12345", + } + } + ) + request_header_event = { + "identity": "None", + "info": { + "fieldName": "getItems", + "parentTypeName": "Query", + "selectionSetGraphQL": "{\n id\n}", + "selectionSetList": ["id"], + }, + "prev": "None", + "request": "hello", + "source": "None", + } + ctx, source, _ = extract_dd_trace_context(request_header_event, lambda_ctx) + expected_context = Context( + trace_id=12345, + span_id=67890, + sampling_priority=1, + ) + + self.assertEqual(ctx, expected_context) + self.assertEqual(source, "event") + def _test_step_function_trace_data_common( self, event, expected_trace_id, expected_span_id, expected_tid ): From d7763789f262b2da228f8210509e302e6e510d0a Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Fri, 10 Oct 2025 08:46:32 -0400 Subject: [PATCH 262/268] feat: Add batchItemFailures metric (#664) * feat: Add batchItemFailures metric * fmt --- datadog_lambda/metric.py | 27 ++++++++++++++ datadog_lambda/wrapper.py | 4 ++ tests/test_metric.py | 78 +++++++++++++++++++++++++++++++++++++++ tests/test_wrapper.py | 58 +++++++++++++++++++++++++++++ 4 files changed, 167 insertions(+) diff --git a/datadog_lambda/metric.py b/datadog_lambda/metric.py index 73bbeca3..5df0812f 100644 --- a/datadog_lambda/metric.py +++ b/datadog_lambda/metric.py @@ -214,6 +214,33 @@ def submit_errors_metric(lambda_context): submit_enhanced_metric("errors", lambda_context) +def submit_batch_item_failures_metric(response, lambda_context): + """Submit aws.lambda.enhanced.batch_item_failures metric with the count of batch item failures + + Args: + response (dict): Lambda function response object + lambda_context (object): Lambda context dict passed to the function by AWS + """ + if not config.enhanced_metrics_enabled: + logger.debug( + "Not submitting batch_item_failures metric because enhanced metrics are disabled" + ) + return + + if not isinstance(response, dict): + return + + batch_item_failures = response.get("batchItemFailures") + if batch_item_failures is not None and isinstance(batch_item_failures, list): + lambda_metric( + "aws.lambda.enhanced.batch_item_failures", + len(batch_item_failures), + timestamp=None, + tags=get_enhanced_metrics_tags(lambda_context), + force_async=True, + ) + + def submit_dynamodb_stream_type_metric(event): stream_view_type = ( event.get("Records", [{}])[0].get("dynamodb", {}).get("StreamViewType") diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index 0cbedd9f..8dbd7e35 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -291,6 +291,10 @@ def _before(self, event, context): def _after(self, event, context): try: + from datadog_lambda.metric import submit_batch_item_failures_metric + + submit_batch_item_failures_metric(self.response, context) + status_code = extract_http_status_code_tag(self.trigger_tags, self.response) if self.span: diff --git a/tests/test_metric.py b/tests/test_metric.py index aa537d34..fe3df247 100644 --- a/tests/test_metric.py +++ b/tests/test_metric.py @@ -12,6 +12,7 @@ _select_metrics_handler, flush_stats, lambda_metric, + submit_batch_item_failures_metric, ) from datadog_lambda.tags import dd_lambda_layer_tag from datadog_lambda.thread_stats_writer import ThreadStatsWriter @@ -324,3 +325,80 @@ def decrypt(self, CiphertextBlob=None, EncryptionContext={}): mock_kms_client, MOCK_ENCRYPTED_API_KEY_BASE64 ) self.assertEqual(decrypted_key, EXPECTED_DECRYPTED_API_KEY) + + +class TestBatchItemFailuresMetric(unittest.TestCase): + def setUp(self): + patcher = patch("datadog_lambda.metric.lambda_metric") + self.mock_lambda_metric = patcher.start() + self.addCleanup(patcher.stop) + + patcher = patch("datadog_lambda.config.Config.enhanced_metrics_enabled", True) + self.mock_enhanced_metrics_enabled = patcher.start() + self.addCleanup(patcher.stop) + + def test_submit_batch_item_failures_with_failures(self): + response = { + "batchItemFailures": [ + {"itemIdentifier": "msg-1"}, + {"itemIdentifier": "msg-2"}, + {"itemIdentifier": "msg-3"}, + ] + } + context = unittest.mock.Mock() + + with patch("datadog_lambda.metric.get_enhanced_metrics_tags") as mock_get_tags: + mock_get_tags.return_value = ["tag1:value1"] + submit_batch_item_failures_metric(response, context) + + self.mock_lambda_metric.assert_called_once_with( + "aws.lambda.enhanced.batch_item_failures", + 3, + timestamp=None, + tags=["tag1:value1"], + force_async=True, + ) + + def test_submit_batch_item_failures_with_no_failures(self): + response = {"batchItemFailures": []} + context = unittest.mock.Mock() + + with patch("datadog_lambda.metric.get_enhanced_metrics_tags") as mock_get_tags: + mock_get_tags.return_value = ["tag1:value1"] + submit_batch_item_failures_metric(response, context) + self.mock_lambda_metric.assert_called_once_with( + "aws.lambda.enhanced.batch_item_failures", + 0, + timestamp=None, + tags=["tag1:value1"], + force_async=True, + ) + + def test_submit_batch_item_failures_with_no_field(self): + response = {"statusCode": 200} + context = unittest.mock.Mock() + submit_batch_item_failures_metric(response, context) + self.mock_lambda_metric.assert_not_called() + + def test_submit_batch_item_failures_with_none_response(self): + response = None + context = unittest.mock.Mock() + submit_batch_item_failures_metric(response, context) + self.mock_lambda_metric.assert_not_called() + + def test_submit_batch_item_failures_with_non_list_value(self): + response = {"batchItemFailures": "invalid"} + context = unittest.mock.Mock() + submit_batch_item_failures_metric(response, context) + self.mock_lambda_metric.assert_not_called() + + @patch("datadog_lambda.config.Config.enhanced_metrics_enabled", False) + def test_submit_batch_item_failures_enhanced_metrics_disabled(self): + response = { + "batchItemFailures": [ + {"itemIdentifier": "msg-1"}, + ] + } + context = unittest.mock.Mock() + submit_batch_item_failures_metric(response, context) + self.mock_lambda_metric.assert_not_called() diff --git a/tests/test_wrapper.py b/tests/test_wrapper.py index fe7678ac..512a51f8 100644 --- a/tests/test_wrapper.py +++ b/tests/test_wrapper.py @@ -899,3 +899,61 @@ def lambda_handler(event, context): assert response == expected_response assert len(LLMObs_enable_calls) == 1 assert len(LLMObs_flush_calls) == 1 + + +@patch("datadog_lambda.config.Config.trace_enabled", False) +def test_batch_item_failures_metric(): + with patch( + "datadog_lambda.metric.submit_batch_item_failures_metric" + ) as mock_submit: + + @wrapper.datadog_lambda_wrapper + def lambda_handler(event, context): + return { + "batchItemFailures": [ + {"itemIdentifier": "msg-1"}, + {"itemIdentifier": "msg-2"}, + ] + } + + lambda_handler({}, get_mock_context()) + mock_submit.assert_called_once() + call_args = mock_submit.call_args[0] + assert call_args[0] == { + "batchItemFailures": [ + {"itemIdentifier": "msg-1"}, + {"itemIdentifier": "msg-2"}, + ] + } + + +@patch("datadog_lambda.config.Config.trace_enabled", False) +def test_batch_item_failures_metric_no_failures(): + with patch( + "datadog_lambda.metric.submit_batch_item_failures_metric" + ) as mock_submit: + + @wrapper.datadog_lambda_wrapper + def lambda_handler(event, context): + return {"batchItemFailures": []} + + lambda_handler({}, get_mock_context()) + mock_submit.assert_called_once() + call_args = mock_submit.call_args[0] + assert call_args[0] == {"batchItemFailures": []} + + +@patch("datadog_lambda.config.Config.trace_enabled", False) +def test_batch_item_failures_metric_no_response(): + with patch( + "datadog_lambda.metric.submit_batch_item_failures_metric" + ) as mock_submit: + + @wrapper.datadog_lambda_wrapper + def lambda_handler(event, context): + return None + + lambda_handler({}, get_mock_context()) + mock_submit.assert_called_once() + call_args = mock_submit.call_args[0] + assert call_args[0] is None From 968710ec40cf32e70acbaf1d6eb47d733a603c2c Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Fri, 10 Oct 2025 14:55:33 -0400 Subject: [PATCH 263/268] release v8.115.0 (#665) --- datadog_lambda/version.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index 653b589b..0149c284 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "8.115.0.dev0" +__version__ = "8.115.0" diff --git a/pyproject.toml b/pyproject.toml index aebd15b4..43e88b36 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "8.115.0.dev0" +version = "8.115.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From a55cac58806d7c9a4e79cba18c8077e862c39123 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Fri, 10 Oct 2025 16:09:53 -0400 Subject: [PATCH 264/268] 8.116.0.dev0 --- datadog_lambda/version.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index 0149c284..05a11f2b 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "8.115.0" +__version__ = "8.116.0.dev0" diff --git a/pyproject.toml b/pyproject.toml index 43e88b36..02939748 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "8.115.0" +version = "8.116.0.dev0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 56152da97569d2ee3e9770c4da346e2fb3df0edf Mon Sep 17 00:00:00 2001 From: Florentin Labelle Date: Tue, 14 Oct 2025 17:23:11 +0200 Subject: [PATCH 265/268] fix(http): http.url tag should contain the path (#663) --- datadog_lambda/trigger.py | 3 ++- .../snapshots/logs/async-metrics_python310.log | 6 ++---- .../snapshots/logs/async-metrics_python311.log | 6 ++---- .../snapshots/logs/async-metrics_python312.log | 6 ++---- .../snapshots/logs/async-metrics_python313.log | 6 ++---- .../snapshots/logs/async-metrics_python38.log | 6 ++---- .../snapshots/logs/async-metrics_python39.log | 6 ++---- .../snapshots/logs/sync-metrics_python310.log | 6 ++---- .../snapshots/logs/sync-metrics_python311.log | 6 ++---- .../snapshots/logs/sync-metrics_python312.log | 6 ++---- .../snapshots/logs/sync-metrics_python313.log | 6 ++---- .../snapshots/logs/sync-metrics_python38.log | 6 ++---- .../snapshots/logs/sync-metrics_python39.log | 6 ++---- tests/test_trigger.py | 11 +++-------- 14 files changed, 29 insertions(+), 57 deletions(-) diff --git a/datadog_lambda/trigger.py b/datadog_lambda/trigger.py index e0c3c4fa..e60de8f0 100644 --- a/datadog_lambda/trigger.py +++ b/datadog_lambda/trigger.py @@ -325,7 +325,8 @@ def extract_http_tags(event): method = apigateway_v2_http.get("method") if path: - http_tags["http.url_details.path"] = path + if http_tags.get("http.url"): + http_tags["http.url"] += path if method: http_tags["http.method"] = method diff --git a/tests/integration/snapshots/logs/async-metrics_python310.log b/tests/integration/snapshots/logs/async-metrics_python310.log index ea8bf42f..6779d7dd 100644 --- a/tests/integration/snapshots/logs/async-metrics_python310.log +++ b/tests/integration/snapshots/logs/async-metrics_python310.log @@ -105,8 +105,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", "span.kind": "server", - "http.url": "https://xxxx.execute-api.us-east-2.amazonaws.com/", - "http.url_details.path": "/Prod/", + "http.url": "https://xxxx.execute-api.us-east-2.amazonaws.com/Prod/", "http.method": "GET", "http.route": "/", "http.status_code": "200" @@ -772,8 +771,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", "span.kind": "server", - "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", - "http.url_details.path": "/httpapi/get", + "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", "http.status_code": "200" diff --git a/tests/integration/snapshots/logs/async-metrics_python311.log b/tests/integration/snapshots/logs/async-metrics_python311.log index 5aa9c554..9f14ff15 100644 --- a/tests/integration/snapshots/logs/async-metrics_python311.log +++ b/tests/integration/snapshots/logs/async-metrics_python311.log @@ -105,8 +105,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", "span.kind": "server", - "http.url": "https://xxxx.execute-api.us-east-2.amazonaws.com/", - "http.url_details.path": "/Prod/", + "http.url": "https://xxxx.execute-api.us-east-2.amazonaws.com/Prod/", "http.method": "GET", "http.route": "/", "http.status_code": "200" @@ -772,8 +771,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", "span.kind": "server", - "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", - "http.url_details.path": "/httpapi/get", + "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", "http.status_code": "200" diff --git a/tests/integration/snapshots/logs/async-metrics_python312.log b/tests/integration/snapshots/logs/async-metrics_python312.log index 67732da6..789a3955 100644 --- a/tests/integration/snapshots/logs/async-metrics_python312.log +++ b/tests/integration/snapshots/logs/async-metrics_python312.log @@ -105,8 +105,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", "span.kind": "server", - "http.url": "https://xxxx.execute-api.us-east-2.amazonaws.com/", - "http.url_details.path": "/Prod/", + "http.url": "https://xxxx.execute-api.us-east-2.amazonaws.com/Prod/", "http.method": "GET", "http.route": "/", "http.status_code": "200" @@ -772,8 +771,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", "span.kind": "server", - "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", - "http.url_details.path": "/httpapi/get", + "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", "http.status_code": "200" diff --git a/tests/integration/snapshots/logs/async-metrics_python313.log b/tests/integration/snapshots/logs/async-metrics_python313.log index 18b3109e..78ade6a7 100644 --- a/tests/integration/snapshots/logs/async-metrics_python313.log +++ b/tests/integration/snapshots/logs/async-metrics_python313.log @@ -105,8 +105,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", "span.kind": "server", - "http.url": "https://xxxx.execute-api.us-east-2.amazonaws.com/", - "http.url_details.path": "/Prod/", + "http.url": "https://xxxx.execute-api.us-east-2.amazonaws.com/Prod/", "http.method": "GET", "http.route": "/", "http.status_code": "200" @@ -772,8 +771,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", "span.kind": "server", - "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", - "http.url_details.path": "/httpapi/get", + "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", "http.status_code": "200" diff --git a/tests/integration/snapshots/logs/async-metrics_python38.log b/tests/integration/snapshots/logs/async-metrics_python38.log index c9fe147f..5375fafe 100644 --- a/tests/integration/snapshots/logs/async-metrics_python38.log +++ b/tests/integration/snapshots/logs/async-metrics_python38.log @@ -105,8 +105,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", "span.kind": "server", - "http.url": "https://xxxx.execute-api.us-east-2.amazonaws.com/", - "http.url_details.path": "/Prod/", + "http.url": "https://xxxx.execute-api.us-east-2.amazonaws.com/Prod/", "http.method": "GET", "http.route": "/", "http.status_code": "200" @@ -772,8 +771,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", "span.kind": "server", - "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", - "http.url_details.path": "/httpapi/get", + "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", "http.status_code": "200" diff --git a/tests/integration/snapshots/logs/async-metrics_python39.log b/tests/integration/snapshots/logs/async-metrics_python39.log index 47fd9c87..f16e9e2d 100644 --- a/tests/integration/snapshots/logs/async-metrics_python39.log +++ b/tests/integration/snapshots/logs/async-metrics_python39.log @@ -105,8 +105,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", "span.kind": "server", - "http.url": "https://xxxx.execute-api.us-east-2.amazonaws.com/", - "http.url_details.path": "/Prod/", + "http.url": "https://xxxx.execute-api.us-east-2.amazonaws.com/Prod/", "http.method": "GET", "http.route": "/", "http.status_code": "200" @@ -772,8 +771,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", "span.kind": "server", - "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", - "http.url_details.path": "/httpapi/get", + "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", "http.status_code": "200" diff --git a/tests/integration/snapshots/logs/sync-metrics_python310.log b/tests/integration/snapshots/logs/sync-metrics_python310.log index 1e1b8a7b..1cbd91dd 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python310.log +++ b/tests/integration/snapshots/logs/sync-metrics_python310.log @@ -85,8 +85,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", "span.kind": "server", - "http.url": "https://xxxx.execute-api.us-east-2.amazonaws.com/", - "http.url_details.path": "/Prod/", + "http.url": "https://xxxx.execute-api.us-east-2.amazonaws.com/Prod/", "http.method": "GET", "http.route": "/", "http.status_code": "200" @@ -828,8 +827,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", "span.kind": "server", - "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", - "http.url_details.path": "/httpapi/get", + "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", "http.status_code": "200" diff --git a/tests/integration/snapshots/logs/sync-metrics_python311.log b/tests/integration/snapshots/logs/sync-metrics_python311.log index adc6d215..b043a8f4 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python311.log +++ b/tests/integration/snapshots/logs/sync-metrics_python311.log @@ -85,8 +85,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", "span.kind": "server", - "http.url": "https://xxxx.execute-api.us-east-2.amazonaws.com/", - "http.url_details.path": "/Prod/", + "http.url": "https://xxxx.execute-api.us-east-2.amazonaws.com/Prod/", "http.method": "GET", "http.route": "/", "http.status_code": "200" @@ -828,8 +827,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", "span.kind": "server", - "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", - "http.url_details.path": "/httpapi/get", + "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", "http.status_code": "200" diff --git a/tests/integration/snapshots/logs/sync-metrics_python312.log b/tests/integration/snapshots/logs/sync-metrics_python312.log index a7934c86..ff9bbdb7 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python312.log +++ b/tests/integration/snapshots/logs/sync-metrics_python312.log @@ -85,8 +85,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", "span.kind": "server", - "http.url": "https://xxxx.execute-api.us-east-2.amazonaws.com/", - "http.url_details.path": "/Prod/", + "http.url": "https://xxxx.execute-api.us-east-2.amazonaws.com/Prod/", "http.method": "GET", "http.route": "/", "http.status_code": "200" @@ -828,8 +827,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", "span.kind": "server", - "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", - "http.url_details.path": "/httpapi/get", + "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", "http.status_code": "200" diff --git a/tests/integration/snapshots/logs/sync-metrics_python313.log b/tests/integration/snapshots/logs/sync-metrics_python313.log index a5516973..87352f25 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python313.log +++ b/tests/integration/snapshots/logs/sync-metrics_python313.log @@ -85,8 +85,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", "span.kind": "server", - "http.url": "https://xxxx.execute-api.us-east-2.amazonaws.com/", - "http.url_details.path": "/Prod/", + "http.url": "https://xxxx.execute-api.us-east-2.amazonaws.com/Prod/", "http.method": "GET", "http.route": "/", "http.status_code": "200" @@ -828,8 +827,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", "span.kind": "server", - "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", - "http.url_details.path": "/httpapi/get", + "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", "http.status_code": "200" diff --git a/tests/integration/snapshots/logs/sync-metrics_python38.log b/tests/integration/snapshots/logs/sync-metrics_python38.log index 8cd4eb2c..ae41bc18 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python38.log +++ b/tests/integration/snapshots/logs/sync-metrics_python38.log @@ -85,8 +85,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", "span.kind": "server", - "http.url": "https://xxxx.execute-api.us-east-2.amazonaws.com/", - "http.url_details.path": "/Prod/", + "http.url": "https://xxxx.execute-api.us-east-2.amazonaws.com/Prod/", "http.method": "GET", "http.route": "/", "http.status_code": "200" @@ -828,8 +827,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", "span.kind": "server", - "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", - "http.url_details.path": "/httpapi/get", + "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", "http.status_code": "200" diff --git a/tests/integration/snapshots/logs/sync-metrics_python39.log b/tests/integration/snapshots/logs/sync-metrics_python39.log index 5e5e9cf3..1acb7f0d 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python39.log +++ b/tests/integration/snapshots/logs/sync-metrics_python39.log @@ -85,8 +85,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", "span.kind": "server", - "http.url": "https://xxxx.execute-api.us-east-2.amazonaws.com/", - "http.url_details.path": "/Prod/", + "http.url": "https://xxxx.execute-api.us-east-2.amazonaws.com/Prod/", "http.method": "GET", "http.route": "/", "http.status_code": "200" @@ -828,8 +827,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", "span.kind": "server", - "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", - "http.url_details.path": "/httpapi/get", + "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", "http.status_code": "200" diff --git a/tests/test_trigger.py b/tests/test_trigger.py index 182e61d8..f10fcbbf 100644 --- a/tests/test_trigger.py +++ b/tests/test_trigger.py @@ -318,8 +318,7 @@ def test_extract_trigger_tags_api_gateway(self): { "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "arn:aws:apigateway:us-west-1::/restapis/1234567890/stages/prod", - "http.url": "https://70ixmpl4fl.execute-api.us-east-2.amazonaws.com/", - "http.url_details.path": "/prod/path/to/resource", + "http.url": "https://70ixmpl4fl.execute-api.us-east-2.amazonaws.com/prod/path/to/resource", "http.method": "POST", "http.route": "/{proxy+}", "span.kind": "server", @@ -338,8 +337,7 @@ def test_extract_trigger_tags_api_gateway_non_proxy(self): { "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "arn:aws:apigateway:us-west-1::/restapis/lgxbo6a518/stages/dev", - "http.url": "https://lgxbo6a518.execute-api.eu-west-1.amazonaws.com/", - "http.url_details.path": "/dev/http/get", + "http.url": "https://lgxbo6a518.execute-api.eu-west-1.amazonaws.com/dev/http/get", "http.method": "GET", "http.route": "/http/get", "span.kind": "server", @@ -409,8 +407,7 @@ def test_extract_trigger_tags_api_gateway_http_api(self): { "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "arn:aws:apigateway:us-west-1::/restapis/x02yirxc7a/stages/$default", - "http.url": "https://x02yirxc7a.execute-api.eu-west-1.amazonaws.com/", - "http.url_details.path": "/httpapi/get", + "http.url": "https://x02yirxc7a.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "span.kind": "server", "http.route": "/httpapi/get", @@ -429,7 +426,6 @@ def test_extract_trigger_tags_application_load_balancer(self): { "function_trigger.event_source": "application-load-balancer", "function_trigger.event_source_arn": "arn:aws:elasticloadbalancing:us-east-2:123456789012:targetgroup/lambda-xyz/123abc", - "http.url_details.path": "/lambda", "http.method": "GET", "span.kind": "server", }, @@ -596,7 +592,6 @@ def test_extract_http_tags_with_invalid_request_context(self): http_tags, { "span.kind": "server", - "http.url_details.path": "/test", "http.method": "GET", }, ) From fba070d59d57818d62c89f39b179d72932f1a0d5 Mon Sep 17 00:00:00 2001 From: Brett Langdon Date: Wed, 22 Oct 2025 12:42:48 -0400 Subject: [PATCH 266/268] chore: do not use Span.set_tag_str (#669) * chore: do not use Span.set_tag_str Use Span.set_tag instead. Span.set_tag_str is being deprecated and removed * update to use node 20 for ci --------- Co-authored-by: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> --- ci/input_files/build.yaml.tpl | 4 ++-- datadog_lambda/asm.py | 4 ++-- tests/test_asm.py | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/ci/input_files/build.yaml.tpl b/ci/input_files/build.yaml.tpl index 8624a806..599160fb 100644 --- a/ci/input_files/build.yaml.tpl +++ b/ci/input_files/build.yaml.tpl @@ -27,8 +27,8 @@ default: - apt-get install -y ca-certificates curl gnupg xxd - mkdir -p /etc/apt/keyrings - curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg - # We are explicitly setting the node_18.x version for the installation - - echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_18.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list + # We are explicitly setting the node_20.x version for the installation + - echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list - apt-get update - apt-get install nodejs -y - npm install --global yarn diff --git a/datadog_lambda/asm.py b/datadog_lambda/asm.py index 7bd8272f..6c65a946 100644 --- a/datadog_lambda/asm.py +++ b/datadog_lambda/asm.py @@ -126,8 +126,8 @@ def asm_start_request( request_ip = _get_request_header_client_ip(request_headers, peer_ip, True) if request_ip is not None: - span.set_tag_str("http.client_ip", request_ip) - span.set_tag_str("network.client.ip", request_ip) + span.set_tag("http.client_ip", request_ip) + span.set_tag("network.client.ip", request_ip) # Encode the parsed query and append it to reconstruct the original raw URI expected by AppSec. if parsed_query: diff --git a/tests/test_asm.py b/tests/test_asm.py index 1e11b102..3aab8dd7 100644 --- a/tests/test_asm.py +++ b/tests/test_asm.py @@ -331,8 +331,8 @@ def test_asm_start_request_parametrized( # Check IP tags were set if IP is present if expected_ip: - mock_span.set_tag_str.assert_any_call("http.client_ip", expected_ip) - mock_span.set_tag_str.assert_any_call("network.client.ip", expected_ip) + mock_span.set_tag.assert_any_call("http.client_ip", expected_ip) + mock_span.set_tag.assert_any_call("network.client.ip", expected_ip) @pytest.mark.parametrize( From b8779f89d3cf0faaac4fa58502459ee8bae4e822 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Thu, 23 Oct 2025 10:25:59 -0400 Subject: [PATCH 267/268] release v8.116.0 with ddtrace@3.16.2 (#671) --- datadog_lambda/version.py | 2 +- pyproject.toml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index 05a11f2b..2e2e781a 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "8.116.0.dev0" +__version__ = "8.116.0" diff --git a/pyproject.toml b/pyproject.toml index 02939748..cf7d1805 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "8.116.0.dev0" +version = "8.116.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" @@ -28,7 +28,7 @@ classifiers = [ python = ">=3.8.0,<4" datadog = ">=0.51.0,<1.0.0" wrapt = "^1.11.2" -ddtrace = ">=3.11.0,<4" +ddtrace = ">=3.16.2,<4" ujson = ">=5.9.0" botocore = { version = "^1.34.0", optional = true } requests = { version ="^2.22.0", optional = true } From 1fac67c442ae0b4521c31e9d2269497e14dd34d6 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Thu, 23 Oct 2025 13:51:31 -0400 Subject: [PATCH 268/268] v8.117.0.dev0 --- datadog_lambda/version.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index 2e2e781a..373eef7d 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "8.116.0" +__version__ = "8.117.0.dev0" diff --git a/pyproject.toml b/pyproject.toml index cf7d1805..d135e085 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "8.116.0" +version = "8.117.0.dev0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0"