datadog_lambda 5.92.0__py3-none-any.whl → 5.93.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- datadog_lambda/__init__.py +2 -6
- datadog_lambda/cold_start.py +6 -2
- datadog_lambda/extension.py +2 -4
- datadog_lambda/handler.py +1 -1
- datadog_lambda/metric.py +11 -15
- datadog_lambda/patch.py +3 -3
- datadog_lambda/tag_object.py +4 -4
- datadog_lambda/tags.py +19 -48
- datadog_lambda/tracing.py +169 -182
- datadog_lambda/trigger.py +39 -35
- datadog_lambda/version.py +1 -0
- datadog_lambda/wrapper.py +6 -5
- datadog_lambda/xray.py +45 -34
- datadog_lambda-5.93.0.dist-info/LICENSE-3rdparty.csv +13 -0
- {datadog_lambda-5.92.0.dist-info → datadog_lambda-5.93.0.dist-info}/METADATA +3 -3
- datadog_lambda-5.93.0.dist-info/RECORD +27 -0
- datadog_lambda-5.92.0.dist-info/LICENSE-3rdparty.csv +0 -3
- datadog_lambda-5.92.0.dist-info/RECORD +0 -26
- {datadog_lambda-5.92.0.dist-info → datadog_lambda-5.93.0.dist-info}/LICENSE +0 -0
- {datadog_lambda-5.92.0.dist-info → datadog_lambda-5.93.0.dist-info}/NOTICE +0 -0
- {datadog_lambda-5.92.0.dist-info → datadog_lambda-5.93.0.dist-info}/WHEEL +0 -0
datadog_lambda/trigger.py
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
import base64
|
|
7
7
|
import gzip
|
|
8
|
-
import json
|
|
8
|
+
import ujson as json
|
|
9
9
|
from io import BytesIO, BufferedReader
|
|
10
10
|
from enum import Enum
|
|
11
11
|
from typing import Any
|
|
@@ -110,10 +110,10 @@ def get_first_record(event):
|
|
|
110
110
|
|
|
111
111
|
def parse_event_source(event: dict) -> _EventSource:
|
|
112
112
|
"""Determines the source of the trigger event"""
|
|
113
|
-
if
|
|
113
|
+
if not isinstance(event, dict):
|
|
114
114
|
return _EventSource(EventTypes.UNKNOWN)
|
|
115
115
|
|
|
116
|
-
event_source =
|
|
116
|
+
event_source = None
|
|
117
117
|
|
|
118
118
|
request_context = event.get("requestContext")
|
|
119
119
|
if request_context and request_context.get("stage"):
|
|
@@ -126,7 +126,7 @@ def parse_event_source(event: dict) -> _EventSource:
|
|
|
126
126
|
event_source.subtype = EventSubtypes.API_GATEWAY
|
|
127
127
|
if "routeKey" in event:
|
|
128
128
|
event_source.subtype = EventSubtypes.HTTP_API
|
|
129
|
-
if
|
|
129
|
+
if request_context.get("messageDirection"):
|
|
130
130
|
event_source.subtype = EventSubtypes.WEBSOCKET
|
|
131
131
|
|
|
132
132
|
if request_context and request_context.get("elb"):
|
|
@@ -151,10 +151,9 @@ def parse_event_source(event: dict) -> _EventSource:
|
|
|
151
151
|
|
|
152
152
|
event_record = get_first_record(event)
|
|
153
153
|
if event_record:
|
|
154
|
-
aws_event_source = event_record.get(
|
|
155
|
-
"
|
|
154
|
+
aws_event_source = event_record.get("eventSource") or event_record.get(
|
|
155
|
+
"EventSource"
|
|
156
156
|
)
|
|
157
|
-
|
|
158
157
|
if aws_event_source == "aws:dynamodb":
|
|
159
158
|
event_source = _EventSource(EventTypes.DYNAMODB)
|
|
160
159
|
if aws_event_source == "aws:kinesis":
|
|
@@ -165,11 +164,10 @@ def parse_event_source(event: dict) -> _EventSource:
|
|
|
165
164
|
event_source = _EventSource(EventTypes.SNS)
|
|
166
165
|
if aws_event_source == "aws:sqs":
|
|
167
166
|
event_source = _EventSource(EventTypes.SQS)
|
|
168
|
-
|
|
169
167
|
if event_record.get("cf"):
|
|
170
168
|
event_source = _EventSource(EventTypes.CLOUDFRONT)
|
|
171
169
|
|
|
172
|
-
return event_source
|
|
170
|
+
return event_source or _EventSource(EventTypes.UNKNOWN)
|
|
173
171
|
|
|
174
172
|
|
|
175
173
|
def detect_lambda_function_url_domain(domain: str) -> bool:
|
|
@@ -193,20 +191,26 @@ def parse_event_source_arn(source: _EventSource, event: dict, context: Any) -> s
|
|
|
193
191
|
event_record = get_first_record(event)
|
|
194
192
|
# e.g. arn:aws:s3:::lambda-xyz123-abc890
|
|
195
193
|
if source.to_string() == "s3":
|
|
196
|
-
|
|
194
|
+
s3 = event_record.get("s3")
|
|
195
|
+
if s3:
|
|
196
|
+
bucket = s3.get("bucket")
|
|
197
|
+
if bucket:
|
|
198
|
+
return bucket.get("arn")
|
|
199
|
+
return None
|
|
197
200
|
|
|
198
201
|
# e.g. arn:aws:sns:us-east-1:123456789012:sns-lambda
|
|
199
202
|
if source.to_string() == "sns":
|
|
200
|
-
|
|
203
|
+
sns = event_record.get("Sns")
|
|
204
|
+
if sns:
|
|
205
|
+
return sns.get("TopicArn")
|
|
206
|
+
return None
|
|
201
207
|
|
|
202
208
|
# e.g. arn:aws:cloudfront::123456789012:distribution/ABC123XYZ
|
|
203
209
|
if source.event_type == EventTypes.CLOUDFRONT:
|
|
204
210
|
distribution_id = (
|
|
205
211
|
event_record.get("cf", {}).get("config", {}).get("distributionId")
|
|
206
212
|
)
|
|
207
|
-
return "arn:{}:cloudfront::{}:distribution/{}"
|
|
208
|
-
aws_arn, account_id, distribution_id
|
|
209
|
-
)
|
|
213
|
+
return f"arn:{aws_arn}:cloudfront::{account_id}:distribution/{distribution_id}"
|
|
210
214
|
|
|
211
215
|
# e.g. arn:aws:lambda:<region>:<account_id>:url:<function-name>:<function-qualifier>
|
|
212
216
|
if source.equals(EventTypes.LAMBDA_FUNCTION_URL):
|
|
@@ -223,14 +227,18 @@ def parse_event_source_arn(source: _EventSource, event: dict, context: Any) -> s
|
|
|
223
227
|
# e.g. arn:aws:apigateway:us-east-1::/restapis/xyz123/stages/default
|
|
224
228
|
if source.event_type == EventTypes.API_GATEWAY:
|
|
225
229
|
request_context = event.get("requestContext")
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
230
|
+
api_id = request_context.get("apiId")
|
|
231
|
+
stage = request_context.get("stage")
|
|
232
|
+
return f"arn:{aws_arn}:apigateway:{region}::/restapis/{api_id}/stages/{stage}"
|
|
229
233
|
|
|
230
234
|
# e.g. arn:aws:elasticloadbalancing:us-east-1:123456789012:targetgroup/lambda-xyz/123
|
|
231
235
|
if source.event_type == EventTypes.ALB:
|
|
232
236
|
request_context = event.get("requestContext")
|
|
233
|
-
|
|
237
|
+
if request_context:
|
|
238
|
+
elb = request_context.get("elb")
|
|
239
|
+
if elb:
|
|
240
|
+
return elb.get("targetGroupArn")
|
|
241
|
+
return None
|
|
234
242
|
|
|
235
243
|
# e.g. arn:aws:logs:us-west-1:123456789012:log-group:/my-log-group-xyz
|
|
236
244
|
if source.event_type == EventTypes.CLOUDWATCH_LOGS:
|
|
@@ -240,9 +248,7 @@ def parse_event_source_arn(source: _EventSource, event: dict, context: Any) -> s
|
|
|
240
248
|
data = b"".join(BufferedReader(decompress_stream))
|
|
241
249
|
logs = json.loads(data)
|
|
242
250
|
log_group = logs.get("logGroup", "cloudwatch")
|
|
243
|
-
return "arn:{}:logs:{}:{}:log-group:{}"
|
|
244
|
-
aws_arn, region, account_id, log_group
|
|
245
|
-
)
|
|
251
|
+
return f"arn:{aws_arn}:logs:{region}:{account_id}:log-group:{log_group}"
|
|
246
252
|
|
|
247
253
|
# e.g. arn:aws:events:us-east-1:123456789012:rule/my-schedule
|
|
248
254
|
if source.event_type == EventTypes.CLOUDWATCH_EVENTS and event.get("resources"):
|
|
@@ -296,6 +302,13 @@ def extract_http_tags(event):
|
|
|
296
302
|
return http_tags
|
|
297
303
|
|
|
298
304
|
|
|
305
|
+
_http_event_types = (
|
|
306
|
+
EventTypes.API_GATEWAY,
|
|
307
|
+
EventTypes.ALB,
|
|
308
|
+
EventTypes.LAMBDA_FUNCTION_URL,
|
|
309
|
+
)
|
|
310
|
+
|
|
311
|
+
|
|
299
312
|
def extract_trigger_tags(event: dict, context: Any) -> dict:
|
|
300
313
|
"""
|
|
301
314
|
Parses the trigger event object to get tags to be added to the span metadata
|
|
@@ -309,16 +322,15 @@ def extract_trigger_tags(event: dict, context: Any) -> dict:
|
|
|
309
322
|
if event_source_arn:
|
|
310
323
|
trigger_tags["function_trigger.event_source_arn"] = event_source_arn
|
|
311
324
|
|
|
312
|
-
if event_source.event_type in
|
|
313
|
-
EventTypes.API_GATEWAY,
|
|
314
|
-
EventTypes.ALB,
|
|
315
|
-
EventTypes.LAMBDA_FUNCTION_URL,
|
|
316
|
-
]:
|
|
325
|
+
if event_source.event_type in _http_event_types:
|
|
317
326
|
trigger_tags.update(extract_http_tags(event))
|
|
318
327
|
|
|
319
328
|
return trigger_tags
|
|
320
329
|
|
|
321
330
|
|
|
331
|
+
_str_http_triggers = [et.value for et in _http_event_types]
|
|
332
|
+
|
|
333
|
+
|
|
322
334
|
def extract_http_status_code_tag(trigger_tags, response):
|
|
323
335
|
"""
|
|
324
336
|
If the Lambda was triggered by API Gateway, Lambda Function URL, or ALB,
|
|
@@ -329,15 +341,7 @@ def extract_http_status_code_tag(trigger_tags, response):
|
|
|
329
341
|
str_event_source = trigger_tags.get("function_trigger.event_source")
|
|
330
342
|
# it would be cleaner if each event type was a constant object that
|
|
331
343
|
# knew some properties about itself like this.
|
|
332
|
-
|
|
333
|
-
et.value
|
|
334
|
-
for et in [
|
|
335
|
-
EventTypes.API_GATEWAY,
|
|
336
|
-
EventTypes.LAMBDA_FUNCTION_URL,
|
|
337
|
-
EventTypes.ALB,
|
|
338
|
-
]
|
|
339
|
-
]
|
|
340
|
-
if str_event_source not in str_http_triggers:
|
|
344
|
+
if str_event_source not in _str_http_triggers:
|
|
341
345
|
return
|
|
342
346
|
|
|
343
347
|
status_code = "200"
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "5.93.0"
|
datadog_lambda/wrapper.py
CHANGED
|
@@ -6,8 +6,8 @@ import base64
|
|
|
6
6
|
import os
|
|
7
7
|
import logging
|
|
8
8
|
import traceback
|
|
9
|
+
import ujson as json
|
|
9
10
|
from importlib import import_module
|
|
10
|
-
import json
|
|
11
11
|
from time import time_ns
|
|
12
12
|
|
|
13
13
|
from datadog_lambda.extension import should_use_extension, flush_extension
|
|
@@ -258,7 +258,9 @@ class _LambdaDecorator(object):
|
|
|
258
258
|
injected_headers[Headers.Parent_Span_Finish_Time] = finish_time_ns
|
|
259
259
|
if request_id is not None:
|
|
260
260
|
injected_headers[Headers.Authorizing_Request_Id] = request_id
|
|
261
|
-
datadog_data = base64.b64encode(
|
|
261
|
+
datadog_data = base64.b64encode(
|
|
262
|
+
json.dumps(injected_headers, escape_forward_slashes=False).encode()
|
|
263
|
+
).decode()
|
|
262
264
|
self.response.setdefault("context", {})
|
|
263
265
|
self.response["context"]["_datadog"] = datadog_data
|
|
264
266
|
|
|
@@ -381,9 +383,8 @@ class _LambdaDecorator(object):
|
|
|
381
383
|
|
|
382
384
|
|
|
383
385
|
def format_err_with_traceback(e):
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
)
|
|
386
|
+
tb = traceback.format_exc().replace("\n", "\r")
|
|
387
|
+
return f"Error {e}. Traceback: {tb}"
|
|
387
388
|
|
|
388
389
|
|
|
389
390
|
datadog_lambda_wrapper = _LambdaDecorator
|
datadog_lambda/xray.py
CHANGED
|
@@ -1,47 +1,60 @@
|
|
|
1
1
|
import os
|
|
2
2
|
import logging
|
|
3
|
-
import json
|
|
4
3
|
import binascii
|
|
5
4
|
import time
|
|
6
5
|
import socket
|
|
6
|
+
import ujson as json
|
|
7
7
|
|
|
8
8
|
from datadog_lambda.constants import XrayDaemon, XraySubsegment, TraceContextSource
|
|
9
9
|
|
|
10
10
|
logger = logging.getLogger(__name__)
|
|
11
11
|
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
sock.
|
|
37
|
-
|
|
38
|
-
|
|
13
|
+
class Socket(object):
|
|
14
|
+
def __init__(self):
|
|
15
|
+
self.sock = None
|
|
16
|
+
|
|
17
|
+
@property
|
|
18
|
+
def host_port_tuple(self):
|
|
19
|
+
if not hasattr(self, "_host_port_tuple"):
|
|
20
|
+
self._host_port_tuple = self._get_xray_host_port(
|
|
21
|
+
os.environ.get(XrayDaemon.XRAY_DAEMON_ADDRESS, "")
|
|
22
|
+
)
|
|
23
|
+
return self._host_port_tuple
|
|
24
|
+
|
|
25
|
+
def send(self, payload):
|
|
26
|
+
if not self.sock:
|
|
27
|
+
self._connect()
|
|
28
|
+
try:
|
|
29
|
+
self.sock.send(payload.encode("utf-8"))
|
|
30
|
+
except Exception as e_send:
|
|
31
|
+
logger.error("Error occurred submitting to xray daemon: %s", e_send)
|
|
32
|
+
|
|
33
|
+
def _connect(self):
|
|
34
|
+
self.sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
|
35
|
+
self.sock.setblocking(0)
|
|
36
|
+
self.sock.connect(self.host_port_tuple)
|
|
37
|
+
|
|
38
|
+
def _get_xray_host_port(self, address):
|
|
39
|
+
if address == "":
|
|
40
|
+
logger.debug("X-Ray daemon env var not set, not sending sub-segment")
|
|
41
|
+
return None
|
|
42
|
+
parts = address.split(":")
|
|
43
|
+
if len(parts) <= 1:
|
|
44
|
+
logger.debug("X-Ray daemon env var not set, not sending sub-segment")
|
|
45
|
+
return None
|
|
46
|
+
port = int(parts[1])
|
|
47
|
+
host = parts[0]
|
|
48
|
+
return (host, port)
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
sock = Socket()
|
|
39
52
|
|
|
40
53
|
|
|
41
54
|
def build_segment_payload(payload):
|
|
42
55
|
if payload is None:
|
|
43
56
|
return None
|
|
44
|
-
return '{"format": "json", "version": 1}
|
|
57
|
+
return '{"format": "json", "version": 1}\n' + payload
|
|
45
58
|
|
|
46
59
|
|
|
47
60
|
def parse_xray_header(raw_trace_id):
|
|
@@ -89,16 +102,14 @@ def build_segment(context, key, metadata):
|
|
|
89
102
|
key: metadata,
|
|
90
103
|
}
|
|
91
104
|
},
|
|
92
|
-
}
|
|
105
|
+
},
|
|
106
|
+
escape_forward_slashes=False,
|
|
93
107
|
)
|
|
94
108
|
return segment
|
|
95
109
|
|
|
96
110
|
|
|
97
111
|
def send_segment(key, metadata):
|
|
98
|
-
host_port_tuple
|
|
99
|
-
os.environ.get(XrayDaemon.XRAY_DAEMON_ADDRESS, "")
|
|
100
|
-
)
|
|
101
|
-
if host_port_tuple is None:
|
|
112
|
+
if sock.host_port_tuple is None:
|
|
102
113
|
return None
|
|
103
114
|
context = parse_xray_header(
|
|
104
115
|
os.environ.get(XrayDaemon.XRAY_TRACE_ID_HEADER_NAME, "")
|
|
@@ -115,4 +126,4 @@ def send_segment(key, metadata):
|
|
|
115
126
|
return None
|
|
116
127
|
segment = build_segment(context, key, metadata)
|
|
117
128
|
segment_payload = build_segment_payload(segment)
|
|
118
|
-
send(
|
|
129
|
+
sock.send(segment_payload)
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
Component,Origin,License,Copyright
|
|
2
|
+
datadog,github.com/DataDog/datadogpy,BSD-3-Clause,"Copyright (c) 2015-Present Datadog, Inc <opensource@datadoghq.com>"
|
|
3
|
+
wrapt,github.com/GrahamDumpleton/wrapt,BSD-2-Clause,"Copyright (c) 2013-2019, Graham Dumpleton"
|
|
4
|
+
ddtrace,github.com/DataDog/dd-trace-py,BSD-3-Clause,"Copyright (c) 2016, Datadog <info@datadoghq.com>"
|
|
5
|
+
urllib3,github.com/urllib3/urllib3,MIT,Copyright (c) 2008-2020 Andrey Petrov and contributors.
|
|
6
|
+
ujson,github.com/ultrajson/ultrajson,BSD-3-Clause,"Copyright (c) 2014, Electronic Arts Inc"
|
|
7
|
+
importlib_metadata,github.com/python/importlib_metadata,Apache-2.0,Copyright © Jason R. Coombs
|
|
8
|
+
boto3,github.com/boto/boto3,Apache-2.0,"Copyright 2013-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved."
|
|
9
|
+
typing_extensions,github.com/python/typing_extensions,PSF-2.0,"Copyright (c) 1991 - 1995, Stichting Mathematisch Centrum Amsterdam, The Netherlands. All rights reserved"
|
|
10
|
+
requests,github.com/psf/requests,Apache-2.0,"Copyright 2018 Kenneth Reitz"
|
|
11
|
+
pytest,github.com/pytest-dev/pytest,MIT,Copyright (c) 2004 Holger Krekel and others
|
|
12
|
+
pytest-benchmark,github.com/ionelmc/pytest-benchmark,BSD-2-Clause,"Copyright (c) 2014-2023, Ionel Cristian Mărieș. All rights reserved."
|
|
13
|
+
flake8,gitlab.com/pycqa/flake8,MIT,"Copyright (C) 2011-2013 Tarek Ziade <tarek@ziade.org>. Copyright (C) 2012-2016 Ian Cordasco <graffatcolmingov@gmail.com>."
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: datadog_lambda
|
|
3
|
-
Version: 5.
|
|
3
|
+
Version: 5.93.0
|
|
4
4
|
Summary: The Datadog AWS Lambda Library
|
|
5
5
|
Home-page: https://github.com/DataDog/datadog-lambda-python
|
|
6
6
|
License: Apache-2.0
|
|
@@ -20,10 +20,10 @@ Requires-Dist: boto3 (>=1.28.0,<2.0.0) ; extra == "dev"
|
|
|
20
20
|
Requires-Dist: datadog (>=0.41.0,<1.0.0)
|
|
21
21
|
Requires-Dist: ddtrace (>=2.7.2)
|
|
22
22
|
Requires-Dist: flake8 (>=5.0.4,<6.0.0) ; extra == "dev"
|
|
23
|
-
Requires-Dist: importlib_metadata ; python_version < "3.8"
|
|
24
23
|
Requires-Dist: pytest (>=8.0.0,<9.0.0) ; extra == "dev"
|
|
24
|
+
Requires-Dist: pytest-benchmark (>=4.0,<5.0) ; extra == "dev"
|
|
25
25
|
Requires-Dist: requests (>=2.22.0,<3.0.0) ; extra == "dev"
|
|
26
|
-
Requires-Dist:
|
|
26
|
+
Requires-Dist: ujson (>=5.9.0)
|
|
27
27
|
Requires-Dist: urllib3 (<2.0.0) ; python_version < "3.11"
|
|
28
28
|
Requires-Dist: urllib3 (<2.1.0) ; python_version >= "3.11"
|
|
29
29
|
Requires-Dist: wrapt (>=1.11.2,<2.0.0)
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
datadog_lambda/__init__.py,sha256=F_KG5XbNq9QEzbioec7DXzyTv3oYJHxeEgXE88dxXRQ,637
|
|
2
|
+
datadog_lambda/api.py,sha256=TFg7gCek088_C53cZQQHDoLXGlTAhP2AD8NAuWYOVco,3653
|
|
3
|
+
datadog_lambda/cold_start.py,sha256=8-MsHGUo4fH88HrcOpjnHa6uRBEHOW3bI-fhiRNZQzg,8171
|
|
4
|
+
datadog_lambda/constants.py,sha256=DeujbnguBT9nDioiaYlgQQdZ6Ps53sWXmYhruLVoCHE,1669
|
|
5
|
+
datadog_lambda/dogstatsd.py,sha256=HCyl72oQUSF3E4y1ivrHaGTHL9WG1asGjB1Xo2D_Abc,4769
|
|
6
|
+
datadog_lambda/extension.py,sha256=ZU64QpA2K9K9C0jfqusBgpiWQe0QA2dcJCNk7UgjVfw,621
|
|
7
|
+
datadog_lambda/handler.py,sha256=P-ImnqDohdNBqiA-YGlhJf83FHgweCOC0LgzudZlc7A,992
|
|
8
|
+
datadog_lambda/logger.py,sha256=nGxNMouF7wcjmoPsgivzzjNLvSy3WbGtKElxOvITZDg,766
|
|
9
|
+
datadog_lambda/metric.py,sha256=JzErzS_ZCYbQ7iojnDSSVSypWj_EyrSSqO2-CQ3cWSE,4595
|
|
10
|
+
datadog_lambda/module_name.py,sha256=5FmOCjjgjq78b6a83QePZZFmqahAoy9XHdUNWdq2D1Q,139
|
|
11
|
+
datadog_lambda/patch.py,sha256=6a-BqovSRKsU5hTQpzxgY-_bducT-UEVCLvd3fdxeWc,4710
|
|
12
|
+
datadog_lambda/stats_writer.py,sha256=SIac96wu45AxDOZ4GraCbK3r1RKr4AFgXcEPHg1VX0A,243
|
|
13
|
+
datadog_lambda/statsd_writer.py,sha256=F4SCJ6-J6YfvQNh0uQfAkP6QYiAtV3-MCsxz4QnaBBI,403
|
|
14
|
+
datadog_lambda/tag_object.py,sha256=cZ7W9Ae5k3YxLOZzN5Hu8UqvOKtq5AWARele0L18Gjs,2091
|
|
15
|
+
datadog_lambda/tags.py,sha256=PMoxJhIGMWrG7798rqdK8oBp5UzWJrOJaCcK83AeQ3o,2487
|
|
16
|
+
datadog_lambda/thread_stats_writer.py,sha256=fkjMDgrzwACrK_ZrCwl9mHz5U3CMLEyrsaondjdM3r8,2522
|
|
17
|
+
datadog_lambda/tracing.py,sha256=wngNyiUuHcuy_TmWeKEQBsJiKSj0JyNoHHxhBOlm9Zs,47962
|
|
18
|
+
datadog_lambda/trigger.py,sha256=JK5am_XmEvueuLKrrF7k08sWnZVDOD6QvQjrsUJx1dM,12177
|
|
19
|
+
datadog_lambda/version.py,sha256=uZmcswY6DeOIt6kTpeQsTfsvVvo4yNIPQZ1BLpNMuQE,23
|
|
20
|
+
datadog_lambda/wrapper.py,sha256=aU2sQdtv_7g1Cb1gAAxkEy4zUcFSsZVwRGgHreIWwB0,15272
|
|
21
|
+
datadog_lambda/xray.py,sha256=jvA4Fk76PLMgsjUoUZ7gp2otv53hFt39Nvso1ZNaivg,3749
|
|
22
|
+
datadog_lambda-5.93.0.dist-info/LICENSE,sha256=4yQmjpKp1MKL7DdRDPVHkKYc2W0aezm5SIDske8oAdM,11379
|
|
23
|
+
datadog_lambda-5.93.0.dist-info/LICENSE-3rdparty.csv,sha256=9CDAR1GKawwTbZkqt1RP0uwEcaRM3RhOeTB5tWXr8Ts,1381
|
|
24
|
+
datadog_lambda-5.93.0.dist-info/METADATA,sha256=sm8-SEF9ywrAI4x8fMpviEuH4_Fub6NChFTEFmNjtWw,7289
|
|
25
|
+
datadog_lambda-5.93.0.dist-info/NOTICE,sha256=Jue-d8mQ1ENIHDZdYc2-X8mVYtScXb8pzF1pTLN-kRc,141
|
|
26
|
+
datadog_lambda-5.93.0.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
|
27
|
+
datadog_lambda-5.93.0.dist-info/RECORD,,
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
Component,Origin,License,Copyright
|
|
2
|
-
flake8,gitlab.com/pycqa/flake8,MIT,"Copyright (C) 2011-2013 Tarek Ziade <tarek@ziade.org>. Copyright (C) 2012-2016 Ian Cordasco <graffatcolmingov@gmail.com>."
|
|
3
|
-
wrapt,github.com/GrahamDumpleton/wrapt,BSD-2-Clause,"Copyright (c) 2013-2019, Graham Dumpleton"
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
datadog_lambda/__init__.py,sha256=3LWiCnMOHS1_XzwaHrltXTiq_1IsuqYcG6LcPTk-5ww,723
|
|
2
|
-
datadog_lambda/api.py,sha256=TFg7gCek088_C53cZQQHDoLXGlTAhP2AD8NAuWYOVco,3653
|
|
3
|
-
datadog_lambda/cold_start.py,sha256=UEi0QJ1-35YgZiMwF1MKa2cTNifYmfN3fsIB4PmL-XA,8107
|
|
4
|
-
datadog_lambda/constants.py,sha256=DeujbnguBT9nDioiaYlgQQdZ6Ps53sWXmYhruLVoCHE,1669
|
|
5
|
-
datadog_lambda/dogstatsd.py,sha256=HCyl72oQUSF3E4y1ivrHaGTHL9WG1asGjB1Xo2D_Abc,4769
|
|
6
|
-
datadog_lambda/extension.py,sha256=GE_7gJeMAic14i8IAr8GkkWbB5lJsyNNwJVJgk7sDU0,662
|
|
7
|
-
datadog_lambda/handler.py,sha256=r2MiZoIfTWuVAN-f6iXXIjhdtd1t7m9bTnwplVm2SEY,994
|
|
8
|
-
datadog_lambda/logger.py,sha256=nGxNMouF7wcjmoPsgivzzjNLvSy3WbGtKElxOvITZDg,766
|
|
9
|
-
datadog_lambda/metric.py,sha256=jk4jRgb0pwxd_c4D2zzAZ3olN_8ci64fpYk3cuxbg0U,4707
|
|
10
|
-
datadog_lambda/module_name.py,sha256=5FmOCjjgjq78b6a83QePZZFmqahAoy9XHdUNWdq2D1Q,139
|
|
11
|
-
datadog_lambda/patch.py,sha256=Hr_zeekk9PeAizTDFoZ_ZwTWptjgtKjl9A-XHX5kA1k,4641
|
|
12
|
-
datadog_lambda/stats_writer.py,sha256=SIac96wu45AxDOZ4GraCbK3r1RKr4AFgXcEPHg1VX0A,243
|
|
13
|
-
datadog_lambda/statsd_writer.py,sha256=F4SCJ6-J6YfvQNh0uQfAkP6QYiAtV3-MCsxz4QnaBBI,403
|
|
14
|
-
datadog_lambda/tag_object.py,sha256=Kcys4Mo4_4vdXxq4XS7ilWpCuSQQyVRSjDejgq6RJS4,2112
|
|
15
|
-
datadog_lambda/tags.py,sha256=wIG1f5iq85dq3FNV-yi-D0XwqYOx8jE0x_8Re6Ucmso,3240
|
|
16
|
-
datadog_lambda/thread_stats_writer.py,sha256=fkjMDgrzwACrK_ZrCwl9mHz5U3CMLEyrsaondjdM3r8,2522
|
|
17
|
-
datadog_lambda/tracing.py,sha256=4iYZ89Ow9pb9FpV8A5wrIwybvBdi6HJ_Ze3qdsCT990,48234
|
|
18
|
-
datadog_lambda/trigger.py,sha256=_Sxpy9UpMDHdw_X1hD61G4OTex7CIYQw1guFu6dzByo,12082
|
|
19
|
-
datadog_lambda/wrapper.py,sha256=ikeMVhpZO9bK6zf0YjbpU6qOcPMyXY13pOIOUUfKJMA,15223
|
|
20
|
-
datadog_lambda/xray.py,sha256=05-8xd3GOOIDtGaB4k2Ow1kbWn86Px2mhyKEUYIwKIc,3448
|
|
21
|
-
datadog_lambda-5.92.0.dist-info/LICENSE,sha256=4yQmjpKp1MKL7DdRDPVHkKYc2W0aezm5SIDske8oAdM,11379
|
|
22
|
-
datadog_lambda-5.92.0.dist-info/LICENSE-3rdparty.csv,sha256=JDC3fYxFni7456BCvwPTA-DEDv8l8B0QHYDuqnu9UjI,290
|
|
23
|
-
datadog_lambda-5.92.0.dist-info/METADATA,sha256=HCeMsVTiswHqnKnfVRDOX47uz665OuddZbDYqxYhAtc,7326
|
|
24
|
-
datadog_lambda-5.92.0.dist-info/NOTICE,sha256=Jue-d8mQ1ENIHDZdYc2-X8mVYtScXb8pzF1pTLN-kRc,141
|
|
25
|
-
datadog_lambda-5.92.0.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
|
26
|
-
datadog_lambda-5.92.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|