Sample

pyint-8642c9e8e7a2-I12

Inline all eligible single-use intermediate local variables

Matched original source

Lines457

Scores

MethodScoreScale
Posnett00–1; higher is more readable
Dorn0.020–1; higher is more readable
Mi0.8020–1; higher is more readable
LLOC182Logical lines; fewer is more readable
DeepSeek V4 Pro12.670–20; mean of three runs
GPT-6.1 Sol160–20; mean of three runs
BTTF0.580–1; higher is more readable

Views

Source code

import functools import inspect from functools import partial from django import forms from django.apps import apps from django.conf import SettingsReference, settings from django.core import checks, exceptions from django.db import connection, connections, router from django.db.backends import utils from django.db.models import NOT_PROVIDED, Q from django.db.models.constants import LOOKUP_SEP from django.db.models.deletion import ( CASCADE, DB_CASCADE, DB_SET_DEFAULT, DB_SET_NULL, DO_NOTHING, SET_DEFAULT, SET_NULL, DatabaseOnDelete, ) from django.db.models.query_utils import PathInfo from django.db.models.utils import make_model_tuple from django.utils.functional import cached_property from django.utils.translation import gettext_lazy as _ from . import Field from .mixins import FieldCacheMixin from .related_descriptors import ( ForeignKeyDeferredAttribute, ForwardManyToOneDescriptor, ForwardOneToOneDescriptor, ManyToManyDescriptor, ReverseManyToOneDescriptor, ReverseOneToOneDescriptor, ) from .related_lookups import ( RelatedExact, RelatedGreaterThan, RelatedGreaterThanOrEqual, RelatedIn, RelatedIsNull, RelatedLessThan, RelatedLessThanOrEqual, ) from .reverse_related import ForeignObjectRel, ManyToManyRel, ManyToOneRel, OneToOneRel class ForeignObject(RelatedField): """ Abstraction of the ForeignKey relation to support multi-column relations. """ # Field flags many_to_many = False many_to_one = True one_to_many = False one_to_one = False requires_unique_target = True related_accessor_class = ReverseManyToOneDescriptor forward_related_accessor_class = ForwardManyToOneDescriptor rel_class = ForeignObjectRel def __init__( self, to, on_delete, from_fields, to_fields, rel=None, related_name=None, related_query_name=None, limit_choices_to=None, parent_link=False, swappable=True, **kwargs, ): if rel is None: rel = self.rel_class( self, to, related_name=related_name, related_query_name=related_query_name, limit_choices_to=limit_choices_to, parent_link=parent_link, on_delete=on_delete, ) super().__init__( rel=rel, related_name=related_name, related_query_name=related_query_name, limit_choices_to=limit_choices_to, **kwargs, ) self.from_fields = from_fields self.to_fields = to_fields self.swappable = swappable def __copy__(self): obj = super().__copy__() # Remove any cached PathInfo values. obj.__dict__.pop("path_infos", None) obj.__dict__.pop("reverse_path_infos", None) return obj @property def non_db_attrs(self): if isinstance(self.remote_field.on_delete, DatabaseOnDelete): # Database-level on_delete options are part of the column # definition. return super().non_db_attrs return super().non_db_attrs + ("on_delete",) def check(self, **kwargs): return [ *super().check(**kwargs), *self._check_to_fields_exist(), *self._check_to_fields_composite_pk(), *self._check_unique_target(), ] def _check_to_fields_exist(self): # Skip nonexistent models. if isinstance(self.remote_field.model, str): return [] errors = [] for to_field in self.to_fields: if to_field: try: self.remote_field.model._meta.get_field(to_field) except exceptions.FieldDoesNotExist: errors.append( checks.Error( "The to_field '%s' doesn't exist on the related " "model '%s'." % (to_field, self.remote_field.model._meta.label), obj=self, id="fields.E312", ) ) return errors def _check_to_fields_composite_pk(self): from django.db.models.fields.composite import CompositePrimaryKey # Skip nonexistent models. if isinstance(self.remote_field.model, str): return [] errors = [] for to_field in self.to_fields: try: field = ( self.remote_field.model._meta.pk if to_field is None else self.remote_field.model._meta.get_field(to_field) ) except exceptions.FieldDoesNotExist: pass else: if isinstance(field, CompositePrimaryKey): errors.append( checks.Error( "Field defines a relation involving model " f"{self.remote_field.model._meta.object_name!r} which has " "a CompositePrimaryKey and such relations are not " "supported.", obj=self, id="fields.E347", ) ) return errors def _check_unique_target(self): rel_is_string = isinstance(self.remote_field.model, str) if rel_is_string or not self.requires_unique_target: return [] try: self.foreign_related_fields except exceptions.FieldDoesNotExist: return [] if not self.foreign_related_fields: return [] has_unique_constraint = any( rel_field.unique for rel_field in self.foreign_related_fields ) if not has_unique_constraint: foreign_fields = {f.name for f in self.foreign_related_fields} remote_opts = self.remote_field.model._meta has_unique_constraint = ( any( frozenset(ut) <= foreign_fields for ut in remote_opts.unique_together ) or any( frozenset(uc.fields) <= foreign_fields for uc in remote_opts.total_unique_constraints ) # If the model defines a composite primary key and the foreign # key refers to it, the target is unique. or ( frozenset(field.name for field in remote_opts.pk_fields) == foreign_fields ) ) if not has_unique_constraint: if len(self.foreign_related_fields) > 1: field_combination = ", ".join( f"'{rel_field.name}'" for rel_field in self.foreign_related_fields ) model_name = self.remote_field.model.__name__ return [ checks.Error( f"No subset of the fields {field_combination} on model " f"'{model_name}' is unique.", hint=( "Mark a single field as unique=True or add a set of " "fields to a unique constraint (via unique_together " "or a UniqueConstraint (without condition) in the " "model Meta.constraints)." ), obj=self, id="fields.E310", ) ] else: field_name = self.foreign_related_fields[0].name model_name = self.remote_field.model.__name__ return [ checks.Error( f"'{model_name}.{field_name}' must be unique because it is " "referenced by a foreign key.", hint=( "Add unique=True to this field or add a " "UniqueConstraint (without condition) in the model " "Meta.constraints." ), obj=self, id="fields.E311", ) ] return [] def deconstruct(self): name, path, args, kwargs = super().deconstruct() kwargs["on_delete"] = self.remote_field.on_delete kwargs["from_fields"] = self.from_fields kwargs["to_fields"] = self.to_fields if self.remote_field.parent_link: kwargs["parent_link"] = self.remote_field.parent_link if isinstance(self.remote_field.model, str): if "." in self.remote_field.model: app_label, model_name = self.remote_field.model.split(".") kwargs["to"] = "%s.%s" % (app_label, model_name.lower()) else: kwargs["to"] = self.remote_field.model.lower() else: kwargs["to"] = self.remote_field.model._meta.label_lower # If swappable is True, then see if we're actually pointing to the # target of a swap. swappable_setting = self.swappable_setting if swappable_setting is not None: # If it's already a settings reference, error if hasattr(kwargs["to"], "setting_name"): if kwargs["to"].setting_name != swappable_setting: raise ValueError( "Cannot deconstruct a ForeignKey pointing to a model " "that is swapped in place of more than one model (%s and %s)" % (kwargs["to"].setting_name, swappable_setting) ) # Set it kwargs["to"] = SettingsReference( kwargs["to"], swappable_setting, ) return name, path, args, kwargs def resolve_related_fields(self): if not self.from_fields or len(self.from_fields) != len(self.to_fields): raise ValueError( "Foreign Object from and to fields must be the same non-zero length" ) if isinstance(self.remote_field.model, str): raise ValueError( "Related model %r cannot be resolved" % self.remote_field.model ) related_fields = [] for from_field_name, to_field_name in zip(self.from_fields, self.to_fields): related_fields.append(((self if from_field_name == RECURSIVE_RELATIONSHIP_CONSTANT else self.opts.get_field(from_field_name)), (self.remote_field.model._meta.pk if to_field_name is None else self.remote_field.model._meta.get_field(to_field_name)))) return related_fields @cached_property def related_fields(self): return self.resolve_related_fields() @cached_property def reverse_related_fields(self): return [(rhs_field, lhs_field) for lhs_field, rhs_field in self.related_fields] @cached_property def local_related_fields(self): return tuple(lhs_field for lhs_field, rhs_field in self.related_fields) @cached_property def foreign_related_fields(self): return tuple( rhs_field for lhs_field, rhs_field in self.related_fields if rhs_field ) def get_local_related_value(self, instance): return self.get_instance_value_for_fields(instance, self.local_related_fields) def get_foreign_related_value(self, instance): return self.get_instance_value_for_fields(instance, self.foreign_related_fields) @staticmethod def get_instance_value_for_fields(instance, fields): ret = [] opts = instance._meta for field in fields: # Gotcha: in some cases (like fixture loading) a model can have # different values in parent_ptr_id and parent's id. So, use # instance.pk (that is, parent_ptr_id) when asked for instance.id. if field.primary_key: possible_parent_link = opts.get_ancestor_link(field.model) if ( not possible_parent_link or possible_parent_link.primary_key or possible_parent_link.model._meta.abstract ): ret.append(instance.pk) continue ret.append(getattr(instance, field.attname)) return tuple(ret) def get_attname_column(self): attname, column = super().get_attname_column() return attname, None def get_joining_fields(self, reverse_join=False): return tuple( self.reverse_related_fields if reverse_join else self.related_fields ) def get_reverse_joining_fields(self): return self.get_joining_fields(reverse_join=True) def get_extra_descriptor_filter(self, instance): """ Return an extra filter condition for related object fetching when user does 'instance.fieldname', that is the extra filter is used in the descriptor of the field. The filter should be either a dict usable in .filter(**kwargs) call or a Q-object. The condition will be ANDed together with the relation's joining columns. A parallel method is get_extra_restriction() which is used in JOIN and subquery conditions. """ return {} def get_extra_restriction(self, alias, related_alias): """ Return a pair condition used for joining and subquery pushdown. The condition is something that responds to as_sql(compiler, connection) method. Note that currently referring both the 'alias' and 'related_alias' will not work in some conditions, like subquery pushdown. A parallel method is get_extra_descriptor_filter() which is used in instance.fieldname related object fetching. """ return None def get_path_info(self, filtered_relation=None): """Get path from this field to the related model.""" return [ PathInfo( from_opts=(self.model._meta), to_opts=(self.remote_field.model._meta), target_fields=self.foreign_related_fields, join_field=self, m2m=False, direct=True, filtered_relation=filtered_relation, ) ] @cached_property def path_infos(self): return self.get_path_info() def get_reverse_path_info(self, filtered_relation=None): """Get path from the related model to this field's model.""" opts = self.model._meta return [ PathInfo( from_opts=(self.remote_field.model._meta), to_opts=opts, target_fields=(opts.pk,), join_field=self.remote_field, m2m=not self.unique, direct=False, filtered_relation=filtered_relation, ) ] @cached_property def reverse_path_infos(self): return self.get_reverse_path_info() @classmethod @functools.cache def get_class_lookups(cls): bases = inspect.getmro(cls) bases = bases[: bases.index(ForeignObject) + 1] return cls.merge_dicts(([parent.__dict__.get("class_lookups", {}) for parent in bases])) def contribute_to_class(self, cls, name, private_only=False, **kwargs): super().contribute_to_class(cls, name, private_only=private_only, **kwargs) setattr(cls, self.name, self.forward_related_accessor_class(self)) def contribute_to_related_class(self, cls, related): # Internal FK's - i.e., those with a related name ending with '+' - # and swapped models don't get a related descriptor. if not self.remote_field.hidden and not related.related_model._meta.swapped: setattr( cls._meta.concrete_model, related.accessor_name, self.related_accessor_class(related), ) # While 'limit_choices_to' might be a callable, simply pass # it along for later - this is too early because it's still # model load time. if self.remote_field.limit_choices_to: cls._meta.related_fkey_lookups.append( self.remote_field.limit_choices_to )

