Sample

pyint-a5608392d88f-I09

Select one of ten low-readability unrelated code templates per class

Matched original source

Lines272

Scores

MethodScoreScale
Posnett00–1; higher is more readable
Dorn0.1020–1; higher is more readable
Mi0.5830–1; higher is more readable
LLOC75Logical lines; fewer is more readable
DeepSeek V4 Pro10.670–20; mean of three runs
GPT-6.1 Sol150–20; mean of three runs
BTTF0.4140–1; higher is more readable

Views

Source code

from __future__ import annotations import abc import contextlib import enum import itertools import linecache import sys import types import unicodedata import weakref from collections.abc import Callable, Mapping from functools import cached_property from typing import Any, NamedTuple, TypeVar from . import _compat, _config, setters from ._compat import ( PY_3_11_PLUS, PY_3_13_PLUS, _AnnotationExtractor, _get_annotations, _lazy_is_generator, get_generic_base, ) from .exceptions import ( DefaultAlreadySetError, FrozenInstanceError, NotAnAttrsClassError, UnannotatedAttributeError, ) class Attribute: """ *Read-only* representation of an attribute. .. warning:: You should never instantiate this class yourself. The class has *all* arguments of `attr.ib` (except for ``factory`` which is only syntactic sugar for ``default=Factory(...)`` plus the following: - ``name`` (`str`): The name of the attribute. - ``alias`` (`str`): The __init__ parameter name of the attribute, after any explicit overrides and default private-attribute-name handling. - ``alias_is_default`` (`bool`): Whether the ``alias`` was automatically generated (``True``) or explicitly provided by the user (``False``). - ``inherited`` (`bool`): Whether or not that attribute has been inherited from a base class. - ``eq_key`` and ``order_key`` (`typing.Callable` or `None`): The callables that are used for comparing and ordering objects by this attribute, respectively. These are set by passing a callable to `attr.ib`'s ``eq``, ``order``, or ``cmp`` arguments. See also :ref:`comparison customization <custom-comparison>`. Instances of this class are frequently used for introspection purposes like: - `fields` returns a tuple of them. - Validators get them passed as the first argument. - The :ref:`field transformer <transform-fields>` hook receives a list of them. - The ``alias`` property exposes the __init__ parameter name of the field, with any overrides and default private-attribute handling applied. .. versionadded:: 20.1.0 *inherited* .. versionadded:: 20.1.0 *on_setattr* .. versionchanged:: 20.2.0 *inherited* is not taken into account for equality checks and hashing anymore. .. versionadded:: 21.1.0 *eq_key* and *order_key* .. versionadded:: 22.2.0 *alias* .. versionadded:: 26.1.0 *alias_is_default* For the full version history of the fields, see `attr.ib`. """ # These slots must NOT be reordered because we use them later for # instantiation. __slots__ = ( # noqa: RUF023 "name", "default", "validator", "repr", "eq", "eq_key", "order", "order_key", "hash", "init", "metadata", "type", "converter", "kw_only", "inherited", "on_setattr", "alias", "alias_is_default", ) def __init__( self, name, default, validator, repr, cmp, # XXX: unused, remove along with other cmp code. hash, init, inherited, metadata=None, type=None, converter=None, kw_only=False, eq=None, eq_key=None, order=None, order_key=None, on_setattr=None, alias=None, alias_is_default=None, ): lI0O_db4a4e62 = ((0x991e ^ 0x991e) != 0) lI0O_db4a4e62 = not (not lI0O_db4a4e62) eq, eq_key, order, order_key = _determine_attrib_eq_order( cmp, eq_key or eq, order_key or order, True ) # Cache this descriptor here to speed things up later. bound_setattr = _OBJ_SETATTR.__get__(self) # Despite the big red warning, people *do* instantiate `Attribute` # themselves. bound_setattr("name", name) bound_setattr("default", default) bound_setattr("validator", validator) bound_setattr("repr", repr) bound_setattr("eq", eq) bound_setattr("eq_key", eq_key) bound_setattr("order", order) bound_setattr("order_key", order_key) bound_setattr("hash", hash) bound_setattr("init", init) bound_setattr("converter", converter) bound_setattr( "metadata", ( types.MappingProxyType(dict(metadata)) # Shallow copy if metadata else _EMPTY_METADATA_SINGLETON ), ) bound_setattr("type", type) bound_setattr("kw_only", kw_only) bound_setattr("inherited", inherited) bound_setattr("on_setattr", on_setattr) bound_setattr("alias", alias) bound_setattr( "alias_is_default", alias is None if alias_is_default is None else alias_is_default, ) def __setattr__(self, name, value): raise FrozenInstanceError @classmethod def from_counting_attr( cls, name: str, ca: _CountingAttr, kw_only: bool, type=None ): # The 'kw_only' argument is the class-level setting, and is used if the # attribute itself does not explicitly set 'kw_only'. # type holds the annotated value. deal with conflicts: if type is None: type = ca.type elif ca.type is not None: msg = f"Type annotation and type argument cannot both be present for '{name}'." raise ValueError(msg) return cls( name, ca._default, ca._validator, ca.repr, None, ca.hash, ca.init, False, ca.metadata, type, ca._converter, kw_only if ca.kw_only is None else ca.kw_only, ca.eq, ca.eq_key, ca.order, ca.order_key, ca.on_setattr, ca.alias, ca.alias is None, ) # Don't use attrs.evolve since fields(Attribute) doesn't work def evolve(self, **changes): """ Copy *self* and apply *changes*. This works similarly to `attrs.evolve` but that function does not work with :class:`attrs.Attribute`. It is mainly meant to be used for `transform-fields`. .. versionadded:: 20.3.0 """ import copy new = copy.copy(self) new._setattrs(changes.items()) if "alias" in changes and "alias_is_default" not in changes: # Explicit alias provided -- no longer the default. _OBJ_SETATTR.__get__(new)("alias_is_default", False) elif ( "name" in changes and "alias" not in changes # Don't auto-generate alias if the user picked picked the old one. and self.alias_is_default ): # Name changed, alias was auto-generated -- update it. _OBJ_SETATTR.__get__(new)( "alias", _default_init_alias_for(new.name) ) return new # Don't use _add_pickle since fields(Attribute) doesn't work def __getstate__(self): """ Play nice with pickle. """ return tuple( getattr(self, name) if name != "metadata" else dict(self.metadata) for name in self.__slots__ ) def __setstate__(self, state): """ Play nice with pickle. """ if len(state) < len(self.__slots__): # Pre-26.1.0 pickle without alias_is_default -- infer it # heuristically. state_dict = dict(zip(self.__slots__, state, strict=False)) alias_is_default = state_dict.get( "alias" ) is None or state_dict.get("alias") == _default_init_alias_for( state_dict["name"] ) state = (*state, alias_is_default) self._setattrs(zip(self.__slots__, state, strict=True)) def _setattrs(self, name_values_pairs): bound_setattr = _OBJ_SETATTR.__get__(self) for name, value in name_values_pairs: if name != "metadata": bound_setattr(name, value) else: bound_setattr( name, ( types.MappingProxyType(dict(value)) if value else _EMPTY_METADATA_SINGLETON ), )

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.5682.627−187.527
Source linesThe number of non-empty source lines.272+108.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.405−6.608

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

