Skip to content

Commit a230373

Browse files
Merge pull request #52 from DataDog/darcy.rayner/add-black-support
Autoformat files with black
2 parents 076d574 + 94b12fb commit a230373

File tree

8 files changed

+143
-153
lines changed

8 files changed

+143
-153
lines changed

.circleci/config.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,11 @@ jobs:
3232
command: |
3333
source venv/bin/activate
3434
flake8 datadog_lambda/
35+
- run:
36+
name: Check Formatting
37+
command: |
38+
source venv/bin/activate
39+
./scripts/check_format.sh
3540
3641
- save_cache:
3742
paths:

datadog_lambda/constants.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,13 @@ class SamplingPriority(object):
1414

1515
# Datadog trace headers
1616
class TraceHeader(object):
17-
TRACE_ID = 'x-datadog-trace-id'
18-
PARENT_ID = 'x-datadog-parent-id'
19-
SAMPLING_PRIORITY = 'x-datadog-sampling-priority'
17+
TRACE_ID = "x-datadog-trace-id"
18+
PARENT_ID = "x-datadog-parent-id"
19+
SAMPLING_PRIORITY = "x-datadog-sampling-priority"
2020

2121

2222
# X-Ray subsegment to save Datadog trace metadata
2323
class XraySubsegment(object):
24-
NAME = 'datadog-metadata'
25-
KEY = 'trace'
26-
NAMESPACE = 'datadog'
24+
NAME = "datadog-metadata"
25+
KEY = "trace"
26+
NAMESPACE = "datadog"

datadog_lambda/tracing.py

Lines changed: 32 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,7 @@
99
from aws_xray_sdk.core.lambda_launcher import LambdaContext
1010

1111
from ddtrace import patch, tracer
12-
from datadog_lambda.constants import (
13-
SamplingPriority,
14-
TraceHeader,
15-
XraySubsegment,
16-
)
12+
from datadog_lambda.constants import SamplingPriority, TraceHeader, XraySubsegment
1713

1814
logger = logging.getLogger(__name__)
1915

@@ -38,8 +34,11 @@ def _convert_xray_sampling(xray_sampled):
3834
"""
3935
Convert X-Ray sampled (True/False) to its Datadog counterpart.
4036
"""
41-
return str(SamplingPriority.USER_KEEP) if xray_sampled \
37+
return (
38+
str(SamplingPriority.USER_KEEP)
39+
if xray_sampled
4240
else str(SamplingPriority.USER_REJECT)
41+
)
4342

4443

4544
def extract_dd_trace_context(event):
@@ -54,33 +53,31 @@ def extract_dd_trace_context(event):
5453
the correct context.
5554
"""
5655
global dd_trace_context
57-
headers = event.get('headers', {})
56+
headers = event.get("headers", {})
5857
lowercase_headers = {k.lower(): v for k, v in headers.items()}
5958

6059
trace_id = lowercase_headers.get(TraceHeader.TRACE_ID)
6160
parent_id = lowercase_headers.get(TraceHeader.PARENT_ID)
6261
sampling_priority = lowercase_headers.get(TraceHeader.SAMPLING_PRIORITY)
6362
if trace_id and parent_id and sampling_priority:
64-
logger.debug('Extracted Datadog trace context from headers')
63+
logger.debug("Extracted Datadog trace context from headers")
6564
dd_trace_context = {
66-
'trace-id': trace_id,
67-
'parent-id': parent_id,
68-
'sampling-priority': sampling_priority,
65+
"trace-id": trace_id,
66+
"parent-id": parent_id,
67+
"sampling-priority": sampling_priority,
6968
}
7069
xray_recorder.begin_subsegment(XraySubsegment.NAME)
7170
subsegment = xray_recorder.current_subsegment()
7271
subsegment.put_metadata(
73-
XraySubsegment.KEY,
74-
dd_trace_context,
75-
XraySubsegment.NAMESPACE
72+
XraySubsegment.KEY, dd_trace_context, XraySubsegment.NAMESPACE
7673
)
7774
xray_recorder.end_subsegment()
7875
else:
7976
# AWS Lambda runtime caches global variables between invocations,
8077
# reset to avoid using the context from the last invocation.
8178
dd_trace_context = {}
8279

83-
logger.debug('extracted dd trace context %s', dd_trace_context)
80+
logger.debug("extracted dd trace context %s", dd_trace_context)
8481

8582

8683
def get_dd_trace_context():
@@ -96,28 +93,24 @@ def get_dd_trace_context():
9693
context to an outgoing request.
9794
"""
9895
if not is_lambda_context():
99-
logger.debug('get_dd_trace_context is only supported in LambdaContext')
96+
logger.debug("get_dd_trace_context is only supported in LambdaContext")
10097
return {}
10198

