Sample

pyint-685da7375558-I01

Remove comments and docstrings

Matched original source

Lines438

Scores

MethodScoreScale
Posnett00–1; higher is more readable
Dorn0.0110–1; higher is more readable
Mi0.780–1; higher is more readable
LLOC183Logical lines; fewer is more readable
DeepSeek V4 Pro13.670–20; mean of three runs
GPT-6.1 Sol150–20; mean of three runs
BTTF0.5720–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): 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__() 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): 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): 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 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 ) 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 swappable_setting = self.swappable_setting if swappable_setting is not None: 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) ) 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): from_field = ( self if from_field_name == RECURSIVE_RELATIONSHIP_CONSTANT else self.opts.get_field(from_field_name) ) to_field = ( self.remote_field.model._meta.pk if to_field_name is None else self.remote_field.model._meta.get_field(to_field_name) ) related_fields.append((from_field, to_field)) 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: 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 {} def get_extra_restriction(self, alias, related_alias): return None def get_path_info(self, filtered_relation=None): opts = self.remote_field.model._meta from_opts = self.model._meta return [ PathInfo( from_opts=from_opts, to_opts=opts, 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): opts = self.model._meta from_opts = self.remote_field.model._meta return [ PathInfo( from_opts=from_opts, 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] class_lookups = [parent.__dict__.get("class_lookups", {}) for parent in bases] return cls.merge_dicts(class_lookups) 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): 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), ) 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.15664.707−516.935
Source linesThe number of non-empty source lines.438+175.2
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.112−6.168

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

Feature contributions

FeatureValueContribution
(log-odds)
Comment layout frequencyHow frequently the layout switches between lines containing only comments or whitespace and lines containing code.439−14.507
Indentation frequencyHow rapidly indentation changes from line to line.438+14.413
Number layout frequencyHow rapidly the number of numeric values per line changes through the code.438−9.63
Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom.437.921+5.711
Comment layout (horizontal)How rapidly the visual pattern of comment characters changes from left to right.0−0.804
Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *.0.063+0.334
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.87.964−0.061

Intercept 0.07 + feature contributions = -4.474 (log-odds).
Score = sigmoid(-4.474) = 0.011.

Score0.78
Score183
Run 1

The code is well-structured with clear class organization and logical method grouping. Nesting is minimal, with only one level of indentation in methods like _check_unique_target. Intent is clearly expressed through descriptive method names and docstrings. Code length is appropriate for Django framework code, with no unnecessary verbosity. Action granularity is good - most lines contain one operation. Reading flow is natural, with methods ordered logically from initialization to validation to resolution. The code follows Django's established conventions and is highly maintainable for those familiar with Django's internals.

Run 2

This Django ForeignObject class is a complex model field implementation with deeply nested logic and excessive blank lines making it hard to follow. Imports are organized, but the class structure shows poor readability: methods contain multiple nested conditionals (e.g., _check_unique_target with 4+ levels), long intricate boolean expressions with comment explanations for unusual cases, and inconsistent use of magic strings like RECURSIVE_RELATIONSHIP_CONSTANT (undefined in this excerpt). Multiple actions appear on single lines (e.g., chained super() calls, tuple comprehensions with conditionals). The code is concise in parts but loses clarity due to complex domain logic without docstrings explaining intent. Vertical whitespace appears random with 2-3 blank lines between methods and inline comments referencing Django internals without context. The non_db_attrs property has redundant return statements showing unclear flow. Overall, while this code follows Django conventions, readability suffers from high cyclomatic complexity and dense conditional logic requiring deep framework knowledge.

Run 3

The code is highly readable with clear structure and intent. It uses logical organization with well-named methods and classes. Nesting is reasonable, though some methods like _check_unique_target have moderate nesting levels. Action granularity is mostly one action per line. The reading flow is natural, with methods grouped by functionality. However, there are minor readability issues: excessive blank lines in imports and class definition, some unnecessary comment placeholders (empty comments), and a few long methods that could be broken down further. The type hints are absent, and some complex logic (particularly in _check_unique_target) could benefit from more explanatory comments. The code follows Django conventions well and maintains consistent formatting throughout.

Run 1

Code Structure: Well organized into focused methods for validation, field resolution, relationship metadata, and class integration. Nesting: Mostly shallow with early returns, although validation and deconstruction contain moderately nested branches. Clarity of intent: Descriptive method and variable names help, but missing documentation and unexplained Django internals obscure subtle behavior; RelatedField and RECURSIVE_RELATIONSHIP_CONSTANT are not defined in this excerpt. Code length: Generally justified by functionality, though repetitive error construction, numerous imports unused in the excerpt, and excessive blank lines add bulk. Action granularity: Statements generally perform one action each, and multiline expressions are formatted clearly. Reading flow: Related methods are grouped naturally and formatting is consistent, but dense uniqueness checks and framework-specific metadata access require careful reading.

Run 2

Code Structure: Responsibilities are logically separated into validation, field resolution, metadata, and descriptor methods, although the class is large. Nesting: Most methods are shallow and use early returns; validation and deconstruction contain moderately nested branches. Clarity of intent: Descriptive method and variable names help, but missing docstrings and explanatory comments obscure framework-specific behavior. RelatedField and RECURSIVE_RELATIONSHIP_CONSTANT are not defined or imported in the excerpt, reducing self-contained clarity. Code length: Most methods are concise, but verbose error construction, repeated validation patterns, numerous unused imports in this excerpt, and excessive blank lines add noise. Action granularity: Statements generally perform one action each, with readable multiline calls and comprehensions. Reading flow: Consistent indentation and sensible method grouping support navigation, while dense metadata expressions, inheritance dependencies, and unexplained special cases interrupt understanding.

Run 3

Code Structure: Well-separated methods organize validation, field resolution, relationship traversal, and class integration, although the broad import list adds clutter. Nesting: Mostly shallow, with early returns improving readability; validation and deconstruction contain some deeper branches. Clarity of intent: Descriptive method and variable names communicate most responsibilities, but missing documentation and unexplained Django internals make edge cases difficult to understand. RelatedField and RECURSIVE_RELATIONSHIP_CONSTANT are not defined or imported in this excerpt, reducing self-contained clarity. Code length: Reasonable for the functionality, though repeated validation patterns and lengthy error construction increase scanning effort. Action granularity: Generally one operation per statement, with appropriately formatted multiline calls and comprehensions. Reading flow: Consistent formatting and related methods grouped together support natural reading, but excessive blank whitespace and transitions between framework-specific responsibilities interrupt the flow.