Skip to content

Commit f13a97b

Browse files
committed
chore(core): rename and document core APIs for clarity
1 parent abeb18e commit f13a97b

File tree

20 files changed

+113
-96
lines changed

20 files changed

+113
-96
lines changed

benchmarks/core_api/scenario.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ def set_item(loops):
7474
def get_item(loops):
7575
"""Measure the cost to fetch an item from the root context"""
7676
for _ in range(loops):
77-
core.get_item("key")
77+
core.find_item("key")
7878

7979
if "core_dispatch_with_results" in self.scenario_name:
8080
yield core_dispatch_with_results

ddtrace/_trace/trace_handlers.py

Lines changed: 29 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -104,50 +104,47 @@ def __getattribute__(self, name):
104104
def _get_parameters_for_new_span_directly_from_context(ctx: core.ExecutionContext) -> Dict[str, Any]:
105105
span_kwargs = {}
106106
for parameter_name in {"span_type", "resource", "service", "child_of", "activate"}:
107-
parameter_value = ctx.get_local_item(parameter_name)
107+
parameter_value = ctx.get_item(parameter_name)
108108
if parameter_value:
109109
span_kwargs[parameter_name] = parameter_value
110110
return span_kwargs
111111

112112

113113
def _start_span(ctx: core.ExecutionContext, call_trace: bool = True, **kwargs) -> "Span":
114-
activate_distributed_headers = ctx.get_local_item("activate_distributed_headers")
114+
activate_distributed_headers = ctx.get_item("activate_distributed_headers")
115115
span_kwargs = _get_parameters_for_new_span_directly_from_context(ctx)
116-
call_trace = ctx.get_local_item("call_trace", call_trace)
116+
call_trace = ctx.get_item("call_trace", call_trace)
117117
# Look for the tracer in the context, or fallback to the global tracer
118-
tracer = (
119-
ctx.get_local_item("tracer")
120-
or (ctx.get_local_item("middleware") or ctx.get_local_item("pin") or ddtrace).tracer
121-
)
122-
integration_config = ctx.get_local_item("integration_config")
118+
tracer = ctx.get_item("tracer") or (ctx.get_item("middleware") or ctx.get_item("pin") or ddtrace).tracer
119+
integration_config = ctx.get_item("integration_config")
123120
if integration_config and activate_distributed_headers:
124121
trace_utils.activate_distributed_headers(
125122
tracer,
126123
int_config=integration_config,
127-
request_headers=ctx.get_local_item("distributed_headers"),
128-
override=ctx.get_local_item("distributed_headers_config_override"),
124+
request_headers=ctx.get_item("distributed_headers"),
125+
override=ctx.get_item("distributed_headers_config_override"),
129126
)
130-
distributed_context = ctx.get_local_item("distributed_context")
127+
distributed_context = ctx.get_item("distributed_context")
131128
if distributed_context and not call_trace:
132129
span_kwargs["child_of"] = distributed_context
133130

134131
if config._inferred_proxy_services_enabled:
135132
# dispatch event for checking headers and possibly making an inferred proxy span
136133
core.dispatch("inferred_proxy.start", (ctx, tracer, span_kwargs, call_trace, integration_config))
137134
# re-get span_kwargs in case an inferred span was created and we have a new span_kwargs.child_of field
138-
span_kwargs = ctx.get_local_item("span_kwargs", span_kwargs)
135+
span_kwargs = ctx.get_item("span_kwargs", span_kwargs)
139136

140137
span_kwargs.update(kwargs)
141-
span_name = ctx.get_local_item("span_name")
138+
span_name = ctx.get_item("span_name")
142139
if not span_name:
143140
raise ValueError("span_name must be set in the context before starting a span")
144141
span = (tracer.trace if call_trace else tracer.start_span)(span_name, **span_kwargs)
145142

