From d294b7679f2cb51c7231d6a7fb22e76eb74e49ec Mon Sep 17 00:00:00 2001 From: Mariusz Felisiak Date: Sat, 17 Feb 2024 08:15:59 +0100 Subject: [PATCH] Fixed #35187 -- Fixed @sensitive_variables/sensitive_post_parameters decorators crash with .pyc-only builds. Thanks Jon Janzen for the implementation idea. Thanks Marcus Hoffmann for the report. Regression in 38e391e95fe5258bc6d2467332dc9cd44ce6ba52. Backport of d1be05b3e9209fd0787841c71a95819d81061187 from main Signed-off-by: Marcus Hoffmann Upstream: https://github.com/django/django/commit/41a4bba817f139f3cfd94f04e728e046560c9a18 --- django/views/decorators/debug.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/django/views/decorators/debug.py b/django/views/decorators/debug.py index 7ea8a540de..6540fc0651 100644 --- a/django/views/decorators/debug.py +++ b/django/views/decorators/debug.py @@ -47,7 +47,6 @@ def sensitive_variables(*variables): try: file_path = inspect.getfile(wrapped_func) - _, first_file_line = inspect.getsourcelines(wrapped_func) except TypeError: # Raises for builtins or native functions. raise ValueError( f"{func.__name__} cannot safely be wrapped by " @@ -55,7 +54,8 @@ def sensitive_variables(*variables): "Python file (not a builtin or from a native extension)." ) else: - key = hash(f"{file_path}:{first_file_line}") + first_line_number = wrapped_func.__code__.co_firstlineno + key = hash(f"{file_path}:{first_line_number}") if variables: coroutine_functions_to_sensitive_variables[key] = variables -- 2.34.1