AI Slop Code RIsk Monitor

vinta/awesome-python

The definitive list that answers "I want to do X in Python, which tool should I use?"

10.8 Moderate pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for vinta/awesome-python, a Python project with 326,331 GitHub stars. SynthScan examined 12,008 lines of code across 111 source files, recording 148 pattern matches distributed across 9 syntactic categories. The legacy adjusted pattern signal is 10.8 (Moderate 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.

10.8
Adjusted Signal
10.8
Raw Pattern Score
100%
Time Factor
2026-10-10
Last Push
326.3K
Stars
Python
Language
12.0K
Lines of Code
111
Files
148
Pattern Hits
2026-10-12
Scan Date
0.01
HC Hit Rate

Risk Review · v3

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

Cognitive Ownership Risk 29.9/100 · MEDIUM

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

Hallucinated Dependency & Supply Chain Risk 2.1/100 · LOW

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

Agent Over-Engineering Ratio 35.4/100 · MEDIUM

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

PR Review Velocity Impact 57.1/100 · HIGH

Which changes need focused human review? 148 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 1MEDIUM 25LOW 122

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 148 distinct pattern matches across 9 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.

Hyper-Verbose Identifiers107 hits · 66 pts
SeverityFileLineSnippetContext
LOWwebsite/build.py243def category_meta_description(name: str, entry_count: int, description: str) -> str:CODE
LOWwebsite/build.py251def subcategory_meta_description(name: str, parent_name: str, entry_names: Sequence[str]) -> str:CODE
LOWwebsite/build.py355def build_sponsorship_json_ld() -> dict:CODE
LOWwebsite/build.py474def link_llms_category_index_to_canonical_pages(markdown: str, categories: Sequence[ParsedSection]) -> str:CODE
LOWwebsite/build.py497def link_description_anchors_to_category_pages(categories: Sequence[ParsedSection]) -> None:CODE
LOWwebsite/build.py548def annotate_entries_with_stats(CODE
LOWwebsite/readme_parser.py133def _extract_description_children(nodes: list[SyntaxTreeNode]) -> list[SyntaxTreeNode]:CODE
LOWwebsite/readme_parser.py179def _extract_description_html(inline: SyntaxTreeNode, first_link: SyntaxTreeNode) -> str:CODE
LOW⚡website/tests/test_fetch_github_stars.py55 def test_multiple_repos_use_aliases(self):CODE
LOW⚡website/tests/test_fetch_github_stars.py64 def test_skips_repos_with_quotes_in_name(self):CODE
LOW⚡website/tests/test_fetch_github_stars.py68 def test_skips_only_bad_repos(self):CODE
LOW⚡website/tests/test_fetch_github_stars.py73 def test_skips_graphql_injection_in_owner(self):CODE
LOW⚡website/tests/test_fetch_github_stars.py77 def test_skips_graphql_injection_in_name(self):CODE
LOW⚡website/tests/test_fetch_github_stars.py81 def test_skips_owner_starting_with_hyphen(self):CODE
LOW⚡website/tests/test_fetch_github_stars.py85 def test_skips_owner_starting_with_dot(self):CODE
LOW⚡website/tests/test_fetch_github_stars.py89 def test_skips_repo_starting_with_dot(self):CODE
LOW⚡website/tests/test_fetch_github_stars.py93 def test_allows_repo_with_dots_and_underscores(self):CODE
LOW⚡website/tests/test_fetch_github_stars.py97 def test_allows_hyphenated_owner(self):CODE
LOW⚡website/tests/test_fetch_github_stars.py101 def test_skips_owner_with_underscore(self):CODE
LOW⚡website/tests/test_fetch_github_stars.py107 def test_parses_star_count_and_owner(self):CODE
LOWwebsite/tests/test_fetch_github_stars.py15 def test_extracts_owner_repo_from_github_url(self):CODE
LOWwebsite/tests/test_fetch_github_stars.py37 def test_creates_directory_and_writes_json(self, tmp_path, monkeypatch):CODE
LOWwebsite/tests/test_fetch_github_stars.py125 def test_handles_missing_owner(self):CODE
LOWwebsite/tests/test_fetch_github_stars.py142 def test_extracts_last_commit_at(self):CODE
LOWwebsite/tests/test_fetch_github_stars.py154 def test_missing_default_branch_ref(self):CODE
LOWwebsite/tests/test_fetch_github_stars.py164 def test_skips_fetch_when_cache_is_fresh(self, tmp_path, monkeypatch, capsys):CODE
LOWwebsite/tests/test_fetch_github_stars.py204 def test_fetches_when_cache_is_stale(self, tmp_path, monkeypatch, capsys):CODE
LOWwebsite/tests/test_build.py141 def test_build_creates_homepage_and_category_pages(self, tmp_path):CODE
LOW⚡website/tests/test_build.py1235 def test_build_rejects_redirect_to_missing_page(self, tmp_path):STRING
LOW⚡website/tests/test_build.py1242 def test_build_rejects_redirect_over_live_page(self, tmp_path):STRING
LOW⚡website/tests/test_build.py1284 def test_returns_empty_when_missing(self, tmp_path):STRING
LOW⚡website/tests/test_build.py1295 def test_returns_empty_on_corrupt_json(self, tmp_path):STRING
LOW⚡website/tests/test_build.py1308 def test_only_entries_with_a_badge_are_returned(self):STRING
LOW⚡website/tests/test_build.py1337 def test_sorts_by_stars_descending(self):STRING
LOW⚡website/tests/test_build.py1346 def test_equal_stars_sorted_alphabetically(self):STRING
LOW⚡website/tests/test_build.py1354 def test_no_stars_go_to_bottom(self):STRING
LOW⚡website/tests/test_build.py1362 def test_no_stars_sorted_alphabetically(self):STRING
LOW⚡website/tests/test_build.py1370 def test_builtin_between_starred_and_unstarred(self):STRING
LOW⚡website/tests/test_build.py1386 def test_github_repo_returns_none(self):STRING
LOW⚡website/tests/test_build.py1401 def test_github_non_repo_returns_none(self):STRING
LOW⚡website/tests/test_build.py1518 def test_appends_star_count_to_bullet(self):STRING
LOW⚡website/tests/test_build.py1523 def test_appends_downloads_by_display_name(self):STRING
LOW⚡website/tests/test_build.py1527 def test_appends_downloads_and_stars_together(self):STRING
LOW⚡website/tests/test_build.py1532 def test_uses_first_github_link(self):STRING
LOW⚡website/tests/test_build.py1540 def test_skips_entries_without_data(self):STRING
LOW⚡website/tests/test_build.py1544 def test_skips_non_github_links_for_stars(self):STRING
LOW⚡website/tests/test_build.py1549 def test_skips_non_bullet_lines(self):STRING
LOW⚡website/tests/test_build.py1554 def test_handles_indented_bullets(self):STRING
LOW⚡website/tests/test_build.py1559 def test_preserves_lines_without_trailing_newline(self):STRING
LOW⚡website/tests/test_build.py1566 def test_parses_tsv_and_skips_not_found(self, tmp_path):STRING
LOW⚡website/tests/test_build.py1574 def test_missing_file_returns_empty(self, tmp_path):STRING
LOW⚡website/tests/test_build.py1584 def test_splits_after_how_to_choose_list(self, tmp_path):STRING
LOW⚡website/tests/test_build.py1593 def test_keeps_everything_above_table_without_how_to_choose_list(self, tmp_path):STRING
LOW⚡website/tests/test_build.py1600 def test_returns_empty_strings_without_intro_file(self, tmp_path):STRING
LOWwebsite/tests/test_build.py183 def test_build_creates_root_discovery_files(self, tmp_path):STRING
LOWwebsite/tests/test_build.py232 def test_sitemap_lastmod_follows_git_history_of_each_page(self, tmp_path):STRING
LOWwebsite/tests/test_build.py284 def test_build_creates_category_pages_with_metadata_and_links(self, tmp_path):STRING
LOWwebsite/tests/test_build.py350 def test_build_links_description_anchors_to_category_pages(self, tmp_path):STRING
LOWwebsite/tests/test_build.py385 def test_build_creates_llms_text_alternate_without_sponsors(self, tmp_path):STRING
LOWwebsite/tests/test_build.py458 def test_build_cleans_stale_output(self, tmp_path):STRING
47 more matches not shown…
Decorative Section Separators18 hits · 33 pts
SeverityFileLineSnippetContext
MEDIUMwebsite/tests/test_build.py67# ---------------------------------------------------------------------------COMMENT
MEDIUMwebsite/tests/test_build.py69# ---------------------------------------------------------------------------COMMENT
MEDIUMwebsite/tests/test_build.py91# ---------------------------------------------------------------------------COMMENT
MEDIUMwebsite/tests/test_build.py93# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡website/tests/test_build.py1250# ---------------------------------------------------------------------------STRING
MEDIUM⚡website/tests/test_build.py1252# ---------------------------------------------------------------------------STRING
MEDIUM⚡website/tests/test_build.py1278# ---------------------------------------------------------------------------STRING
MEDIUM⚡website/tests/test_build.py1280# ---------------------------------------------------------------------------STRING
MEDIUM⚡website/tests/test_build.py1302# ---------------------------------------------------------------------------STRING
MEDIUM⚡website/tests/test_build.py1304# ---------------------------------------------------------------------------STRING
MEDIUM⚡website/tests/test_build.py1380# ---------------------------------------------------------------------------STRING
MEDIUM⚡website/tests/test_build.py1382# ---------------------------------------------------------------------------STRING
MEDIUM⚡website/tests/test_build.py1405# ---------------------------------------------------------------------------STRING
MEDIUM⚡website/tests/test_build.py1407# ---------------------------------------------------------------------------STRING
MEDIUM⚡website/tests/test_build.py1512# ---------------------------------------------------------------------------STRING
MEDIUM⚡website/tests/test_build.py1514# ---------------------------------------------------------------------------STRING
MEDIUM⚡website/tests/test_build.py1578# ---------------------------------------------------------------------------STRING
MEDIUM⚡website/tests/test_build.py1580# ---------------------------------------------------------------------------STRING
Deep Nesting11 hits · 11 pts
SeverityFileLineSnippetContext
LOWwebsite/build.py548CODE
LOWwebsite/build.py612CODE
LOWwebsite/build.py669CODE
LOWwebsite/fetch_pypi_downloads_via_clickpy.py75CODE
LOWwebsite/readme_parser.py195CODE
LOWwebsite/readme_parser.py317CODE
LOWwebsite/readme_parser.py445CODE
LOWwebsite/fetch_github_stars.py102CODE
LOWwebsite/tests/test_build.py44CODE
LOWwebsite/tests/test_readme_parser.py463CODE
LOWwebsite/tests/test_readme_parser.py493CODE
Modern AI Meta-Vocabulary4 hits · 8 pts
SeverityFileLineSnippetContext
MEDIUMwebsite/data/category_intros/science.md34SimPy runs discrete-event simulations. Each process is a Python generator that [yields events and waits for them](https:CODE
MEDIUMwebsite/data/category_intros/messaging.md16FastStream is [an asynchronous framework for event-driven services](https://faststream.ag2.ai/latest/): FastAPI's decoraCODE
MEDIUMwebsite/data/category_intros/ai-and-agents.md25The OpenAI Agents SDK keeps to [a small set of primitives](https://openai.github.io/openai-agents-python/): use it when CODE
MEDIUMwebsite/data/category_intros/ai-and-agents.md47vLLM runs [batch inference offline or an OpenAI-compatible server](https://docs.vllm.ai/en/latest/getting_started/quicksCODE
Excessive Try-Catch Wrapping3 hits · 6 pts
SeverityFileLineSnippetContext
MEDIUMwebsite/fetch_pypi_downloads_via_pepy.py42 print("Error: PEPY_TECH_API_KEY not set (environment or repo-root .env).", file=sys.stderr)CODE
MEDIUMwebsite/fetch_github_stars.py106 print("Error: GITHUB_TOKEN environment variable is required.", file=sys.stderr)CODE
MEDIUMwebsite/fetch_github_stars.py161 print("Error: Invalid GITHUB_TOKEN.", file=sys.stderr)CODE
Cross-Language Confusion1 hit · 2 pts
SeverityFileLineSnippetContext
HIGHwebsite/fetch_pypi_downloads_via_clickpy.py60 Each file entry is {"package": str | null, "reason": str | null} plus anSTRING
Fake / Example Data2 hits · 2 pts
SeverityFileLineSnippetContext
LOWwebsite/tests/test_fetch_github_stars.py196 monkeypatch.setenv("GITHUB_TOKEN", "fake-token")CODE
LOWwebsite/tests/test_fetch_github_stars.py237 monkeypatch.setenv("GITHUB_TOKEN", "fake-token")CODE
Unused Imports1 hit · 1 pts
SeverityFileLineSnippetContext
LOWwebsite/readme_parser.py12CODE
Redundant / Tautological Comments1 hit · 0 pts
SeverityFileLineSnippetContext
LOWwebsite/tests/test_readme_parser.py532 # Check if inline text starts with '[' but has no link nodeSTRING