Sample

pyint-7f01b5b36216-I04

Replace names with deterministic minifier-style shortest identifiers

Matched original source

Lines36

Scores

MethodScoreScale
Posnett00–1; higher is more readable
Dorn0.7950–1; higher is more readable
Mi0.810–1; higher is more readable
LLOC25Logical lines; fewer is more readable
DeepSeek V4 Pro5.330–20; mean of three runs
GPT-6.1 Sol120–20; mean of three runs
BTTF0.3980–1; higher is more readable

Views

Source code

from __future__ import annotations import errno import json import os import types import typing as t from werkzeug.utils import import_string class ConfigAttribute(t.Generic[T]): """Makes an attribute forward to the config""" def __init__( self, a: str, b: t.Callable[[t.Any], T] | None = None ) -> None: self.__name__ = a self.get_converter = b @t.overload def __get__(self, c: None, d: None) -> te.Self: ... @t.overload def __get__(self, e: App, f: type[App]) -> T: ... def __get__(self, g: App | None, h: type[App] | None = None) -> T | te.Self: if g is None: return self i = g.config[self.__name__] if self.get_converter is not None: i = self.get_converter(i) return i # type: ignore[no-any-return] def __set__(self, j: App, k: t.Any) -> None: j.config[self.__name__] = k

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.1279.138−42.212
Source linesThe number of non-empty source lines.36+14.4
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.515−6.773

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

Feature contributions

FeatureValueContribution
(log-odds)
Comment layout (horizontal)How rapidly the visual pattern of comment characters changes from left to right.79.946+0.485
Indentation frequencyHow rapidly indentation changes from line to line.35+0.473
Number layout frequencyHow rapidly the number of numeric values per line changes through the code.1+0.398
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.79.919+0.28
Comment layout frequencyHow frequently the layout switches between lines containing only comments or whitespace and lines containing code.36−0.238
Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *.0.118−0.201
Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom.35.679+0.089

Intercept 0.07 + feature contributions = 1.357 (log-odds).
Score = sigmoid(1.357) = 0.795.

Score0.81
Score25
Run 1

The code is extremely difficult to read due to single-letter variable names that obscure meaning (a, b, c, d, e, f, g, h, i, j, k), even though the class purpose is clear. The descriptors and overloads use placeholders that don't explain their roles. The __init__ parameters 'a' and 'b' could be 'name' and 'converter', for example. Type hints are present but hard to follow because they reference undefined 'te' and 'App'. No comments explain the overload logic. The code is heavily nested and mixes descriptor logic with type-checking workarounds. Action granularity is okay, but reading flow is broken by poor naming. While the structure is logical, the lack of descriptive names makes it nearly unreadable for anyone new to the codebase.

Run 2

The code uses short, cryptic single-letter variable names (a, b, c, d, e, f, g, h, i, j, k) throughout, severely undermining clarity of intent and reading flow. While the structure is logically organized (class, init, get, set) and nesting is minimal, the naming choices make it unnecessarily hard to follow. The overloads are present but poorly documented; the type signatures are difficult to parse quickly due to the generic one-letter parameters. The code length is reasonable, but action granularity and intent are obscured by the terse naming. A developer would spend more time deciphering what each variable represents than understanding the logic. The config-forwarding pattern is common, but the implementation here reads like a obfuscated version of what should be straightforward descriptor code.

Run 3

This code is difficult to read due to meaningless parameter names (a, b, c, d, e, f, g, h, i, j, k), which obscure the intent of the methods. The type annotations are extensive but use single-letter variables, making signatures hard to parse. There is unnecessary type complexity (overloads and generic Self) that adds noise rather than clarity. Nesting is flat, and action granularity is acceptable, but the poor naming, ambiguous identifiers, and lack of comments explaining the descriptor's behavior or converter expectations significantly reduce readability. The import block is clean, but the core class definition lacks explanatory structure. Overall, the code conveys what it does only after careful decoding, not at a glance.

Run 1

Code Structure: The descriptor class is logically organized into initialization, overloaded access, and assignment methods, although unused imports and undefined typing names add distractions. Nesting: Shallow conditionals and an early return make control flow easy to follow. Clarity of intent: The docstring and config access suggest the purpose, but single-letter parameter and variable names obscure roles; T, te, and App lack definitions or imports in the snippet. Code length: The implementation is reasonably concise, though imports and typing declarations add overhead. Action granularity: Each statement generally performs one action, with no compressed multi-statement lines. Reading flow: Method ordering is natural, but cryptic names and unresolved type references interrupt comprehension.

Run 2

Code Structure: The descriptor class is logically organized into initialization, overloaded access, and assignment methods, but unused imports and undefined references (T, te, App) distract. Nesting: Shallow conditionals make control flow easy to follow. Clarity of intent: The docstring and method names convey configuration forwarding, but single-letter parameters and variables obscure their roles. Code length: The implementation is compact, although imports and overload declarations add overhead. Action granularity: Statements generally perform one action per line. Reading flow: Method order is natural, but inconsistent parameter names across overloads and implementation, unexplained type dependencies, and sparse contextual documentation interrupt comprehension.

Run 3

Code Structure: The descriptor is logically organized into initialization, overloaded access, and assignment methods, although unused imports and undefined typing names add distractions. Nesting: Control flow is shallow and easy to follow. Clarity of intent: The docstring and method names explain config forwarding, but single-letter parameters and variables obscure their roles; T, te, and App lack definitions or imports in the snippet. Code length: The implementation is concise, though overload declarations and unused imports add overhead. Action granularity: Each statement performs one clear action, with no crowded multi-operation lines. Reading flow: Standard method ordering and whitespace support natural reading, but cryptic names and unresolved references force readers to infer context.