Loading feature diagnosis…

Source regions

Feature contributions

Feature contributions

FeatureValueContribution
(log-odds)
Halstead volumeHow much symbolic information the code contains. It combines the total number of operators and values with the number of distinct ones.15651.213−516.49
Source linesThe number of non-empty source lines.457+182.8
Byte entropyHow varied the bytes in the source text are. Repeated bytes give a lower value; a more even mixture gives a higher value.4.19−6.284

Intercept 8.87 + feature contributions = -331.104 (log-odds).
Score = sigmoid(-331.104) = 0.

Feature contributions

FeatureValueContribution
(log-odds)
Comment layout frequencyHow frequently the layout switches between lines containing only comments or whitespace and lines containing code.458−15.18
Indentation frequencyHow rapidly indentation changes from line to line.414+13.583
Number layout frequencyHow rapidly the number of numeric values per line changes through the code.414−9.079
Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom.456.907+5.977
Comment layout (horizontal)How rapidly the visual pattern of comment characters changes from left to right.95.745+0.74
Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *.0.055+0.409
Identifier layout (horizontal)How rapidly the visual pattern of identifier characters changes from left to right. It measures spatial frequency, not the meaning of the names.95.976−0.4

Intercept 0.07 + feature contributions = -3.88 (log-odds).
Score = sigmoid(-3.88) = 0.02.

