Skip to content

Commit 6b16ac1

Browse files
authored
refactor(iast): refactor imports to make them local (#6899)
## Checklist - [x] This PR doesn't touch any of that.
1 parent 32632a8 commit 6b16ac1

File tree

20 files changed

+165
-153
lines changed

20 files changed

+165
-153
lines changed

ddtrace/appsec/ddwaf/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
from typing import Any
1313
from typing import Union
1414

15-
from ddtrace.appsec.ddwaf.ddwaf_types import DDWafRulesType
15+
from .ddwaf_types import DDWafRulesType
1616

1717

1818
LOGGER = get_logger(__name__)

ddtrace/appsec/iast/__init__.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,12 @@ def wrapped_function(wrapped, instance, args, kwargs):
3131
import inspect
3232
import sys
3333

34-
from ddtrace.appsec.iast._ast.ast_patching import astpatch_module
35-
from ddtrace.appsec.iast._overhead_control_engine import OverheadControl
36-
from ddtrace.appsec.iast._utils import _is_iast_enabled
3734
from ddtrace.internal.logger import get_logger
3835

36+
from ._ast.ast_patching import astpatch_module
37+
from ._overhead_control_engine import OverheadControl
38+
from ._utils import _is_iast_enabled
39+
3940

4041
log = get_logger(__name__)
4142

ddtrace/appsec/iast/_ast/ast_patching.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,11 @@
1515

1616
from ddtrace.appsec._constants import IAST
1717
from ddtrace.appsec._python_info.stdlib import _stdlib_for_python_version
18-
from ddtrace.appsec.iast._ast.visitor import AstVisitor
1918
from ddtrace.internal.logger import get_logger
2019
from ddtrace.internal.module import origin
2120

21+
from .visitor import AstVisitor
22+
2223

2324
# Prefixes for modules where IAST patching is allowed
2425
IAST_ALLOWLIST = ("tests.appsec.iast",) # type: tuple[str, ...]

ddtrace/appsec/iast/_ast/visitor.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
from six import iteritems
1010

11-
from ddtrace.appsec.iast._metrics import _set_metric_iast_instrumented_propagation
11+
from .._metrics import _set_metric_iast_instrumented_propagation
1212

1313

1414
if TYPE_CHECKING: # pragma: no cover

ddtrace/appsec/iast/_metrics.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ def _set_iast_error_metric(msg, stack_trace):
6363

6464
@metric_verbosity(TELEMETRY_MANDATORY_VERBOSITY)
6565
def _set_metric_iast_instrumented_source(source_type):
66-
from ddtrace.appsec.iast._taint_tracking._native.taint_tracking import origin_to_str # noqa: F401
66+
from ._taint_tracking._native.taint_tracking import origin_to_str # noqa: F401
6767

6868
telemetry_writer.add_count_metric(
6969
TELEMETRY_NAMESPACE_TAG_IAST, "instrumented.source", 1, (("source_type", origin_to_str(source_type)),)
@@ -84,7 +84,7 @@ def _set_metric_iast_instrumented_sink(vulnerability_type, counter=1):
8484

8585
@metric_verbosity(TELEMETRY_INFORMATION_VERBOSITY)
8686
def _set_metric_iast_executed_source(source_type):
87-
from ddtrace.appsec.iast._taint_tracking._native.taint_tracking import origin_to_str # noqa: F401
87+
from ._taint_tracking._native.taint_tracking import origin_to_str # noqa: F401
8888

8989
telemetry_writer.add_count_metric(
9090
TELEMETRY_NAMESPACE_TAG_IAST, "executed.source", 1, (("source_type", origin_to_str(source_type)),)
@@ -100,7 +100,7 @@ def _set_metric_iast_executed_sink(vulnerability_type):
100100

101101
@metric_verbosity(TELEMETRY_INFORMATION_VERBOSITY)
102102
def _set_metric_iast_request_tainted():
103-
from ddtrace.appsec.iast._taint_tracking import num_objects_tainted
103+
from ._taint_tracking import num_objects_tainted
104104

105105
total_objects_tainted = num_objects_tainted()
106106
if total_objects_tainted > 0:

ddtrace/appsec/iast/_patch.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,12 @@
33
import sys
44
from typing import TYPE_CHECKING
55

6-
from ddtrace.appsec.iast._utils import _is_iast_enabled
76
from ddtrace.internal.logger import get_logger
87
from ddtrace.vendor.wrapt import FunctionWrapper
98
from ddtrace.vendor.wrapt import resolve_path
109

10+
from ._utils import _is_iast_enabled
11+
1112

1213
if TYPE_CHECKING: # pragma: no cover
1314
from typing import Any
@@ -142,8 +143,8 @@ def if_iast_taint_returned_object_for(origin, wrapped, instance, args, kwargs):
142143

143144
if _is_iast_enabled():
144145
try:
145-
from ddtrace.appsec.iast._taint_tracking import is_pyobject_tainted
146-
from ddtrace.appsec.iast._taint_tracking import taint_pyobject
146+
from ._taint_tracking import is_pyobject_tainted
147+
from ._taint_tracking import taint_pyobject
147148

148149
if not is_pyobject_tainted(value):
149150
name = str(args[0]) if len(args) else "http.request.body"
@@ -155,7 +156,7 @@ def if_iast_taint_returned_object_for(origin, wrapped, instance, args, kwargs):
155156

156157
def if_iast_taint_yield_tuple_for(origins, wrapped, instance, args, kwargs):
157158
if _is_iast_enabled():
158-
from ddtrace.appsec.iast._taint_tracking import taint_pyobject
159+
from ._taint_tracking import taint_pyobject
159160

160161
for key, value in wrapped(*args, **kwargs):
161162
new_key = taint_pyobject(pyobject=key, source_name=key, source_value=key, source_origin=origins[0])

ddtrace/appsec/iast/_patches/json_tainting.py

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
from ddtrace import config
2-
from ddtrace.appsec.iast._patch import set_and_check_module_is_patched
3-
from ddtrace.appsec.iast._patch import set_module_unpatched
4-
from ddtrace.appsec.iast._patch import try_unwrap
5-
from ddtrace.appsec.iast._patch import try_wrap_function_wrapper
6-
from ddtrace.appsec.iast._taint_utils import LazyTaintDict
7-
from ddtrace.appsec.iast._taint_utils import LazyTaintList
82
from ddtrace.internal.logger import get_logger
93

4+
from .._patch import set_and_check_module_is_patched
5+
from .._patch import set_module_unpatched
6+
from .._patch import try_unwrap
7+
from .._patch import try_wrap_function_wrapper
8+
from .._taint_utils import LazyTaintDict
9+
from .._taint_utils import LazyTaintList
10+
1011

1112
log = get_logger(__name__)
1213

@@ -37,9 +38,9 @@ def wrapped_loads(wrapped, instance, args, kwargs):
3738
obj = wrapped(*args, **kwargs)
3839
if config._iast_enabled:
3940
try:
40-
from ddtrace.appsec.iast._taint_tracking import get_tainted_ranges
41-
from ddtrace.appsec.iast._taint_tracking import is_pyobject_tainted
42-
from ddtrace.appsec.iast._taint_tracking import taint_pyobject
41+
from .._taint_tracking import get_tainted_ranges
42+
from .._taint_tracking import is_pyobject_tainted
43+
from .._taint_tracking import taint_pyobject
4344

4445
if is_pyobject_tainted(args[0]) and obj:
4546
# tainting object

ddtrace/appsec/iast/_taint_dict.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
from typing import Dict
88
from typing import Tuple
99

10-
from ddtrace.appsec.iast._taint_tracking import Source
10+
from ._taint_tracking import Source
1111

1212
_IAST_TAINT_DICT = {} # type: Dict[int, Tuple[Tuple[Source, int, int],...]]
1313

ddtrace/appsec/iast/_taint_tracking/__init__.py

Lines changed: 29 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -2,38 +2,38 @@
22
# flake8: noqa
33
from typing import TYPE_CHECKING
44

5-
from ddtrace.appsec.iast._metrics import _set_metric_iast_executed_source
6-
from ddtrace.appsec.iast._utils import _is_python_version_supported
5+
from .._metrics import _set_metric_iast_executed_source
6+
from .._utils import _is_python_version_supported
77

88

99
if _is_python_version_supported():
10-
from ddtrace.appsec.iast import oce
11-
from ddtrace.appsec.iast._taint_tracking._native import ops
12-
from ddtrace.appsec.iast._taint_tracking._native.aspect_helpers import _convert_escaped_text_to_tainted_text
13-
from ddtrace.appsec.iast._taint_tracking._native.aspect_helpers import as_formatted_evidence
14-
from ddtrace.appsec.iast._taint_tracking._native.aspect_helpers import common_replace
15-
from ddtrace.appsec.iast._taint_tracking._native.aspect_helpers import parse_params
16-
from ddtrace.appsec.iast._taint_tracking._native.initializer import active_map_addreses_size
17-
from ddtrace.appsec.iast._taint_tracking._native.initializer import create_context
18-
from ddtrace.appsec.iast._taint_tracking._native.initializer import destroy_context
19-
from ddtrace.appsec.iast._taint_tracking._native.initializer import initializer_size
20-
from ddtrace.appsec.iast._taint_tracking._native.initializer import num_objects_tainted
21-
from ddtrace.appsec.iast._taint_tracking._native.initializer import reset_context
22-
from ddtrace.appsec.iast._taint_tracking._native.taint_tracking import OriginType
23-
from ddtrace.appsec.iast._taint_tracking._native.taint_tracking import Source
24-
from ddtrace.appsec.iast._taint_tracking._native.taint_tracking import TagMappingMode
25-
from ddtrace.appsec.iast._taint_tracking._native.taint_tracking import are_all_text_all_ranges
26-
from ddtrace.appsec.iast._taint_tracking._native.taint_tracking import get_range_by_hash
27-
from ddtrace.appsec.iast._taint_tracking._native.taint_tracking import get_ranges
28-
from ddtrace.appsec.iast._taint_tracking._native.taint_tracking import is_notinterned_notfasttainted_unicode
29-
from ddtrace.appsec.iast._taint_tracking._native.taint_tracking import is_tainted
30-
from ddtrace.appsec.iast._taint_tracking._native.taint_tracking import origin_to_str
31-
from ddtrace.appsec.iast._taint_tracking._native.taint_tracking import set_fast_tainted_if_notinterned_unicode
32-
from ddtrace.appsec.iast._taint_tracking._native.taint_tracking import set_ranges
33-
from ddtrace.appsec.iast._taint_tracking._native.taint_tracking import shift_taint_range
34-
from ddtrace.appsec.iast._taint_tracking._native.taint_tracking import shift_taint_ranges
35-
from ddtrace.appsec.iast._taint_tracking._native.taint_tracking import str_to_origin
36-
from ddtrace.appsec.iast._taint_tracking._native.taint_tracking import taint_range as TaintRange
10+
from .. import oce
11+
from ._native import ops
12+
from ._native.aspect_helpers import _convert_escaped_text_to_tainted_text
13+
from ._native.aspect_helpers import as_formatted_evidence
14+
from ._native.aspect_helpers import common_replace
15+
from ._native.aspect_helpers import parse_params
16+
from ._native.initializer import active_map_addreses_size
17+
from ._native.initializer import create_context
18+
from ._native.initializer import destroy_context
19+
from ._native.initializer import initializer_size
20+
from ._native.initializer import num_objects_tainted
21+
from ._native.initializer import reset_context
22+
from ._native.taint_tracking import OriginType
23+
from ._native.taint_tracking import Source
24+
from ._native.taint_tracking import TagMappingMode
25+
from ._native.taint_tracking import are_all_text_all_ranges
26+
from ._native.taint_tracking import get_range_by_hash
27+
from ._native.taint_tracking import get_ranges
28+
from ._native.taint_tracking import is_notinterned_notfasttainted_unicode
29+
from ._native.taint_tracking import is_tainted
30+
from ._native.taint_tracking import origin_to_str
31+
from ._native.taint_tracking import set_fast_tainted_if_notinterned_unicode
32+
from ._native.taint_tracking import set_ranges
33+
from ._native.taint_tracking import shift_taint_range
34+
from ._native.taint_tracking import shift_taint_ranges
35+
from ._native.taint_tracking import str_to_origin
36+
from ._native.taint_tracking import taint_range as TaintRange
3737

3838
new_pyobject_id = ops.new_pyobject_id
3939
is_pyobject_tainted = is_tainted

ddtrace/appsec/iast/_taint_tracking/aspects.py

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -5,22 +5,23 @@
55
import traceback
66
from typing import TYPE_CHECKING
77

8-
from ddtrace.appsec.iast._metrics import _set_iast_error_metric
9-
from ddtrace.appsec.iast._taint_tracking import TagMappingMode
10-
from ddtrace.appsec.iast._taint_tracking import TaintRange
11-
from ddtrace.appsec.iast._taint_tracking import _convert_escaped_text_to_tainted_text
12-
from ddtrace.appsec.iast._taint_tracking import are_all_text_all_ranges
13-
from ddtrace.appsec.iast._taint_tracking import as_formatted_evidence
14-
from ddtrace.appsec.iast._taint_tracking import common_replace
15-
from ddtrace.appsec.iast._taint_tracking import get_ranges
16-
from ddtrace.appsec.iast._taint_tracking import get_tainted_ranges
17-
from ddtrace.appsec.iast._taint_tracking import is_pyobject_tainted
18-
from ddtrace.appsec.iast._taint_tracking import parse_params
19-
from ddtrace.appsec.iast._taint_tracking import shift_taint_range
20-
from ddtrace.appsec.iast._taint_tracking import taint_pyobject_with_ranges
21-
from ddtrace.appsec.iast._taint_tracking._native import aspects # noqa: F401
228
from ddtrace.internal.compat import iteritems
239

10+
from .._metrics import _set_iast_error_metric
11+
from .._taint_tracking import TagMappingMode
12+
from .._taint_tracking import TaintRange
13+
from .._taint_tracking import _convert_escaped_text_to_tainted_text
14+
from .._taint_tracking import are_all_text_all_ranges
15+
from .._taint_tracking import as_formatted_evidence
16+
from .._taint_tracking import common_replace
17+
from .._taint_tracking import get_ranges
18+
from .._taint_tracking import get_tainted_ranges
19+
from .._taint_tracking import is_pyobject_tainted
20+
from .._taint_tracking import parse_params
21+
from .._taint_tracking import shift_taint_range
22+
from .._taint_tracking import taint_pyobject_with_ranges
23+
from .._taint_tracking._native import aspects # noqa: F401
24+
2425

2526
if TYPE_CHECKING:
2627
from typing import Any

0 commit comments

Comments
 (0)