10299
global dd_trace_context
103100
xray_trace_entity = xray_recorder.get_trace_entity() # xray (sub)segment
104101
if dd_trace_context:
105102
return {
106-
TraceHeader.TRACE_ID:
107-
dd_trace_context['trace-id'],
108-
TraceHeader.PARENT_ID: _convert_xray_entity_id(
109-
xray_trace_entity.id),
110-
TraceHeader.SAMPLING_PRIORITY:
111-
dd_trace_context['sampling-priority'],
103+
TraceHeader.TRACE_ID: dd_trace_context["trace-id"],
104+
TraceHeader.PARENT_ID: _convert_xray_entity_id(xray_trace_entity.id),
105+
TraceHeader.SAMPLING_PRIORITY: dd_trace_context["sampling-priority"],
112106
}
113107
else:
114108
return {
115-
TraceHeader.TRACE_ID: _convert_xray_trace_id(
116-
xray_trace_entity.trace_id),
117-
TraceHeader.PARENT_ID: _convert_xray_entity_id(
118-
xray_trace_entity.id),
109+
TraceHeader.TRACE_ID: _convert_xray_trace_id(xray_trace_entity.trace_id),
110+
TraceHeader.PARENT_ID: _convert_xray_entity_id(xray_trace_entity.id),
119111
TraceHeader.SAMPLING_PRIORITY: _convert_xray_sampling(
120-
xray_trace_entity.sampled),
112+
xray_trace_entity.sampled
113+
),
121114
}
122115

123116

