summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--django/utils/deprecation.py5
-rw-r--r--docs/releases/6.0.3.txt3
-rw-r--r--tests/deprecation/tests.py4
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: