Skip to content

Commit 4d5c39b

Browse files
chore(asm): migrate appsec trace_utils to drop python2 compatibility (#7118)
drop python 2 in `appsec/_trace_utils.py` follows #7117 ## Checklist - [x] Change(s) are motivated and described in the PR description. - [x] Testing strategy is described if automated tests are not included in the PR. - [x] Risk is outlined (performance impact, potential for breakage, maintainability, etc). - [x] Change is maintainable (easy to change, telemetry, documentation). - [x] [Library release note guidelines](https://ddtrace.readthedocs.io/en/stable/releasenotes.html) are followed. If no release note is required, add label `changelog/no-changelog`. - [x] Documentation is included (in-code, generated user docs, [public corp docs](https://github.com/DataDog/documentation/)). - [x] Backport labels are set (if [applicable](https://ddtrace.readthedocs.io/en/latest/contributing.html#backporting)) ## Reviewer Checklist - [x] Title is accurate. - [x] No unnecessary changes are introduced. - [x] Description motivates each change. - [x] Avoids breaking [API](https://ddtrace.readthedocs.io/en/stable/versioning.html#interfaces) changes unless absolutely necessary. - [x] Testing strategy adequately addresses listed risk(s). - [x] Change is maintainable (easy to change, telemetry, documentation). - [x] Release note makes sense to a user of the library. - [x] Reviewer has explicitly acknowledged and discussed the performance implications of this PR as reported in the benchmarks PR comment. - [x] Backport labels are set in a manner that is consistent with the [release branch maintenance policy](https://ddtrace.readthedocs.io/en/latest/contributing.html#backporting) - [x] If this PR touches code that signs or publishes builds or packages, or handles credentials of any kind, I've requested a review from `@DataDog/security-design-and-guidance`. - [x] This PR doesn't touch any of that.
1 parent bcd04e4 commit 4d5c39b

File tree

1 file changed

+44
-49
lines changed

1 file changed

+44
-49
lines changed

ddtrace/appsec/_trace_utils.py

Lines changed: 44 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,23 @@
11
from typing import Optional
2-
from typing import TYPE_CHECKING
3-
4-
from ddtrace.appsec import _asm_request_context
5-
from ddtrace.contrib.trace_utils import set_user
6-
from ddtrace.internal import core
7-
8-
9-
if TYPE_CHECKING:
10-
from ddtrace import Span
11-
from ddtrace import Tracer
122

3+
from ddtrace import Span
4+
from ddtrace import Tracer
135
from ddtrace import config
146
from ddtrace import constants
7+
from ddtrace.appsec import _asm_request_context
158
from ddtrace.appsec._constants import APPSEC
169
from ddtrace.appsec._constants import LOGIN_EVENTS_MODE
1710
from ddtrace.appsec._constants import WAF_CONTEXT_NAMES
11+
from ddtrace.contrib.trace_utils import set_user
1812
from ddtrace.ext import user
19-
from ddtrace.internal.compat import six
13+
from ddtrace.internal import core
2014
from ddtrace.internal.logger import get_logger
2115

2216

2317
log = get_logger(__name__)
2418

2519

26-
def _asm_manual_keep(span):
27-
# type: (Span) -> None
20+
def _asm_manual_keep(span: Span) -> None:
2821
from ddtrace.internal.constants import SAMPLING_DECISION_TRACE_TAG_KEY
2922
from ddtrace.internal.sampling import SamplingMechanism
3023

@@ -34,17 +27,15 @@ def _asm_manual_keep(span):
3427

3528

3629
def _track_user_login_common(
37-
tracer, # type: Tracer
38-
success, # type: bool
39-
metadata=None, # type: Optional[dict]
40-
login_events_mode=LOGIN_EVENTS_MODE.SDK, # type: str
41-
login=None, # type: Optional[str]
42-
name=None, # type: Optional[str]
43-
email=None, # type: Optional[str]
44-
span=None, # type: Optional[Span]
45-
):
46-
# type: (...) -> Optional[Span]
47-
30+
tracer: Tracer,
31+
success: bool,
32+
metadata: Optional[dict] = None,
33+
login_events_mode: str = LOGIN_EVENTS_MODE.SDK,
34+
login: Optional[str] = None,
35+
name: Optional[str] = None,
36+
email: Optional[str] = None,
37+
span: Optional[Span] = None,
38+
) -> Optional[Span]:
4839
if span is None:
4940
span = tracer.current_root_span()
5041
if span:
@@ -59,7 +50,7 @@ def _track_user_login_common(
5950
span.set_tag_str("%s.auto.mode" % tag_prefix, str(login_events_mode))
6051

6152
if metadata is not None:
62-
for k, v in six.iteritems(metadata):
53+
for k, v in metadata.items():
6354
span.set_tag_str("%s.%s" % (tag_prefix, k), str(v))
6455

6556
if login:
@@ -83,20 +74,19 @@ def _track_user_login_common(
8374

8475

8576
def track_user_login_success_event(
86-
tracer, # type: Tracer
87-
user_id, # type: str
88-
metadata=None, # type: Optional[dict]
89-
login=None, # type: Optional[str]
90-
name=None, # type: Optional[str]
91-
email=None, # type: Optional[str]
92-
scope=None, # type: Optional[str]
93-
role=None, # type: Optional[str]
94-
session_id=None, # type: Optional[str]
95-
propagate=False, # type: bool
96-
login_events_mode=LOGIN_EVENTS_MODE.SDK, # type: str
97-
span=None, # type: Optional[Span]
98-
):
99-
# type: (...) -> None # noqa: E501
77+
tracer: Tracer,
78+
user_id: str,
79+
metadata: Optional[dict] = None,
80+
login: Optional[str] = None,
81+
name: Optional[str] = None,
82+
email: Optional[str] = None,
83+
scope: Optional[str] = None,
84+
role: Optional[str] = None,
85+
session_id: Optional[str] = None,
86+
propagate: bool = False,
87+
login_events_mode: str = LOGIN_EVENTS_MODE.SDK,
88+
span: Optional[Span] = None,
89+
) -> None:
10090
"""
10191
Add a new login success tracking event. The parameters after metadata (name, email,
10292
scope, role, session_id, propagate) will be passed to the `set_user` function that will be called
@@ -117,8 +107,13 @@ def track_user_login_success_event(
117107
set_user(tracer, user_id, name, email, scope, role, session_id, propagate, span)
118108

119109

120-
def track_user_login_failure_event(tracer, user_id, exists, metadata=None, login_events_mode=LOGIN_EVENTS_MODE.SDK):
121-
# type: (Tracer, str, bool, Optional[dict], str) -> None
110+
def track_user_login_failure_event(
111+
tracer: Tracer,
112+
user_id: str,
113+
exists: bool,
114+
metadata: Optional[dict] = None,
115+
login_events_mode: str = LOGIN_EVENTS_MODE.SDK,
116+
) -> None:
122117
"""
123118
Add a new login failure tracking event.
124119
:param tracer: tracer instance to use
@@ -136,8 +131,9 @@ def track_user_login_failure_event(tracer, user_id, exists, metadata=None, login
136131
span.set_tag_str("%s.failure.%s" % (APPSEC.USER_LOGIN_EVENT_PREFIX, user.EXISTS), exists_str)
137132

138133

139-
def track_user_signup_event(tracer, user_id, success, login_events_mode=LOGIN_EVENTS_MODE.SDK):
140-
# type: (Tracer, str, bool, str) -> None
134+
def track_user_signup_event(
135+
tracer: Tracer, user_id: str, success: bool, login_events_mode: str = LOGIN_EVENTS_MODE.SDK
136+
) -> None:
141137
span = tracer.current_root_span()
142138
if span:
143139
success_str = "true" if success else "false"
@@ -160,8 +156,7 @@ def track_user_signup_event(tracer, user_id, success, login_events_mode=LOGIN_EV
160156
)
161157

162158

163-
def track_custom_event(tracer, event_name, metadata):
164-
# type: (Tracer, str, dict) -> None
159+
def track_custom_event(tracer: Tracer, event_name: str, metadata: dict) -> None:
165160
"""
166161
Add a new custom tracking event.
167162
@@ -190,12 +185,12 @@ def track_custom_event(tracer, event_name, metadata):
190185

191186
span.set_tag_str("%s.%s.track" % (APPSEC.CUSTOM_EVENT_PREFIX, event_name), "true")
192187

193-
for k, v in six.iteritems(metadata):
188+
for k, v in metadata.items():
194189
span.set_tag_str("%s.%s.%s" % (APPSEC.CUSTOM_EVENT_PREFIX, event_name, k), str(v))
195190
_asm_manual_keep(span)
196191

197192

198-
def should_block_user(tracer, userid): # type: (Tracer, str) -> bool
193+
def should_block_user(tracer: Tracer, userid: str) -> bool:
199194
"""
200195
Return true if the specified User ID should be blocked.
201196
@@ -228,7 +223,7 @@ def should_block_user(tracer, userid): # type: (Tracer, str) -> bool
228223
return bool(core.get_item(WAF_CONTEXT_NAMES.BLOCKED, span=span))
229224

230225

231-
def block_request(): # type: () -> None
226+
def block_request() -> None:
232227
"""
233228
Block the current request and return a 403 Unauthorized response. If the response
234229
has already been started to be sent this could not work. The behaviour of this function
@@ -242,7 +237,7 @@ def block_request(): # type: () -> None
242237
_asm_request_context.block_request()
243238

244239

245-
def block_request_if_user_blocked(tracer, userid): # type: (Tracer, str) -> None
240+
def block_request_if_user_blocked(tracer: Tracer, userid: str) -> None:
246241
"""
247242
Check if the specified User ID should be blocked and if positive
248243
block the current request using `block_request`.

0 commit comments

Comments
 (0)