New submission from diana <diana.joan.cla...@gmail.com>: There are currently three supported optimization levels (0, 1, and 2). Briefly summarized, they do the following.
0: no optimizations 1: remove assert statements and __debug__ blocks 2: remove docstrings, assert statements, and __debug__ blocks The current compile() tests for optimization levels in Lib/test/test_builtin.py covers the assert and docstring cases, but it doesn't test that __debug__ code blocks are included or excluded based on the optimization level. For example, if you change Python/compile.c to always include __debug__ blocks regardless of the optimization level, the existing compile() tests will continue to pass. $ git diff Python/compile.c diff --git a/Python/compile.c b/Python/compile.c index 280ddc39e3..d65df098bb 100644 --- a/Python/compile.c +++ b/Python/compile.c @@ -4143,7 +4143,7 @@ expr_constant(struct compiler *c, expr_ty e) /* optimize away names that can't be reassigned */ id = PyUnicode_AsUTF8(e->v.Name.id); if (id && strcmp(id, "__debug__") == 0) - return !c->c_optimize; + return 1; return -1; case NameConstant_kind: { PyObject *o = e->v.NameConstant.value; ---------- messages: 303465 nosy: diana priority: normal severity: normal status: open title: unit test for optimization levels does not cover __debug__ case type: enhancement _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue31657> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com