AI Slop Code RIsk Monitor

renpy/renpy

The Ren'Py Visual Novel Engine

25.1 Elevated pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for renpy/renpy, a Ren'Py project with 6,905 GitHub stars. SynthScan examined 176,448 lines of code across 357 source files, recording 4375 pattern matches distributed across 18 syntactic categories. The legacy adjusted pattern signal is 25.1 (Elevated pattern signal); it is not an authorship estimate.

Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.

25.1
Adjusted Signal
25.1
Raw Pattern Score
100%
Time Factor
2026-10-11
Last Push
6.9K
Stars
Ren'Py
Language
176.4K
Lines of Code
357
Files
4.4K
Pattern Hits
2026-10-12
Scan Date
0.45
HC Hit Rate

Risk Review · v3

Use each vector to guide manual verification of the underlying findings.

Cognitive Ownership Risk 23.1/100 · LOW

Can maintainers explain intent, assumptions, and trade-offs? 868 finding(s).

Hallucinated Dependency & Supply Chain Risk 49.0/100 · MEDIUM

Are imports declared and package/API names verified? 2967 finding(s).

Agent Over-Engineering Ratio 32.3/100 · MEDIUM

Are wrappers, guards, and repeated structures necessary? 793 finding(s).

PR Review Velocity Impact 78.1/100 · CRITICAL

Which changes need focused human review? 4375 finding(s).

What These Metrics Mean

Adjusted Signal
Legacy pattern score normalized per 1,000 scanned lines and multiplied by the repository-level time factor. It is not an estimate of AI authorship.
Raw Pattern Score
Sum of severity- and context-weighted pattern findings before applying the time factor.
Time Factor
A coarse multiplier based on repository last-push metadata. It does not identify when individual code was written.
Pattern Hits
Count of configured pattern findings. Review each location and surrounding code before acting.
HC Hit Rate
High- and critical-severity findings per scanned file. Severity is a configured detector weight, not proof of a vulnerability or authorship.
Lines / Files
Scan coverage denominators used by the legacy normalized score.

Pattern-Signal History

This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.

Severity Breakdown

Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.

CRITICAL 0HIGH 162MEDIUM 90LOW 4123

Directory Score Breakdown

This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.

Pattern Findings

The scanner identified 4375 distinct pattern matches across 18 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.

Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.

