The Ren'Py Visual Novel Engine
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.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 868 finding(s).
Are imports declared and package/API names verified? 2967 finding(s).
Are wrappers, guards, and repeated structures necessary? 793 finding(s).
Which changes need focused human review? 4375 finding(s).
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.
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.
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.
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.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | distribute.py | 4 | CODE | |
| LOW | distribute.py | 4 | CODE | |
| LOW | distribute.py | 4 | CODE | |
| LOW | distribute.py | 4 | CODE | |
| LOW | distribute.py | 4 | CODE | |
| LOW | distribute.py | 18 | CODE | |
| LOW | add.py | 2 | CODE | |
| LOW | add.py | 9 | CODE | |
| LOW | renpy.py | 27 | CODE | |
| LOW | renpy.py | 27 | CODE | |
| LOW | main.py | 27 | CODE | |
| LOW | main.py | 27 | CODE | |
| LOW | launcher/game/webserver.py | 1 | CODE | |
| LOW | launcher/game/change_icon.py | 25 | CODE | |
| LOW | launcher/game/change_icon.py | 26 | CODE | |
| LOW | launcher/game/gui7/code.py | 22 | CODE | |
| LOW | launcher/game/gui7/__init__.py | 22 | CODE | |
| LOW | launcher/game/gui7/__init__.py | 22 | CODE | |
| LOW | launcher/game/gui7/__init__.py | 22 | CODE | |
| LOW | launcher/game/gui7/images.py | 26 | CODE | |
| LOW | renpy/bootstrap.py | 325 | CODE | |
| LOW | renpy/ecsign.py | 23 | CODE | |
| LOW | renpy/scriptedit.py | 25 | CODE | |
| LOW | renpy/scriptedit.py | 25 | CODE | |
| LOW | renpy/scriptedit.py | 25 | CODE | |
| LOW | renpy/scriptedit.py | 25 | CODE | |
| LOW | renpy/scriptedit.py | 25 | CODE | |
| LOW | renpy/scriptedit.py | 26 | CODE | |
| LOW | renpy/scriptedit.py | 26 | CODE | |
| LOW | renpy/scriptedit.py | 26 | CODE | |
| LOW | renpy/scriptedit.py | 26 | CODE | |
| LOW | renpy/scriptedit.py | 26 | CODE | |
| LOW | renpy/scriptedit.py | 26 | CODE | |
| LOW | renpy/scriptedit.py | 26 | CODE | |
| LOW | renpy/scriptedit.py | 26 | CODE | |
| LOW | renpy/scriptedit.py | 26 | CODE | |
| LOW | renpy/scriptedit.py | 26 | CODE | |
| LOW | renpy/scriptedit.py | 31 | CODE | |
| LOW | renpy/execution.py | 29 | CODE | |
| LOW | renpy/config.py | 26 | CODE | |
| LOW | renpy/config.py | 26 | CODE | |
| LOW | renpy/config.py | 26 | CODE | |
| LOW | renpy/config.py | 26 | CODE | |
| LOW | renpy/config.py | 26 | CODE | |
| LOW | renpy/config.py | 27 | CODE | |
| LOW | renpy/config.py | 27 | CODE | |
| LOW | renpy/config.py | 27 | CODE | |
| LOW | renpy/config.py | 27 | CODE | |
| LOW | renpy/config.py | 27 | CODE | |
| LOW | renpy/config.py | 27 | CODE | |
| LOW | renpy/config.py | 27 | CODE | |
| LOW | renpy/config.py | 27 | CODE | |
| LOW | renpy/config.py | 27 | CODE | |
| LOW | renpy/config.py | 27 | CODE | |
| LOW | renpy/config.py | 27 | CODE | |
| LOW | renpy/config.py | 29 | CODE | |
| LOW | renpy/config.py | 29 | CODE | |
| LOW | renpy/savelocation.py | 27 | CODE | |
| LOW | renpy/savelocation.py | 27 | CODE | |
| LOW | renpy/savelocation.py | 27 | CODE | |
| 2890 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | distribute.py | 23 | except ImportError: | CODE |
| HIGH | launcher/game/installer.py | 58 | except Exception: | CODE |
| HIGH | launcher/game/installer.py | 373 | except Exception: | CODE |
| HIGH | launcher/game/installer.py | 132 | except Exception: | CODE |
| HIGH | launcher/game/installer.py | 126 | except Exception: | CODE |
| HIGH | launcher/game/installer.py | 368 | except Exception: | CODE |
| HIGH | launcher/game/gui7/images.py | 54 | except Exception: | CODE |
| HIGH | launcher/game/gui7/images.py | 122 | except Exception: | CODE |
| HIGH | renpy/bootstrap.py | 53 | except Exception: | CODE |
| HIGH | renpy/bootstrap.py | 399 | except renpy.game.ParseErrorException: | CODE |
| HIGH | renpy/execution.py | 207 | except Exception: | CODE |
| HIGH | renpy/execution.py | 566 | except Exception: | CODE |
| HIGH | renpy/execution.py | 559 | except Exception: | CODE |
| HIGH | renpy/savelocation.py | 117 | except Exception: | CODE |
| HIGH | renpy/savelocation.py | 460 | except Exception: | CODE |
| HIGH | renpy/savelocation.py | 732 | except Exception: | CODE |
| HIGH | renpy/savelocation.py | 184 | except Exception: | CODE |
| HIGH | renpy/savelocation.py | 282 | except Exception: | CODE |
| HIGH | renpy/savelocation.py | 288 | except Exception: | CODE |
| HIGH | renpy/error.py | 1643 | except Exception: | CODE |
| HIGH | renpy/error.py | 1649 | except Exception: | CODE |
| HIGH | renpy/error.py | 1699 | except Exception: | CODE |
| HIGH | renpy/error.py | 1709 | except Exception: | CODE |
| HIGH | renpy/error.py | 1735 | except Exception: | CODE |
| HIGH | renpy/error.py | 1741 | except Exception: | CODE |
| HIGH | renpy/error.py | 1752 | except Exception: | CODE |
| HIGH | renpy/savetoken.py | 209 | except Exception: | CODE |
| HIGH | renpy/memory.py | 80 | except Exception: | CODE |
| HIGH | renpy/log.py | 288 | except Exception: | CODE |
| HIGH | renpy/log.py | 119 | except Exception: | CODE |
| HIGH | renpy/log.py | 270 | except Exception: | CODE |
| HIGH | renpy/log.py | 125 | except Exception: | CODE |
| HIGH | renpy/pyanalysis.py | 957 | except Exception: | CODE |
| HIGH | renpy/pyanalysis.py | 973 | except Exception: | CODE |
| HIGH | renpy/util.py | 35 | except Exception: | CODE |
| HIGH | renpy/util.py | 48 | except Exception: | CODE |
| HIGH | renpy/game.py | 413 | except EndReplay: | CODE |
| HIGH | renpy/arguments.py | 39 | except Exception: | CODE |
| HIGH | renpy/__init__.py | 82 | except ImportError: | CODE |
| HIGH | renpy/__init__.py | 575 | except ImportError: | CODE |
| HIGH | renpy/__init__.py | 79 | except Exception: | CODE |
| HIGH | renpy/rollback.py | 149 | except Exception: | CODE |
| HIGH | renpy/rollback.py | 167 | except Exception: | CODE |
| HIGH | renpy/rollback.py | 174 | except Exception: | CODE |
| HIGH | renpy/rollback.py | 659 | except RuntimeError: | CODE |
| HIGH | renpy/loadsave.py | 285 | except Exception: | CODE |
| HIGH | renpy/loadsave.py | 192 | except Exception: | CODE |
| HIGH | renpy/loadsave.py | 73 | except Exception: | CODE |
| HIGH | renpy/dump.py | 242 | except Exception: | CODE |
| HIGH | renpy/parser.py | 1816 | except Exception: | CODE |
| HIGH | renpy/parser.py | 1804 | except Exception: | CODE |
| HIGH | renpy/add_from.py | 112 | except Exception: | CODE |
| HIGH | renpy/loader.py | 56 | except Exception: | CODE |
| HIGH | renpy/loader.py | 751 | except Exception: | CODE |
| HIGH | renpy/loader.py | 859 | except Exception: | CODE |
| HIGH | renpy/loader.py | 541 | except Exception: | CODE |
| HIGH | renpy/loader.py | 597 | except IOError: | CODE |
| HIGH | renpy/lexer.py | 37 | except ImportError: | CODE |
| HIGH | renpy/lexer.py | 148 | except Exception: | CODE |
| HIGH | renpy/lexer.py | 154 | except Exception: | CODE |
| 85 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | distribute.py | 135 | except Exception: | CODE |
| LOW | renpy.py | 121 | except Exception: | CODE |
| LOW | renpy.py | 158 | except Exception: | CODE |
| MEDIUM | renpy.py | 114 | def test_writable(d): | CODE |
| LOW | main.py | 121 | except Exception: | CODE |
| LOW | main.py | 158 | except Exception: | CODE |
| MEDIUM | main.py | 114 | def test_writable(d): | CODE |
| LOW | launcher/Visual Studio Code.edit.py | 99 | except Exception: | CODE |
| LOW | launcher/Visual Studio Code (System).edit.py | 99 | except Exception: | CODE |
| LOW | launcher/VSCodium (System).edit.py | 99 | except Exception: | CODE |
| LOW | launcher/game/webserver.py | 135 | except Exception: | CODE |
| LOW | launcher/game/installer.py | 58 | except Exception: | CODE |
| LOW | launcher/game/installer.py | 126 | except Exception: | CODE |
| LOW | launcher/game/installer.py | 132 | except Exception: | CODE |
| LOW | launcher/game/installer.py | 163 | except Exception: | CODE |
| LOW | launcher/game/installer.py | 368 | except Exception: | CODE |
| LOW | launcher/game/installer.py | 373 | except Exception: | CODE |
| LOW | launcher/game/installer.py | 436 | except Exception as e: | CODE |
| LOW | launcher/game/gui7/images.py | 54 | except Exception: | CODE |
| LOW | launcher/game/gui7/images.py | 122 | except Exception: | CODE |
| LOW | renpy/bootstrap.py | 53 | except Exception: | CODE |
| LOW | renpy/bootstrap.py | 134 | except Exception: | CODE |
| LOW | renpy/bootstrap.py | 301 | except Exception as e: | CODE |
| LOW | renpy/bootstrap.py | 326 | except Exception as e: | STRING |
| LOW | renpy/bootstrap.py | 362 | except Exception: | STRING |
| LOW | renpy/bootstrap.py | 402 | except Exception as e: | STRING |
| MEDIUM | renpy/bootstrap.py | 46 | def null_files(): | CODE |
| LOW | renpy/scriptedit.py | 529 | except Exception: | CODE |
| LOW | renpy/color.py | 373 | except Exception: | CODE |
| LOW⚡ | renpy/color.py | 385 | except Exception: | CODE |
| LOW⚡ | renpy/color.py | 395 | except Exception: | CODE |
| LOW⚡ | renpy/color.py | 405 | except Exception: | CODE |
| LOW | renpy/execution.py | 207 | except Exception: | CODE |
| LOW | renpy/execution.py | 559 | except Exception: | CODE |
| LOW | renpy/execution.py | 566 | except Exception: | CODE |
| LOW | renpy/execution.py | 690 | except Exception: | CODE |
| LOW | renpy/execution.py | 964 | except Exception: | CODE |
| LOW | renpy/execution.py | 1087 | except Exception: | CODE |
| MEDIUM | renpy/execution.py | 196 | def __repr__(self): | CODE |
| LOW⚡ | renpy/savelocation.py | 282 | except Exception: | CODE |
| LOW⚡ | renpy/savelocation.py | 288 | except Exception: | CODE |
| LOW⚡ | renpy/savelocation.py | 292 | except Exception: | CODE |
| LOW | renpy/savelocation.py | 117 | except Exception: | CODE |
| LOW | renpy/savelocation.py | 132 | except Exception: | CODE |
| LOW | renpy/savelocation.py | 184 | except Exception: | CODE |
| LOW | renpy/savelocation.py | 264 | except Exception: | CODE |
| LOW | renpy/savelocation.py | 314 | except Exception: | CODE |
| LOW | renpy/savelocation.py | 317 | except Exception: | CODE |
| LOW | renpy/savelocation.py | 460 | except Exception: | CODE |
| LOW | renpy/savelocation.py | 732 | except Exception: | CODE |
| LOW | renpy/savelocation.py | 739 | except Exception as e: | CODE |
| LOW | renpy/importer.py | 330 | except Exception as e: | CODE |
| MEDIUM | renpy/error.py | 208 | def getvalue(self): | CODE |
| LOW⚡ | renpy/error.py | 439 | except Exception: | CODE |
| LOW⚡ | renpy/error.py | 441 | except Exception: | CODE |
| LOW | renpy/error.py | 398 | except Exception: | CODE |
| LOW | renpy/error.py | 464 | except Exception: | CODE |
| LOW | renpy/error.py | 809 | except Exception: | CODE |
| LOW | renpy/error.py | 938 | except Exception: | CODE |
| LOW | renpy/error.py | 981 | except Exception: | CODE |
| 322 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | distribute.py | 51 | CODE | |
| LOW | renpy.py | 232 | CODE | |
| LOW | main.py | 232 | CODE | |
| LOW | launcher/Visual Studio Code.edit.py | 14 | CODE | |
| LOW | launcher/Visual Studio Code.edit.py | 79 | CODE | |
| LOW | launcher/Visual Studio Code (System).edit.py | 14 | CODE | |
| LOW | launcher/Visual Studio Code (System).edit.py | 79 | CODE | |
| LOW | launcher/VSCodium (System).edit.py | 14 | CODE | |
| LOW | launcher/VSCodium (System).edit.py | 79 | CODE | |
| LOW | launcher/game/installer.py | 112 | CODE | |
| LOW | launcher/game/installer.py | 144 | CODE | |
| LOW | launcher/game/installer.py | 174 | CODE | |
| LOW | launcher/game/installer.py | 349 | CODE | |
| LOW | launcher/game/gui7/code.py | 293 | CODE | |
| LOW | unittests/test_screen_layers.py | 37 | CODE | |
| LOW | unittests/test_screen_layers.py | 76 | CODE | |
| LOW | unittests/test_setuplib.py | 43 | CODE | |
| LOW | renpy/bootstrap.py | 197 | CODE | |
| LOW | renpy/ecsign.py | 252 | CODE | |
| LOW | renpy/scriptedit.py | 74 | CODE | |
| LOW | renpy/color.py | 174 | CODE | |
| LOW | renpy/execution.py | 1043 | CODE | |
| LOW | renpy/execution.py | 591 | CODE | |
| LOW | renpy/execution.py | 784 | CODE | |
| LOW | renpy/execution.py | 887 | CODE | |
| LOW | renpy/savelocation.py | 714 | CODE | |
| LOW | renpy/savelocation.py | 819 | CODE | |
| LOW | renpy/savelocation.py | 161 | CODE | |
| LOW | renpy/savelocation.py | 267 | CODE | |
| LOW | renpy/savelocation.py | 295 | CODE | |
| LOW | renpy/error.py | 451 | CODE | |
| LOW | renpy/error.py | 817 | CODE | |
| LOW | renpy/error.py | 862 | CODE | |
| LOW | renpy/error.py | 887 | CODE | |
| LOW | renpy/error.py | 1314 | CODE | |
| LOW | renpy/error.py | 1458 | CODE | |
| LOW | renpy/error.py | 1517 | CODE | |
| LOW | renpy/savetoken.py | 99 | CODE | |
| LOW | renpy/savetoken.py | 264 | CODE | |
| LOW | renpy/memory.py | 91 | CODE | |
| LOW | renpy/memory.py | 430 | CODE | |
| LOW | renpy/memory.py | 500 | CODE | |
| LOW | renpy/memory.py | 97 | CODE | |
| LOW | renpy/memory.py | 510 | CODE | |
| LOW | renpy/pyanalysis.py | 258 | CODE | |
| LOW | renpy/pyanalysis.py | 551 | CODE | |
| LOW | renpy/ui.py | 1111 | CODE | |
| LOW | renpy/rollback.py | 111 | CODE | |
| LOW | renpy/rollback.py | 399 | CODE | |
| LOW | renpy/rollback.py | 515 | CODE | |
| LOW | renpy/rollback.py | 542 | CODE | |
| LOW | renpy/rollback.py | 614 | CODE | |
| LOW | renpy/rollback.py | 736 | CODE | |
| LOW | renpy/rollback.py | 939 | CODE | |
| LOW | renpy/substitutions.py | 44 | CODE | |
| LOW | renpy/substitutions.py | 121 | CODE | |
| LOW | renpy/webloader.py | 178 | CODE | |
| LOW | renpy/webloader.py | 204 | CODE | |
| LOW | renpy/dump.py | 63 | CODE | |
| LOW | renpy/easy.py | 56 | CODE | |
| 240 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | renpy.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | setup.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | main.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | launcher/game/change_icon.py | 1 | # Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us> | COMMENT |
| LOW | launcher/game/change_icon.py | 361 | # | COMMENT |
| LOW | launcher/game/installer.py | 1 | # Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us> | COMMENT |
| LOW | launcher/game/gui7/code.py | 1 | # Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us> | COMMENT |
| LOW | launcher/game/gui7/__init__.py | 1 | # Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us> | COMMENT |
| LOW | launcher/game/gui7/images.py | 1 | # Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us> | COMMENT |
| LOW | launcher/game/gui7/parameters.py | 1 | # Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us> | COMMENT |
| LOW | unittests/test_ime.py | 1 | # Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us> | COMMENT |
| LOW | unittests/test_asynctask.py | 1 | # Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us> | COMMENT |
| LOW | unittests/test_ecsign.py | 1 | # Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us> | COMMENT |
| LOW | renpy/bootstrap.py | 1 | # Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us> | COMMENT |
| LOW | renpy/ecsign.py | 1 | # Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us> | COMMENT |
| LOW | renpy/scriptedit.py | 1 | # Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us> | COMMENT |
| LOW | renpy/color.py | 1 | # Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us> | COMMENT |
| LOW | renpy/execution.py | 1 | # Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us> | COMMENT |
| LOW | renpy/config.py | 1 | # Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us> | COMMENT |
| LOW | renpy/config.py | 101 | COMMENT | |
| LOW | renpy/config.py | 241 | # choice from a menu. This can be used for making a demo version of a | COMMENT |
| LOW | renpy/savelocation.py | 1 | # Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us> | COMMENT |
| LOW | renpy/importer.py | 1 | # Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us> | COMMENT |
| LOW | renpy/error.py | 1 | # Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us> | COMMENT |
| LOW | renpy/error.py | 541 | # Binary ops, subscripts, and calls are expressions, so | COMMENT |
| LOW | renpy/screenlang.py | 1 | # Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us> | COMMENT |
| LOW | renpy/savetoken.py | 1 | # Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us> | COMMENT |
| LOW | renpy/memory.py | 1 | # Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us> | COMMENT |
| LOW | renpy/object.py | 1 | # Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us> | COMMENT |
| LOW | renpy/log.py | 1 | # Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us> | COMMENT |
| LOW | renpy/pyanalysis.py | 1 | # Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us> | COMMENT |
| LOW | renpy/revertable.py | 1 | # Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us> | COMMENT |
| LOW | renpy/util.py | 1 | # Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us> | COMMENT |
| LOW | renpy/ui.py | 1 | # Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us> | COMMENT |
| LOW | renpy/game.py | 1 | # Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us> | COMMENT |
| LOW | renpy/arguments.py | 1 | # Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us> | COMMENT |
| LOW | renpy/preferences.py | 1 | # Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us> | COMMENT |
| LOW | renpy/__init__.py | 1 | # Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us> | COMMENT |
| LOW | renpy/rollback.py | 1 | # Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us> | COMMENT |
| LOW | renpy/types.py | 1 | # Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us> | COMMENT |
| LOW | renpy/substitutions.py | 1 | # Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us> | COMMENT |
| LOW | renpy/loadsave.py | 1 | # Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us> | COMMENT |
| LOW | renpy/webloader.py | 1 | # Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us> | COMMENT |
| LOW | renpy/dump.py | 1 | # Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us> | COMMENT |
| LOW | renpy/easy.py | 1 | # Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us> | COMMENT |
| LOW | renpy/parser.py | 1 | # Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us> | COMMENT |
| LOW | renpy/asynctask.py | 1 | # Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us> | COMMENT |
| LOW | renpy/atl.py | 1 | # Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us> | COMMENT |
| LOW | renpy/atl.py | 801 | COMMENT | |
| LOW | renpy/atl.py | 821 | # with timeleft being the amount of time left after this statement | COMMENT |
| LOW | renpy/atl.py | 1081 | # This can become one of four things: | COMMENT |
| LOW | renpy/add_from.py | 1 | # Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us> | COMMENT |
| LOW | renpy/loader.py | 1 | # Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us> | COMMENT |
| LOW | renpy/curry.py | 1 | # Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us> | COMMENT |
| LOW | renpy/debug.py | 1 | # Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us> | COMMENT |
| LOW | renpy/lexer.py | 1 | # Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us> | COMMENT |
| LOW | renpy/python.py | 1 | # Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us> | COMMENT |
| LOW | renpy/character.py | 1 | # Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us> | COMMENT |
| LOW | renpy/persistent.py | 1 | # Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us> | COMMENT |
| LOW | renpy/ast.py | 1 | # Copyright 2004-2026 Tom Rothamel <pytom@bishoujo.us> | COMMENT |
| 169 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | unittests/test_ime.py | 41 | def test_from_event_out_of_range_selection(self): | CODE |
| LOW | unittests/test_ime.py | 57 | def test_clamp_when_no_room_above_or_below(self): | CODE |
| LOW | unittests/test_asynctask.py | 58 | def test_round_robin_and_budget(self): | CODE |
| LOW | unittests/test_asynctask.py | 78 | def test_budget_checks_clock_after_each_step(self): | CODE |
| LOW | unittests/test_asynctask.py | 116 | def test_cancel_only_started_task_clears_ready_queue(self): | CODE |
| LOW | unittests/test_asynctask.py | 135 | def test_cancel_different_queued_task_from_running_task(self): | CODE |
| LOW | unittests/test_asynctask.py | 162 | def test_cancel_closes_nested_yield_from(self): | CODE |
| LOW | unittests/test_asynctask.py | 185 | def test_reset_closes_all_pending_and_reusable(self): | CODE |
| LOW | unittests/test_asynctask.py | 206 | def test_reset_from_running_task_defers_its_close(self): | CODE |
| LOW | unittests/test_asynctask.py | 230 | def test_cleanup_that_yields_is_error_but_other_tasks_are_closed(self): | CODE |
| LOW | unittests/test_asynctask.py | 258 | def test_exception_propagates_without_discarding_other_work(self): | CODE |
| LOW | unittests/test_asynctask.py | 281 | def test_nested_yield_from_result(self): | CODE |
| LOW | unittests/test_asynctask.py | 312 | def test_run_sync_closes_on_exception(self): | CODE |
| LOW | unittests/test_asynctask.py | 326 | def test_slow_step_logs_nested_location_and_completed(self): | CODE |
| LOW | unittests/test_asynctask.py | 350 | def test_slow_step_logs_single_frame_location(self): | CODE |
| LOW | unittests/test_asynctask.py | 366 | def test_slow_step_disabled_and_invalid_setting(self): | CODE |
| LOW | unittests/test_renpy_test_support.py | 11 | def test_initializes_once_in_fresh_process(self): | CODE |
| LOW | unittests/test_renpy_test_support.py | 34 | def test_failed_initialization_propagates_and_can_retry(self): | STRING |
| LOW | unittests/test_surface_deallocation.py | 16 | def test_owned_surface_accounting_and_weakref_release(self): | CODE |
| LOW | unittests/test_surface_deallocation.py | 27 | def test_nested_subsurfaces_retain_pixels_and_release_parent(self): | CODE |
| LOW | unittests/test_surface_deallocation.py | 42 | def test_repeated_shutdown_and_late_surface_release(self): | CODE |
| LOW | unittests/test_surface_deallocation.py | 53 | def test_subsurface_bursts_and_uninitialized_wrapper(self): | CODE |
| LOW | unittests/test_surface_deallocation.py | 64 | def test_invalid_construction_does_not_leak_or_warn(self): | CODE |
| LOW | unittests/test_surface_deallocation.py | 73 | def test_surface_factories_preserve_pixels_and_accounting(self): | CODE |
| LOW⚡ | unittests/test_audio_queue.py | 144 | def test_immediate_queue_is_gapless(self): | CODE |
| LOW⚡ | unittests/test_audio_queue.py | 152 | def test_late_queue_is_gapless_without_periodic_at_handoff(self): | CODE |
| LOW⚡ | unittests/test_audio_queue.py | 162 | def test_initial_sync_still_waits_for_periodic(self): | CODE |
| LOW⚡ | unittests/test_audio_queue.py | 168 | def test_queue_after_natural_eof_starts_playback(self): | CODE |
| LOW | unittests/test_audio_queue.py | 180 | def test_queue_on_idle_channel_preserves_initial_sync(self): | CODE |
| LOW | unittests/test_audio_queue.py | 187 | def test_queue_replacement_and_paused_handoff(self): | CODE |
| LOW | unittests/test_audio_queue.py | 202 | def test_initial_channels_start_together(self): | CODE |
| LOW | unittests/test_audio_queue.py | 219 | def test_tight_fadeout_spans_late_queue(self): | CODE |
| LOW | unittests/test_audio_queue.py | 231 | def test_sample_aligned_partial_playback(self): | CODE |
| LOW | unittests/test_audio_queue.py | 246 | def test_subsample_positions_round_to_nearest_sample(self): | CODE |
| LOW | unittests/test_audio_queue.py | 259 | def test_natural_duration_rounds_to_whole_samples(self): | CODE |
| LOW | unittests/test_audio_queue.py | 316 | def test_opus_interior_loop_matches_continuous_decode(self): | CODE |
| LOW | unittests/test_audio_queue.py | 330 | def test_opus_resampled_interior_start_matches_continuous_decode(self): | CODE |
| LOW | unittests/test_audio_queue.py | 355 | def test_opus_runtime_seeks_match_continuous_decode(self): | CODE |
| LOW | unittests/test_audio_queue.py | 371 | def test_opus_loop_has_no_codec_delay_padding(self): | CODE |
| LOW | unittests/test_audio_queue.py | 388 | def test_resampled_opus_drains_audio_at_eof(self): | CODE |
| LOW | unittests/test_audio_queue.py | 401 | def test_explicit_end_preserves_requested_padding(self): | CODE |
| LOW | unittests/test_audio_queue.py | 410 | def test_movie_preserves_container_duration_padding(self): | CODE |
| LOW | unittests/test_prediction.py | 15 | def test_cancelled_prediction_pause_restores_ui_state(self): | CODE |
| LOW | unittests/test_prediction.py | 46 | def test_screen_pause_does_not_postpone_prediction_yield(self): | CODE |
| LOW | unittests/test_warp.py | 68 | def test_opt_in_and_unsupported_callables(self): | CODE |
| LOW | unittests/test_warp.py | 79 | def test_say_attributes_are_not_applied_during_warp(self): | CODE |
| LOW | unittests/test_warp.py | 94 | def test_character_skips_temporary_and_speaking_attributes_during_warp(self): | CODE |
| LOW | unittests/test_warp.py | 117 | def test_failed_callable_restores_bookkeeping_and_continues(self): | CODE |
| LOW | unittests/test_warp.py | 135 | def test_failed_synthetic_node_uses_fallback_location(self): | CODE |
| LOW | unittests/test_warp.py | 155 | def test_failed_resolution_is_skipped(self): | CODE |
| LOW | unittests/test_warp.py | 163 | def test_failed_eligibility_is_skipped(self): | CODE |
| LOW⚡ | unittests/test_warp.py | 174 | def test_failed_arguments_are_skipped(self): | CODE |
| LOW⚡ | unittests/test_warp.py | 182 | def test_control_exception_propagates_and_restores_flag(self): | CODE |
| LOW⚡ | unittests/test_warp.py | 192 | def test_display_during_warp_only_creates_retained_screen(self): | CODE |
| LOW | unittests/test_warp.py | 215 | def test_reconstructed_history_has_no_rollback_identifier(self): | CODE |
| LOW | unittests/test_warp.py | 229 | def test_narrator_and_string_adapter_eligibility(self): | CODE |
| LOW | unittests/test_warp.py | 237 | def test_skipped_menu_only_applies_bubble_clearing(self): | CODE |
| LOW | unittests/test_warp.py | 259 | def test_optimized_translation_uses_selected_text_without_marking_seen(self): | CODE |
| LOW | unittests/test_warp.py | 286 | def test_translation_block_skips_failed_say_and_replays_next(self): | CODE |
| LOW | unittests/test_warp.py | 312 | def test_failed_say_removes_new_retained_screen(self): | CODE |
| 124 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | renpy.py | 3 | # This file is part of Ren'Py. The license below applies to Ren'Py only. | COMMENT |
| MEDIUM | main.py | 3 | # This file is part of Ren'Py. The license below applies to Ren'Py only. | COMMENT |
| MEDIUM | renpy/scriptedit.py | 22 | # This file contains code to add and remove statements from the AST | COMMENT |
| MEDIUM | renpy/execution.py | 22 | # This file contains code responsible for managing the execution of a | COMMENT |
| MEDIUM | renpy/error.py | 22 | # This file contains code for formatting tracebacks. | COMMENT |
| MEDIUM | renpy/memory.py | 22 | # This file contains functions used to help debug memory leaks. They aren't | COMMENT |
| MEDIUM | renpy/log.py | 22 | # This module handles the logging of messages to a file. | COMMENT |
| MEDIUM | renpy/revertable.py | 22 | # This file contains code that handles the execution of python code | COMMENT |
| MEDIUM | renpy/ui.py | 22 | # This file contains functions that can be used to display a UI on the | COMMENT |
| MEDIUM | renpy/game.py | 22 | # This module is intended to be used as a singleton object. | COMMENT |
| MEDIUM | renpy/arguments.py | 22 | # This file handles argument parsing. Argument parsing takes place in | COMMENT |
| MEDIUM | renpy/__init__.py | 599 | # Create the store. | COMMENT |
| MEDIUM | renpy/rollback.py | 22 | # This file contains code that handles the execution of python code | COMMENT |
| MEDIUM | renpy/types.py | 22 | # This file contains the various types that Ren'Py uses. | COMMENT |
| MEDIUM | renpy/substitutions.py | 22 | # This file contains support for string translation and string formatting | COMMENT |
| MEDIUM | renpy/loadsave.py | 22 | # This file contains functions that load and save the game state. | COMMENT |
| MEDIUM | renpy/dump.py | 22 | # This file contains code to write the reflect.json file. This file contains | COMMENT |
| MEDIUM | renpy/parser.py | 22 | # This module contains the parser for the Ren'Py script language. It's | COMMENT |
| MEDIUM | renpy/atl.py | 1434 | # Create a new transform state, and apply the property | COMMENT |
| MEDIUM | renpy/debug.py | 22 | # This file contains debugging code that isn't enabled in normal Ren'Py | COMMENT |
| MEDIUM | renpy/python.py | 22 | # This file contains code that handles the execution of python code | COMMENT |
| MEDIUM | renpy/python.py | 231 | # Create the dict. | COMMENT |
| MEDIUM | renpy/character.py | 720 | # Create a callback object specific to this pause. | COMMENT |
| MEDIUM | renpy/character.py | 774 | # Create the callback that is called when the slow text is done. | COMMENT |
| MEDIUM | renpy/persistent.py | 279 | # Create the backup of the persistent data. | COMMENT |
| MEDIUM | renpy/ast.py | 22 | # This file contains the AST for the Ren'Py script language. Each class | COMMENT |
| MEDIUM | renpy/statements.py | 22 | # This module contains code to support user-defined statements. | COMMENT |
| MEDIUM | renpy/main.py | 470 | # Initialize persistent variables. | COMMENT |
| MEDIUM | renpy/script.py | 22 | # This file contains code that is responsible for storing and executing a | COMMENT |
| MEDIUM | renpy/update/generate.py | 146 | # Create a list of files by reverse mtime. The idea is that the newer | COMMENT |
| MEDIUM | renpy/sl2/slast.py | 46 | # This file contains the abstract syntax tree for a screen language | COMMENT |
| MEDIUM | renpy/sl2/slast.py | 942 | # Create the context. | COMMENT |
| MEDIUM | renpy/sl2/slast.py | 2062 | # Create an old-style displayable name for this call site. | COMMENT |
| MEDIUM | renpy/exports/__init__.py | 22 | # This file contains functions that are exported to the script namespace as | COMMENT |
| MEDIUM | renpy/common/00sshtransition_ren.py | 22 | # This file contains support for a transition after a sequence of | COMMENT |
| MEDIUM | renpy/display/anim.py | 22 | # This file contains support for state-machine controlled animations. | COMMENT |
| MEDIUM | renpy/display/error.py | 22 | # This file contains code to handle GUI-based error reporting. | COMMENT |
| MEDIUM | renpy/display/behavior.py | 1920 | # This class contains information about an adjustment that can change the | COMMENT |
| MEDIUM | renpy/display/emulator.py | 22 | # This file contains code to emulate various other devices on the PC. | COMMENT |
| MEDIUM | renpy/display/layout.py | 22 | # This file contains classes that handle layout of displayables on | COMMENT |
| MEDIUM | renpy/display/predict.py | 22 | # This file contains the routines that manage image prediction. | COMMENT |
| MEDIUM | renpy/display/core.py | 948 | # Create a cache of the mouse information. | COMMENT |
| MEDIUM | renpy/display/imagemap.py | 22 | # This file handles imagemap caching. | COMMENT |
| MEDIUM | renpy/display/pgrender.py | 48 | # Create a sample surface. | COMMENT |
| MEDIUM | renpy/display/pgrender.py | 62 | # Create the sample surface. | COMMENT |
| MEDIUM | renpy/display/viewport.py | 22 | # This file contains classes that handle layout of displayables on | COMMENT |
| MEDIUM | renpy/display/im.py | 22 | # This file contains the new image code, which includes provisions for | COMMENT |
| MEDIUM | renpy/display/motion.py | 22 | # This file contains displayables that move, zoom, rotate, or otherwise | COMMENT |
| MEDIUM | renpy/display/transform.py | 22 | # This file contains displayables that move, zoom, rotate, or otherwise | COMMENT |
| MEDIUM | renpy/display/imagelike.py | 22 | # This file contains displayables that are image-like, because they take | COMMENT |
| MEDIUM | renpy/display/image.py | 22 | # This file contains some miscellaneous displayables that involve images. | COMMENT |
| MEDIUM | renpy/display/focus.py | 22 | # This file contains code to manage focus on the display. | COMMENT |
| MEDIUM | renpy/text/emoji_trie.py | 3 | # This file is generated by module/emoji/make_emoji_trie.py. Do not | COMMENT |
| MEDIUM | renpy/text/text.py | 1042 | # Create the texture. | COMMENT |
| MEDIUM | sphinx/source/conf.py | 6 | # This file is execfile()d with the current directory set to its containing dir. | COMMENT |
| MEDIUM | sphinx/source/fill-translator-credits.py | 4 | # This file is part of Ren'Py. The license below applies to Ren'Py only. | COMMENT |
| MEDIUM | scripts/generate_styles.py | 438 | # This file is generated by generate_styles.py. | COMMENT |
| MEDIUM | scripts/unicode/make_emoji_trie.py | 174 | # This file is generated by module/emoji/make_emoji_trie.py. Do not | STRING |
| MEDIUM | scripts/sdl3/main.py | 79 | # This file is automatically generated by scripts/sdl3/main.py. Do not edit manually. | COMMENT |
| MEDIUM | scripts/sdl3/main.py | 116 | print("# This file is automatically generated by scripts/sdl3/main.py. Do not edit manually.", file=f) | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | renpy/ecsign.py | 347 | Returns the uncompressed 64-byte binary representation (X || Y). | STRING |
| HIGH | renpy/ecsign.py | 488 | Signs `data` with ECDSA (NIST256p). Returns a 64-byte binary signature (r || s). | STRING |
| HIGH | renpy/webloader.py | 63 | if (xhr.status == 200 || xhr.status == 304 || xhr.status == 206 || (xhr.status == 0 && xhr.response)) { | CODE |
| HIGH | renpy/webloader.py | 63 | if (xhr.status == 200 || xhr.status == 304 || xhr.status == 206 || (xhr.status == 0 && xhr.response)) { | CODE |
| HIGH | renpy/atl.py | 1376 | if (old_child is not None) and (old_child is not renpy.display.motion.null) and (self.transition is not None): | CODE |
| HIGH | renpy/main.py | 251 | || (navigator.userAgent.indexOf("Mac") != -1 && navigator.maxTouchPoints > 1)""" | CODE |
| HIGH | renpy/exports/fetchexports.py | 234 | command = """fetchFile("{method}", "{url}", null, "{fn}", null, "{headers}")""".format( | CODE |
| HIGH | renpy/common/00textshader_ren.py | 206 | if (u__duration <= 0.0 || u_text_time < u__duration) { | CODE |
| HIGH⚡ | renpy/audio/webaudio.py | 42 | emscripten.run_script("renpyAudio.{}.apply(null, {});".format(function, dumps(args))) | CODE |
| HIGH⚡ | renpy/audio/webaudio.py | 50 | return emscripten.run_script_int("renpyAudio.{}.apply(null, {});".format(function, dumps(args))) | CODE |
| HIGH⚡ | renpy/audio/webaudio.py | 58 | rv = emscripten.run_script_string("renpyAudio.{}.apply(null, {});".format(function, dumps(args))) | CODE |
| HIGH | renpy/display/behavior.py | 2716 | return render(self.null, width, height, st, at) | CODE |
| HIGH | renpy/display/layout.py | 569 | self.add(null) | CODE |
| HIGH | renpy/display/tts.py | 194 | language = locale.toString().replace("_", "-") | CODE |
| HIGH | renpy/display/core.py | 2771 | ld.add(null) | CODE |
| HIGH | renpy/display/viewport.py | 777 | self.add(null) | CODE |
| HIGH | renpy/gl2/live2d.py | 124 | window.live2d_csm.ccall("csmInitializeAmountOfMemory", null, ["number"], [{renpy.config.live2d_max_memory}]); | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | renpy/revertable.py | 348 | CODE | |
| LOW | renpy/ui.py | 836 | CODE | |
| LOW | renpy/ui.py | 924 | CODE | |
| LOW | renpy/ui.py | 1242 | CODE | |
| LOW | renpy/preferences.py | 379 | CODE | |
| LOW | renpy/parser.py | 850 | CODE | |
| LOW | renpy/parser.py | 874 | CODE | |
| LOW | renpy/parser.py | 1236 | CODE | |
| LOW | renpy/parser.py | 1245 | CODE | |
| LOW | renpy/lexer.py | 1798 | CODE | |
| LOW | renpy/character.py | 342 | CODE | |
| LOW | renpy/character.py | 1428 | CODE | |
| LOW | renpy/statements.py | 37 | CODE | |
| LOW | renpy/test/testparser.py | 531 | CODE | |
| LOW | renpy/test/testparser.py | 556 | CODE | |
| LOW | renpy/test/testast.py | 403 | CODE | |
| LOW | renpy/test/testast.py | 765 | CODE | |
| LOW | renpy/update/common.py | 100 | CODE | |
| LOW | renpy/update/common.py | 117 | CODE | |
| LOW | renpy/update/common.py | 152 | CODE | |
| LOW | renpy/translation/generation.py | 419 | CODE | |
| LOW | renpy/sl2/slast.py | 699 | CODE | |
| LOW | renpy/sl2/slast.py | 1854 | CODE | |
| LOW | renpy/sl2/slast.py | 1871 | CODE | |
| LOW | renpy/sl2/slast.py | 1917 | CODE | |
| LOW | renpy/sl2/slparser.py | 740 | CODE | |
| LOW | renpy/exports/fetchexports.py | 285 | CODE | |
| LOW | renpy/exports/displayexports.py | 371 | CODE | |
| LOW | renpy/exports/displayexports.py | 1343 | CODE | |
| LOW | renpy/exports/menuexports.py | 202 | CODE | |
| LOW | renpy/exports/inputexports.py | 68 | CODE | |
| LOW | renpy/audio/webaudio.py | 60 | CODE | |
| LOW | renpy/audio/music.py | 36 | CODE | |
| LOW | renpy/audio/audio.py | 951 | CODE | |
| LOW | renpy/display/screen.py | 226 | CODE | |
| LOW | renpy/display/anim.py | 409 | CODE | |
| LOW | renpy/display/behavior.py | 860 | CODE | |
| LOW | renpy/display/behavior.py | 918 | CODE | |
| LOW | renpy/display/behavior.py | 1240 | CODE | |
| LOW | renpy/display/behavior.py | 1428 | CODE | |
| LOW | renpy/display/behavior.py | 1963 | CODE | |
| LOW | renpy/display/behavior.py | 2284 | CODE | |
| LOW | renpy/display/displayable.py | 669 | CODE | |
| LOW | renpy/display/movetransition.py | 457 | CODE | |
| LOW | renpy/display/transition.py | 478 | CODE | |
| LOW | renpy/display/transition.py | 830 | CODE | |
| LOW | renpy/display/dragdrop.py | 327 | CODE | |
| LOW | renpy/display/core.py | 2407 | CODE | |
| LOW | renpy/display/pgrender.py | 189 | CODE | |
| LOW | renpy/display/pgrender.py | 86 | CODE | |
| LOW | renpy/display/viewport.py | 77 | CODE | |
| LOW | renpy/display/motion.py | 61 | CODE | |
| LOW | renpy/display/motion.py | 439 | CODE | |
| LOW | renpy/display/motion.py | 603 | CODE | |
| LOW | renpy/display/particle.py | 666 | CODE | |
| LOW | renpy/display/module.py | 215 | CODE | |
| LOW | renpy/display/video.py | 655 | CODE | |
| LOW | renpy/display/imagelike.py | 202 | CODE | |
| LOW | renpy/display/scenelists.py | 350 | CODE | |
| LOW | renpy/display/scale.py | 70 | CODE | |
| 9 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | launcher/game/change_icon.py | 391 | # There's already a header size, and this isn't changing headers, so just add. | COMMENT |
| MEDIUM | renpy/error.py | 98 | # TODO: Make it more robust by is_relative_to check. | COMMENT |
| MEDIUM⚡ | renpy/translation/__init__.py | 1228 | # robust against minor ordering oddities. First valid match per slot wins, | COMMENT |
| LOW | renpy/sl2/slast.py | 885 | # We do not want to pass keywords to our parents, so just return. | COMMENT |
| LOW | renpy/display/behavior.py | 622 | # If we have been drawn since the timeout, simply return | COMMENT |
| LOW | renpy/display/swdraw.py | 62 | # allows us to just return without having to do any cleanup | COMMENT |
| MEDIUM | renpy/gl2/live2d.py | 993 | # Handle seamless. | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | renpy/translation/__init__.py | 1222 | # Step 2: language subtag must be 2 or 3 alphabetic characters (ISO 639-1/2/3). | COMMENT |
| LOW⚡ | renpy/translation/__init__.py | 1227 | # Step 3: walk remaining subtags. Identify by shape, not position, so we're | COMMENT |
| LOW⚡ | renpy/translation/__init__.py | 1244 | # Step 4: infer region if missing. | COMMENT |
| LOW⚡ | renpy/translation/__init__.py | 1248 | # Step 5: handle script. Only Chinese commonly carries a script in practice, | COMMENT |
| LOW | renpy/translation/__init__.py | 1207 | # Step 1: strip BCP 47 extensions. Everything from "-u-", "-t-", or "-x-" | COMMENT |
| LOW | renpy/display/transform.py | 1107 | # NOTE: This function is duplicated (more or less) in ATLTransform. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | renpy/translation/__init__.py | 1222 | # Step 2: language subtag must be 2 or 3 alphabetic characters (ISO 639-1/2/3). | COMMENT |
| LOW⚡ | renpy/translation/__init__.py | 1227 | # Step 3: walk remaining subtags. Identify by shape, not position, so we're | COMMENT |
| LOW⚡ | renpy/translation/__init__.py | 1244 | # Step 4: infer region if missing. | COMMENT |
| LOW⚡ | renpy/translation/__init__.py | 1248 | # Step 5: handle script. Only Chinese commonly carries a script in practice, | COMMENT |
| LOW | renpy/translation/__init__.py | 1207 | # Step 1: strip BCP 47 extensions. Everything from "-u-", "-t-", or "-x-" | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | unittests/test_asynctask.py | 306 | CODE | |
| MEDIUM | renpy/sl2/slast.py | 1849 | CODE | |
| MEDIUM | renpy/sl2/slast.py | 1866 | CODE | |
| MEDIUM | renpy/sl2/slast.py | 1912 | CODE | |
| MEDIUM | renpy/sl2/slast.py | 1956 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | renpy/config.py | 1501 | # Set this to true to log events to log.txt. | COMMENT |
| LOW | renpy/main.py | 496 | # Check if we should simulate android. | COMMENT |
| LOW | renpy/script.py | 510 | # Assign names to statements that don't have one already. | COMMENT |
| LOW | renpy/test/testparser.py | 873 | ## Check if we have another condition after this one | COMMENT |
| LOW | renpy/update/generate.py | 167 | # Write the filelist to a file. | COMMENT |
| LOW | renpy/display/layout.py | 666 | # Set this to true to force the box to adjust its children's times. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | renpy/minstore.py | 179 | __all__ = [ | CODE |
| LOW | renpy/compat/__init__.py | 132 | __all__ = [ | CODE |
| LOW | renpy/test/testexecution.py | 212 | def set_next_execution_node(next_node: Node | None) -> None: | CODE |
| LOW | renpy/test/testexecution.py | 270 | def update_enable_flag() -> None: | CODE |
| LOW | renpy/test/testexecution.py | 448 | def set_next_node(self, next: Node | None) -> None: | CODE |
| LOW | renpy/test/testexecution.py | 451 | def set_end_callback(self, callback: Callable | list[Callable]) -> None: | CODE |
| LOW | renpy/test/testreporter.py | 887 | def _update_assert_counters(self, outcome: BaseOutcome, status: OutcomeStatus) -> None: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | renpy/text/extras.py | 334 | # ============================================== | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | scripts/unicode/LineBreak.txt | 1927 | B77D..B797 ; H3 # Lo [27] HANGUL SYLLABLE RAG..HANGUL SYLLABLE RAH | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | renpy/gl2/live2d.py | 682 | # Note: When adding new parameters, make sure to add them to _duplicate, too. | STRING |