1
0
mirror of https://github.com/django/django.git synced 2024-12-22 17:16:24 +00:00

Reverted "Fixed #35564 -- Improved readability of subclass identification."

This reverts commit f0d05a747f due to a performance regression.
This commit is contained in:
Sarah Boyce 2024-06-28 13:35:58 +02:00
parent 8719a6181e
commit 8cfcf9a30e
2 changed files with 17 additions and 11 deletions

View File

@ -1,5 +1,4 @@
import collections
import contextlib
from itertools import chain
from django.apps import apps
@ -22,9 +21,10 @@ def _issubclass(cls, classinfo):
issubclass() variant that doesn't raise an exception if cls isn't a
class.
"""
with contextlib.suppress(TypeError):
try:
return issubclass(cls, classinfo)
return False
except TypeError:
return False
def _contains_subclass(class_path, candidate_paths):
@ -34,9 +34,13 @@ def _contains_subclass(class_path, candidate_paths):
"""
cls = import_string(class_path)
for path in candidate_paths:
with contextlib.suppress(ImportError, TypeError):
if issubclass(import_string(path), cls):
return True
try:
candidate_cls = import_string(path)
except ImportError:
# ImportErrors are raised elsewhere.
continue
if _issubclass(candidate_cls, cls):
return True
return False

View File

@ -1,4 +1,3 @@
import contextlib
from itertools import chain
from types import MethodType
@ -16,10 +15,13 @@ def _subclass_index(class_path, candidate_paths):
list of candidate paths. If it does not exist, return -1.
"""
cls = import_string(class_path)
for i, path in enumerate(candidate_paths):
with contextlib.suppress(ImportError, TypeError):
if issubclass(import_string(path), cls):
return i
for index, path in enumerate(candidate_paths):
try:
candidate_cls = import_string(path)
if issubclass(candidate_cls, cls):
return index
except (ImportError, TypeError):
continue
return -1