1
0
mirror of https://github.com/django/django.git synced 2025-01-03 15:06:09 +00:00

Refs #22712 -- Corrected deprecation of "all" argument in django.contrib.staticfiles.finders.find().

Features deprecated in Django 5.2 should be removed in Django 6.1.
This commit is contained in:
Mariusz Felisiak 2024-06-28 13:39:55 +02:00 committed by GitHub
parent 0fdcf1029c
commit 8719a6181e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 23 additions and 20 deletions

View File

@ -9,7 +9,7 @@ from django.core.checks import Error, Warning
from django.core.exceptions import ImproperlyConfigured from django.core.exceptions import ImproperlyConfigured
from django.core.files.storage import FileSystemStorage, Storage, default_storage from django.core.files.storage import FileSystemStorage, Storage, default_storage
from django.utils._os import safe_join from django.utils._os import safe_join
from django.utils.deprecation import RemovedInDjango60Warning from django.utils.deprecation import RemovedInDjango61Warning
from django.utils.functional import LazyObject, empty from django.utils.functional import LazyObject, empty
from django.utils.module_loading import import_string from django.utils.module_loading import import_string
@ -17,7 +17,7 @@ from django.utils.module_loading import import_string
searched_locations = [] searched_locations = []
# RemovedInDjango60Warning: When the deprecation ends, remove completely. # RemovedInDjango61Warning: When the deprecation ends, remove completely.
def _check_deprecated_find_param(class_name="", find_all=False, **kwargs): def _check_deprecated_find_param(class_name="", find_all=False, **kwargs):
method_name = "find" if not class_name else f"{class_name}.find" method_name = "find" if not class_name else f"{class_name}.find"
if "all" in kwargs: if "all" in kwargs:
@ -26,7 +26,7 @@ def _check_deprecated_find_param(class_name="", find_all=False, **kwargs):
"Passing the `all` argument to find() is deprecated. Use `find_all` " "Passing the `all` argument to find() is deprecated. Use `find_all` "
"instead." "instead."
) )
warnings.warn(msg, RemovedInDjango60Warning, stacklevel=2) warnings.warn(msg, RemovedInDjango61Warning, stacklevel=2)
# If both `find_all` and `all` were given, raise TypeError. # If both `find_all` and `all` were given, raise TypeError.
if find_all is not False: if find_all is not False:
@ -54,13 +54,13 @@ class BaseFinder:
"configured correctly." "configured correctly."
) )
# RemovedInDjango60Warning: When the deprecation ends, remove completely. # RemovedInDjango61Warning: When the deprecation ends, remove completely.
def _check_deprecated_find_param(self, **kwargs): def _check_deprecated_find_param(self, **kwargs):
return _check_deprecated_find_param( return _check_deprecated_find_param(
class_name=self.__class__.__qualname__, **kwargs class_name=self.__class__.__qualname__, **kwargs
) )
# RemovedInDjango60Warning: When the deprecation ends, replace with: # RemovedInDjango61Warning: When the deprecation ends, replace with:
# def find(self, path, find_all=False): # def find(self, path, find_all=False):
def find(self, path, find_all=False, **kwargs): def find(self, path, find_all=False, **kwargs):
""" """
@ -149,13 +149,13 @@ class FileSystemFinder(BaseFinder):
) )
return errors return errors
# RemovedInDjango60Warning: When the deprecation ends, replace with: # RemovedInDjango61Warning: When the deprecation ends, replace with:
# def find(self, path, find_all=False): # def find(self, path, find_all=False):
def find(self, path, find_all=False, **kwargs): def find(self, path, find_all=False, **kwargs):
""" """
Look for files in the extra locations as defined in STATICFILES_DIRS. Look for files in the extra locations as defined in STATICFILES_DIRS.
""" """
# RemovedInDjango60Warning. # RemovedInDjango61Warning.
if kwargs: if kwargs:
find_all = self._check_deprecated_find_param(find_all=find_all, **kwargs) find_all = self._check_deprecated_find_param(find_all=find_all, **kwargs)
matches = [] matches = []
@ -232,13 +232,13 @@ class AppDirectoriesFinder(BaseFinder):
for path in utils.get_files(storage, ignore_patterns): for path in utils.get_files(storage, ignore_patterns):
yield path, storage yield path, storage
# RemovedInDjango60Warning: When the deprecation ends, replace with: # RemovedInDjango61Warning: When the deprecation ends, replace with:
# def find(self, path, find_all=False): # def find(self, path, find_all=False):
def find(self, path, find_all=False, **kwargs): def find(self, path, find_all=False, **kwargs):
""" """
Look for files in the app directories. Look for files in the app directories.
""" """
# RemovedInDjango60Warning. # RemovedInDjango61Warning.
if kwargs: if kwargs:
find_all = self._check_deprecated_find_param(find_all=find_all, **kwargs) find_all = self._check_deprecated_find_param(find_all=find_all, **kwargs)
matches = [] matches = []
@ -287,13 +287,13 @@ class BaseStorageFinder(BaseFinder):
self.storage = self.storage() self.storage = self.storage()
super().__init__(*args, **kwargs) super().__init__(*args, **kwargs)
# RemovedInDjango60Warning: When the deprecation ends, replace with: # RemovedInDjango61Warning: When the deprecation ends, replace with:
# def find(self, path, find_all=False): # def find(self, path, find_all=False):
def find(self, path, find_all=False, **kwargs): def find(self, path, find_all=False, **kwargs):
""" """
Look for files in the default file storage, if it's local. Look for files in the default file storage, if it's local.
""" """
# RemovedInDjango60Warning. # RemovedInDjango61Warning.
if kwargs: if kwargs:
find_all = self._check_deprecated_find_param(find_all=find_all, **kwargs) find_all = self._check_deprecated_find_param(find_all=find_all, **kwargs)
try: try:
@ -336,7 +336,7 @@ class DefaultStorageFinder(BaseStorageFinder):
) )
# RemovedInDjango60Warning: When the deprecation ends, replace with: # RemovedInDjango61Warning: When the deprecation ends, replace with:
# def find(path, find_all=False): # def find(path, find_all=False):
def find(path, find_all=False, **kwargs): def find(path, find_all=False, **kwargs):
""" """
@ -345,7 +345,7 @@ def find(path, find_all=False, **kwargs):
If ``find_all`` is ``False`` (default), return the first matching If ``find_all`` is ``False`` (default), return the first matching
absolute path (or ``None`` if no match). Otherwise return a list. absolute path (or ``None`` if no match). Otherwise return a list.
""" """
# RemovedInDjango60Warning. # RemovedInDjango61Warning.
if kwargs: if kwargs:
find_all = _check_deprecated_find_param(find_all=find_all, **kwargs) find_all = _check_deprecated_find_param(find_all=find_all, **kwargs)
searched_locations[:] = [] searched_locations[:] = []