Unused Imports2950 hits · 2289 pts
SeverityFileLineSnippetContext
LOWdistribute.py4CODE
LOWdistribute.py4CODE
LOWdistribute.py4CODE
LOWdistribute.py4CODE
LOWdistribute.py4CODE
LOWdistribute.py18CODE
LOWadd.py2CODE
LOWadd.py9CODE
LOWrenpy.py27CODE
LOWrenpy.py27CODE
LOWmain.py27CODE
LOWmain.py27CODE
LOWlauncher/game/webserver.py1CODE
LOWlauncher/game/change_icon.py25CODE
LOWlauncher/game/change_icon.py26CODE
LOWlauncher/game/gui7/code.py22CODE
LOWlauncher/game/gui7/__init__.py22CODE
LOWlauncher/game/gui7/__init__.py22CODE
LOWlauncher/game/gui7/__init__.py22CODE
LOWlauncher/game/gui7/images.py26CODE
LOWrenpy/bootstrap.py325CODE
LOWrenpy/ecsign.py23CODE
LOWrenpy/scriptedit.py25CODE
LOWrenpy/scriptedit.py25CODE
LOWrenpy/scriptedit.py25CODE
LOWrenpy/scriptedit.py25CODE
LOWrenpy/scriptedit.py25CODE
LOWrenpy/scriptedit.py26CODE
LOWrenpy/scriptedit.py26CODE
LOWrenpy/scriptedit.py26CODE
LOWrenpy/scriptedit.py26CODE
LOWrenpy/scriptedit.py26CODE
LOWrenpy/scriptedit.py26CODE
LOWrenpy/scriptedit.py26CODE
LOWrenpy/scriptedit.py26CODE
LOWrenpy/scriptedit.py26CODE
LOWrenpy/scriptedit.py26CODE
LOWrenpy/scriptedit.py31CODE
LOWrenpy/execution.py29CODE
LOWrenpy/config.py26CODE
LOWrenpy/config.py26CODE
LOWrenpy/config.py26CODE
LOWrenpy/config.py26CODE
LOWrenpy/config.py26CODE
LOWrenpy/config.py27CODE
LOWrenpy/config.py27CODE
LOWrenpy/config.py27CODE
LOWrenpy/config.py27CODE
LOWrenpy/config.py27CODE
LOWrenpy/config.py27CODE
LOWrenpy/config.py27CODE
LOWrenpy/config.py27CODE
LOWrenpy/config.py27CODE
LOWrenpy/config.py27CODE
LOWrenpy/config.py27CODE
LOWrenpy/config.py29CODE
LOWrenpy/config.py29CODE
LOWrenpy/savelocation.py27CODE
LOWrenpy/savelocation.py27CODE
LOWrenpy/savelocation.py27CODE
2890 more matches not shown…
Empty Error Handlers145 hits · 725 pts
SeverityFileLineSnippetContext
HIGHdistribute.py23except ImportError:CODE
HIGHlauncher/game/installer.py58except Exception:CODE
HIGHlauncher/game/installer.py373except Exception:CODE
HIGHlauncher/game/installer.py132except Exception:CODE
HIGHlauncher/game/installer.py126except Exception:CODE
HIGHlauncher/game/installer.py368except Exception:CODE
HIGHlauncher/game/gui7/images.py54except Exception:CODE
HIGHlauncher/game/gui7/images.py122except Exception:CODE
HIGHrenpy/bootstrap.py53except Exception:CODE
HIGHrenpy/bootstrap.py399except renpy.game.ParseErrorException:CODE
HIGHrenpy/execution.py207except Exception:CODE
HIGHrenpy/execution.py566except Exception:CODE
HIGHrenpy/execution.py559except Exception:CODE
HIGHrenpy/savelocation.py117except Exception:CODE
HIGHrenpy/savelocation.py460except Exception:CODE
HIGHrenpy/savelocation.py732except Exception:CODE
HIGHrenpy/savelocation.py184except Exception:CODE
HIGHrenpy/savelocation.py282except Exception:CODE
HIGHrenpy/savelocation.py288except Exception:CODE
HIGHrenpy/error.py1643except Exception:CODE
HIGHrenpy/error.py1649except Exception:CODE
HIGHrenpy/error.py1699except Exception:CODE
HIGHrenpy/error.py1709except Exception:CODE
HIGHrenpy/error.py1735except Exception:CODE
HIGHrenpy/error.py1741except Exception:CODE
HIGHrenpy/error.py1752except Exception:CODE
HIGHrenpy/savetoken.py209except Exception:CODE
HIGHrenpy/memory.py80except Exception:CODE
HIGHrenpy/log.py288except Exception:CODE
HIGHrenpy/log.py119except Exception:CODE
HIGHrenpy/log.py270except Exception:CODE
HIGHrenpy/log.py125except Exception:CODE
HIGHrenpy/pyanalysis.py957except Exception:CODE
HIGHrenpy/pyanalysis.py973except Exception:CODE
HIGHrenpy/util.py35except Exception:CODE
HIGHrenpy/util.py48except Exception:CODE
HIGHrenpy/game.py413except EndReplay:CODE
HIGHrenpy/arguments.py39except Exception:CODE
HIGHrenpy/__init__.py82except ImportError:CODE
HIGHrenpy/__init__.py575except ImportError:CODE
HIGHrenpy/__init__.py79except Exception:CODE
HIGHrenpy/rollback.py149except Exception:CODE
HIGHrenpy/rollback.py167except Exception:CODE
HIGHrenpy/rollback.py174except Exception:CODE
HIGHrenpy/rollback.py659except RuntimeError:CODE
HIGHrenpy/loadsave.py285except Exception:CODE
HIGHrenpy/loadsave.py192except Exception:CODE
HIGHrenpy/loadsave.py73except Exception:CODE
HIGHrenpy/dump.py242except Exception:CODE
HIGHrenpy/parser.py1816except Exception:CODE
HIGHrenpy/parser.py1804except Exception:CODE
HIGHrenpy/add_from.py112except Exception:CODE
HIGHrenpy/loader.py56except Exception:CODE
HIGHrenpy/loader.py751except Exception:CODE
HIGHrenpy/loader.py859except Exception:CODE
HIGHrenpy/loader.py541except Exception:CODE
HIGHrenpy/loader.py597except IOError:CODE
HIGHrenpy/lexer.py37except ImportError:CODE
HIGHrenpy/lexer.py148except Exception:CODE
HIGHrenpy/lexer.py154except Exception:CODE
85 more matches not shown…
Excessive Try-Catch Wrapping382 hits · 386 pts
SeverityFileLineSnippetContext
LOWdistribute.py135 except Exception:CODE
LOWrenpy.py121 except Exception:CODE
LOWrenpy.py158 except Exception:CODE
MEDIUMrenpy.py114def test_writable(d):CODE
LOWmain.py121 except Exception:CODE
LOWmain.py158 except Exception:CODE
MEDIUMmain.py114def test_writable(d):CODE
LOWlauncher/Visual Studio Code.edit.py99 except Exception:CODE
LOWlauncher/Visual Studio Code (System).edit.py99 except Exception:CODE
LOWlauncher/VSCodium (System).edit.py99 except Exception:CODE
LOWlauncher/game/webserver.py135 except Exception:CODE
LOWlauncher/game/installer.py58 except Exception:CODE
LOWlauncher/game/installer.py126 except Exception:CODE
LOWlauncher/game/installer.py132 except Exception:CODE
LOWlauncher/game/installer.py163 except Exception:CODE
LOWlauncher/game/installer.py368 except Exception:CODE
LOWlauncher/game/installer.py373 except Exception:CODE
LOWlauncher/game/installer.py436 except Exception as e:CODE
LOWlauncher/game/gui7/images.py54 except Exception:CODE
LOWlauncher/game/gui7/images.py122 except Exception:CODE
LOWrenpy/bootstrap.py53 except Exception:CODE
LOWrenpy/bootstrap.py134 except Exception:CODE
LOWrenpy/bootstrap.py301 except Exception as e:CODE
LOWrenpy/bootstrap.py326 except Exception as e:STRING
LOWrenpy/bootstrap.py362 except Exception:STRING
LOWrenpy/bootstrap.py402 except Exception as e:STRING
MEDIUMrenpy/bootstrap.py46def null_files():CODE
LOWrenpy/scriptedit.py529 except Exception:CODE
LOWrenpy/color.py373 except Exception:CODE
LOW⚡renpy/color.py385 except Exception:CODE
LOW⚡renpy/color.py395 except Exception:CODE
LOW⚡renpy/color.py405 except Exception:CODE
LOWrenpy/execution.py207 except Exception:CODE
LOWrenpy/execution.py559 except Exception:CODE
LOWrenpy/execution.py566 except Exception:CODE
LOWrenpy/execution.py690 except Exception:CODE
LOWrenpy/execution.py964 except Exception:CODE
LOWrenpy/execution.py1087 except Exception:CODE
MEDIUMrenpy/execution.py196def __repr__(self):CODE
LOW⚡renpy/savelocation.py282 except Exception:CODE
LOW⚡renpy/savelocation.py288 except Exception:CODE
LOW⚡renpy/savelocation.py292 except Exception:CODE
LOWrenpy/savelocation.py117 except Exception:CODE
LOWrenpy/savelocation.py132 except Exception:CODE
LOWrenpy/savelocation.py184 except Exception:CODE
LOWrenpy/savelocation.py264 except Exception:CODE
LOWrenpy/savelocation.py314 except Exception:CODE
LOWrenpy/savelocation.py317 except Exception:CODE
LOWrenpy/savelocation.py460 except Exception:CODE
LOWrenpy/savelocation.py732 except Exception:CODE
LOWrenpy/savelocation.py739 except Exception as e:CODE
LOWrenpy/importer.py330 except Exception as e:CODE
MEDIUMrenpy/error.py208def getvalue(self):CODE
LOW⚡renpy/error.py439 except Exception:CODE
LOW⚡renpy/error.py441 except Exception:CODE
LOWrenpy/error.py398 except Exception:CODE
LOWrenpy/error.py464 except Exception:CODE
LOWrenpy/error.py809 except Exception:CODE
LOWrenpy/error.py938 except Exception:CODE
LOWrenpy/error.py981 except Exception:CODE
322 more matches not shown…
Deep Nesting300 hits · 230 pts
SeverityFileLineSnippetContext
LOWdistribute.py51CODE
LOWrenpy.py232CODE
LOWmain.py232CODE
LOWlauncher/Visual Studio Code.edit.py14CODE
LOWlauncher/Visual Studio Code.edit.py79CODE
LOWlauncher/Visual Studio Code (System).edit.py14CODE
LOWlauncher/Visual Studio Code (System).edit.py79CODE
LOWlauncher/VSCodium (System).edit.py14CODE
LOWlauncher/VSCodium (System).edit.py79CODE
LOWlauncher/game/installer.py112CODE
LOWlauncher/game/installer.py144CODE
LOWlauncher/game/installer.py174CODE
LOWlauncher/game/installer.py349CODE
LOWlauncher/game/gui7/code.py293CODE
LOWunittests/test_screen_layers.py37CODE
LOWunittests/test_screen_layers.py76CODE
LOWunittests/test_setuplib.py43CODE
LOWrenpy/bootstrap.py197CODE
LOWrenpy/ecsign.py252CODE
LOWrenpy/scriptedit.py74CODE
LOWrenpy/color.py174CODE
LOWrenpy/execution.py1043CODE
LOWrenpy/execution.py591CODE
LOWrenpy/execution.py784CODE
LOWrenpy/execution.py887CODE
LOWrenpy/savelocation.py714CODE
LOWrenpy/savelocation.py819CODE
LOWrenpy/savelocation.py161CODE
LOWrenpy/savelocation.py267CODE
LOWrenpy/savelocation.py295CODE
LOWrenpy/error.py451CODE
LOWrenpy/error.py817CODE
LOWrenpy/error.py862CODE
LOWrenpy/error.py887CODE
LOWrenpy/error.py1314CODE
LOWrenpy/error.py1458CODE
LOWrenpy/error.py1517CODE
LOWrenpy/savetoken.py99CODE
LOWrenpy/savetoken.py264CODE
LOWrenpy/memory.py91CODE
LOWrenpy/memory.py430CODE
LOWrenpy/memory.py500CODE
LOWrenpy/memory.py97CODE
LOWrenpy/memory.py510CODE
LOWrenpy/pyanalysis.py258CODE
LOWrenpy/pyanalysis.py551CODE
LOWrenpy/ui.py1111CODE
LOWrenpy/rollback.py111CODE
LOWrenpy/rollback.py399CODE
LOWrenpy/rollback.py515CODE
LOWrenpy/rollback.py542CODE
LOWrenpy/rollback.py614CODE
LOWrenpy/rollback.py736CODE
LOWrenpy/rollback.py939CODE
LOWrenpy/substitutions.py44CODE
LOWrenpy/substitutions.py121CODE
LOWrenpy/webloader.py178CODE
LOWrenpy/webloader.py204CODE
LOWrenpy/dump.py63CODE
LOWrenpy/easy.py56CODE
240 more matches not shown…
Over-Commented Block229 hits · 227 pts
SeverityFileLineSnippetContext
LOWrenpy.py1#!/usr/bin/env pythonCOMMENT
LOWsetup.py1#!/usr/bin/env pythonCOMMENT
LOWmain.py1#!/usr/bin/env pythonCOMMENT
LOWlauncher/game/change_icon.py1# Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us>COMMENT
LOWlauncher/game/change_icon.py361 #COMMENT
LOWlauncher/game/installer.py1# Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us>COMMENT
LOWlauncher/game/gui7/code.py1# Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us>COMMENT
LOWlauncher/game/gui7/__init__.py1# Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us>COMMENT
LOWlauncher/game/gui7/images.py1# Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us>COMMENT
LOWlauncher/game/gui7/parameters.py1# Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us>COMMENT
LOWunittests/test_ime.py1# Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us>COMMENT
LOWunittests/test_asynctask.py1# Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us>COMMENT
LOWunittests/test_ecsign.py1# Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us>COMMENT
LOWrenpy/bootstrap.py1# Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us>COMMENT
LOWrenpy/ecsign.py1# Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us>COMMENT
LOWrenpy/scriptedit.py1# Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us>COMMENT
LOWrenpy/color.py1# Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us>COMMENT
LOWrenpy/execution.py1# Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us>COMMENT
LOWrenpy/config.py1# Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us>COMMENT
LOWrenpy/config.py101COMMENT
LOWrenpy/config.py241# choice from a menu. This can be used for making a demo version of aCOMMENT
LOWrenpy/savelocation.py1# Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us>COMMENT
LOWrenpy/importer.py1# Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us>COMMENT
LOWrenpy/error.py1# Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us>COMMENT
LOWrenpy/error.py541 # Binary ops, subscripts, and calls are expressions, soCOMMENT
LOWrenpy/screenlang.py1# Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us>COMMENT
LOWrenpy/savetoken.py1# Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us>COMMENT
LOWrenpy/memory.py1# Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us>COMMENT
LOWrenpy/object.py1# Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us>COMMENT
LOWrenpy/log.py1# Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us>COMMENT
LOWrenpy/pyanalysis.py1# Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us>COMMENT
LOWrenpy/revertable.py1# Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us>COMMENT
LOWrenpy/util.py1# Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us>COMMENT
LOWrenpy/ui.py1# Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us>COMMENT
LOWrenpy/game.py1# Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us>COMMENT
LOWrenpy/arguments.py1# Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us>COMMENT
LOWrenpy/preferences.py1# Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us>COMMENT
LOWrenpy/__init__.py1# Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us>COMMENT
LOWrenpy/rollback.py1# Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us>COMMENT
LOWrenpy/types.py1# Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us>COMMENT
LOWrenpy/substitutions.py1# Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us>COMMENT
LOWrenpy/loadsave.py1# Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us>COMMENT
LOWrenpy/webloader.py1# Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us>COMMENT
LOWrenpy/dump.py1# Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us>COMMENT
LOWrenpy/easy.py1# Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us>COMMENT
LOWrenpy/parser.py1# Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us>COMMENT
LOWrenpy/asynctask.py1# Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us>COMMENT
LOWrenpy/atl.py1# Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us>COMMENT
LOWrenpy/atl.py801COMMENT
LOWrenpy/atl.py821 # with timeleft being the amount of time left after this statementCOMMENT
LOWrenpy/atl.py1081# This can become one of four things:COMMENT
LOWrenpy/add_from.py1# Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us>COMMENT
LOWrenpy/loader.py1# Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us>COMMENT
LOWrenpy/curry.py1# Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us>COMMENT
LOWrenpy/debug.py1# Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us>COMMENT
LOWrenpy/lexer.py1# Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us>COMMENT
LOWrenpy/python.py1# Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us>COMMENT
LOWrenpy/character.py1# Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us>COMMENT
LOWrenpy/persistent.py1# Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us>COMMENT
LOWrenpy/ast.py1# Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us>COMMENT
169 more matches not shown…
Hyper-Verbose Identifiers184 hits · 191 pts
SeverityFileLineSnippetContext
LOWunittests/test_ime.py41 def test_from_event_out_of_range_selection(self):CODE
LOWunittests/test_ime.py57 def test_clamp_when_no_room_above_or_below(self):CODE
LOWunittests/test_asynctask.py58 def test_round_robin_and_budget(self):CODE
LOWunittests/test_asynctask.py78 def test_budget_checks_clock_after_each_step(self):CODE
LOWunittests/test_asynctask.py116 def test_cancel_only_started_task_clears_ready_queue(self):CODE
LOWunittests/test_asynctask.py135 def test_cancel_different_queued_task_from_running_task(self):CODE
LOWunittests/test_asynctask.py162 def test_cancel_closes_nested_yield_from(self):CODE
LOWunittests/test_asynctask.py185 def test_reset_closes_all_pending_and_reusable(self):CODE
LOWunittests/test_asynctask.py206 def test_reset_from_running_task_defers_its_close(self):CODE
LOWunittests/test_asynctask.py230 def test_cleanup_that_yields_is_error_but_other_tasks_are_closed(self):CODE
LOWunittests/test_asynctask.py258 def test_exception_propagates_without_discarding_other_work(self):CODE
LOWunittests/test_asynctask.py281 def test_nested_yield_from_result(self):CODE
LOWunittests/test_asynctask.py312 def test_run_sync_closes_on_exception(self):CODE
LOWunittests/test_asynctask.py326 def test_slow_step_logs_nested_location_and_completed(self):CODE
LOWunittests/test_asynctask.py350 def test_slow_step_logs_single_frame_location(self):CODE
LOWunittests/test_asynctask.py366 def test_slow_step_disabled_and_invalid_setting(self):CODE
LOWunittests/test_renpy_test_support.py11 def test_initializes_once_in_fresh_process(self):CODE
LOWunittests/test_renpy_test_support.py34 def test_failed_initialization_propagates_and_can_retry(self):STRING
LOWunittests/test_surface_deallocation.py16 def test_owned_surface_accounting_and_weakref_release(self):CODE
LOWunittests/test_surface_deallocation.py27 def test_nested_subsurfaces_retain_pixels_and_release_parent(self):CODE
LOWunittests/test_surface_deallocation.py42 def test_repeated_shutdown_and_late_surface_release(self):CODE
LOWunittests/test_surface_deallocation.py53 def test_subsurface_bursts_and_uninitialized_wrapper(self):CODE
LOWunittests/test_surface_deallocation.py64 def test_invalid_construction_does_not_leak_or_warn(self):CODE
LOWunittests/test_surface_deallocation.py73 def test_surface_factories_preserve_pixels_and_accounting(self):CODE
LOW⚡unittests/test_audio_queue.py144 def test_immediate_queue_is_gapless(self):CODE
LOW⚡unittests/test_audio_queue.py152 def test_late_queue_is_gapless_without_periodic_at_handoff(self):CODE
LOW⚡unittests/test_audio_queue.py162 def test_initial_sync_still_waits_for_periodic(self):CODE
LOW⚡unittests/test_audio_queue.py168 def test_queue_after_natural_eof_starts_playback(self):CODE
LOWunittests/test_audio_queue.py180 def test_queue_on_idle_channel_preserves_initial_sync(self):CODE
LOWunittests/test_audio_queue.py187 def test_queue_replacement_and_paused_handoff(self):CODE
LOWunittests/test_audio_queue.py202 def test_initial_channels_start_together(self):CODE
LOWunittests/test_audio_queue.py219 def test_tight_fadeout_spans_late_queue(self):CODE
LOWunittests/test_audio_queue.py231 def test_sample_aligned_partial_playback(self):CODE
LOWunittests/test_audio_queue.py246 def test_subsample_positions_round_to_nearest_sample(self):CODE
LOWunittests/test_audio_queue.py259 def test_natural_duration_rounds_to_whole_samples(self):CODE
LOWunittests/test_audio_queue.py316 def test_opus_interior_loop_matches_continuous_decode(self):CODE
LOWunittests/test_audio_queue.py330 def test_opus_resampled_interior_start_matches_continuous_decode(self):CODE
LOWunittests/test_audio_queue.py355 def test_opus_runtime_seeks_match_continuous_decode(self):CODE
LOWunittests/test_audio_queue.py371 def test_opus_loop_has_no_codec_delay_padding(self):CODE
LOWunittests/test_audio_queue.py388 def test_resampled_opus_drains_audio_at_eof(self):CODE
LOWunittests/test_audio_queue.py401 def test_explicit_end_preserves_requested_padding(self):CODE
LOWunittests/test_audio_queue.py410 def test_movie_preserves_container_duration_padding(self):CODE
LOWunittests/test_prediction.py15 def test_cancelled_prediction_pause_restores_ui_state(self):CODE
LOWunittests/test_prediction.py46 def test_screen_pause_does_not_postpone_prediction_yield(self):CODE
LOWunittests/test_warp.py68 def test_opt_in_and_unsupported_callables(self):CODE
LOWunittests/test_warp.py79 def test_say_attributes_are_not_applied_during_warp(self):CODE
LOWunittests/test_warp.py94 def test_character_skips_temporary_and_speaking_attributes_during_warp(self):CODE
LOWunittests/test_warp.py117 def test_failed_callable_restores_bookkeeping_and_continues(self):CODE
LOWunittests/test_warp.py135 def test_failed_synthetic_node_uses_fallback_location(self):CODE
LOWunittests/test_warp.py155 def test_failed_resolution_is_skipped(self):CODE
LOWunittests/test_warp.py163 def test_failed_eligibility_is_skipped(self):CODE
LOW⚡unittests/test_warp.py174 def test_failed_arguments_are_skipped(self):CODE
LOW⚡unittests/test_warp.py182 def test_control_exception_propagates_and_restores_flag(self):CODE
LOW⚡unittests/test_warp.py192 def test_display_during_warp_only_creates_retained_screen(self):CODE
LOWunittests/test_warp.py215 def test_reconstructed_history_has_no_rollback_identifier(self):CODE
LOWunittests/test_warp.py229 def test_narrator_and_string_adapter_eligibility(self):CODE
LOWunittests/test_warp.py237 def test_skipped_menu_only_applies_bubble_clearing(self):CODE
LOWunittests/test_warp.py259 def test_optimized_translation_uses_selected_text_without_marking_seen(self):CODE
LOWunittests/test_warp.py286 def test_translation_block_skips_failed_say_and_replays_next(self):CODE
LOWunittests/test_warp.py312 def test_failed_say_removes_new_retained_screen(self):CODE
124 more matches not shown…
Self-Referential Comments60 hits · 176 pts
SeverityFileLineSnippetContext
MEDIUMrenpy.py3# This file is part of Ren'Py. The license below applies to Ren'Py only.COMMENT
MEDIUMmain.py3# This file is part of Ren'Py. The license below applies to Ren'Py only.COMMENT
MEDIUMrenpy/scriptedit.py22# This file contains code to add and remove statements from the ASTCOMMENT
MEDIUMrenpy/execution.py22# This file contains code responsible for managing the execution of aCOMMENT
MEDIUMrenpy/error.py22# This file contains code for formatting tracebacks.COMMENT
MEDIUMrenpy/memory.py22# This file contains functions used to help debug memory leaks. They aren'tCOMMENT
MEDIUMrenpy/log.py22# This module handles the logging of messages to a file.COMMENT
MEDIUMrenpy/revertable.py22# This file contains code that handles the execution of python codeCOMMENT
MEDIUMrenpy/ui.py22# This file contains functions that can be used to display a UI on theCOMMENT
MEDIUMrenpy/game.py22# This module is intended to be used as a singleton object.COMMENT
MEDIUMrenpy/arguments.py22# This file handles argument parsing. Argument parsing takes place inCOMMENT
MEDIUMrenpy/__init__.py599 # Create the store.COMMENT
MEDIUMrenpy/rollback.py22# This file contains code that handles the execution of python codeCOMMENT
MEDIUMrenpy/types.py22# This file contains the various types that Ren'Py uses.COMMENT
MEDIUMrenpy/substitutions.py22# This file contains support for string translation and string formattingCOMMENT
MEDIUMrenpy/loadsave.py22# This file contains functions that load and save the game state.COMMENT
MEDIUMrenpy/dump.py22# This file contains code to write the reflect.json file. This file containsCOMMENT
MEDIUMrenpy/parser.py22# This module contains the parser for the Ren'Py script language. It'sCOMMENT
MEDIUMrenpy/atl.py1434 # Create a new transform state, and apply the propertyCOMMENT
MEDIUMrenpy/debug.py22# This file contains debugging code that isn't enabled in normal Ren'PyCOMMENT
MEDIUMrenpy/python.py22# This file contains code that handles the execution of python codeCOMMENT
MEDIUMrenpy/python.py231 # Create the dict.COMMENT
MEDIUMrenpy/character.py720 # Create a callback object specific to this pause.COMMENT
MEDIUMrenpy/character.py774 # Create the callback that is called when the slow text is done.COMMENT
MEDIUMrenpy/persistent.py279 # Create the backup of the persistent data.COMMENT
MEDIUMrenpy/ast.py22# This file contains the AST for the Ren'Py script language. Each classCOMMENT
MEDIUMrenpy/statements.py22# This module contains code to support user-defined statements.COMMENT
MEDIUMrenpy/main.py470 # Initialize persistent variables.COMMENT
MEDIUMrenpy/script.py22# This file contains code that is responsible for storing and executing aCOMMENT
MEDIUMrenpy/update/generate.py146 # Create a list of files by reverse mtime. The idea is that the newerCOMMENT
MEDIUMrenpy/sl2/slast.py46# This file contains the abstract syntax tree for a screen languageCOMMENT
MEDIUMrenpy/sl2/slast.py942 # Create the context.COMMENT
MEDIUMrenpy/sl2/slast.py2062 # Create an old-style displayable name for this call site.COMMENT
MEDIUMrenpy/exports/__init__.py22# This file contains functions that are exported to the script namespace asCOMMENT
MEDIUMrenpy/common/00sshtransition_ren.py22# This file contains support for a transition after a sequence ofCOMMENT
MEDIUMrenpy/display/anim.py22# This file contains support for state-machine controlled animations.COMMENT
MEDIUMrenpy/display/error.py22# This file contains code to handle GUI-based error reporting.COMMENT
MEDIUMrenpy/display/behavior.py1920# This class contains information about an adjustment that can change theCOMMENT
MEDIUMrenpy/display/emulator.py22# This file contains code to emulate various other devices on the PC.COMMENT
MEDIUMrenpy/display/layout.py22# This file contains classes that handle layout of displayables onCOMMENT
MEDIUMrenpy/display/predict.py22# This file contains the routines that manage image prediction.COMMENT
MEDIUMrenpy/display/core.py948 # Create a cache of the mouse information.COMMENT
MEDIUMrenpy/display/imagemap.py22# This file handles imagemap caching.COMMENT
MEDIUMrenpy/display/pgrender.py48 # Create a sample surface.COMMENT
MEDIUMrenpy/display/pgrender.py62 # Create the sample surface.COMMENT
MEDIUMrenpy/display/viewport.py22# This file contains classes that handle layout of displayables onCOMMENT
MEDIUMrenpy/display/im.py22# This file contains the new image code, which includes provisions forCOMMENT
MEDIUMrenpy/display/motion.py22# This file contains displayables that move, zoom, rotate, or otherwiseCOMMENT
MEDIUMrenpy/display/transform.py22# This file contains displayables that move, zoom, rotate, or otherwiseCOMMENT
MEDIUMrenpy/display/imagelike.py22# This file contains displayables that are image-like, because they takeCOMMENT
MEDIUMrenpy/display/image.py22# This file contains some miscellaneous displayables that involve images.COMMENT
MEDIUMrenpy/display/focus.py22# This file contains code to manage focus on the display.COMMENT
MEDIUMrenpy/text/emoji_trie.py3# This file is generated by module/emoji/make_emoji_trie.py. Do notCOMMENT
MEDIUMrenpy/text/text.py1042 # Create the texture.COMMENT
MEDIUMsphinx/source/conf.py6# This file is execfile()d with the current directory set to its containing dir.COMMENT
MEDIUMsphinx/source/fill-translator-credits.py4# This file is part of Ren'Py. The license below applies to Ren'Py only.COMMENT
MEDIUMscripts/generate_styles.py438# This file is generated by generate_styles.py.COMMENT
MEDIUMscripts/unicode/make_emoji_trie.py174# This file is generated by module/emoji/make_emoji_trie.py. Do notSTRING
MEDIUMscripts/sdl3/main.py79 # This file is automatically generated by scripts/sdl3/main.py. Do not edit manually.COMMENT
MEDIUMscripts/sdl3/main.py116 print("# This file is automatically generated by scripts/sdl3/main.py. Do not edit manually.", file=f)STRING
Cross-Language Confusion17 hits · 88 pts
SeverityFileLineSnippetContext
HIGHrenpy/ecsign.py347 Returns the uncompressed 64-byte binary representation (X || Y).STRING
HIGHrenpy/ecsign.py488 Signs `data` with ECDSA (NIST256p). Returns a 64-byte binary signature (r || s).STRING
HIGHrenpy/webloader.py63 if (xhr.status == 200 || xhr.status == 304 || xhr.status == 206 || (xhr.status == 0 && xhr.response)) {CODE
HIGHrenpy/webloader.py63 if (xhr.status == 200 || xhr.status == 304 || xhr.status == 206 || (xhr.status == 0 && xhr.response)) {CODE
HIGHrenpy/atl.py1376 if (old_child is not None) and (old_child is not renpy.display.motion.null) and (self.transition is not None):CODE
HIGHrenpy/main.py251 || (navigator.userAgent.indexOf("Mac") != -1 && navigator.maxTouchPoints > 1)"""CODE
HIGHrenpy/exports/fetchexports.py234 command = """fetchFile("{method}", "{url}", null, "{fn}", null, "{headers}")""".format(CODE
HIGHrenpy/common/00textshader_ren.py206 if (u__duration <= 0.0 || u_text_time < u__duration) {CODE
HIGH⚡renpy/audio/webaudio.py42 emscripten.run_script("renpyAudio.{}.apply(null, {});".format(function, dumps(args)))CODE
HIGH⚡renpy/audio/webaudio.py50 return emscripten.run_script_int("renpyAudio.{}.apply(null, {});".format(function, dumps(args)))CODE
HIGH⚡renpy/audio/webaudio.py58 rv = emscripten.run_script_string("renpyAudio.{}.apply(null, {});".format(function, dumps(args)))CODE
HIGHrenpy/display/behavior.py2716 return render(self.null, width, height, st, at)CODE
HIGHrenpy/display/layout.py569 self.add(null)CODE
HIGHrenpy/display/tts.py194 language = locale.toString().replace("_", "-")CODE
HIGHrenpy/display/core.py2771 ld.add(null)CODE
HIGHrenpy/display/viewport.py777 self.add(null)CODE
HIGHrenpy/gl2/live2d.py124window.live2d_csm.ccall("csmInitializeAmountOfMemory", null, ["number"], [{renpy.config.live2d_max_memory}]);CODE
AI Structural Patterns69 hits · 52 pts
SeverityFileLineSnippetContext
LOWrenpy/revertable.py348CODE
LOWrenpy/ui.py836CODE
LOWrenpy/ui.py924CODE
LOWrenpy/ui.py1242CODE
LOWrenpy/preferences.py379CODE
LOWrenpy/parser.py850CODE
LOWrenpy/parser.py874CODE
LOWrenpy/parser.py1236CODE
LOWrenpy/parser.py1245CODE
LOWrenpy/lexer.py1798CODE
LOWrenpy/character.py342CODE
LOWrenpy/character.py1428CODE
LOWrenpy/statements.py37CODE
LOWrenpy/test/testparser.py531CODE
LOWrenpy/test/testparser.py556CODE
LOWrenpy/test/testast.py403CODE
LOWrenpy/test/testast.py765CODE
LOWrenpy/update/common.py100CODE
LOWrenpy/update/common.py117CODE
LOWrenpy/update/common.py152CODE
LOWrenpy/translation/generation.py419CODE
LOWrenpy/sl2/slast.py699CODE
LOWrenpy/sl2/slast.py1854CODE
LOWrenpy/sl2/slast.py1871CODE
LOWrenpy/sl2/slast.py1917CODE
LOWrenpy/sl2/slparser.py740CODE
LOWrenpy/exports/fetchexports.py285CODE
LOWrenpy/exports/displayexports.py371CODE
LOWrenpy/exports/displayexports.py1343CODE
LOWrenpy/exports/menuexports.py202CODE
LOWrenpy/exports/inputexports.py68CODE
LOWrenpy/audio/webaudio.py60CODE
LOWrenpy/audio/music.py36CODE
LOWrenpy/audio/audio.py951CODE
LOWrenpy/display/screen.py226CODE
LOWrenpy/display/anim.py409CODE
LOWrenpy/display/behavior.py860CODE
LOWrenpy/display/behavior.py918CODE
LOWrenpy/display/behavior.py1240CODE
LOWrenpy/display/behavior.py1428CODE
LOWrenpy/display/behavior.py1963CODE
LOWrenpy/display/behavior.py2284CODE
LOWrenpy/display/displayable.py669CODE
LOWrenpy/display/movetransition.py457CODE
LOWrenpy/display/transition.py478CODE
LOWrenpy/display/transition.py830CODE
LOWrenpy/display/dragdrop.py327CODE
LOWrenpy/display/core.py2407CODE
LOWrenpy/display/pgrender.py189CODE
LOWrenpy/display/pgrender.py86CODE
LOWrenpy/display/viewport.py77CODE
LOWrenpy/display/motion.py61CODE
LOWrenpy/display/motion.py439CODE
LOWrenpy/display/motion.py603CODE
LOWrenpy/display/particle.py666CODE
LOWrenpy/display/module.py215CODE
LOWrenpy/display/video.py655CODE
LOWrenpy/display/imagelike.py202CODE
LOWrenpy/display/scenelists.py350CODE
LOWrenpy/display/scale.py70CODE
9 more matches not shown…
AI Slop Vocabulary7 hits · 14 pts
SeverityFileLineSnippetContext
LOWlauncher/game/change_icon.py391 # There's already a header size, and this isn't changing headers, so just add.COMMENT
MEDIUMrenpy/error.py98 # TODO: Make it more robust by is_relative_to check.COMMENT
MEDIUM⚡renpy/translation/__init__.py1228 # robust against minor ordering oddities. First valid match per slot wins,COMMENT
LOWrenpy/sl2/slast.py885 # We do not want to pass keywords to our parents, so just return.COMMENT
LOWrenpy/display/behavior.py622 # If we have been drawn since the timeout, simply returnCOMMENT
LOWrenpy/display/swdraw.py62 # allows us to just return without having to do any cleanupCOMMENT
MEDIUMrenpy/gl2/live2d.py993 # Handle seamless.STRING
Structural Annotation Overuse6 hits · 12 pts
SeverityFileLineSnippetContext
LOW⚡renpy/translation/__init__.py1222 # Step 2: language subtag must be 2 or 3 alphabetic characters (ISO 639-1/2/3).COMMENT
LOW⚡renpy/translation/__init__.py1227 # Step 3: walk remaining subtags. Identify by shape, not position, so we'reCOMMENT
LOW⚡renpy/translation/__init__.py1244 # Step 4: infer region if missing.COMMENT
LOW⚡renpy/translation/__init__.py1248 # Step 5: handle script. Only Chinese commonly carries a script in practice,COMMENT
LOWrenpy/translation/__init__.py1207 # Step 1: strip BCP 47 extensions. Everything from "-u-", "-t-", or "-x-"COMMENT
LOWrenpy/display/transform.py1107 # NOTE: This function is duplicated (more or less) in ATLTransform.COMMENT
Verbosity Indicators5 hits · 10 pts
SeverityFileLineSnippetContext
LOW⚡renpy/translation/__init__.py1222 # Step 2: language subtag must be 2 or 3 alphabetic characters (ISO 639-1/2/3).COMMENT
LOW⚡renpy/translation/__init__.py1227 # Step 3: walk remaining subtags. Identify by shape, not position, so we'reCOMMENT
LOW⚡renpy/translation/__init__.py1244 # Step 4: infer region if missing.COMMENT
LOW⚡renpy/translation/__init__.py1248 # Step 5: handle script. Only Chinese commonly carries a script in practice,COMMENT
LOWrenpy/translation/__init__.py1207 # Step 1: strip BCP 47 extensions. Everything from "-u-", "-t-", or "-x-"COMMENT
Dead Code5 hits · 10 pts
SeverityFileLineSnippetContext
MEDIUMunittests/test_asynctask.py306CODE
MEDIUMrenpy/sl2/slast.py1849CODE
MEDIUMrenpy/sl2/slast.py1866CODE
MEDIUMrenpy/sl2/slast.py1912CODE
MEDIUMrenpy/sl2/slast.py1956CODE
Redundant / Tautological Comments6 hits · 9 pts
SeverityFileLineSnippetContext
LOWrenpy/config.py1501# Set this to true to log events to log.txt.COMMENT
LOWrenpy/main.py496 # Check if we should simulate android.COMMENT
LOWrenpy/script.py510 # Assign names to statements that don't have one already.COMMENT
LOWrenpy/test/testparser.py873 ## Check if we have another condition after this oneCOMMENT
LOWrenpy/update/generate.py167 # Write the filelist to a file.COMMENT
LOWrenpy/display/layout.py666 # Set this to true to force the box to adjust its children's times.COMMENT
Modern Structural Boilerplate7 hits · 7 pts
SeverityFileLineSnippetContext
LOWrenpy/minstore.py179__all__ = [CODE
LOWrenpy/compat/__init__.py132__all__ = [CODE
LOWrenpy/test/testexecution.py212def set_next_execution_node(next_node: Node | None) -> None:CODE
LOWrenpy/test/testexecution.py270def update_enable_flag() -> None:CODE
LOWrenpy/test/testexecution.py448 def set_next_node(self, next: Node | None) -> None:CODE
LOWrenpy/test/testexecution.py451 def set_end_callback(self, callback: Callable | list[Callable]) -> None:CODE
LOWrenpy/test/testreporter.py887 def _update_assert_counters(self, outcome: BaseOutcome, status: OutcomeStatus) -> None:CODE
Decorative Section Separators1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMrenpy/text/extras.py334 # ==============================================COMMENT
Modern AI Meta-Vocabulary1 hit · 2 pts
SeverityFileLineSnippetContext
MEDIUMscripts/unicode/LineBreak.txt1927B77D..B797 ; H3 # Lo [27] HANGUL SYLLABLE RAG..HANGUL SYLLABLE RAHCODE
Slop Phrases1 hit · 0 pts
SeverityFileLineSnippetContext
LOWrenpy/gl2/live2d.py682 # Note: When adding new parameters, make sure to add them to _duplicate, too.STRING