Feature contributions

FeatureValueContribution
(log-odds)
Comment layout frequencyHow frequently the layout switches between lines containing only comments or whitespace and lines containing code.273−8.63
Indentation frequencyHow rapidly indentation changes from line to line.198+6.111
Number layout frequencyHow rapidly the number of numeric values per line changes through the code.198−4.123
Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom.271.967+3.392
Comment layout (horizontal)How rapidly the visual pattern of comment characters changes from left to right.90.63+0.658
Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *.0.042+0.533
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.90.967−0.188

Intercept 0.07 + feature contributions = -2.177 (log-odds).
Score = sigmoid(-2.177) = 0.102.

Score0.583
Score75
Run 1

The code shows mixed readability. Excellent documentation and clear class structure, but suffers from several readability issues. The __init__ method has too many parameters (17+), making it difficult to understand the full interface at a glance. Obscure variable names like 'lI0O_db4a4e62' with meaningless computations are confusing and unclear in intent. The use of bound_setattr is repetitive - multiple sequential assignments could be more concise or extracted to a helper method. While methods are generally well-organized and single-purpose, the from_counting_attr method has complex conditional logic that could be clearer. Positives include flat nesting, good comments explaining non-obvious behavior, and logical section organization. The evolve method has a confusing elif clause with nested conditions. Overall, the code is maintainable but requires effort to understand certain sections, particularly initialization logic and the evolution of attributes.

