Skip to content

Commit 76b1d8f

Browse files
avara1986claude
andcommitted
refactor(appsec): move _stacktrace from _iast to _shared package
Move the native _stacktrace C extension from ddtrace/appsec/_iast/ to ddtrace/appsec/_shared/ so it can be reused by both IAST and SCA without creating a dependency from SCA into IAST internals. Split out from #17156 to keep PRs incremental and reviewable. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 9f0f9ff commit 76b1d8f

11 files changed

Lines changed: 12 additions & 10 deletions

File tree

ddtrace/appsec/_iast/_stacktrace.pyi

Lines changed: 0 additions & 1 deletion
This file was deleted.

ddtrace/appsec/_iast/taint_sinks/_base.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
from ddtrace.appsec._iast._taint_tracking import get_ranges
99
from ddtrace.appsec._iast.sampling.vulnerability_detection import rollback_quota
1010
from ddtrace.appsec._iast.sampling.vulnerability_detection import should_process_vulnerability
11+
from ddtrace.appsec._shared._stacktrace import get_info_frame
1112
from ddtrace.appsec._trace_utils import _asm_manual_keep
1213
from ddtrace.internal import core
1314
from ddtrace.internal.logger import get_logger
@@ -19,7 +20,6 @@
1920
from .._iast_request_context import get_iast_reporter
2021
from .._iast_request_context import set_iast_reporter
2122
from .._span_metrics import increment_iast_span_metric
22-
from .._stacktrace import get_info_frame
2323
from ..reporter import Evidence
2424
from ..reporter import IastSpanReporter
2525
from ..reporter import Location

ddtrace/appsec/_shared/__init__.py

Whitespace-only changes.
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -359,7 +359,7 @@ static PyMethodDef StacktraceMethods[] = { { "get_info_frame",
359359
{ NULL, NULL, 0, NULL } };
360360

361361
static struct PyModuleDef stacktrace = { PyModuleDef_HEAD_INIT,
362-
"ddtrace.appsec._iast._stacktrace",
362+
"ddtrace.appsec._shared._stacktrace",
363363
"stacktrace module",
364364
-1,
365365
StacktraceMethods };
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
from typing import Optional
2+
3+
def get_info_frame() -> tuple[Optional[str], Optional[int], Optional[str], Optional[str]]: ...

setup.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1275,9 +1275,9 @@ def get_exts_for(name):
12751275
if platform.system() not in ("Windows", ""):
12761276
ext_modules.append(
12771277
Extension(
1278-
"ddtrace.appsec._iast._stacktrace",
1278+
"ddtrace.appsec._shared._stacktrace",
12791279
sources=[
1280-
"ddtrace/appsec/_iast/_stacktrace.c",
1280+
"ddtrace/appsec/_shared/_stacktrace.c",
12811281
],
12821282
extra_compile_args=extra_compile_args + debug_compile_args + fast_build_args,
12831283
)

tests/appsec/architectures/test_appsec_loading_modules.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
MODULE_IAST_ONLY = [
1818
"ddtrace.appsec._iast",
1919
"ddtrace.appsec._iast._taint_tracking._native",
20-
"ddtrace.appsec._iast._stacktrace",
20+
"ddtrace.appsec._shared._stacktrace",
2121
]
2222

2323

tests/appsec/iast/test_stacktrace.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#!/usr/bin/env python3
22

3-
from ddtrace.appsec._iast._stacktrace import get_info_frame
3+
from ddtrace.appsec._shared._stacktrace import get_info_frame
44

55

66
def test_stacktrace():

tests/appsec/iast_memcheck/fixtures/stacktrace.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import os
22

3-
from ddtrace.appsec._iast._stacktrace import get_info_frame
3+
from ddtrace.appsec._shared._stacktrace import get_info_frame
44

55

66
CWD = os.path.abspath(os.getcwd())

tests/appsec/iast_memcheck/test_iast_mem_check.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@
88
from ddtrace.appsec._iast._iast_request_context_base import _iast_finish_request
99
from ddtrace.appsec._iast._iast_request_context_base import _iast_start_request
1010
from ddtrace.appsec._iast._iast_request_context_base import _num_objects_tainted_in_request
11-
from ddtrace.appsec._iast._stacktrace import get_info_frame
1211
from ddtrace.appsec._iast._taint_tracking import OriginType
1312
from ddtrace.appsec._iast._taint_tracking._context import debug_context_array_size
1413
from ddtrace.appsec._iast._taint_tracking._taint_objects import taint_pyobject
1514
from ddtrace.appsec._iast._taint_tracking._taint_objects_base import get_tainted_ranges
15+
from ddtrace.appsec._shared._stacktrace import get_info_frame
1616
from tests.appsec.iast.iast_utils import _iast_patched_module
1717
from tests.appsec.iast_memcheck.fixtures.stacktrace import func_1
1818

0 commit comments

Comments
 (0)