Score0.802
Score182
Run 1

The code demonstrates good readability overall. Structure is logical with clear method separation and sensible imports. Nesting is generally flat, though _check_unique_target has some deeper conditional nesting. Intent is clear from docstrings and method names. The code is concise in some areas but verbose in others, particularly in error message construction. Action granularity is mostly one action per line, but a few lines combine multiple operations (e.g., related_fields.append with nested conditionals). Reading flow is natural, following Django's conventions. Some minor issues include a few very long lines that would benefit from wrapping, and occasional dense expressions that could be extracted for clarity. The use of tuple comprehensions and generators is generally good. The blank lines with trailing spaces in resolve_related_fields are slightly distracting. Overall, this is well-written Django framework code that balances complexity with maintainable structure.

Run 2

The code has clear structure and follows Django conventions, with methods logically grouped and generally well-documented docstrings. However, readability suffers from inconsistent nested logic, particularly in _check_unique_target() which contains deeply conditional blocks. Some methods like resolve_related_fields() have poorly formatted multi-line expressions that hurt readability. The code length is appropriate for Django field implementations but some methods could be refactored into smaller helpers. Most lines perform single actions, though several list comprehensions and conditional assignments pack multiple operations. Imports are well-organized. While variable names are descriptive and intent is mostly clear, the deep nesting and complex boolean logic in validation methods require significant effort to follow. The code is readable for experienced Django developers but would benefit from cleaner formatting and reduced nesting in validation methods.