@@ -130,16 +123,16 @@ def set_correlation_ids():
130123
TODO: Remove me when Datadog tracer is natively supported in Lambda.
131124
"""
132125
if not is_lambda_context():
133-
logger.debug('set_correlation_ids is only supported in LambdaContext')
126+
logger.debug("set_correlation_ids is only supported in LambdaContext")
134127
return
135128

136129
context = get_dd_trace_context()
137130

138-
span = tracer.trace('dummy.span')
131+
span = tracer.trace("dummy.span")
139132
span.trace_id = context[TraceHeader.TRACE_ID]
140133
span.span_id = context[TraceHeader.PARENT_ID]
141134

142-
logger.debug('correlation ids set')
135+
logger.debug("correlation ids set")
143136

144137

145138
def inject_correlation_ids():
@@ -153,17 +146,19 @@ def inject_correlation_ids():
153146
# Override the log format of the AWS provided LambdaLoggerHandler
154147
root_logger = logging.getLogger()
155148
for handler in root_logger.handlers:
156-
if handler.__class__.__name__ == 'LambdaLoggerHandler':
157-
handler.setFormatter(logging.Formatter(
158-
'[%(levelname)s]\t%(asctime)s.%(msecs)dZ\t%(aws_request_id)s\t'
159-
'[dd.trace_id=%(dd.trace_id)s dd.span_id=%(dd.span_id)s]\t%(message)s\n',
160-
'%Y-%m-%dT%H:%M:%S'
161-
))
149+
if handler.__class__.__name__ == "LambdaLoggerHandler":
150+
handler.setFormatter(
151+
logging.Formatter(
152+
"[%(levelname)s]\t%(asctime)s.%(msecs)dZ\t%(aws_request_id)s\t"
153+
"[dd.trace_id=%(dd.trace_id)s dd.span_id=%(dd.span_id)s]\t%(message)s\n",
154+
"%Y-%m-%dT%H:%M:%S",
155+
)
156+
)
162157

163158
# Patch `logging.Logger.makeRecord` to actually inject correlation ids
164159
patch(logging=True)
165160

166-
logger.debug('logs injection configured')
161+
logger.debug("logs injection configured")
167162

168163

169164
def is_lambda_context():

datadog_lambda/wrapper.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ def my_lambda_handle(event, context):
3939

4040

4141
class _NoopDecorator(object):
42-
4342
def __init__(self, func):
4443
self.func = func
4544

scripts/check_format.sh

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
#!/bin/sh
2+
set -e
3+
4+
PYTHON_VERSION=$(python -c 'import sys; print(sys.version_info.major)')
5+
if [ "$PYTHON_VERSION" = "2" ]; then
6+
echo "Skipping formatting, black not compatible with python 2"
7+
exit 0
8+
fi
9+
pip install -Iv black==19.10b0
10+
11+
python -m black --check datadog_lambda/
12+
python -m black --check tests
13+
14+
15+

setup.py

Lines changed: 21 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -6,40 +6,35 @@
66

77
here = path.abspath(path.dirname(__file__))
88

9-
with open(path.join(here, 'README.md'), encoding='utf-8') as f:
9+
with open(path.join(here, "README.md"), encoding="utf-8") as f:
1010
long_description = f.read()
1111

1212
setup(
13-
name='datadog_lambda',
13+
name="datadog_lambda",
1414
version=__version__,
15-
description='The Datadog AWS Lambda Layer',
15+
description="The Datadog AWS Lambda Layer",
1616
long_description=long_description,
17-
long_description_content_type='text/markdown',
18-
url='https://github.com/DataDog/datadog-lambda-layer-python',
19-
author='Datadog, Inc.',
20-
author_email='dev@datadoghq.com',
17+
long_description_content_type="text/markdown",
18+
url="https://github.com/DataDog/datadog-lambda-layer-python",
19+
author="Datadog, Inc.",
20+
author_email="dev@datadoghq.com",
2121
classifiers=[
22-
'Programming Language :: Python :: 2.7',
23-
'Programming Language :: Python :: 3.6',
24-
'Programming Language :: Python :: 3.7',
25-
'Programming Language :: Python :: 3.8',
22+
"Programming Language :: Python :: 2.7",
23+
"Programming Language :: Python :: 3.6",
24+
"Programming Language :: Python :: 3.7",
25+
"Programming Language :: Python :: 3.8",
2626
],
27-
keywords='datadog aws lambda layer',
28-
packages=['datadog_lambda'],
29-
python_requires='>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, <4',
27+
keywords="datadog aws lambda layer",
28+
packages=["datadog_lambda"],
29+
python_requires=">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, <4",
3030
install_requires=[
31-
'aws-xray-sdk==2.4.3',
32-
'datadog==0.32.0',
33-
'ddtrace==0.31.0',
34-
'wrapt==1.11.2',
35-
'setuptools==42.0.2',
31+
"aws-xray-sdk==2.4.3",
32+
"datadog==0.32.0",
33+
"ddtrace==0.31.0",
34+
"wrapt==1.11.2",
35+
"setuptools==42.0.2",
3636
],
3737
extras_require={
38-
'dev': [
39-
'nose2==0.9.1',
40-
'flake8==3.7.9',
41-
'requests==2.22.0',
42-
'boto3==1.10.33',
43-
]
44-
}
38+
"dev": ["nose2==0.9.1", "flake8==3.7.9", "requests==2.22.0", "boto3==1.10.33"]
39+
},
4540
)

tests/test_patch.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,16 @@
11
import sys
22
import unittest
3+
34
try:
45
from unittest.mock import patch
56
except ImportError:
67
from mock import patch
78

8-
from datadog_lambda.patch import (
9-
_patch_httplib,
10-
_ensure_patch_requests,
11-
)
9+
from datadog_lambda.patch import _patch_httplib, _ensure_patch_requests
1210
from datadog_lambda.constants import TraceHeader
1311

1412

1513
class TestPatchHTTPClients(unittest.TestCase):
16-
1714
def setUp(self):
1815
patcher = patch("datadog_lambda.patch.get_dd_trace_context")
1916
self.mock_get_dd_trace_context = patcher.start()
@@ -36,6 +33,7 @@ def test_patch_httplib(self):
3633
def test_patch_requests(self):
3734
_ensure_patch_requests()
3835
import requests
36+
3937
r = requests.get("https://www.datadoghq.com/")
4038
self.mock_get_dd_trace_context.assert_called()
4139
self.assertEqual(r.request.headers[TraceHeader.TRACE_ID], "123")
@@ -45,6 +43,7 @@ def test_patch_requests(self):
4543
def test_patch_requests_with_headers(self):
4644
_ensure_patch_requests()
4745
import requests
46+
4847
r = requests.get("https://www.datadoghq.com/", headers={"key": "value"})
4948
self.mock_get_dd_trace_context.assert_called()
5049
self.assertEqual(r.request.headers["key"], "value")
@@ -55,6 +54,7 @@ def test_patch_requests_with_headers(self):
5554
def test_patch_requests_with_headers_none(self):
5655
_ensure_patch_requests()
5756
import requests
57+
5858
r = requests.get("https://www.datadoghq.com/", headers=None)
5959
self.mock_get_dd_trace_context.assert_called()
6060
self.assertEqual(r.request.headers[TraceHeader.TRACE_ID], "123")

0 commit comments

Comments
 (0)