diff options
| author | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2024-01-26 12:45:07 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-01-26 12:45:07 +0100 |
| commit | 305757aec19c9d5111e4d76095ae0acd66163e4b (patch) | |
| tree | 04aa017e66c06b3b19cb466ed4e1d73cd871523d /django | |
| parent | 3f6d939c62efd967f548c27a265748cc2cc47ca5 (diff) | |
Applied Black's 2024 stable style.
https://github.com/psf/black/releases/tag/24.1.0
Diffstat (limited to 'django')
112 files changed, 306 insertions, 164 deletions
diff --git a/django/__main__.py b/django/__main__.py index 8b96e91ea8..7415143848 100644 --- a/django/__main__.py +++ b/django/__main__.py @@ -3,6 +3,7 @@ Invokes django-admin when the django module is run as a script. Example: python -m django check """ + from django.core import management if __name__ == "__main__": diff --git a/django/contrib/admin/filters.py b/django/contrib/admin/filters.py index 06dedf8727..675c4a5d49 100644 --- a/django/contrib/admin/filters.py +++ b/django/contrib/admin/filters.py @@ -5,6 +5,7 @@ Filters are specified in models with the "list_filter" option. Each filter subclass knows how to display a filter for a field that passes a certain test -- e.g. being a DateField or ForeignKey. """ + import datetime from django.contrib.admin.exceptions import NotRegistered diff --git a/django/contrib/admin/options.py b/django/contrib/admin/options.py index e3703f5866..d97597fe66 100644 --- a/django/contrib/admin/options.py +++ b/django/contrib/admin/options.py @@ -1759,9 +1759,9 @@ class ModelAdmin(BaseModelAdmin): has_delete_permission = inline.has_delete_permission(request, obj) else: # Disable all edit-permissions, and override formset settings. - has_add_permission = ( - has_change_permission - ) = has_delete_permission = False + has_add_permission = has_change_permission = has_delete_permission = ( + False + ) formset.extra = formset.max_num = 0 has_view_permission = inline.has_view_permission(request, obj) prepopulated = dict(inline.get_prepopulated_fields(request, obj)) @@ -1896,9 +1896,11 @@ class ModelAdmin(BaseModelAdmin): form, list(fieldsets), # Clear prepopulated fields on a view-only form to avoid a crash. - self.get_prepopulated_fields(request, obj) - if add or self.has_change_permission(request, obj) - else {}, + ( + self.get_prepopulated_fields(request, obj) + if add or self.has_change_permission(request, obj) + else {} + ), readonly_fields, model_admin=self, ) diff --git a/django/contrib/admin/templatetags/admin_list.py b/django/contrib/admin/templatetags/admin_list.py index 2dcdf62afb..0c32290b6c 100644 --- a/django/contrib/admin/templatetags/admin_list.py +++ b/django/contrib/admin/templatetags/admin_list.py @@ -171,9 +171,9 @@ def result_headers(cl): "url_primary": cl.get_query_string({ORDER_VAR: ".".join(o_list_primary)}), "url_remove": cl.get_query_string({ORDER_VAR: ".".join(o_list_remove)}), "url_toggle": cl.get_query_string({ORDER_VAR: ".".join(o_list_toggle)}), - "class_attrib": format_html(' class="{}"', " ".join(th_classes)) - if th_classes - else "", + "class_attrib": ( + format_html(' class="{}"', " ".join(th_classes)) if th_classes else "" + ), } @@ -270,9 +270,11 @@ def items_for_result(cl, result, form): link_or_text = format_html( '<a href="{}"{}>{}</a>', url, - format_html(' data-popup-opener="{}"', value) - if cl.is_popup - else "", + ( + format_html(' data-popup-opener="{}"', value) + if cl.is_popup + else "" + ), result_repr, ) diff --git a/django/contrib/admin/widgets.py b/django/contrib/admin/widgets.py index 3352e75e79..216b87671b 100644 --- a/django/contrib/admin/widgets.py +++ b/django/contrib/admin/widgets.py @@ -1,6 +1,7 @@ """ Form Widget classes specific to the Django admin site. """ + import copy import json diff --git a/django/contrib/auth/base_user.py b/django/contrib/auth/base_user.py index ccfe19fcc1..0c9538d69d 100644 --- a/django/contrib/auth/base_user.py +++ b/django/contrib/auth/base_user.py @@ -2,6 +2,7 @@ This module allows importing AbstractBaseUser even when django.contrib.auth is not in INSTALLED_APPS. """ + import unicodedata from django.conf import settings diff --git a/django/contrib/auth/management/__init__.py b/django/contrib/auth/management/__init__.py index ad31a6e68f..b29a980cb2 100644 --- a/django/contrib/auth/management/__init__.py +++ b/django/contrib/auth/management/__init__.py @@ -1,6 +1,7 @@ """ Creates permissions for all installed apps that need permissions. """ + import getpass import unicodedata diff --git a/django/contrib/auth/management/commands/createsuperuser.py b/django/contrib/auth/management/commands/createsuperuser.py index 6d650cca67..75ef68ff68 100644 --- a/django/contrib/auth/management/commands/createsuperuser.py +++ b/django/contrib/auth/management/commands/createsuperuser.py @@ -1,6 +1,7 @@ """ Management utility to create superusers. """ + import getpass import os import sys @@ -271,15 +272,19 @@ class Command(BaseCommand): return "%s%s%s: " % ( capfirst(field.verbose_name), " (leave blank to use '%s')" % default if default else "", - " (%s.%s)" - % ( - field.remote_field.model._meta.object_name, - field.m2m_target_field_name() - if field.many_to_many - else field.remote_field.field_name, - ) - if field.remote_field - else "", + ( + " (%s.%s)" + % ( + field.remote_field.model._meta.object_name, + ( + field.m2m_target_field_name() + if field.many_to_many + else field.remote_field.field_name + ), + ) + if field.remote_field + else "" + ), ) @cached_property diff --git a/django/contrib/gis/db/backends/oracle/models.py b/django/contrib/gis/db/backends/oracle/models.py index f06f73148e..af749c3435 100644 --- a/django/contrib/gis/db/backends/oracle/models.py +++ b/django/contrib/gis/db/backends/oracle/models.py @@ -7,6 +7,7 @@ For example, the `USER_SDO_GEOM_METADATA` is used for the GeometryColumns model and the `SDO_COORD_REF_SYS` is used for the SpatialRefSys model. """ + from django.contrib.gis.db import models from django.contrib.gis.db.backends.base.models import SpatialRefSysMixin diff --git a/django/contrib/gis/db/backends/oracle/operations.py b/django/contrib/gis/db/backends/oracle/operations.py index ed86985cf8..eb86dc39de 100644 --- a/django/contrib/gis/db/backends/oracle/operations.py +++ b/django/contrib/gis/db/backends/oracle/operations.py @@ -7,6 +7,7 @@ support for an internal JVM, and Java libraries are required to use the WKT constructors. """ + import re from django.contrib.gis.db import models diff --git a/django/contrib/gis/db/backends/postgis/adapter.py b/django/contrib/gis/db/backends/postgis/adapter.py index c95f903253..c9715e1756 100644 --- a/django/contrib/gis/db/backends/postgis/adapter.py +++ b/django/contrib/gis/db/backends/postgis/adapter.py @@ -1,6 +1,7 @@ """ This object provides quoting for GEOS geometries into PostgreSQL/PostGIS. """ + from django.contrib.gis.db.backends.postgis.pgraster import to_pgraster from django.contrib.gis.geos import GEOSGeometry from django.db.backends.postgresql.psycopg_any import sql diff --git a/django/contrib/gis/db/backends/postgis/const.py b/django/contrib/gis/db/backends/postgis/const.py index 2f4393d25e..8bc16a1abb 100644 --- a/django/contrib/gis/db/backends/postgis/const.py +++ b/django/contrib/gis/db/backends/postgis/const.py @@ -1,6 +1,7 @@ """ PostGIS to GDAL conversion constant definitions """ + # Lookup to convert pixel type values from GDAL to PostGIS GDAL_TO_POSTGIS = [None, 4, 6, 5, 8, 7, 10, 11, None, None, None, None] diff --git a/django/contrib/gis/db/backends/postgis/models.py b/django/contrib/gis/db/backends/postgis/models.py index b7b568274a..e35ef75ce9 100644 --- a/django/contrib/gis/db/backends/postgis/models.py +++ b/django/contrib/gis/db/backends/postgis/models.py @@ -1,6 +1,7 @@ """ The GeometryColumns and SpatialRefSys models for the PostGIS backend. """ + from django.contrib.gis.db.backends.base.models import SpatialRefSysMixin from django.db import models diff --git a/django/contrib/gis/db/backends/spatialite/models.py b/django/contrib/gis/db/backends/spatialite/models.py index 7cc98ae126..0f5f7b55ef 100644 --- a/django/contrib/gis/db/backends/spatialite/models.py +++ b/django/contrib/gis/db/backends/spatialite/models.py @@ -1,6 +1,7 @@ """ The GeometryColumns and SpatialRefSys models for the SpatiaLite backend. """ + from django.contrib.gis.db.backends.base.models import SpatialRefSysMixin from django.db import models diff --git a/django/contrib/gis/db/backends/spatialite/operations.py b/django/contrib/gis/db/backends/spatialite/operations.py index 8a3d84b5de..3d10a53641 100644 --- a/django/contrib/gis/db/backends/spatialite/operations.py +++ b/django/contrib/gis/db/backends/spatialite/operations.py @@ -2,6 +2,7 @@ SQL functions reference lists: https://www.gaia-gis.it/gaia-sins/spatialite-sql-4.3.0.html """ + from django.contrib.gis.db import models from django.contrib.gis.db.backends.base.operations import BaseSpatialOperations from django.contrib.gis.db.backends.spatialite.adapter import SpatiaLiteAdapter diff --git a/django/contrib/gis/db/models/functions.py b/django/contrib/gis/db/models/functions.py index 419b64c5e8..acbaa5ffc0 100644 --- a/django/contrib/gis/db/models/functions.py +++ b/django/contrib/gis/db/models/functions.py @@ -127,9 +127,11 @@ class SQLiteDecimalToFloatMixin: copy = self.copy() copy.set_source_expressions( [ - Value(float(expr.value)) - if hasattr(expr, "value") and isinstance(expr.value, Decimal) - else expr + ( + Value(float(expr.value)) + if hasattr(expr, "value") and isinstance(expr.value, Decimal) + else expr + ) for expr in copy.get_source_expressions() ] ) @@ -349,9 +351,9 @@ class Distance(DistanceResultMixin, OracleToleranceMixin, GeoFunc): def as_sqlite(self, compiler, connection, **extra_context): if self.geo_field.geodetic(connection): # SpatiaLite returns NULL instead of zero on geodetic coordinates - extra_context[ - "template" - ] = "COALESCE(%(function)s(%(expressions)s, %(spheroid)s), 0)" + extra_context["template"] = ( + "COALESCE(%(function)s(%(expressions)s, %(spheroid)s), 0)" + ) extra_context["spheroid"] = int(bool(self.spheroid)) return super().as_sql(compiler, connection, **extra_context) diff --git a/django/contrib/gis/db/models/proxy.py b/django/contrib/gis/db/models/proxy.py index 4db365dc16..b415e147fc 100644 --- a/django/contrib/gis/db/models/proxy.py +++ b/django/contrib/gis/db/models/proxy.py @@ -5,6 +5,7 @@ objects corresponding to geographic model fields. Thanks to Robert Coup for providing this functionality (see #4322). """ + from django.db.models.query_utils import DeferredAttribute diff --git a/django/contrib/gis/db/models/sql/conversion.py b/django/contrib/gis/db/models/sql/conversion.py index be712319fb..7802b2dd1e 100644 --- a/django/contrib/gis/db/models/sql/conversion.py +++ b/django/contrib/gis/db/models/sql/conversion.py @@ -2,6 +2,7 @@ This module holds simple classes to convert geospatial values from the database. """ + from decimal import Decimal from django.contrib.gis.measure import Area, Distance diff --git a/django/contrib/gis/gdal/__init__.py b/django/contrib/gis/gdal/__init__.py index 9ed6e31156..e63808d39d 100644 --- a/django/contrib/gis/gdal/__init__.py +++ b/django/contrib/gis/gdal/__init__.py @@ -25,6 +25,7 @@ by setting `GDAL_LIBRARY_PATH` in your settings with the path to the GDAL C library on your system. """ + from django.contrib.gis.gdal.datasource import DataSource from django.contrib.gis.gdal.driver import Driver from django.contrib.gis.gdal.envelope import Envelope diff --git a/django/contrib/gis/gdal/datasource.py b/django/contrib/gis/gdal/datasource.py index 8900777117..2ce859ad13 100644 --- a/django/contrib/gis/gdal/datasource.py +++ b/django/contrib/gis/gdal/datasource.py @@ -33,6 +33,7 @@ # OFTReal returns floats, all else returns string. val = field.value """ + from pathlib import Path from django.contrib.gis.gdal.base import GDALBase diff --git a/django/contrib/gis/gdal/envelope.py b/django/contrib/gis/gdal/envelope.py index 4c2c1e4a1a..05832bd7cc 100644 --- a/django/contrib/gis/gdal/envelope.py +++ b/django/contrib/gis/gdal/envelope.py @@ -10,6 +10,7 @@ | | Lower left (min_x, min_y) o----------+ """ + from ctypes import Structure, c_double from django.contrib.gis.gdal.error import GDALException diff --git a/django/contrib/gis/gdal/geometries.py b/django/contrib/gis/gdal/geometries.py index f4ba5816a2..4c1f74d4b0 100644 --- a/django/contrib/gis/gdal/geometries.py +++ b/django/contrib/gis/gdal/geometries.py @@ -38,6 +38,7 @@ >>> print(gt1 == 3, gt1 == 'Polygon') # Equivalence works w/non-OGRGeomType objects True True """ + import sys import warnings from binascii import b2a_hex diff --git a/django/contrib/gis/gdal/prototypes/ds.py b/django/contrib/gis/gdal/prototypes/ds.py index e3ef2699e9..71148f1b55 100644 --- a/django/contrib/gis/gdal/prototypes/ds.py +++ b/django/contrib/gis/gdal/prototypes/ds.py @@ -3,6 +3,7 @@ related data structures. OGR_Dr_*, OGR_DS_*, OGR_L_*, OGR_F_*, OGR_Fld_* routines are relevant here. """ + from ctypes import POINTER, c_char_p, c_double, c_int, c_long, c_uint, c_void_p from django.contrib.gis.gdal.envelope import OGREnvelope diff --git a/django/contrib/gis/gdal/prototypes/errcheck.py b/django/contrib/gis/gdal/prototypes/errcheck.py index 52bb7cb083..d37e81cdf6 100644 --- a/django/contrib/gis/gdal/prototypes/errcheck.py +++ b/django/contrib/gis/gdal/prototypes/errcheck.py @@ -2,6 +2,7 @@ This module houses the error-checking routines used by the GDAL ctypes prototypes. """ + from ctypes import c_void_p, string_at from django.contrib.gis.gdal.error import GDALException, SRSException, check_err diff --git a/django/contrib/gis/gdal/prototypes/generation.py b/django/contrib/gis/gdal/prototypes/generation.py index 230e56f665..4d34a96e70 100644 --- a/django/contrib/gis/gdal/prototypes/generation.py +++ b/django/contrib/gis/gdal/prototypes/generation.py @@ -2,6 +2,7 @@ This module contains functions that generate ctypes prototypes for the GDAL routines. """ + from ctypes import POINTER, c_bool, c_char_p, c_double, c_int, c_int64, c_void_p from functools import partial diff --git a/django/contrib/gis/gdal/prototypes/raster.py b/django/contrib/gis/gdal/prototypes/raster.py index 17ee4a1926..d1dd9ec4e2 100644 --- a/django/contrib/gis/gdal/prototypes/raster.py +++ b/django/contrib/gis/gdal/prototypes/raster.py @@ -2,6 +2,7 @@ This module houses the ctypes function prototypes for GDAL DataSource (raster) related data structures. """ + from ctypes import POINTER, c_bool, c_char_p, c_double, c_int, c_void_p from functools import partial diff --git a/django/contrib/gis/gdal/raster/const.py b/django/contrib/gis/gdal/raster/const.py index dccc9cfab4..a1ab62f37a 100644 --- a/django/contrib/gis/gdal/raster/const.py +++ b/django/contrib/gis/gdal/raster/const.py @@ -1,6 +1,7 @@ """ GDAL - Constant definitions """ + from ctypes import ( c_double, c_float, diff --git a/django/contrib/gis/gdal/srs.py b/django/contrib/gis/gdal/srs.py index 9417c6684d..0a8d95c1fc 100644 --- a/django/contrib/gis/gdal/srs.py +++ b/django/contrib/gis/gdal/srs.py @@ -26,6 +26,7 @@ >>> print(srs.name) NAD83 / Texas South Central """ + from ctypes import byref, c_char_p, c_int from enum import IntEnum from types import NoneType diff --git a/django/contrib/gis/geos/__init__.py b/django/contrib/gis/geos/__init__.py index 27de1ca8e6..f50cd19856 100644 --- a/django/contrib/gis/geos/__init__.py +++ b/django/contrib/gis/geos/__init__.py @@ -2,6 +2,7 @@ The GeoDjango GEOS module. Please consult the GeoDjango documentation for more details: https://docs.djangoproject.com/en/dev/ref/contrib/gis/geos/ """ + from .collections import ( # NOQA GeometryCollection, MultiLineString, diff --git a/django/contrib/gis/geos/collections.py b/django/contrib/gis/geos/collections.py index abfec8af3d..35262a5622 100644 --- a/django/contrib/gis/geos/collections.py +++ b/django/contrib/gis/geos/collections.py @@ -2,6 +2,7 @@ This module houses the Geometry Collection objects: GeometryCollection, MultiPoint, MultiLineString, and MultiPolygon """ + from django.contrib.gis.geos import prototypes as capi from django.contrib.gis.geos.geometry import GEOSGeometry, LinearGeometryMixin from django.contrib.gis.geos.libgeos import GEOM_PTR diff --git a/django/contrib/gis/geos/coordseq.py b/django/contrib/gis/geos/coordseq.py index 0ff4ecb2e5..15400e08fe 100644 --- a/django/contrib/gis/geos/coordseq.py +++ b/django/contrib/gis/geos/coordseq.py @@ -3,6 +3,7 @@ by GEOSGeometry to house the actual coordinates of the Point, LineString, and LinearRing geometries. """ + from ctypes import byref, c_byte, c_double, c_uint from django.contrib.gis.geos import prototypes as capi diff --git a/django/contrib/gis/geos/geometry.py b/django/contrib/gis/geos/geometry.py index 00b36af0a6..8bbe2c264a 100644 --- a/django/contrib/gis/geos/geometry.py +++ b/django/contrib/gis/geos/geometry.py @@ -2,6 +2,7 @@ This module contains the 'base' GEOSGeometry object -- all GEOS Geometries inherit from this object. """ + import re from ctypes import addressof, byref, c_double diff --git a/django/contrib/gis/geos/io.py b/django/contrib/gis/geos/io.py index d7898065f0..8dd3f289e6 100644 --- a/django/contrib/gis/geos/io.py +++ b/django/contrib/gis/geos/io.py @@ -3,6 +3,7 @@ Module that holds classes for performing I/O operations on GEOS geometry objects. Specifically, this has Python implementations of WKB/WKT reader and writer classes. """ + from django.contrib.gis.geos.geometry import GEOSGeometry from django.contrib.gis.geos.prototypes.io import ( WKBWriter, diff --git a/django/contrib/gis/geos/libgeos.py b/django/contrib/gis/geos/libgeos.py index 1121b4f715..b883c6c090 100644 --- a/django/contrib/gis/geos/libgeos.py +++ b/django/contrib/gis/geos/libgeos.py @@ -6,6 +6,7 @@ This module also houses GEOS Pointer utilities, including get_pointer_arr(), and GEOM_PTR. """ + import logging import os from ctypes import CDLL, CFUNCTYPE, POINTER, Structure, c_char_p diff --git a/django/contrib/gis/geos/prototypes/errcheck.py b/django/contrib/gis/geos/prototypes/errcheck.py index a527f513a7..42b24c2891 100644 --- a/django/contrib/gis/geos/prototypes/errcheck.py +++ b/django/contrib/gis/geos/prototypes/errcheck.py @@ -1,6 +1,7 @@ """ Error checking functions for GEOS ctypes prototype functions. """ + from ctypes import c_void_p, string_at from django.contrib.gis.geos.error import GEOSException diff --git a/django/contrib/gis/geos/prototypes/misc.py b/django/contrib/gis/geos/prototypes/misc.py index fccd0ecc9e..bd5859e79b 100644 --- a/django/contrib/gis/geos/prototypes/misc.py +++ b/django/contrib/gis/geos/prototypes/misc.py @@ -2,6 +2,7 @@ This module is for the miscellaneous GEOS routines, particularly the ones that return the area, distance, and length. """ + from ctypes import POINTER, c_double, c_int from django.contrib.gis.geos.libgeos import GEOM_PTR, GEOSFuncFactory diff --git a/django/contrib/gis/geos/prototypes/predicates.py b/django/contrib/gis/geos/prototypes/predicates.py index 32b790173a..dd07cbfb26 100644 --- a/django/contrib/gis/geos/prototypes/predicates.py +++ b/django/contrib/gis/geos/prototypes/predicates.py @@ -2,6 +2,7 @@ This module houses the GEOS ctypes prototype functions for the unary and binary predicate operations on geometries. """ + from ctypes import c_byte, c_char_p, c_double from django.contrib.gis.geos.libgeos import GEOM_PTR, GEOSFuncFactory diff --git a/django/contrib/gis/geos/prototypes/topology.py b/django/contrib/gis/geos/prototypes/topology.py index e61eae964a..9323bb2d16 100644 --- a/django/contrib/gis/geos/prototypes/topology.py +++ b/django/contrib/gis/geos/prototypes/topology.py @@ -2,6 +2,7 @@ This module houses the GEOS ctypes prototype functions for the topological operations on geometries. """ + from ctypes import c_double, c_int from django.contrib.gis.geos.libgeos import GEOM_PTR, GEOSFuncFactory diff --git a/django/contrib/gis/utils/__init__.py b/django/contrib/gis/utils/__init__.py index 12f032c665..f42fa90226 100644 --- a/django/contrib/gis/utils/__init__.py +++ b/django/contrib/gis/utils/__init__.py @@ -1,6 +1,7 @@ """ This module contains useful utilities for GeoDjango. """ + from django.contrib.gis.utils.ogrinfo import ogrinfo from django.contrib.gis.utils.ogrinspect import mapping, ogrinspect from django.contrib.gis.utils.srs import add_srs_entry diff --git a/django/contrib/gis/utils/ogrinspect.py b/django/contrib/gis/utils/ogrinspect.py index 40ca0cb461..76c8bfbcfa 100644 --- a/django/contrib/gis/utils/ogrinspect.py +++ b/django/contrib/gis/utils/ogrinspect.py @@ -3,6 +3,7 @@ This module is for inspecting OGR data sources and generating either models for GeoDjango and/or mapping dictionaries for use with the `LayerMapping` utility. """ + from django.contrib.gis.gdal import DataSource from django.contrib.gis.gdal.field import ( OFTDate, diff --git a/django/contrib/postgres/search.py b/django/contrib/postgres/search.py index 936709c2f8..4d279857c6 100644 --- a/django/contrib/postgres/search.py +++ b/django/contrib/postgres/search.py @@ -116,9 +116,11 @@ class SearchVector(SearchVectorCombinable, Func): clone.set_source_expressions( [ Coalesce( - expression - if isinstance(expression.output_field, (CharField, TextField)) - else Cast(expression, TextField()), + ( + expression + if isinstance(expression.output_field, (CharField, TextField)) + else Cast(expression, TextField()) + ), Value(""), ) for expression in clone.get_source_expressions() diff --git a/django/contrib/sessions/base_session.py b/django/contrib/sessions/base_session.py index 603d2fe12c..8809dd36f7 100644 --- a/django/contrib/sessions/base_session.py +++ b/django/contrib/sessions/base_session.py @@ -2,6 +2,7 @@ This module allows importing AbstractBaseSession even when django.contrib.sessions is not in INSTALLED_APPS. """ + from django.db import models from django.utils.translation import gettext_lazy as _ diff --git a/django/contrib/staticfiles/views.py b/django/contrib/staticfiles/views.py index 83d04d4cec..3fb2677322 100644 --- a/django/contrib/staticfiles/views.py +++ b/django/contrib/staticfiles/views.py @@ -3,6 +3,7 @@ Views and functions for serving static files. These are only to be used during development, and SHOULD NOT be used in a production setting. """ + import os import posixpath diff --git a/django/core/cache/__init__.py b/django/core/cache/__init__.py index eb7fa5b2e9..444d958e68 100644 --- a/django/core/cache/__init__.py +++ b/django/core/cache/__init__.py @@ -12,6 +12,7 @@ object. See docs/topics/cache.txt for information on the public API. """ + from django.core import signals from django.core.cache.backends.base import ( BaseCache, diff --git a/django/core/exceptions.py b/django/core/exceptions.py index 2a2288ff4d..31c18ee7e1 100644 --- a/django/core/exceptions.py +++ b/django/core/exceptions.py @@ -1,6 +1,7 @@ """ Global Django exception and warning classes. """ + import operator from django.utils.hashable import make_hashable diff --git a/django/core/files/images.py b/django/core/files/images.py index 6a603f24fc..7c1532ac8f 100644 --- a/django/core/files/images.py +++ b/django/core/files/images.py @@ -3,6 +3,7 @@ Utility functions for handling images. Requires Pillow as you might imagine. """ + import struct import zlib diff --git a/django/core/files/locks.py b/django/core/files/locks.py index c0f471f87d..a7a7a22dce 100644 --- a/django/core/files/locks.py +++ b/django/core/files/locks.py @@ -16,6 +16,7 @@ Example Usage:: ... locks.lock(f, locks.LOCK_EX) ... f.write('Django') """ + import os __all__ = ("LOCK_EX", "LOCK_SH", "LOCK_NB", "lock", "unlock") diff --git a/django/core/files/uploadhandler.py b/django/core/files/uploadhandler.py index b6c185e8fc..ab86f7fede 100644 --- a/django/core/files/uploadhandler.py +++ b/django/core/files/uploadhandler.py @@ -1,6 +1,7 @@ """ Base file upload handler classes, and the built-in concrete subclasses """ + import os from io import BytesIO diff --git a/django/core/mail/__init__.py b/django/core/mail/__init__.py index dc63e8702c..676326697b 100644 --- a/django/core/mail/__init__.py +++ b/django/core/mail/__init__.py @@ -1,6 +1,7 @@ """ Tools for sending email. """ + from django.conf import settings # Imported for backwards compatibility and for the sake diff --git a/django/core/mail/backends/console.py b/django/core/mail/backends/console.py index ee5dd28504..2d7c778cc1 100644 --- a/django/core/mail/backends/console.py +++ b/django/core/mail/backends/console.py @@ -1,6 +1,7 @@ """ Email backend that writes messages to console instead of sending them. """ + import sys import threading diff --git a/django/core/mail/backends/locmem.py b/django/core/mail/backends/locmem.py index 344350e891..f5473da952 100644 --- a/django/core/mail/backends/locmem.py +++ b/django/core/mail/backends/locmem.py @@ -1,6 +1,7 @@ """ Backend for test environment. """ + import copy from django.core import mail diff --git a/django/core/mail/backends/smtp.py b/django/core/mail/backends/smtp.py index 1ee48269ae..6820148ac1 100644 --- a/django/core/mail/backends/smtp.py +++ b/django/core/mail/backends/smtp.py @@ -1,4 +1,5 @@ """SMTP email backend class.""" + import smtplib import ssl import threading diff --git a/django/core/management/base.py b/django/core/management/base.py index 631c761c00..4c47e1c6e5 100644 --- a/django/core/management/base.py +++ b/django/core/management/base.py @@ -2,6 +2,7 @@ Base classes for writing management commands (named commands which can be executed through ``django-admin`` or ``manage.py``). """ + import argparse import os import sys @@ -528,9 +529,11 @@ class BaseCommand: if issues: visible_issue_count += len(issues) formatted = ( - self.style.ERROR(str(e)) - if e.is_serious() - else self.style.WARNING(str(e)) + ( + self.style.ERROR(str(e)) + if e.is_serious() + else self.style.WARNING(str(e)) + ) for e in issues ) formatted = "\n".join(sorted(formatted)) @@ -543,11 +546,15 @@ class BaseCommand: if visible_issue_count: footer += "\n" footer += "System check identified %s (%s silenced)." % ( - "no issues" - if visible_issue_count == 0 - else "1 issue" - if visible_issue_count == 1 - else "%s issues" % visible_issue_count, + ( + "no issues" + if visible_issue_count == 0 + else ( + "1 issue" + if visible_issue_count == 1 + else "%s issues" % visible_issue_count + ) + ), len(all_issues) - visible_issue_count, ) diff --git a/django/core/serializers/base.py b/django/core/serializers/base.py index 20dffac05f..1fbca9244b 100644 --- a/django/core/serializers/base.py +++ b/django/core/serializers/base.py @@ -1,6 +1,7 @@ """ Module for abstract serializer/unserializer base classes. """ + from io import StringIO from django.core.exceptions import ObjectDoesNotExist diff --git a/django/core/serializers/xml_serializer.py b/django/core/serializers/xml_serializer.py index 3f9955aa23..16b69770f6 100644 --- a/django/core/serializers/xml_serializer.py +++ b/django/core/serializers/xml_serializer.py @@ -1,6 +1,7 @@ """ XML serializer. """ + import json from xml.dom import pulldom from xml.sax import handler diff --git a/django/db/backends/base/schema.py b/django/db/backends/base/schema.py index f01abf46b0..242083b850 100644 --- a/django/db/backends/base/schema.py +++ b/django/db/backends/base/schema.py @@ -724,9 +724,9 @@ class BaseDatabaseSchemaEditor: namespace, _ = split_identifier(model._meta.db_table) definition += " " + self.sql_create_column_inline_fk % { "name": self._fk_constraint_name(model, field, constraint_suffix), - "namespace": "%s." % self.quote_name(namespace) - if namespace - else "", + "namespace": ( + "%s." % self.quote_name(namespace) if namespace else "" + ), "column": self.quote_name(field.column), "to_table": self.quote_name(to_table), "to_column": self.quote_name(to_column), @@ -1919,11 +1919,13 @@ class BaseDatabaseSchemaEditor: """Return all constraint names matching the columns and conditions.""" if column_names is not None: column_names = [ - self.connection.introspection.identifier_converter( - truncate_name(name, self.connection.ops.max_name_length()) + ( + self.connection.introspection.identifier_converter( + truncate_name(name, self.connection.ops.max_name_length()) + ) + if self.connection.features.truncates_names + else self.connection.introspection.identifier_converter(name) ) - if self.connection.features.truncates_names - else self.connection.introspection.identifier_converter(name) for name in column_names ] with self.connection.cursor() as cursor: diff --git a/django/db/backends/ddl_references.py b/django/db/backends/ddl_references.py index 412d07a993..75787ef8ab 100644 --- a/django/db/backends/ddl_references.py +++ b/django/db/backends/ddl_references.py @@ -2,6 +2,7 @@ Helpers to manipulate deferred DDL statements that might need to be adjusted or discarded within when executing a migration. """ + from copy import deepcopy diff --git a/django/db/backends/mysql/base.py b/django/db/backends/mysql/base.py index f36139881d..b8d2d09c94 100644 --- a/django/db/backends/mysql/base.py +++ b/django/db/backends/mysql/base.py @@ -3,6 +3,7 @@ MySQL database backend for Django. Requires mysqlclient: https://pypi.org/project/mysqlclient/ """ + from django.core.exceptions import ImproperlyConfigured from django.db import IntegrityError from django.db.backends import utils as backend_utils diff --git a/django/db/backends/oracle/base.py b/django/db/backends/oracle/base.py index 2d91468d25..f626c4d2d4 100644 --- a/django/db/backends/oracle/base.py +++ b/django/db/backends/oracle/base.py @@ -3,6 +3,7 @@ Oracle database backend for Django. Requires oracledb: https://oracle.github.io/python-oracledb/ """ + import datetime import decimal import os diff --git a/django/db/backends/oracle/creation.py b/django/db/backends/oracle/creation.py index df773bff8c..b0a5177728 100644 --- a/django/db/backends/oracle/creation.py +++ b/django/db/backends/oracle/creation.py @@ -133,20 +133,20 @@ class DatabaseCreation(BaseDatabaseCreation): credentials in the SAVED_USER/SAVED_PASSWORD key in the settings dict. """ real_settings = settings.DATABASES[self.connection.alias] - real_settings["SAVED_USER"] = self.connection.settings_dict[ - "SAVED_USER" - ] = self.connection.settings_dict["USER"] + real_settings["SAVED_USER"] = self.connection.settings_dict["SAVED_USER"] = ( + self.connection.settings_dict["USER"] + ) real_settings["SAVED_PASSWORD"] = self.connection.settings_dict[ "SAVED_PASSWORD" ] = self.connection.settings_dict["PASSWORD"] real_test_settings = real_settings["TEST"] test_settings = self.connection.settings_dict["TEST"] - real_test_settings["USER"] = real_settings["USER"] = test_settings[ - "USER" - ] = self.connection.settings_dict["USER"] = parameters["user"] - real_settings["PASSWORD"] = self.connection.settings_dict[ - "PASSWORD" - ] = parameters["password"] + real_test_settings["USER"] = real_settings["USER"] = test_settings["USER"] = ( + self.connection.settings_dict["USER"] + ) = parameters["user"] + real_settings["PASSWORD"] = self.connection.settings_dict["PASSWORD"] = ( + parameters["password"] + ) def set_as_test_mirror(self, primary_settings_dict): """ diff --git a/django/db/backends/postgresql/base.py b/django/db/backends/postgresql/base.py index cba89e0cc7..8349d8f310 100644 --- a/django/db/backends/postgresql/base.py +++ b/django/db/backends/postgresql/base.py @@ -226,9 +226,11 @@ class DatabaseWrapper(BaseDatabaseWrapper): server_side_binding = conn_params.pop("server_side_binding", None) conn_params.setdefault( "cursor_factory", - ServerBindingCursor - if is_psycopg3 and server_side_binding is True - else Cursor, + ( + ServerBindingCursor + if is_psycopg3 and server_side_binding is True + else Cursor + ), ) if settings_dict["USER"]: conn_params["user"] = settings_dict["USER"] diff --git a/django/db/backends/postgresql/schema.py b/django/db/backends/postgresql/schema.py index 5dc93a27d0..842830be30 100644 --- a/django/db/backends/postgresql/schema.py +++ b/django/db/backends/postgresql/schema.py @@ -267,9 +267,9 @@ class DatabaseSchemaEditor(BaseDatabaseSchemaEditor): % { "column": self.quote_name(new_field.column), "type": new_type, - "collation": " " + self._collate_sql(new_collation) - if new_collation - else "", + "collation": ( + " " + self._collate_sql(new_collation) if new_collation else "" + ), }, [], ) diff --git a/django/db/backends/sqlite3/_functions.py b/django/db/backends/sqlite3/_functions.py index 7e86950f7d..0171b60f38 100644 --- a/django/db/backends/sqlite3/_functions.py +++ b/django/db/backends/sqlite3/_functions.py @@ -1,6 +1,7 @@ """ Implementations of SQL functions for SQLite. """ + import functools import random import statistics diff --git a/django/db/backends/sqlite3/base.py b/django/db/backends/sqlite3/base.py index 08de0bad5a..10a296c992 100644 --- a/django/db/backends/sqlite3/base.py +++ b/django/db/backends/sqlite3/base.py @@ -1,6 +1,7 @@ """ SQLite backend for the sqlite3 module in the standard library. """ + import datetime import decimal import warnings diff --git a/django/db/migrations/autodetector.py b/django/db/migrations/autodetector.py index 6b01403d18..f000d9fcaa 100644 --- a/django/db/migrations/autodetector.py +++ b/django/db/migrations/autodetector.py @@ -620,11 +620,12 @@ class MigrationAutodetector: rem_model_state.app_label, rem_model_state.name_lower, ) - self.renamed_models_rel[ - renamed_models_rel_key - ] = "%s.%s" % ( - model_state.app_label, - model_state.name_lower, + self.renamed_models_rel[renamed_models_rel_key] = ( + "%s.%s" + % ( + model_state.app_label, + model_state.name_lower, + ) ) self.old_model_keys.remove((rem_app_label, rem_model_name)) self.old_model_keys.add((app_label, model_name)) @@ -1058,9 +1059,9 @@ class MigrationAutodetector: (rem_app_label, rem_model_name, rem_field_name) ) old_field_keys.add((app_label, model_name, field_name)) - self.renamed_fields[ - app_label, model_name, field_name - ] = rem_field_name + self.renamed_fields[app_label, model_name, field_name] = ( + rem_field_name + ) break def generate_renamed_fields(self): diff --git a/django/db/migrations/loader.py b/django/db/migrations/loader.py index 81dcd06e04..50445f3101 100644 --- a/django/db/migrations/loader.py +++ b/django/db/migrations/loader.py @@ -131,11 +131,11 @@ class MigrationLoader: "Migration %s in app %s has no Migration class" % (migration_name, app_config.label) ) - self.disk_migrations[ - app_config.label, migration_name - ] = migration_module.Migration( - migration_name, - app_config.label, + self.disk_migrations[app_config.label, migration_name] = ( + migration_module.Migration( + migration_name, + app_config.label, + ) ) def get_migration(self, app_label, name_prefix): diff --git a/django/db/migrations/operations/models.py b/django/db/migrations/operations/models.py index b24a8f6557..38c68f3ff3 100644 --- a/django/db/migrations/operations/models.py +++ b/django/db/migrations/operations/models.py @@ -56,11 +56,11 @@ class CreateModel(ModelOperation): _check_for_duplicates( "bases", ( - base._meta.label_lower - if hasattr(base, "_meta") - else base.lower() - if isinstance(base, str) - else base + ( + base._meta.label_lower + if hasattr(base, "_meta") + else base.lower() if isinstance(base, str) else base + ) for base in self.bases ), ) diff --git a/django/db/migrations/state.py b/django/db/migrations/state.py index 5ffd7fc07a..42a2c80a5e 100644 --- a/django/db/migrations/state.py +++ b/django/db/migrations/state.py @@ -524,11 +524,11 @@ class ProjectState: if model_state.options.get("proxy"): proxy_models[model_key] = model_state # Find a concrete model for the proxy. - concrete_models_mapping[ - model_key - ] = self._find_concrete_model_from_proxy( - proxy_models, - model_state, + concrete_models_mapping[model_key] = ( + self._find_concrete_model_from_proxy( + proxy_models, + model_state, + ) ) else: concrete_models_mapping[model_key] = model_key diff --git a/django/db/models/aggregates.py b/django/db/models/aggregates.py index a778cd413b..0cbffacd1b 100644 --- a/django/db/models/aggregates.py +++ b/django/db/models/aggregates.py @@ -1,6 +1,7 @@ """ Classes to represent the definitions of aggregate functions. """ + from django.core.exceptions import FieldError, FullResultSet from django.db.models.expressions import Case, Func, Star, Value, When from django.db.models.fields import IntegerField diff --git a/django/db/models/base.py b/django/db/models/base.py index 61925f63ea..c1f78d0632 100644 --- a/django/db/models/base.py +++ b/django/db/models/base.py @@ -2265,9 +2265,11 @@ class Model(AltersData, metaclass=ModelBase): opts = cls._meta valid_fields = set( chain.from_iterable( - (f.name, f.attname) - if not (f.auto_created and not f.concrete) - else (f.field.related_query_name(),) + ( + (f.name, f.attname) + if not (f.auto_created and not f.concrete) + else (f.field.related_query_name(),) + ) for f in chain(opts.fields, opts.related_objects) ) ) diff --git a/django/db/models/constants.py b/django/db/models/constants.py index a0c99c95fc..cec1b9b90f 100644 --- a/django/db/models/constants.py +++ b/django/db/models/constants.py @@ -1,6 +1,7 @@ """ Constants used across the ORM in general. """ + from enum import Enum # Separator used to split filter strings apart. diff --git a/django/db/models/expressions.py b/django/db/models/expressions.py index f25ad1af12..6d329ae85d 100644 --- a/django/db/models/expressions.py +++ b/django/db/models/expressions.py @@ -204,9 +204,11 @@ class BaseExpression: def _parse_expressions(self, *expressions): return [ - arg - if hasattr(arg, "resolve_expression") - else (F(arg) if isinstance(arg, str) else Value(arg)) + ( + arg + if hasattr(arg, "resolve_expression") + else (F(arg) if isinstance(arg, str) else Value(arg)) + ) for arg in expressions ] @@ -285,9 +287,11 @@ class BaseExpression: c.is_summary = summarize c.set_source_expressions( [ - expr.resolve_expression(query, allow_joins, reuse, summarize) - if expr - else None + ( + expr.resolve_expression(query, allow_joins, reuse, summarize) + if expr + else None + ) for expr in c.get_source_expressions() ] ) @@ -366,22 +370,16 @@ class BaseExpression: field = self.output_field internal_type = field.get_internal_type() if internal_type == "FloatField": - return ( - lambda value, expression, connection: None - if value is None - else float(value) + return lambda value, expression, connection: ( + None if value is None else float(value) ) elif internal_type.endswith("IntegerField"): - return ( - lambda value, expression, connection: None - if value is None - else int(value) + return lambda value, expression, connection: ( + None if value is None else int(value) ) elif internal_type == "DecimalField": - return ( - lambda value, expression, connection: None - if value is None - else Decimal(value) + return lambda value, expression, connection: ( + None if value is None else Decimal(value) ) return self._convert_value_noop @@ -432,9 +430,11 @@ class BaseExpression: clone = self.copy() clone.set_source_expressions( [ - F(f"{prefix}{expr.name}") - if isinstance(expr, F) - else expr.prefix_references(prefix) + ( + F(f"{prefix}{expr.name}") + if isinstance(expr, F) + else expr.prefix_references(prefix) + ) for expr in self.get_source_expressions() ] ) diff --git a/django/db/models/fields/related_descriptors.py b/django/db/models/fields/related_descriptors.py index f5a81ab49c..62ddfc60b3 100644 --- a/django/db/models/fields/related_descriptors.py +++ b/django/db/models/fields/related_descriptors.py @@ -62,6 +62,7 @@ and two directions (forward and reverse) for a total of six combinations. If you're looking for ``ForwardManyToManyDescriptor`` or ``ReverseManyToManyDescriptor``, use ``ManyToManyDescriptor`` instead. """ + import warnings from asgiref.sync import sync_to_async diff --git a/django/db/models/fields/reverse_related.py b/django/db/models/fields/reverse_related.py index c74e92ba89..144cce6142 100644 --- a/django/db/models/fields/reverse_related.py +++ b/django/db/models/fields/reverse_related.py @@ -8,6 +8,7 @@ in the ``remote_field`` attribute of the field. They also act as reverse fields for the purposes of the Meta API because they're the closest concept currently available. """ + import warnings from django.core import exceptions diff --git a/django/db/models/functions/comparison.py b/django/db/models/functions/comparison.py index ae41f1da95..6db81d6f46 100644 --- a/django/db/models/functions/comparison.py +++ b/django/db/models/functions/comparison.py @@ -1,4 +1,5 @@ """Database functions that do comparisons or type conversions.""" + from django.db import NotSupportedError from django.db.models.expressions import Func, Value from django.db.models.fields import TextField diff --git a/django/db/models/functions/datetime.py b/django/db/models/functions/datetime.py index fca211e065..9937e79f6f 100644 --- a/django/db/models/functions/datetime.py +++ b/django/db/models/functions/datetime.py @@ -318,9 +318,11 @@ class TruncBase(TimezoneMixin, Transform): "Cannot truncate DateField '%s' to %s." % ( field.name, - output_field.__class__.__name__ - if has_explicit_output_field - else "DateTimeField", + ( + output_field.__class__.__name__ + if has_explicit_output_field + else "DateTimeField" + ), ) ) elif isinstance(field, TimeField) and ( @@ -331,9 +333,11 @@ class TruncBase(TimezoneMixin, Transform): "Cannot truncate TimeField '%s' to %s." % ( field.name, - output_field.__class__.__name__ - if has_explicit_output_field - else "DateTimeField", + ( + output_field.__class__.__name__ + if has_explicit_output_field + else "DateTimeField" + ), ) ) return copy diff --git a/django/db/models/functions/math.py b/django/db/models/functions/math.py index 460143ba5a..5fa4654a84 100644 --- a/django/db/models/functions/math.py +++ b/django/db/models/functions/math.py @@ -47,9 +47,11 @@ class ATan2(NumericOutputFieldMixin, Func): clone = self.copy() clone.set_source_expressions( [ - Cast(expression, FloatField()) - if isinstance(expression.output_field, IntegerField) - else expression + ( + Cast(expression, FloatField()) + if isinstance(expression.output_field, IntegerField) + else expression + ) for expression in self.get_source_expressions()[::-1] ] ) diff --git a/django/db/models/functions/mixins.py b/django/db/models/functions/mixins.py index 661eee1c13..0f6f0a2aa8 100644 --- a/django/db/models/functions/mixins.py +++ b/django/db/models/functions/mixins.py @@ -14,9 +14,11 @@ class FixDecimalInputMixin: clone = self.copy() clone.set_source_expressions( [ - Cast(expression, output_field) - if isinstance(expression.output_field, FloatField) - else expression + ( + Cast(expression, output_field) + if isinstance(expression.output_field, FloatField) + else expression + ) for expression in self.get_source_expressions() ] ) diff --git a/django/db/models/functions/text.py b/django/db/models/functions/text.py index 392061880c..df826ffdb5 100644 --- a/django/db/models/functions/text.py +++ b/django/db/models/functions/text.py @@ -89,9 +89,11 @@ class ConcatPair(Func): c = self.copy() c.set_source_expressions( [ - expression - if isinstance(expression.output_field, (CharField, TextField)) - else Cast(expression, TextField()) + ( + expression + if isinstance(expression.output_field, (CharField, TextField)) + else Cast(expression, TextField()) + ) for expression in c.get_source_expressions() ] ) diff --git a/django/db/models/indexes.py b/django/db/models/indexes.py index b5451f9e24..0ddfefec38 100644 --- a/django/db/models/indexes.py +++ b/django/db/models/indexes.py @@ -196,9 +196,11 @@ class Index: "" if not self.fields else " fields=%s" % repr(self.fields), "" if not self.expressions else " expressions=%s" % repr(self.expressions), "" if not self.name else " name=%s" % repr(self.name), - "" - if self.db_tablespace is None - else " db_tablespace=%s" % repr(self.db_tablespace), + ( + "" + if self.db_tablespace is None + else " db_tablespace=%s" % repr(self.db_tablespace) + ), "" if self.condition is None else " condition=%s" % self.condition, "" if not self.include else " include=%s" % repr(self.include), "" if not self.opclasses else " opclasses=%s" % repr(self.opclasses), diff --git a/django/db/models/lookups.py b/django/db/models/lookups.py index 4a6e2b3241..139875eed5 100644 --- a/django/db/models/lookups.py +++ b/django/db/models/lookups.py @@ -273,9 +273,11 @@ class FieldGetDbPrepValueMixin: return ( "%s", [ - v - if hasattr(v, "as_sql") - else get_db_prep_value(v, connection, prepared=True) + ( + v + if hasattr(v, "as_sql") + else get_db_prep_value(v, connection, prepared=True) + ) for v in value ], ) diff --git a/django/db/models/query.py b/django/db/models/query.py index 61d4002000..b9e2d1f7e5 100644 --- a/django/db/models/query.py +++ b/django/db/models/query.py @@ -109,9 +109,11 @@ class ModelIterable(BaseIterable): related_objs, operator.attrgetter( *[ - field.attname - if from_field == "self" - else queryset.model._meta.get_field(from_field).attname + ( + field.attname + if from_field == "self" + else queryset.model._meta.get_field(from_field).attname + ) for from_field in field.from_fields ] ), @@ -1391,9 +1393,7 @@ class QuerySet(AltersData): clone._iterable_class = ( NamedValuesListIterable if named - else FlatValuesListIterable - if flat - else ValuesListIterable + else FlatValuesListIterable if flat else ValuesListIterable ) return clone @@ -1659,9 +1659,11 @@ class QuerySet(AltersData): if names is None: names = set( chain.from_iterable( - (field.name, field.attname) - if hasattr(field, "attname") - else (field.name,) + ( + (field.name, field.attname) + if hasattr(field, "attname") + else (field.name,) + ) for field in self.model._meta.get_fields() ) ) diff --git a/django/db/models/query_utils.py b/django/db/models/query_utils.py index 4f3358eb8d..e1041b9653 100644 --- a/django/db/models/query_utils.py +++ b/django/db/models/query_utils.py @@ -5,6 +5,7 @@ Factored out from django.db.models.query to avoid making the main module very large and/or so that they can be used by other modules without getting into circular import difficulties. """ + import functools import inspect import logging diff --git a/django/db/models/sql/compiler.py b/django/db/models/sql/compiler.py index 10338259d5..9a0d2eb4e7 100644 --- a/django/db/models/sql/compiler.py +++ b/django/db/models/sql/compiler.py @@ -1224,9 +1224,9 @@ class SQLCompiler: "field": f, "reverse": False, "local_setter": f.set_cached_value, - "remote_setter": f.remote_field.set_cached_value - if f.unique - else lambda x, y: None, + "remote_setter": ( + f.remote_field.set_cached_value if f.unique else lambda x, y: None + ), "from_parent": False, } related_klass_infos.append(klass_info) diff --git a/django/db/models/sql/datastructures.py b/django/db/models/sql/datastructures.py index 5eaa8c25f6..7c0c14a46e 100644 --- a/django/db/models/sql/datastructures.py +++ b/django/db/models/sql/datastructures.py @@ -2,6 +2,7 @@ Useful auxiliary data structures for query construction. Not useful outside the SQL domain. """ + import warnings from django.core.exceptions import FullResultSet diff --git a/django/db/models/sql/query.py b/django/db/models/sql/query.py index ce4fafb1e2..6e8813b5e7 100644 --- a/django/db/models/sql/query.py +++ b/django/db/models/sql/query.py @@ -6,6 +6,7 @@ themselves do not have to (and could be backed by things other than SQL databases). The abstraction barrier only works one way: this module has to know all about the internals of models in order to get the information it needs. """ + import copy import difflib import functools diff --git a/django/db/models/sql/where.py b/django/db/models/sql/where.py index 8423fcb528..0fded5cce3 100644 --- a/django/db/models/sql/where.py +++ b/django/db/models/sql/where.py @@ -1,6 +1,7 @@ """ Code to manage the creation and SQL rendering of 'where' constraints. """ + import operator from functools import reduce diff --git a/django/forms/models.py b/django/forms/models.py index 6a2608c0b3..cd6986d72a 100644 --- a/django/forms/models.py +++ b/django/forms/models.py @@ -2,6 +2,7 @@ Helper functions for creating Form classes from Django models and database field objects. """ + from itertools import chain from django.core.exceptions import ( @@ -830,9 +831,12 @@ class BaseModelFormSet(BaseFormSet, AltersData): ) # Reduce Model instances to their primary key values row_data = tuple( - d._get_pk_val() if hasattr(d, "_get_pk_val") - # Prevent "unhashable type: list" errors later on. - else tuple(d) if isinstance(d, list) else d + ( + d._get_pk_val() + if hasattr(d, "_get_pk_val") + # Prevent "unhashable type: list" errors later on. + else tuple(d) if isinstance(d, list) else d + ) for d in row_data ) if row_data and None not in row_data: diff --git a/django/forms/widgets.py b/django/forms/widgets.py index 2c734052d5..4fae110d5e 100644 --- a/django/forms/widgets.py +++ b/django/forms/widgets.py @@ -101,9 +101,11 @@ class Media: def render_js(self): return [ - path.__html__() - if hasattr(path, "__html__") - else format_html('<script src="{}"></script>', self.absolute_path(path)) + ( + path.__html__() + if hasattr(path, "__html__") + else format_html('<script src="{}"></script>', self.absolute_path(path)) + ) for path in self._js ] @@ -113,12 +115,14 @@ class Media: media = sorted(self._css) return chain.from_iterable( [ - path.__html__() - if hasattr(path, "__html__") - else format_html( - '<link href="{}" media="{}" rel="stylesheet">', - self.absolute_path(path), - medium, + ( + path.__html__() + if hasattr(path, "__html__") + else format_html( + '<link href="{}" media="{}" rel="stylesheet">', + self.absolute_path(path), + medium, + ) ) for path in self._css[medium] ] diff --git a/django/http/multipartparser.py b/django/http/multipartparser.py index dfd406c35e..58b8546be7 100644 --- a/django/http/multipartparser.py +++ b/django/http/multipartparser.py @@ -4,6 +4,7 @@ Multi-part parsing for file uploads. Exposes one class, ``MultiPartParser``, which feeds chunks of uploaded data to file upload handlers for processing. """ + import base64 import binascii import collections diff --git a/django/http/request.py b/django/http/request.py index fe15a173be..4c27d576ba 100644 --- a/django/http/request.py +++ b/django/http/request.py @@ -170,9 +170,11 @@ class HttpRequest: return "%s%s%s" % ( escape_uri_path(path), "/" if force_append_slash and not path.endswith("/") else "", - ("?" + iri_to_uri(self.META.get("QUERY_STRING", ""))) - if self.META.get("QUERY_STRING", "") - else "", + ( + ("?" + iri_to_uri(self.META.get("QUERY_STRING", ""))) + if self.META.get("QUERY_STRING", "") + else "" + ), ) def get_signed_cookie(self, key, default=RAISE_ERROR, salt="", max_age=None): diff --git a/django/middleware/csrf.py b/django/middleware/csrf.py index 2c0d2cc120..f7943494ba 100644 --- a/django/middleware/csrf.py +++ b/django/middleware/csrf.py @@ -4,6 +4,7 @@ Cross Site Request Forgery Middleware. This module provides a middleware that implements protection against request forgeries from other sites. """ + import logging import string from collections import defaultdict diff --git a/django/shortcuts.py b/django/shortcuts.py index 822e6107ac..b8b5be1f5f 100644 --- a/django/shortcuts.py +++ b/django/shortcuts.py @@ -3,6 +3,7 @@ This module collects helper functions and classes that "span" multiple levels of MVC. In other words, these functions/classes introduce controlled coupling for convenience's sake. """ + from django.http import ( Http404, HttpResponse, diff --git a/django/template/defaultfilters.py b/django/template/defaultfilters.py index 1e1bdbc5c9..a08ce2710d 100644 --- a/django/template/defaultfilters.py +++ b/django/template/defaultfilters.py @@ -1,4 +1,5 @@ """Default variable filters.""" + import random as random_module import re import types diff --git a/django/template/defaulttags.py b/django/template/defaulttags.py index 40c2917f56..dd0a6b3579 100644 --- a/django/template/defaulttags.py +++ b/django/template/defaulttags.py @@ -1,4 +1,5 @@ """Default tags used by the template system, available to all templates.""" + import re import sys import warnings diff --git a/django/template/engine.py b/django/template/engine.py index f2215c0e4e..9882d3a16d 100644 --- a/django/template/engine.py +++ b/django/template/engine.py @@ -70,9 +70,11 @@ class Engine: self.__class__.__qualname__, "" if not self.dirs else " dirs=%s" % repr(self.dirs), self.app_dirs, - "" - if not self.context_processors - else " context_processors=%s" % repr(self.context_processors), + ( + "" + if not self.context_processors + else " context_processors=%s" % repr(self.context_processors) + ), self.debug, repr(self.loaders), repr(self.string_if_invalid), diff --git a/django/template/smartif.py b/django/template/smartif.py index 5b15a5a476..0a917c2aaa 100644 --- a/django/template/smartif.py +++ b/django/template/smartif.py @@ -1,6 +1,7 @@ """ Parser and utilities for the smart 'if' tag """ + # Using a simple top down parser, as described here: # http://effbot.org/zone/simple-top-down-parsing.htm. # 'led' = left denotation diff --git a/django/test/html.py b/django/test/html.py index 6da79d6fb2..33d1d4dafb 100644 --- a/django/test/html.py +++ b/django/test/html.py @@ -1,4 +1,5 @@ """Compare two HTML documents.""" + import html from html.parser import HTMLParser diff --git a/django/urls/conf.py b/django/urls/conf.py index 40708028a3..bb61063d77 100644 --- a/django/urls/conf.py +++ b/django/urls/conf.py @@ -1,4 +1,5 @@ """Functions for use in URLsconfs.""" + from functools import partial from importlib import import_module diff --git a/django/urls/resolvers.py b/django/urls/resolvers.py index 89ae18694c..3607c84228 100644 --- a/django/urls/resolvers.py +++ b/django/urls/resolvers.py @@ -5,6 +5,7 @@ URLResolver is the main class here. Its resolve() method takes a URL (as a string) and returns a ResolverMatch object which provides access to all attributes of the resolved URL match. """ + import functools import inspect import re @@ -91,9 +92,11 @@ class ResolverMatch: self.app_names, self.namespaces, self.route, - f", captured_kwargs={self.captured_kwargs!r}" - if self.captured_kwargs - else "", + ( + f", captured_kwargs={self.captured_kwargs!r}" + if self.captured_kwargs + else "" + ), f", extra_kwargs={self.extra_kwargs!r}" if self.extra_kwargs else "", ) ) diff --git a/django/utils/archive.py b/django/utils/archive.py index 71ec2d0015..56f34c0038 100644 --- a/django/utils/archive.py +++ b/django/utils/archive.py @@ -21,6 +21,7 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. """ + import os import shutil import stat diff --git a/django/utils/cache.py b/django/utils/cache.py index cf797d0279..3b014fbe51 100644 --- a/django/utils/cache.py +++ b/django/utils/cache.py @@ -14,6 +14,7 @@ cache keys to prevent delivery of wrong content. An example: i18n middleware would need to distinguish caches by the "Accept-language" header. """ + import time from collections import defaultdict from hashlib import md5 diff --git a/django/utils/crypto.py b/django/utils/crypto.py index 1c0e7001c6..5134b854d6 100644 --- a/django/utils/crypto.py +++ b/django/utils/crypto.py @@ -1,6 +1,7 @@ """ Django's standard crypto functions and utilities. """ + import hashlib import hmac import secrets diff --git a/django/utils/dateformat.py b/django/utils/dateformat.py index a6c315e4cf..a3274b901c 100644 --- a/django/utils/dateformat.py +++ b/django/utils/dateformat.py @@ -10,6 +10,7 @@ Usage: 7th October 2003 11:39 >>> """ + import calendar from datetime import date, datetime, time from email.utils import format_datetime as format_datetime_rfc5322 diff --git a/django/utils/deconstruct.py b/django/utils/deconstruct.py index f8754c1974..2e5463a651 100644 --- a/django/utils/deconstruct.py +++ b/django/utils/deconstruct.py @@ -42,9 +42,11 @@ def deconstructible(*args, path=None): "#serializing-values" % (name, module_name, get_docs_version()) ) return ( - path - if path and type(obj) is klass - else f"{obj.__class__.__module__}.{name}", + ( + path + if path and type(obj) is klass + else f"{obj.__class__.__module__}.{name}" + ), obj._constructor_args[0], obj._constructor_args[1], ) diff --git a/django/utils/feedgenerator.py b/django/utils/feedgenerator.py index 31ca9a2db9..3bd456ca68 100644 --- a/django/utils/feedgenerator.py +++ b/django/utils/feedgenerator.py @@ -21,6 +21,7 @@ Sample usage: For definitions of the different versions of RSS, see: https://web.archive.org/web/20110718035220/http://diveintomark.org/archives/2004/02/04/incompatible-rss """ + import datetime import email from io import StringIO diff --git a/django/utils/jslex.py b/django/utils/jslex.py index 93a1a2e972..fc46a686c7 100644 --- a/django/utils/jslex.py +++ b/django/utils/jslex.py @@ -1,4 +1,5 @@ """JsLex: a lexer for JavaScript""" + # Originally from https://bitbucket.org/ned/jslex import re diff --git a/django/utils/regex_helper.py b/django/utils/regex_helper.py index 9ee82e1a9b..b71298e399 100644 --- a/django/utils/regex_helper.py +++ b/django/utils/regex_helper.py @@ -5,6 +5,7 @@ Used internally by Django and not intended for external use. This is not, and is not intended to be, a complete reg-exp decompiler. It should be good enough for a large class of URLS, however. """ + import re from django.utils.functional import SimpleLazyObject diff --git a/django/utils/translation/__init__.py b/django/utils/translation/__init__.py index 0b3f78e486..0618f02159 100644 --- a/django/utils/translation/__init__.py +++ b/django/utils/translation/__init__.py @@ -1,6 +1,7 @@ """ Internationalization support. """ + from contextlib import ContextDecorator from decimal import ROUND_UP, Decimal diff --git a/django/utils/translation/trans_real.py b/django/utils/translation/trans_real.py index 872c80b00f..a629528717 100644 --- a/django/utils/translation/trans_real.py +++ b/django/utils/translation/trans_real.py @@ -1,4 +1,5 @@ """Translation helper functions.""" + import functools import gettext as gettext_module import os diff --git a/django/views/decorators/http.py b/django/views/decorators/http.py index 5d5dcbc790..a4c1ebc31e 100644 --- a/django/views/decorators/http.py +++ b/django/views/decorators/http.py @@ -1,6 +1,7 @@ """ Decorators for views based on HTTP headers. """ + import datetime from functools import wraps diff --git a/django/views/static.py b/django/views/static.py index df46c53093..b24f0e30f9 100644 --- a/django/views/static.py +++ b/django/views/static.py @@ -2,6 +2,7 @@ Views and functions for serving static files. These are only to be used during development, and SHOULD NOT be used in a production setting. """ + import mimetypes import posixpath from pathlib import Path |