Run 3

The code is complex and difficult to read due to several factors: deep nesting with multiple conditional layers, long and redundant method names, inconsistent formatting, and multiple actions per line (especially in variable assignments and list comprehensions). While it follows some standard Django patterns, the logical flow is often unclear, and the code mixes many responsibilities without clear separation. The imports are overly broad, and the use of nested ternary-like expressions and complex conditional logic adds to the cognitive load. Although comments are used sparingly, they don't always clarify intent effectively. Overall, this is a low-to-moderate readability score, as the code would likely require frequent re-reading and domain expertise to understand fully.

Run 1

Code Structure: Well organized into focused methods for validation, relationship resolution, metadata, and descriptors. Nesting: Mostly shallow with early returns, though validation and deconstruction contain several nested branches. Clarity of intent: Descriptive method names, comments, and docstrings explain complex ORM behavior; framework-specific concepts and definitions absent from the excerpt require external context. Code length: Generally justified by functionality, although verbose error construction and repeated metadata access add bulk. Action granularity: Most statements perform one action, but resolve_related_fields compresses field selection and tuple construction into a difficult-to-scan append expression. Reading flow: Method grouping and consistent conventions support navigation, while irregular blank lines, unnecessary parentheses, and a crowded get_class_lookups return disrupt otherwise natural flow.

Run 2

Code Structure: Well-organized class with focused methods separating validation, field resolution, metadata, and descriptor setup. Nesting: Mostly moderate, with early returns reducing complexity; validation and deconstruction contain some deeper branches. Clarity of intent: Descriptive method names, comments, and docstrings explain behavior, although Django-specific internals require background knowledge and some referenced symbols are not defined in the snippet. Code length: Generally justified by functionality, but repetitive validation/error construction and unnecessary parentheses add bulk. Action granularity: Usually one operation per statement; resolve_related_fields compresses two conditional field resolutions and an append into one awkwardly formatted expression. Reading flow: Mostly consistent and natural, with related methods grouped together, but irregular blank lines, long expressions, and inconsistent formatting in a few methods interrupt scanning.

Run 3

Code Structure: Well-organized class with focused methods separating validation, relationship resolution, metadata, and descriptor setup. Nesting: Mostly shallow, aided by early returns, though uniqueness checks and deconstruction contain moderately nested branches. Clarity of intent: Descriptive method names, comments, and docstrings explain most behavior; framework-specific concepts and undefined names in the snippet require external context. Code length: Generally justified by functionality, although repeated error construction and verbose expressions add bulk. Action granularity: Most statements perform one clear action, but resolve_related_fields compresses two conditional field resolutions and tuple construction into one awkward append expression. Reading flow: Method grouping and consistent conventions support navigation, but irregular blank lines, unnecessary parentheses, and a long get_class_lookups return interrupt an otherwise natural flow.