diff options
| -rw-r--r-- | django/utils/deprecation.py | 5 | ||||
| -rw-r--r-- | docs/releases/6.0.3.txt | 3 | ||||
| -rw-r--r-- | tests/deprecation/tests.py | 4 |
3 files changed, 9 insertions, 3 deletions
diff --git a/django/utils/deprecation.py b/django/utils/deprecation.py index eea24cf94b..11a37f05bc 100644 --- a/django/utils/deprecation.py +++ b/django/utils/deprecation.py @@ -12,9 +12,8 @@ from django.utils.inspect import signature @functools.cache def django_file_prefixes(): - try: - file = django.__file__ - except AttributeError: + file = getattr(django, "__file__", None) + if file is None: return () return (os.path.dirname(file),) diff --git a/docs/releases/6.0.3.txt b/docs/releases/6.0.3.txt index 048921db8b..8777b1ef21 100644 --- a/docs/releases/6.0.3.txt +++ b/docs/releases/6.0.3.txt @@ -17,6 +17,9 @@ Bugfixes to :ref:`override<tuple-for-params>` ``as_sql()`` to accept any sequence (:ticket:`36934`). +* Fixed :exc:`TypeError` when deprecation warnings are emitted in environments + importing Django by namespace (:ticket:`36961`). + * Fixed a visual regression where fieldset legends were misaligned in the admin (:ticket:`36920`). diff --git a/tests/deprecation/tests.py b/tests/deprecation/tests.py index 2df9cc6fa2..ac610b4928 100644 --- a/tests/deprecation/tests.py +++ b/tests/deprecation/tests.py @@ -18,6 +18,10 @@ class DjangoFilePrefixesTests(SimpleTestCase): def test_no_file(self): orig_file = django.__file__ try: + # Depending on the cwd, Python might give a local checkout + # precedence over installed Django, producing None. + django.__file__ = None + self.assertEqual(django_file_prefixes(), ()) del django.__file__ self.assertEqual(django_file_prefixes(), ()) finally: |