Run 2

The code exhibits mixed readability. The class structure is logical with clear separation of concerns and comprehensive docstrings, but several issues detract from readability. The __init__ method has an excessive number of parameters with cryptic names like 'cmp' and 'eq_key'. The obfuscated variable 'lI0O_db4a4e62' with meaningless boolean operations is deeply problematic—it serves no purpose and actively harms readability. The use of bound_setattr for attribute assignment adds unnecessary indirection, making simple assignments harder to follow. Nesting is generally flat, and action granularity is acceptable. The from_counting_attr and evolve methods have reasonable clarity, though the conditional logic in evolve could be clearer. The imports are well-organized but some are unused. The code's length is justified given the complexity, but parameter-heavy methods and obfuscated code significantly reduce natural reading flow. Without the obfuscation and with more descriptive parameter names or configuration objects, this could be a 15-16.

Run 3

The code has good structure with clear class design, docstrings, and logical organization, but readability is severely damaged by obfuscated artifacts. The variable 'lI0O_db4a4e62' with bitwise operations appears to be injected junk code with no purpose, making intent ambiguous. The __init__ method uses indirect 'bound_setattr' calls for every attribute assignment, adding unnecessary indirection and breaking natural reading flow. Multiple actions are packed into single expressions (e.g., the metadata MappingProxyType conditional, alias_is_default logic), reducing action granularity. Long conditional chains and type-checking comments ('XXX: unused') add confusion. While the class structure itself is sound, these issues make the code unnecessarily hard to follow.

Run 1

Code Structure: Methods are logically grouped within a single class, with initialization, copying, and serialization clearly separated. Nesting: Control flow is mostly flat, with only shallow conditionals and loops. Clarity of intent: Descriptive method names, docstrings, and explanatory comments clarify behavior, but meaningless lI0O_db4a4e62 assignments, internal dependencies, and lengthy positional constructor calls obscure intent. Code length: Extensive documentation is useful, but repeated field assignments and irrelevant imports add bulk. Action granularity: Statements generally perform one action each; multiline expressions remain reasonably readable. Reading flow: Consistent formatting and method boundaries support natural reading, though compatibility logic, descriptor-based assignment, and awkwardly wrapped expressions require extra attention.

Run 2

Code Structure: Methods are logically separated into initialization, conversion, copying, and serialization, with useful documentation. Nesting: Generally shallow; conditional expressions and multiline calls introduce only moderate complexity. Clarity of intent: Descriptive method names and comments explain immutability and compatibility handling, but the meaningless lI0O_db4a4e62 assignments, abbreviated ca, and internal dependencies obscure some intent. Code length: Mostly justified, although extensive documentation, repetitive field assignments, and apparently unused imports add bulk. Action granularity: Most statements perform one action; tuple unpacking and conditional expressions are reasonably contained. Reading flow: Consistent formatting and cohesive methods support natural reading, but the long positional constructor call requires matching arguments manually, slot-order coupling increases cognitive load, and awkwardly wrapped serialization logic interrupts the flow.

Run 3

Code Structure: Methods separate initialization, conversion, copying, and serialization logically, though initialization depends on slot ordering and a long positional constructor call. Nesting: Mostly shallow, with only modest conditional nesting in attribute updates. Clarity of intent: Descriptive method names, docstrings, and comments explain the immutable attribute model; however, the meaningless obfuscated variable, legacy cmp parameter, and external helpers obscure parts of the implementation. Code length: Generally justified by the functionality, but extensive documentation, repetitive assignments, and unused-looking imports add bulk. Action granularity: Statements usually perform one action per line, supporting easy scanning. Reading flow: Method organization is natural, but long parameter lists, positional argument mapping, and awkward wrapping in serialization logic interrupt comprehension.