View File

@ -15,6 +15,9 @@ about each item can often be found in the release notes of two versions prior.
See the :ref:`Django 5.2 release notes <deprecated-features-5.2>` for more See the :ref:`Django 5.2 release notes <deprecated-features-5.2>` for more
details on these changes. details on these changes.
* The ``all`` keyword argument of ``django.contrib.staticfiles.finders.find()``
will be removed.
.. _deprecation-removed-in-6.0: .. _deprecation-removed-in-6.0:
6.0 6.0

View File

@ -4,7 +4,7 @@ from django.conf import settings
from django.contrib.staticfiles import finders, storage from django.contrib.staticfiles import finders, storage
from django.core.exceptions import ImproperlyConfigured from django.core.exceptions import ImproperlyConfigured
from django.test import SimpleTestCase, override_settings from django.test import SimpleTestCase, override_settings
from django.utils.deprecation import RemovedInDjango60Warning from django.utils.deprecation import RemovedInDjango61Warning
from .cases import StaticFilesTestCase from .cases import StaticFilesTestCase
from .settings import TEST_ROOT from .settings import TEST_ROOT
@ -37,7 +37,7 @@ class TestFinders:
def test_find_all_deprecated_param(self): def test_find_all_deprecated_param(self):
src, dst = self.find_all src, dst = self.find_all
with self.assertWarnsMessage(RemovedInDjango60Warning, DEPRECATION_MSG): with self.assertWarnsMessage(RemovedInDjango61Warning, DEPRECATION_MSG):
found = self.finder.find(src, all=True) found = self.finder.find(src, all=True)
found = [os.path.normcase(f) for f in found] found = [os.path.normcase(f) for f in found]
dst = [os.path.normcase(d) for d in dst] dst = [os.path.normcase(d) for d in dst]
@ -50,7 +50,7 @@ class TestFinders:
"argument 'find_all'" "argument 'find_all'"
) )
with ( with (
self.assertWarnsMessage(RemovedInDjango60Warning, DEPRECATION_MSG), self.assertWarnsMessage(RemovedInDjango61Warning, DEPRECATION_MSG),
self.assertRaisesMessage(TypeError, msg), self.assertRaisesMessage(TypeError, msg),
): ):
self.finder.find(src, find_all=True, all=True) self.finder.find(src, find_all=True, all=True)
@ -62,7 +62,7 @@ class TestFinders:
"argument 'wrong'" "argument 'wrong'"
) )
with ( with (
self.assertWarnsMessage(RemovedInDjango60Warning, DEPRECATION_MSG), self.assertWarnsMessage(RemovedInDjango61Warning, DEPRECATION_MSG),
self.assertRaisesMessage(TypeError, msg), self.assertRaisesMessage(TypeError, msg),
): ):
self.finder.find(src, all=True, wrong=1) self.finder.find(src, all=True, wrong=1)
@ -165,7 +165,7 @@ class TestMiscFinder(SimpleTestCase):
) )
def test_searched_locations_deprecated_all(self): def test_searched_locations_deprecated_all(self):
with self.assertWarnsMessage(RemovedInDjango60Warning, DEPRECATION_MSG): with self.assertWarnsMessage(RemovedInDjango61Warning, DEPRECATION_MSG):
finders.find("spam", all=True) finders.find("spam", all=True)
self.assertEqual( self.assertEqual(
finders.searched_locations, finders.searched_locations,
@ -175,7 +175,7 @@ class TestMiscFinder(SimpleTestCase):
def test_searched_locations_conflicting_params(self): def test_searched_locations_conflicting_params(self):
msg = "find() got multiple values for argument 'find_all'" msg = "find() got multiple values for argument 'find_all'"
with ( with (
self.assertWarnsMessage(RemovedInDjango60Warning, DEPRECATION_MSG), self.assertWarnsMessage(RemovedInDjango61Warning, DEPRECATION_MSG),
self.assertRaisesMessage(TypeError, msg), self.assertRaisesMessage(TypeError, msg),
): ):
finders.find("spam", find_all=True, all=True) finders.find("spam", find_all=True, all=True)
@ -183,7 +183,7 @@ class TestMiscFinder(SimpleTestCase):
def test_searched_locations_unexpected_params(self): def test_searched_locations_unexpected_params(self):
msg = "find() got an unexpected keyword argument 'wrong'" msg = "find() got an unexpected keyword argument 'wrong'"
with ( with (
self.assertWarnsMessage(RemovedInDjango60Warning, DEPRECATION_MSG), self.assertWarnsMessage(RemovedInDjango61Warning, DEPRECATION_MSG),
self.assertRaisesMessage(TypeError, msg), self.assertRaisesMessage(TypeError, msg),
): ):
finders.find("spam", all=True, wrong=1) finders.find("spam", all=True, wrong=1)