From c1debaec2d444e0a111181f064db687bb7b29bf6 Mon Sep 17 00:00:00 2001 From: "Gabriele N. Tornetta" Date: Tue, 18 Nov 2025 11:43:32 +0000 Subject: [PATCH] chore: drop 3.8 support in bytecode instrumentation We clean up sources by removing CPython 3.8 support from bytecode instrumentation. --- ddtrace/internal/wrapping/asyncs.py | 88 ------------------------- ddtrace/internal/wrapping/context.py | 31 --------- ddtrace/internal/wrapping/generators.py | 69 ------------------- 3 files changed, 188 deletions(-) diff --git a/ddtrace/internal/wrapping/asyncs.py b/ddtrace/internal/wrapping/asyncs.py index e6288eb9175..a5ece713d7f 100644 --- a/ddtrace/internal/wrapping/asyncs.py +++ b/ddtrace/internal/wrapping/asyncs.py @@ -579,94 +579,6 @@ """ ) -elif PY >= (3, 8): - COROUTINE_ASSEMBLY.parse( - r""" - get_awaitable - load_const None - yield_from - """ - ) - - ASYNC_GEN_ASSEMBLY.parse( - r""" - setup_finally @stopiter - dup_top - store_fast $__ddgen - load_attr $asend - store_fast $__ddgensend - load_fast $__ddgen - load_attr $__anext__ - call_function 0 - - loop: - get_awaitable - load_const None - yield_from - - yield: - setup_finally @genexit - yield_value - pop_block - load_fast $__ddgensend - rot_two - call_function 1 - jump_absolute @loop - - genexit: - dup_top - load_const GeneratorExit - compare_op asm.Compare.EXC_MATCH - pop_jump_if_false @exc - pop_top - pop_top - pop_top - pop_top - load_fast $__ddgen - load_attr $aclose - call_function 0 - get_awaitable - load_const None - yield_from - pop_except - return_value - - exc: - pop_top - pop_top - pop_top - pop_top - load_fast $__ddgen - load_attr $athrow - load_const sys.exc_info - call_function 0 - call_function_ex 0 - get_awaitable - load_const None - yield_from - rot_four - pop_except - jump_absolute @yield - - stopiter: - dup_top - load_const StopAsyncIteration - compare_op asm.Compare.EXC_MATCH - pop_jump_if_false @propagate - pop_top - pop_top - pop_top - pop_except - load_const None - return_value - - propagate: - end_finally - load_const None - return_value - """ - ) - else: msg = "No async wrapping support for Python %d.%d" % PY[:2] raise RuntimeError(msg) diff --git a/ddtrace/internal/wrapping/context.py b/ddtrace/internal/wrapping/context.py index 2e5be4b1013..5094aabaecd 100644 --- a/ddtrace/internal/wrapping/context.py +++ b/ddtrace/internal/wrapping/context.py @@ -277,37 +277,6 @@ ) -elif sys.version_info >= (3, 8): - CONTEXT_HEAD.parse( - r""" - load_const {context} - setup_with @_except - pop_top - _except: - """ - ) - - CONTEXT_RETURN.parse( - r""" - load_const {context} - load_method $__return__ - rot_three - rot_three - call_method 1 - """ - ) - - CONTEXT_FOOT.parse( - r""" - with_cleanup_start - with_cleanup_finish - end_finally - load_const None - return_value - """ - ) - - # This is abstract and should not be used directly class BaseWrappingContext(ABC): __priority__: int = 0 diff --git a/ddtrace/internal/wrapping/generators.py b/ddtrace/internal/wrapping/generators.py index 37b762b64e5..34091a39b01 100644 --- a/ddtrace/internal/wrapping/generators.py +++ b/ddtrace/internal/wrapping/generators.py @@ -396,75 +396,6 @@ """ ) -elif PY >= (3, 8): - GENERATOR_ASSEMBLY.parse( - r""" - setup_finally @stopiter - dup_top - store_fast $__ddgen - load_attr $send - store_fast $__ddgensend - load_const next - load_fast $__ddgen - - loop: - call_function 1 - - yield: - setup_finally @genexit - yield_value - pop_block - load_fast $__ddgensend - rot_two - jump_absolute @loop - - genexit: - dup_top - load_const GeneratorExit - compare_op asm.Compare.EXC_MATCH - pop_jump_if_false @exc - pop_top - pop_top - pop_top - pop_top - load_fast $__ddgen - load_attr $close - call_function 0 - return_value - - exc: - pop_top - pop_top - pop_top - pop_top - load_fast $__ddgen - load_attr $throw - load_const sys.exc_info - call_function 0 - call_function_ex 0 - rot_four - pop_except - jump_absolute @yield - - stopiter: - dup_top - load_const StopIteration - compare_op asm.Compare.EXC_MATCH - pop_jump_if_false @propagate - pop_top - pop_top - pop_top - pop_except - load_const None - return_value - - propagate: - end_finally - load_const None - return_value - """ - ) - else: msg = "No generator wrapping support for Python %d.%d" % PY[:2] raise RuntimeError(msg)