Przeglądaj źródła

Refs #23919 -- Removed some Python 2 compatibility code and comments.

Mads Jensen 8 lat temu
rodzic
commit
ed0cbc8d8b

+ 1 - 3
django/contrib/admin/checks.py

@@ -662,9 +662,7 @@ class ModelAdminChecks(BaseModelAdminChecks):
         elif not isinstance(obj.list_display_links, (list, tuple)):
             return must_be('a list, a tuple, or None', option='list_display_links', obj=obj, id='admin.E110')
         # Check only if ModelAdmin.get_list_display() isn't overridden.
-        elif obj.get_list_display.__code__ is ModelAdmin.get_list_display.__code__:
-            # Use obj.get_list_display.__func__ is ModelAdmin.get_list_display
-            # when dropping PY2.
+        elif obj.get_list_display.__func__ is ModelAdmin.get_list_display:
             return list(chain(*[
                 self._check_list_display_links_item(obj, field_name, "list_display_links[%d]" % index)
                 for index, field_name in enumerate(obj.list_display_links)

+ 0 - 7
django/contrib/admindocs/views.py

@@ -168,13 +168,6 @@ class ViewDetailView(BaseAdminDocsView):
                 # the module and class.
                 mod, klass = get_mod_func(mod)
                 return getattr(getattr(import_module(mod), klass), func)
-            except AttributeError:
-                # PY2 generates incorrect paths for views that are methods,
-                # e.g. 'mymodule.views.ViewContainer.my_view' will be
-                # listed as 'mymodule.views.my_view' because the class name
-                # can't be detected. This causes an AttributeError when
-                # trying to resolve the view.
-                return None
 
     def get_context_data(self, **kwargs):
         view = self.kwargs['view']

+ 5 - 9
django/db/models/query.py

@@ -319,10 +319,9 @@ class QuerySet:
         if self.query.distinct_fields:
             raise NotImplementedError("aggregate() + distinct(fields) not implemented.")
         for arg in args:
-            # The default_alias property may raise a TypeError, so we use
-            # a try/except construct rather than hasattr in order to remain
-            # consistent between PY2 and PY3 (hasattr would swallow
-            # the TypeError on PY2).
+            # The default_alias property raises TypeError if default_alias
+            # can't be set automatically or AttributeError if it isn't an
+            # attribute.
             try:
                 arg.default_alias
             except (AttributeError, TypeError):
@@ -880,16 +879,13 @@ class QuerySet:
         """
         annotations = OrderedDict()  # To preserve ordering of args
         for arg in args:
-            # The default_alias property may raise a TypeError, so we use
-            # a try/except construct rather than hasattr in order to remain
-            # consistent between PY2 and PY3 (hasattr would swallow
-            # the TypeError on PY2).
+            # The default_alias property may raise a TypeError.
             try:
                 if arg.default_alias in kwargs:
                     raise ValueError("The named annotation '%s' conflicts with the "
                                      "default name for another annotation."
                                      % arg.default_alias)
-            except (AttributeError, TypeError):
+            except TypeError:
                 raise TypeError("Complex annotations require an alias")
             annotations[arg.default_alias] = arg
         annotations.update(kwargs)