146-
tags: Optional[Dict[str, str]] = ctx.get_local_item("tags")
143+
tags: Optional[Dict[str, str]] = ctx.get_item("tags")
147144
if tags:
148145
for tk, tv in tags.items():
149146
span.set_tag(tk, tv)
150-
if ctx.get_local_item("measured"):
147+
if ctx.get_item("measured"):
151148
# PERF: avoid setting via Span.set_tag
152149
span.set_metric(_SPAN_MEASURED_KEY, 1)
153150

@@ -175,7 +172,7 @@ def _finish_span(
175172
exc_type, exc_value, exc_traceback = exc_info
176173
if exc_type and exc_value and exc_traceback:
177174
span.set_exc_info(exc_type, exc_value, exc_traceback)
178-
elif ctx.get_local_item("should_set_traceback", False):
175+
elif ctx.get_item("should_set_traceback", False):
179176
span.set_traceback()
180177
span.finish()
181178

@@ -197,7 +194,7 @@ def _on_web_framework_start_request(ctx, int_config):
197194
def _on_web_framework_finish_request(
198195
span, int_config, method, url, status_code, query, req_headers, res_headers, route, finish, **kwargs
199196
):
200-
if core.get_local_item("set_resource", default=False) is True and status_code is not None:
197+
if core.get_item("set_resource", default=False) is True and status_code is not None:
201198
try:
202199
status_code = int(status_code)
203200
except ValueError:
@@ -216,7 +213,7 @@ def _on_web_framework_finish_request(
216213
**kwargs,
217214
)
218215
_set_inferred_proxy_tags(span, status_code)
219-
for tk, tv in core.get_local_item("additional_tags", default=dict()).items():
216+
for tk, tv in core.get_item("additional_tags", default=dict()).items():
220217
span.set_tag_str(tk, tv)
221218

222219
if finish:
@@ -294,18 +291,18 @@ def _on_traced_request_context_started_flask(ctx):
294291

295292

296293
def _maybe_start_http_response_span(ctx: core.ExecutionContext) -> None:
297-
request_span = ctx.get_local_item("request_span")
298-
middleware = ctx.get_local_item("middleware")
299-
status_code, status_msg = ctx.get_local_item("status").split(" ", 1)
294+
request_span = ctx.get_item("request_span")
295+
middleware = ctx.get_item("middleware")
296+
status_code, status_msg = ctx.get_item("status").split(" ", 1)
300297
trace_utils.set_http_meta(
301-
request_span, middleware._config, status_code=status_code, response_headers=ctx.get_local_item("environ")
298+
request_span, middleware._config, status_code=status_code, response_headers=ctx.get_item("environ")
302299
)
303-
if ctx.get_local_item("start_span", False):
300+
if ctx.get_item("start_span", False):
304301
request_span.set_tag_str(http.STATUS_MSG, status_msg)
305302
_start_span(
306303
ctx,
307304
call_trace=False,
308-
child_of=ctx.get_local_item("parent_call"),
305+
child_of=ctx.get_item("parent_call"),
309306
activate=True,
310307
)
311308

@@ -522,7 +519,7 @@ def _on_request_span_modifier_post(ctx, flask_config, request, req_body):
522519

523520

524521
def _on_traced_get_response_pre(_, ctx: core.ExecutionContext, request, before_request_tags):
525-
before_request_tags(ctx.get_local_item("pin"), ctx.span, request)
522+
before_request_tags(ctx.get_item("pin"), ctx.span, request)
526523
ctx.span._metrics[_SPAN_MEASURED_KEY] = 1
527524

528525

@@ -567,7 +564,7 @@ def _on_django_cache(
567564
exc_info: Tuple[Optional[type], Optional[BaseException], Optional[TracebackType]],
568565
) -> None:
569566
try:
570-
rowcount = ctx.get_local_item("rowcount")
567+
rowcount = ctx.get_item("rowcount")
571568
if rowcount is not None:
572569
ctx.span.set_metric(db.ROWCOUNT, rowcount)
573570
finally:
@@ -610,8 +607,8 @@ def _on_django_after_request_headers_post(
610607
response_headers=response_headers,
611608
request_cookies=request.COOKIES,
612609
request_path_params=request.resolver_match.kwargs if request.resolver_match is not None else None,
613-
peer_ip=core.get_local_item("http.request.remote_ip"),
614-
headers_are_case_sensitive=bool(core.get_local_item("http.request.headers_case_sensitive")),
610+
peer_ip=core.get_item("http.request.remote_ip"),
611+
headers_are_case_sensitive=bool(core.get_item("http.request.headers_case_sensitive")),
615612
response_cookies=response_cookies,
616613
)
617614

@@ -756,7 +753,7 @@ def _on_botocore_bedrock_process_response_converse(
756753
ctx: core.ExecutionContext,
757754
result: List[Dict[str, Any]],
758755
):
759-
ctx.get_local_item("bedrock_integration").llmobs_set_tags(
756+
ctx.get_item("bedrock_integration").llmobs_set_tags(
760757
ctx.span,
761758
args=[ctx],
762759
kwargs={},
@@ -770,8 +767,8 @@ def _on_botocore_bedrock_process_response(
770767
formatted_response: Dict[str, Any],
771768
) -> None:
772769
with ctx.span as span:
773-
model_name = ctx.get_local_item("model_name")
774-
integration = ctx.get_local_item("bedrock_integration")
770+
model_name = ctx.get_item("model_name")
771+
integration = ctx.get_item("bedrock_integration")
775772
if "embed" in model_name:
776773
return
777774
integration.llmobs_set_tags(span, args=[ctx], kwargs={}, response=formatted_response)
@@ -914,7 +911,7 @@ def _on_azure_servicebus_send_message_modifier(ctx, azure_servicebus_config, ent
914911

915912

916913
def _on_router_match(route):
917-
req_span = core.get_local_item("req_span")
914+
req_span = core.get_item("req_span")
918915
core.set_item("set_resource", False)
919916
req_span.resource = "{} {}".format(
920917
route.method,

ddtrace/appsec/_asm_request_context.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -108,11 +108,11 @@ def __init__(self, span: Optional[Span] = None, rc_products: str = ""):
108108

109109

110110
def _get_asm_context() -> Optional[ASM_Environment]:
111-
return core.get_item(_ASM_CONTEXT)
111+
return core.find_item(_ASM_CONTEXT)
112112

113113

114114
def in_asm_context() -> bool:
115-
return core.get_item(_ASM_CONTEXT) is not None
115+
return core.find_item(_ASM_CONTEXT) is not None
116116

117117

118118
def is_blocked() -> bool:
@@ -530,10 +530,10 @@ def start_context(span: Span, rc_products: str):
530530
# it should only be called at start of a core context, when ASM_Env is not set yet
531531
core.set_item(_ASM_CONTEXT, ASM_Environment(span=span, rc_products=rc_products))
532532
asm_request_context_set(
533-
core.get_local_item("remote_addr"),
534-
core.get_local_item("headers"),
535-
core.get_local_item("headers_case_sensitive"),
536-
core.get_local_item("block_request_callable"),
533+
core.get_item("remote_addr"),
534+
core.get_item("headers"),
535+
core.get_item("headers_case_sensitive"),
536+
core.get_item("block_request_callable"),
537537
)
538538

539539

ddtrace/appsec/_handlers.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -375,13 +375,13 @@ def _asgi_make_block_content(ctx, url):
375375

376376
def _on_flask_blocked_request(span):
377377
span.set_tag_str(http.STATUS_CODE, "403")
378-
request = core.get_item("flask_request")
378+
request = core.find_item("flask_request")
379379
try:
380380
base_url = getattr(request, "base_url", None)
381381
query_string = getattr(request, "query_string", None)
382382
if base_url and query_string:
383-
_set_url_tag(core.get_item("flask_config"), span, base_url, query_string)
384-
if query_string and core.get_item("flask_config").trace_query_string:
383+
_set_url_tag(core.find_item("flask_config"), span, base_url, query_string)
384+
if query_string and core.find_item("flask_config").trace_query_string:
385385
span.set_tag_str(http.QUERY_STRING, query_string)
386386
if request.method is not None:
387387
span.set_tag_str(http.METHOD, request.method)

ddtrace/appsec/_iast/_handlers.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,7 @@ def _on_django_middleware(ctx: core.ExecutionContext, call_trace: bool = True, *
190190
if not asm_config._iast_enabled or not asm_config.is_iast_request_enabled:
191191
return
192192

193-
request = ctx.get_item("request")
193+
request = ctx.find_item("request")
194194
if request:
195195
args = (request,)
196196
_taint_django_func_call(request, args, {})

ddtrace/appsec/_iast/_iast_env.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,8 @@ def endpoint_key(self) -> str:
4444

4545

4646
def _get_iast_env() -> Optional[IASTEnvironment]:
47-
return core.get_item(IAST.REQUEST_CONTEXT_KEY)
47+
return core.find_item(IAST.REQUEST_CONTEXT_KEY)
4848

4949

5050
def in_iast_env() -> bool:
51-
return core.get_item(IAST.REQUEST_CONTEXT_KEY) is not None
51+
return core.find_item(IAST.REQUEST_CONTEXT_KEY) is not None

ddtrace/appsec/_processor.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,7 @@ def on_span_start(self, span: Span) -> None:
197197
return
198198

199199
if span.span_type == SpanTypes.SERVERLESS:
200-
skip_event = core.get_item("appsec_skip_next_lambda_event")
200+
skip_event = core.find_item("appsec_skip_next_lambda_event")
201201
if skip_event:
202202
core.discard_item("appsec_skip_next_lambda_event")
203203
log.debug(

ddtrace/contrib/internal/botocore/services/bedrock.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -332,7 +332,7 @@ def _extract_streamed_response(ctx: core.ExecutionContext, streamed_body: List[D
332332
elif provider == _COHERE:
333333
if "is_finished" in streamed_body[0]: # streamed response
334334
if "index" in streamed_body[0]: # n >= 2
335-
num_generations = int(ctx.get_item("num_generations") or 0)
335+
num_generations = int(ctx.find_item("num_generations") or 0)
336336
text = [
337337
"".join([chunk["text"] for chunk in streamed_body[:-1] if chunk["index"] == i])
338338
for i in range(num_generations)

ddtrace/contrib/internal/botocore/services/stepfunctions.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ def update_stepfunction_input(ctx: core.ExecutionContext, params: Any) -> None:
3636

3737
input_obj["_datadog"] = {}
3838
core.dispatch("botocore.stepfunctions.update_input", [ctx, None, None, input_obj, None])
39-
updated_input_obj = ctx.get_item(BOTOCORE_STEPFUNCTIONS_INPUT_KEY)
39+
updated_input_obj = ctx.find_item(BOTOCORE_STEPFUNCTIONS_INPUT_KEY)
4040
if updated_input_obj:
4141
input_json_str = json.dumps(updated_input_obj)
4242
params["input"] = input_json_str

ddtrace/contrib/internal/celery/app.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,13 +126,13 @@ def _traced_apply_async_inner(func, instance, args, kwargs):
126126
except Exception:
127127
# If an internal exception occurs, record the exception in the span,
128128
# then raise the Celery error as usual
129-
task_span = core.get_item("task_span")
129+
task_span = core.find_item("task_span")
130130
if task_span:
131131
task_span.set_exc_info(*sys.exc_info())
132132

133133
raise
134134
finally:
135-
task_span = core.get_item("task_span")
135+
task_span = core.find_item("task_span")
136136
if task_span:
137137
log.debug(
138138
"The after_task_publish signal was not called, so manually closing span: %r",

0 commit comments

Comments
 (0)