Skip to content

Commit 03e8375

Browse files
fix(iast): fix import loop (#12095)
Co-authored-by: Brett Langdon <[email protected]>
1 parent c630fbb commit 03e8375

File tree

3 files changed

+6
-3
lines changed

3 files changed

+6
-3
lines changed

ddtrace/appsec/_iast/_ast/ast_patching.py

+1-2
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
from ddtrace.appsec._python_info.stdlib import _stdlib_for_python_version
1818
from ddtrace.internal.logger import get_logger
1919
from ddtrace.internal.module import origin
20+
from ddtrace.internal.packages import get_package_distributions
2021
from ddtrace.internal.utils.formats import asbool
2122

2223
from .visitor import AstVisitor
@@ -462,8 +463,6 @@ def _is_first_party(module_name: str):
462463
return False
463464

464465
if not _IMPORTLIB_PACKAGES:
465-
from ddtrace.internal.packages import get_package_distributions
466-
467466
_IMPORTLIB_PACKAGES = set(get_package_distributions())
468467

469468
return module_name.split(".")[0] not in _IMPORTLIB_PACKAGES

ddtrace/internal/packages.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ def get_distributions():
4545
return pkgs
4646

4747

48-
@callonce
48+
@cached(maxsize=1)
4949
def get_package_distributions() -> t.Mapping[str, t.List[str]]:
5050
"""a mapping of importable package names to their distribution name(s)"""
5151
try:
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
---
2+
fixes:
3+
- |
4+
Code security (IAST): This fix resolves an issue where the usage of `callonce` decorator could trigger an import loop

0 commit comments

Comments
 (0)