AI Slop Code RIsk Monitor

more-itertools/more-itertools

More routines for operating on iterables, beyond itertools

9.4 Moderate pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for more-itertools/more-itertools, a Python project with 4,101 GitHub stars. SynthScan examined 17,001 lines of code across 21 source files, recording 145 pattern matches distributed across 11 syntactic categories. The legacy adjusted pattern signal is 9.4 (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.

9.4
Adjusted Signal
9.4
Raw Pattern Score
100%
Time Factor
2026-10-10
Last Push
4.1K
Stars
Python
Language
17.0K
Lines of Code
21
Files
145
Pattern Hits
2026-10-12
Scan Date
0.33
HC Hit Rate

Risk Review · v3

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

Cognitive Ownership Risk 29.3/100 · MEDIUM

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

Hallucinated Dependency & Supply Chain Risk 0.7/100 · LOW

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

Agent Over-Engineering Ratio 27.3/100 · MEDIUM

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

PR Review Velocity Impact 43.8/100 · MEDIUM

Which changes need focused human review? 145 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

Run additional scans to build a history of the legacy pattern signal. Score changes are not a measure of AI adoption or code quality.

No multi-scan history yet — run the scanner again to build trend data.

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 7MEDIUM 8LOW 130

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 145 distinct pattern matches across 11 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 Identifiers92 hits · 70 pts
SeverityFileLineSnippetContext
LOWtests/test_recipes.py151 def test_negative_item_raises(self):CODE
LOWtests/test_recipes.py499 def test_uncaught_exception_is_raised(self):CODE
LOWtests/test_recipes.py1039 def test_negative_start_and_stop(self):CODE
LOWtests/test_recipes.py1342 def test_is_prime_pseudoprimes(self):CODE
LOWtests/test_recipes.py1471 def test_nth_prime_tightened_bound(self):CODE
LOWtests/test_recipes.py1481 def test_nth_prime_approximate(self):CODE
LOWtests/test_recipes.py1639 def test_vs_statistics_median(self):CODE
LOWtests/test_recipes.py1659 def test_vs_statistics_median_windowed(self):CODE
LOW⚡tests/test_more.py1136 def test_getitem_miss_does_not_add_key(self):CODE
LOW⚡tests/test_more.py1143 def test_in_does_not_add_key_with_validator(self):CODE
LOW⚡tests/test_more.py1152 def test_keys_are_only_those_seen(self):CODE
LOW⚡tests/test_more.py1746 def test_before_emulation_starts_with_sep(self):CODE
LOW⚡tests/test_more.py1751 def test_before_emulation_ends_with_sep(self):CODE
LOW⚡tests/test_more.py1756 def test_before_emulation_no_sep(self):CODE
LOW⚡tests/test_more.py1762 def test_after_emulation_starts_with_sep(self):CODE
LOW⚡tests/test_more.py1767 def test_after_emulation_ends_with_sep(self):CODE
LOW⚡tests/test_more.py1772 def test_after_emulation_no_sep(self):CODE
LOW⚡tests/test_more.py1879 def test_using_none_with_leftover(self):CODE
LOW⚡tests/test_more.py1889 def test_using_none_without_leftover(self):CODE
LOW⚡tests/test_more.py1898 def test_using_none_mid_sizes(self):CODE
LOW⚡tests/test_more.py4512 def test_default_exception_message(self):CODE
LOW⚡tests/test_more.py4520 def test_falsy_custom_exception(self):CODE
LOW⚡tests/test_more.py4530 def test_too_long_does_not_evaluate_repr(self):CODE
LOW⚡tests/test_more.py6115 def test_vs_unique_justseen_key(self):CODE
LOW⚡tests/test_more.py6121 def test_vs_duplicates_everseen(self):CODE
LOW⚡tests/test_more.py6127 def test_vs_duplicates_everseen_key(self):CODE
LOW⚡tests/test_more.py6137 def test_vs_duplicates_justseen(self):CODE
LOW⚡tests/test_more.py6143 def test_vs_duplicates_justseen_key(self):CODE
LOW⚡tests/test_more.py6167 def test_empty_iterables_only(self):CODE
LOW⚡tests/test_more.py6171 def test_includes_empty_iterables(self):CODE
LOW⚡tests/test_more.py6180 def test_prefix_contains_elements_of_the_first_iterable(self):CODE
LOW⚡tests/test_more.py6228 def test_none_is_not_a_sentinel(self):CODE
LOW⚡tests/test_more.py6233 def test_not_identical_but_equal(self):CODE
LOW⚡tests/test_more.py6236 def test_fillvalue_not_fakeable(self):CODE
LOW⚡tests/test_more.py6755 def test_mismatch_function_smaller(self):CODE
LOW⚡tests/test_more.py6760 def test_mismatch_function_different(self):CODE
LOW⚡tests/test_more.py6765 def test_mismatch_function_larger(self):CODE
LOWtests/test_more.py108 def test_strict_being_true_with_size_none(self):CODE
LOWtests/test_more.py216 def test_empty_iterable_no_default(self):CODE
LOWtests/test_more.py565 def test_sortable_input_produces_sorted_output(self):CODE
LOWtests/test_more.py611 def test_unsortable_unhashable(self):CODE
LOWtests/test_more.py720 def test_key_matches_builtins(self):CODE
LOWtests/test_more.py784 def test_too_long_default_message(self):CODE
LOWtests/test_more.py794 def test_falsy_custom_exception(self):CODE
LOWtests/test_more.py809 def test_too_long_does_not_evaluate_repr(self):CODE
LOWtests/test_more.py1112 def test_falsey_validator_is_honoured(self):CODE
LOWtests/test_more.py1344 def test_argument_mismatch_raises(self):CODE
LOWtests/test_more.py1792 def test_one_element_is_second_item(self):CODE
LOWtests/test_more.py1797 def test_one_element_is_first_item(self):CODE
LOWtests/test_more.py1861 def test_iterable_too_small_extra(self):CODE
LOWtests/test_more.py1917 def test_iterable_empty_using_none(self):CODE
LOWtests/test_more.py1962 def test_invalid_in_sizes_after_none(self):CODE
LOWtests/test_more.py1971 def test_generator_iterable_integrity(self):CODE
LOWtests/test_more.py1985 def test_generator_sizes_integrity(self):CODE
LOWtests/test_more.py2878 def test_contains_items_with_inexact_step(self):CODE
LOWtests/test_more.py2897 def test_contains_non_items_with_inexact_step(self):CODE
LOWtests/test_more.py3117 def test_len_matches_iteration(self):CODE
LOWtests/test_more.py3204 def test_reversed_preserves_float_values(self):CODE
LOWtests/test_more.py3214 def test_reversed_datetime_limits(self):CODE
LOWtests/test_more.py3800 def test_maxlen_zero_peek_does_not_drop_items(self):CODE
32 more matches not shown…
Empty Error Handlers7 hits · 35 pts
SeverityFileLineSnippetContext
HIGHtests/test_more.py1467except RuntimeError:CODE
HIGHtests/test_more.py1487except RuntimeError:CODE
HIGHmore_itertools/more.py3440except TypeError:CODE
HIGHmore_itertools/more.py3818except exceptions:CODE
HIGHmore_itertools/more.py3841except exceptions:CODE
HIGHmore_itertools/more.py4176except self._module.TimeoutError:CODE
HIGHmore_itertools/more.py4197except Empty:CODE
Self-Referential Comments6 hits · 16 pts
SeverityFileLineSnippetContext
MEDIUMtests/test_more.py3987 # Create a non-reversible generator from a sequenceCOMMENT
MEDIUMtests/test_more.py4847 # Create a data set and a reversed data setCOMMENT
MEDIUMtests/test_more.py4865 # Create a data set and a reversed data setCOMMENT
MEDIUMdocs/conf.py5# This file is execfile()d with the current directory set to its containing dir.COMMENT
MEDIUMmore_itertools/more.py1072 # Create the filler for the next windows. The padding ensuresCOMMENT
MEDIUMmore_itertools/more.py2902 """This function is the inverse of :func:`itertools.accumulate`. By defaultSTRING
Deep Nesting18 hits · 14 pts
SeverityFileLineSnippetContext
LOWtests/test_recipes.py1015CODE
LOWtests/test_recipes.py1722CODE
LOWtests/test_more.py3528CODE
LOWtests/test_more.py5400CODE
LOWtests/test_more.py5631CODE
LOWtests/test_more.py6313CODE
LOWmore_itertools/more.py752CODE
LOWmore_itertools/more.py1411CODE
LOWmore_itertools/more.py1650CODE
LOWmore_itertools/more.py1782CODE
LOWmore_itertools/more.py2722CODE
LOWmore_itertools/more.py3534CODE
LOWmore_itertools/more.py4859CODE
LOWmore_itertools/more.py824CODE
LOWmore_itertools/more.py1203CODE
LOWmore_itertools/more.py2321CODE
LOWmore_itertools/more.py3588CODE
LOWmore_itertools/recipes.py807CODE
Over-Commented Block10 hits · 10 pts
SeverityFileLineSnippetContext
LOWdocs/conf.py1#COMMENT
LOWdocs/conf.py81COMMENT
LOWdocs/conf.py101COMMENT
LOWdocs/conf.py121# -- Options for HTML output ---------------------------------------------------COMMENT
LOWdocs/conf.py141# html_logo = NoneCOMMENT
LOWdocs/conf.py161# html_use_smartypants = TrueCOMMENT
LOWdocs/conf.py181COMMENT
LOWdocs/conf.py221]COMMENT
LOWdocs/conf.py281COMMENT
LOWmore_itertools/more.py3481 # Save the substitutes iterable, since it's used more than onceCOMMENT
Redundant / Tautological Comments4 hits · 5 pts
SeverityFileLineSnippetContext
LOWtests/test_more.py4619 # Check if we can read in cached valuesCOMMENT
LOWmore_itertools/more.py1445 # Check if beyond max levelCOMMENT
LOWmore_itertools/more.py1451 # Check if done iteratingCOMMENT
LOWmore_itertools/more.py4642 # Check if any chunks need addition processingCOMMENT
AI Slop Vocabulary1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMtests/test_more.py4744 # Note, this test is surprisingly robust. Although it depends on the qualityCOMMENT
Unused Imports3 hits · 2 pts
SeverityFileLineSnippetContext
LOWtests/test_more.py1CODE
LOWmore_itertools/__init__.py3CODE
LOWmore_itertools/__init__.py4CODE
Dead Code1 hit · 2 pts
SeverityFileLineSnippetContext
MEDIUMtests/test_more.py4591CODE
Modern Structural Boilerplate2 hits · 2 pts
SeverityFileLineSnippetContext
LOWmore_itertools/more.py61__all__ = [CODE
LOWmore_itertools/recipes.py42__all__ = [CODE
Overly Generic Function Names1 hit · 0 pts
SeverityFileLineSnippetContext
LOWtests/test_more.py4428 def helper():CODE