AI Slop Code RIsk Monitor

psf/black

The uncompromising Python code formatter

12.4 Moderate pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for psf/black, a Python project with 41,890 GitHub stars. SynthScan examined 99,719 lines of code across 464 source files, recording 1002 pattern matches distributed across 16 syntactic categories. The legacy adjusted pattern signal is 12.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.

12.4
Adjusted Signal
12.4
Raw Pattern Score
100%
Time Factor
2026-10-10
Last Push
41.9K
Stars
Python
Language
99.7K
Lines of Code
464
Files
1.0K
Pattern Hits
2026-10-12
Scan Date
0.21
HC Hit Rate

Risk Review · v3

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

Cognitive Ownership Risk 23.8/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 13.0/100 · LOW

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

Agent Over-Engineering Ratio 34.9/100 · MEDIUM

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

PR Review Velocity Impact 52.8/100 · HIGH

Which changes need focused human review? 1002 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 96MEDIUM 7LOW 899

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 1002 distinct pattern matches across 16 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 Identifiers463 hits · 426 pts
SeverityFileLineSnippetContext
LOWtests/test_ranges.py16def test_parse_line_ranges_valid(CODE
LOWtests/test_ranges.py31def test_parse_line_ranges_invalid(lines_str: list[str]) -> None:CODE
LOWtests/test_ranges.py51def test_repeated_lines_map_to_their_original_positions(start: int, end: int) -> None:STRING
LOWtests/test_ranges.py60def test_repeated_lines_between_disjoint_ranges_stay_unselected() -> None:STRING
LOWtests/test_ranges.py246def test_diff_at_the_start_of_the_file(STRING
LOWtests/optional.py107def pytest_collection_modifyitems(config: "Config", items: "list[Node]") -> None:CODE
LOWtests/util.py341def read_jupyter_notebook_from_file(file_name: Path) -> str:CODE
LOWtests/test_docs.py59def test_feature_lists_are_up_to_date() -> None:CODE
LOW⚡tests/test_ipynb.py66def test_trailing_semicolon_with_comment() -> None:CODE
LOW⚡tests/test_ipynb.py73def test_trailing_semicolon_with_comment_on_next_line() -> None:CODE
LOW⚡tests/test_ipynb.py79def test_trailing_semicolon_indented() -> None:CODE
LOW⚡tests/test_ipynb.py85def test_trailing_semicolon_noop() -> None:CODE
LOW⚡tests/test_ipynb.py211def test_long_magic_assignment_is_not_wrapped_in_parentheses(CODE
LOW⚡tests/test_ipynb.py220def test_unmask_cell_raises_when_magic_is_no_longer_recognised() -> None:CODE
LOW⚡tests/test_ipynb.py226def test_cell_magic_with_magic() -> None:CODE
LOWtests/test_ipynb.py48def test_create_token_uses_requested_length(n_chars: int) -> None:CODE
LOWtests/test_ipynb.py52def test_unmask_cell_raises_when_token_is_not_unique() -> None:CODE
LOWtests/test_ipynb.py178def test_input_already_contains_transformed_magic() -> None:CODE
LOWtests/test_ipynb.py244def test_cell_magic_with_empty_lines(src: str, expected: str) -> None:CODE
LOWtests/test_ipynb.py272def test_cell_magic_with_custom_python_magic(CODE
LOWtests/test_ipynb.py293def test_cell_magic_with_custom_python_magic_after_spaces_and_comments_noop(CODE
LOWtests/test_ipynb.py307def test_cell_magic_with_magic_noop() -> None:CODE
LOWtests/test_ipynb.py332def test_cell_magic_with_invalid_body() -> None:CODE
LOWtests/test_ipynb.py344def test_entire_notebook_empty_metadata() -> None:CODE
LOWtests/test_ipynb.py379def test_entire_notebook_trailing_newline() -> None:CODE
LOWtests/test_ipynb.py426def test_entire_notebook_no_trailing_newline() -> None:CODE
LOWtests/test_ipynb.py473def test_entire_notebook_without_changes() -> None:CODE
LOWtests/test_ipynb.py491def test_unparseable_notebook() -> None:CODE
LOWtests/test_ipynb.py498def test_ipynb_diff_with_change() -> None:CODE
LOWtests/test_ipynb.py511def test_ipynb_diff_with_no_change() -> None:CODE
LOWtests/test_ipynb.py524def test_cache_isnt_written_if_no_jupyter_deps_single(CODE
LOWtests/test_ipynb.py545def test_cache_isnt_written_if_no_jupyter_deps_dir(CODE
LOWtests/test_ipynb.py600def test_unable_to_replace_magics(monkeypatch: MonkeyPatch) -> None:CODE
LOWtests/test_concurrency_manager_shutdown.py26def test_manager_shutdown_called_for_diff(monkeypatch: Any, tmp_path: Path) -> None:CODE
LOWtests/test_concurrency_manager_shutdown.py35 def fake_format_file_in_place(CODE
LOWtests/test_schedule_formatting.py17def test_formats_all_files_and_reports_counts(tmp_path: Path) -> None:CODE
LOWtests/test_schedule_formatting.py47def test_reports_failed_files_without_aborting_the_run(CODE
LOWtests/test_schedule_formatting.py55 def fake_format_file_in_place(CODE
LOW⚡tests/test_black.py1675 def test_required_version_matches_version(self) -> None:CODE
LOW⚡tests/test_black.py1682 def test_required_version_matches_partial_version(self) -> None:CODE
LOW⚡tests/test_black.py1689 def test_required_version_does_not_match_on_minor_version(self) -> None:CODE
LOW⚡tests/test_black.py1696 def test_required_version_does_not_match_version(self) -> None:CODE
LOW⚡tests/test_black.py1704 def test_preserves_line_endings(self) -> None:CODE
LOW⚡tests/test_black.py4007 def test_assert_equivalent_basic(self) -> None:CODE
LOW⚡tests/test_black.py4012 def test_assert_equivalent_del(self) -> None:CODE
LOW⚡tests/test_black.py4015 def test_assert_equivalent_strings(self) -> None:CODE
LOWtests/test_black.py150def test_fmt_off_reindent_reports_black_not_the_user(tmp_path: Path) -> None:CODE
LOWtests/test_black.py187def test_invalid_input_error_includes_path_location(tmp_path: Path) -> None:CODE
LOWtests/test_black.py300 def test_piping_diff_with_color(self) -> None:CODE
LOWtests/test_black.py321 def test_piping_diff_with_color_respects_no_color(self) -> None:CODE
LOWtests/test_black.py422 def test_expression_diff_with_color(self) -> None:CODE
LOWtests/test_black.py442 def test_detect_pos_only_arguments(self) -> None:CODE
LOWtests/test_black.py450 def test_detect_debug_f_strings(self) -> None:CODE
LOWtests/test_black.py480 def test_skip_source_first_line(self) -> None:CODE
LOWtests/test_black.py493 def test_skip_source_first_line_when_mixing_newlines(self) -> None:CODE
LOWtests/test_black.py503 def test_skip_source_first_line_with_crlf_newlines(self) -> None:CODE
LOWtests/test_black.py521 def test_skip_magic_trailing_comma(self) -> None:CODE
LOWtests/test_black.py573 def test_tab_comment_indentation(self) -> None:CODE
LOWtests/test_black.py814 def test_report_write_github_outputs(self) -> None:CODE
LOWtests/test_black.py834 def test_github_output_in_cli(self) -> None:CODE
403 more matches not shown…
Empty Error Handlers78 hits · 335 pts
SeverityFileLineSnippetContext
HIGHtests/test_black.py1582except io.UnsupportedOperation:CODE
HIGHtests/data/cases/context_managers_autodetect_311.py7except* Error as e:CODE
HIGHtests/data/cases/context_managers_autodetect_311.py28except* Error as e:CODE
HIGHtests/data/cases/remove_parens.py15except Exception as e:CODE
HIGHtests/data/cases/remove_parens.py73except Exception as e:CODE
HIGHtests/data/cases/fmtskip_header_bracket_5402.py33except ( # fmt: skipCODE
HIGHtests/data/cases/pep_654.py4except* ExceptionGroup as e:CODE
HIGHtests/data/cases/pep_654.py13except* ValueError:CODE
HIGHtests/data/cases/pep_654.py22except* Exception:CODE
HIGHtests/data/cases/import_line_collapse.py35except Exception:CODE
HIGHtests/data/cases/import_line_collapse.py42except Exception:CODE
HIGHtests/data/cases/import_line_collapse.py126except Exception:CODE
HIGHtests/data/cases/import_line_collapse.py135except Exception:CODE
HIGHtests/data/cases/tuple_with_stmt.py25except TypeError:CODE
HIGHtests/data/cases/pep_654_style.py4except * ExceptionGroup as e:CODE
HIGHtests/data/cases/pep_654_style.py13except *ValueError:CODE
HIGHtests/data/cases/pep_654_style.py62except* ExceptionGroup as e:CODE
HIGHtests/data/cases/pep_654_style.py71except* ValueError:CODE
HIGHtests/data/cases/pep_654_style.py22except *(Exception):CODE
HIGHtests/data/cases/pep_654_style.py80except* Exception:CODE
HIGH…sts/data/cases/remove_except_types_parens_pre_py314.py6except:CODE
HIGH…sts/data/cases/remove_except_types_parens_pre_py314.py12except ValueError:CODE
HIGH…sts/data/cases/remove_except_types_parens_pre_py314.py17except* ValueError:CODE
HIGH…sts/data/cases/remove_except_types_parens_pre_py314.py23except (ValueError):CODE
HIGH…sts/data/cases/remove_except_types_parens_pre_py314.py28except* (ValueError):CODE
HIGH…sts/data/cases/remove_except_types_parens_pre_py314.py34except (ValueError) as e:CODE
HIGH…sts/data/cases/remove_except_types_parens_pre_py314.py39except* (ValueError) as e:CODE
HIGH…sts/data/cases/remove_except_types_parens_pre_py314.py45except (ValueError,):CODE
HIGH…sts/data/cases/remove_except_types_parens_pre_py314.py50except* (ValueError,):CODE
HIGH…sts/data/cases/remove_except_types_parens_pre_py314.py56except (ValueError,) as e:CODE
HIGH…sts/data/cases/remove_except_types_parens_pre_py314.py61except* (ValueError,) as e:CODE
HIGH…sts/data/cases/remove_except_types_parens_pre_py314.py67except (ValueError, TypeError, KeyboardInterrupt):CODE
HIGH…sts/data/cases/remove_except_types_parens_pre_py314.py72except* (ValueError, TypeError, KeyboardInterrupt):CODE
HIGH…sts/data/cases/remove_except_types_parens_pre_py314.py78except (ValueError, TypeError, KeyboardInterrupt) as e:CODE
HIGH…sts/data/cases/remove_except_types_parens_pre_py314.py83except* (ValueError, TypeError, KeyboardInterrupt) as e:CODE
HIGH…sts/data/cases/remove_except_types_parens_pre_py314.py89except (ValueError if True else TypeError):CODE
HIGH…sts/data/cases/remove_except_types_parens_pre_py314.py94except* (ValueError if True else TypeError):CODE
HIGH…sts/data/cases/remove_except_types_parens_pre_py314.py103except (ValueError,):CODE
HIGH…sts/data/cases/remove_except_types_parens_pre_py314.py111except* (ValueError,):CODE
HIGH…sts/data/cases/remove_except_types_parens_pre_py314.py119except:CODE
HIGH…sts/data/cases/remove_except_types_parens_pre_py314.py125except ValueError:CODE
HIGH…sts/data/cases/remove_except_types_parens_pre_py314.py130except* ValueError:CODE
HIGH…sts/data/cases/remove_except_types_parens_pre_py314.py136except ValueError:CODE
HIGH…sts/data/cases/remove_except_types_parens_pre_py314.py141except* ValueError:CODE
HIGH…sts/data/cases/remove_except_types_parens_pre_py314.py147except ValueError as e:CODE
HIGH…sts/data/cases/remove_except_types_parens_pre_py314.py152except* ValueError as e:CODE
HIGH…sts/data/cases/remove_except_types_parens_pre_py314.py158except (ValueError,):CODE
HIGH…sts/data/cases/remove_except_types_parens_pre_py314.py163except* (ValueError,):CODE
HIGH…sts/data/cases/remove_except_types_parens_pre_py314.py169except (ValueError,) as e:CODE
HIGH…sts/data/cases/remove_except_types_parens_pre_py314.py174except* (ValueError,) as e:CODE
HIGH…sts/data/cases/remove_except_types_parens_pre_py314.py180except (ValueError, TypeError, KeyboardInterrupt):CODE
HIGH…sts/data/cases/remove_except_types_parens_pre_py314.py185except* (ValueError, TypeError, KeyboardInterrupt):CODE
HIGH…sts/data/cases/remove_except_types_parens_pre_py314.py191except (ValueError, TypeError, KeyboardInterrupt) as e:CODE
HIGH…sts/data/cases/remove_except_types_parens_pre_py314.py196except* (ValueError, TypeError, KeyboardInterrupt) as e:CODE
HIGH…sts/data/cases/remove_except_types_parens_pre_py314.py202except ValueError if True else TypeError:CODE
HIGH…sts/data/cases/remove_except_types_parens_pre_py314.py207except* ValueError if True else TypeError:CODE
HIGH…sts/data/cases/remove_except_types_parens_pre_py314.py216except (ValueError,):CODE
HIGH…sts/data/cases/remove_except_types_parens_pre_py314.py224except* (ValueError,):CODE
HIGH…sts/data/cases/remove_except_types_parens_pre_py314.py101except (TypeError, KeyboardInterrupt):CODE
HIGH…sts/data/cases/remove_except_types_parens_pre_py314.py109except* (TypeError, KeyboardInterrupt):CODE
18 more matches not shown…
Unused Imports224 hits · 178 pts
SeverityFileLineSnippetContext
LOWtests/optional.py30CODE
LOWtests/optional.py31CODE
LOWtests/optional.py32CODE
LOWtests/optional.py33CODE
LOWtests/test_concurrency_manager_shutdown.py1CODE
LOWtests/test_schedule_formatting.py5CODE
LOWtests/data/cases/preview_comments7.py2CODE
LOWtests/data/cases/preview_comments7.py2CODE
LOWtests/data/cases/preview_comments7.py2CODE
LOWtests/data/cases/preview_comments7.py2CODE
LOWtests/data/cases/preview_comments7.py2CODE
LOWtests/data/cases/preview_comments7.py2CODE
LOWtests/data/cases/preview_comments7.py15CODE
LOWtests/data/cases/preview_comments7.py15CODE
LOWtests/data/cases/preview_comments7.py15CODE
LOWtests/data/cases/preview_comments7.py15CODE
LOWtests/data/cases/preview_comments7.py15CODE
LOWtests/data/cases/preview_comments7.py15CODE
LOWtests/data/cases/preview_comments7.py26CODE
LOWtests/data/cases/preview_comments7.py29CODE
LOWtests/data/cases/preview_comments7.py156CODE
LOWtests/data/cases/preview_comments7.py156CODE
LOWtests/data/cases/preview_comments7.py156CODE
LOWtests/data/cases/preview_comments7.py156CODE
LOWtests/data/cases/preview_comments7.py156CODE
LOWtests/data/cases/preview_comments7.py156CODE
LOWtests/data/cases/preview_comments7.py169CODE
LOWtests/data/cases/preview_comments7.py169CODE
LOWtests/data/cases/preview_comments7.py169CODE
LOWtests/data/cases/preview_comments7.py169CODE
LOWtests/data/cases/preview_comments7.py169CODE
LOWtests/data/cases/preview_comments7.py169CODE
LOWtests/data/cases/preview_comments7.py180CODE
LOWtests/data/cases/preview_comments7.py183CODE
LOWtests/data/cases/line_ranges_imports.py7CODE
LOWtests/data/cases/line_ranges_imports.py8CODE
LOWtests/data/cases/line_ranges_imports.py9CODE
LOWtests/data/cases/line_ranges_fmt_off.py6CODE
LOWtests/data/cases/line_ranges_fmt_off.py32CODE
LOWtests/data/cases/fmtonoff.py3CODE
LOWtests/data/cases/fmtonoff.py5CODE
LOWtests/data/cases/fmtonoff.py5CODE
LOWtests/data/cases/fmtonoff.py5CODE
LOWtests/data/cases/fmtonoff.py10CODE
LOWtests/data/cases/fmtonoff.py10CODE
LOWtests/data/cases/fmtonoff.py10CODE
LOWtests/data/cases/fmtonoff.py248CODE
LOWtests/data/cases/fmtonoff.py250CODE
LOWtests/data/cases/fmtonoff.py250CODE
LOWtests/data/cases/fmtonoff.py250CODE
LOWtests/data/cases/fmtonoff.py254CODE
LOWtests/data/cases/fmtonoff.py254CODE
LOWtests/data/cases/fmtonoff.py254CODE
LOWtests/data/cases/comments2.py1CODE
LOWtests/data/cases/comments2.py4CODE
LOWtests/data/cases/comments2.py172CODE
LOWtests/data/cases/comments2.py175CODE
LOWtests/data/cases/function2.py28CODE
LOWtests/data/cases/function2.py91CODE
LOWtests/data/cases/function2.py33CODE
164 more matches not shown…
Deep Nesting84 hits · 69 pts
SeverityFileLineSnippetContext
LOWtests/test_black.py1920CODE
LOWtests/test_black.py3262CODE
LOWtests/test_blackd.py230CODE
LOWtests/data/cases/composition_no_trailing_comma.py2CODE
LOWtests/data/cases/composition_no_trailing_comma.py188CODE
LOWtests/data/cases/empty_lines.py5CODE
LOWtests/data/cases/empty_lines.py102CODE
LOWtests/data/cases/composition.py2CODE
LOWaction/main.py117CODE
LOWsrc/blib2to3/pytree.py1060CODE
LOWsrc/blib2to3/pytree.py789CODE
LOWsrc/blib2to3/pytree.py909CODE
LOWsrc/blib2to3/pytree.py920CODE
LOWsrc/blib2to3/pytree.py965CODE
LOWsrc/blib2to3/pytree.py1011CODE
LOWsrc/blib2to3/pgen2/pgen.py132CODE
LOWsrc/blib2to3/pgen2/pgen.py189CODE
LOWsrc/blib2to3/pgen2/pgen.py228CODE
LOWsrc/blib2to3/pgen2/conv.py86CODE
LOWsrc/blib2to3/pgen2/parse.py274CODE
LOWsrc/blib2to3/pgen2/parse.py320CODE
LOWsrc/blib2to3/pgen2/driver.py208CODE
LOWsrc/blib2to3/pgen2/tokenize.py146CODE
LOWsrc/blackd/client.py69CODE
LOWsrc/blackd/__init__.py297CODE
LOWsrc/black/files.py208CODE
LOWsrc/black/files.py350CODE
LOWsrc/black/parsing.py217CODE
LOWsrc/black/handle_ipynb_magics.py454CODE
LOWsrc/black/handle_ipynb_magics.py487CODE
LOWsrc/black/concurrency.py159CODE
LOWsrc/black/__init__.py562CODE
LOWsrc/black/__init__.py830CODE
LOWsrc/black/__init__.py971CODE
LOWsrc/black/__init__.py1115CODE
LOWsrc/black/__init__.py1569CODE
LOWsrc/black/__init__.py1778CODE
LOWsrc/black/__init__.py1782CODE
LOWsrc/black/brackets.py394CODE
LOWsrc/black/lines.py1392CODE
LOWsrc/black/lines.py1494CODE
LOWsrc/black/lines.py1530CODE
LOWsrc/black/lines.py1627CODE
LOWsrc/black/lines.py283CODE
LOWsrc/black/lines.py319CODE
LOWsrc/black/lines.py331CODE
LOWsrc/black/lines.py657CODE
LOWsrc/black/lines.py1020CODE
LOWsrc/black/lines.py1201CODE
LOWsrc/black/ranges.py379CODE
LOWsrc/black/ranges.py292CODE
LOWsrc/black/trans.py1353CODE
LOWsrc/black/trans.py431CODE
LOWsrc/black/trans.py781CODE
LOWsrc/black/trans.py1198CODE
LOWsrc/black/trans.py1536CODE
LOWsrc/black/trans.py2024CODE
LOWsrc/black/trans.py2176CODE
LOWsrc/black/trans.py2211CODE
LOWsrc/black/trans.py2264CODE
24 more matches not shown…
Cross-Language Confusion12 hits · 60 pts
SeverityFileLineSnippetContext
HIGHtests/test_ipynb.py352 ' "execution_count": null,\n'CODE
HIGHtests/test_ipynb.py365 ' "execution_count": null,\n'CODE
HIGHtests/test_ipynb.py387 ' "execution_count": null,\n'CODE
HIGHtests/test_ipynb.py400 ' "execution_count": null,\n'CODE
HIGHtests/test_ipynb.py434 ' "execution_count": null,\n'CODE
HIGHtests/test_ipynb.py447 ' "execution_count": null,\n'CODE
HIGHtests/data/cases/preview_long_strings__regression.py128 "xx {xxxxxxxxxxx}/xxxxxxxxxxx.xxx xxxx.xxx && xxxxxx -x "CODE
HIGHtests/data/cases/preview_long_strings__regression.py140 "xx {xxxxxxxxxxx}/xxxxxxxxxxx.xxx xxxx.xxx && xxxxxx -x "CODE
HIGHtests/data/cases/preview_long_strings__regression.py747 "xx {xxxxxxxxxxx}/xxxxxxxxxxx.xxx xxxx.xxx && xxxxxx -x "CODE
HIGHtests/data/cases/preview_long_strings__regression.py758 "xx {xxxxxxxxxxx}/xxxxxxxxxxx.xxx xxxx.xxx && xxxxxx -x "CODE
HIGHsrc/blib2to3/pgen2/parse.py289 self.push(t, itsdfa, newstate, context)CODE
HIGHsrc/black/__init__.py505 " (which can silenced by 2>/dev/null)."CODE
Fake / Example Data42 hits · 39 pts
SeverityFileLineSnippetContext
LOWtests/data/cases/docstring_no_string_normalization.py40 Lorem ipsum dolor sit amet.STRING
LOWtests/data/cases/docstring_no_string_normalization.py40 Lorem ipsum dolor sit amet.STRING
LOWtests/data/cases/docstring_no_string_normalization.py167 Lorem ipsum dolor sit amet.STRING
LOWtests/data/cases/docstring_no_string_normalization.py167 Lorem ipsum dolor sit amet.STRING
LOWtests/data/cases/preview_long_dict_values.py25 r"Lorem ipsum dolor sit amet, an sed convenire eloquentiam \t"CODE
LOWtests/data/cases/preview_long_dict_values.py25 r"Lorem ipsum dolor sit amet, an sed convenire eloquentiam \t"CODE
LOWtests/data/cases/preview_long_dict_values.py186 r"Lorem ipsum dolor sit amet, an sed convenire eloquentiam \t"CODE
LOWtests/data/cases/preview_long_dict_values.py186 r"Lorem ipsum dolor sit amet, an sed convenire eloquentiam \t"CODE
LOW⚡tests/data/cases/preview_long_strings__regression.py587some_function_name(argument=r"Lorem ipsum dolor sit amet, consectetur adipiscing elit sed do eiusmod tempor" r" incididuCODE
LOW⚡tests/data/cases/preview_long_strings__regression.py587some_function_name(argument=r"Lorem ipsum dolor sit amet, consectetur adipiscing elit sed do eiusmod tempor" r" incididuCODE
LOW⚡tests/data/cases/preview_long_strings__regression.py588some_function_name(lambda: r"Lorem ipsum dolor sit amet, consectetur adipiscing elit sed do eiusmod tempor" r" incididunCODE
LOW⚡tests/data/cases/preview_long_strings__regression.py588some_function_name(lambda: r"Lorem ipsum dolor sit amet, consectetur adipiscing elit sed do eiusmod tempor" r" incididunCODE
LOW⚡tests/data/cases/preview_long_strings__regression.py589value = some_value if condition else r"Lorem ipsum dolor sit amet, consectetur adipiscing elit sed do eiusmod tempor" r"CODE
LOW⚡tests/data/cases/preview_long_strings__regression.py589value = some_value if condition else r"Lorem ipsum dolor sit amet, consectetur adipiscing elit sed do eiusmod tempor" r"CODE
LOW⚡tests/data/cases/preview_long_strings__regression.py591some_function_name(argument=r"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod " r"tempor incididCODE
LOW⚡tests/data/cases/preview_long_strings__regression.py591some_function_name(argument=r"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod " r"tempor incididCODE
LOW⚡tests/data/cases/preview_long_strings__regression.py1310 r"Lorem ipsum dolor sit amet, consectetur adipiscing elit sed do eiusmod tempor"CODE
LOW⚡tests/data/cases/preview_long_strings__regression.py1310 r"Lorem ipsum dolor sit amet, consectetur adipiscing elit sed do eiusmod tempor"CODE
LOW⚡tests/data/cases/preview_long_strings__regression.py1316 r"Lorem ipsum dolor sit amet, consectetur adipiscing elit sed do eiusmod tempor"CODE
LOW⚡tests/data/cases/preview_long_strings__regression.py1316 r"Lorem ipsum dolor sit amet, consectetur adipiscing elit sed do eiusmod tempor"CODE
LOW⚡tests/data/cases/preview_long_strings__regression.py1324 r"Lorem ipsum dolor sit amet, consectetur adipiscing elit sed do eiusmod tempor"CODE
LOW⚡tests/data/cases/preview_long_strings__regression.py1324 r"Lorem ipsum dolor sit amet, consectetur adipiscing elit sed do eiusmod tempor"CODE
LOW⚡tests/data/cases/preview_long_strings__regression.py1330 argument=r"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod "CODE
LOW⚡tests/data/cases/preview_long_strings__regression.py1330 argument=r"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod "CODE
LOWtests/data/cases/preview_long_strings__regression.py376print(f"Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam. {[f'{i}' for i in range(10)]}")CODE
LOWtests/data/cases/preview_long_strings__regression.py376print(f"Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam. {[f'{i}' for i in range(10)]}")CODE
LOWtests/data/cases/preview_long_strings__regression.py531 r"Lorem ipsum dolor sit amet, an sed convenire eloquentiam \t"CODE
LOWtests/data/cases/preview_long_strings__regression.py531 r"Lorem ipsum dolor sit amet, an sed convenire eloquentiam \t"CODE
LOWtests/data/cases/preview_long_strings__regression.py563s = f'Lorem Ipsum is simply dummy text of the printing and typesetting industry:\'{my_dict["foo"]}\''CODE
LOWtests/data/cases/preview_long_strings__regression.py1061 "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam."CODE
LOWtests/data/cases/preview_long_strings__regression.py1061 "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam."CODE
LOWtests/data/cases/preview_long_strings__regression.py1242 r"Lorem ipsum dolor sit amet, an sed convenire eloquentiam \t"CODE
LOWtests/data/cases/preview_long_strings__regression.py1242 r"Lorem ipsum dolor sit amet, an sed convenire eloquentiam \t"CODE
LOWtests/data/cases/preview_long_strings__regression.py1280 "Lorem Ipsum is simply dummy text of the printing and typesetting"CODE
LOWtests/data/cases/docstring.py55 Lorem ipsum dolor sit amet.STRING
LOWtests/data/cases/docstring.py55 Lorem ipsum dolor sit amet.STRING
LOWtests/data/cases/docstring.py293 Lorem ipsum dolor sit amet.STRING
LOWtests/data/cases/docstring.py293 Lorem ipsum dolor sit amet.STRING
LOWtests/data/cases/module_docstring_2.py4Lorem ipsum dolor sit amet, consectetur adipiscing elit,STRING
LOWtests/data/cases/module_docstring_2.py4Lorem ipsum dolor sit amet, consectetur adipiscing elit,STRING
LOWtests/data/cases/module_docstring_2.py42Lorem ipsum dolor sit amet, consectetur adipiscing elit,STRING
LOWtests/data/cases/module_docstring_2.py42Lorem ipsum dolor sit amet, consectetur adipiscing elit,STRING
Cross-File Repetition6 hits · 30 pts
SeverityFileLineSnippetContext
HIGHtests/data/cases/module_docstring_4.py0single line module-level docstring should be followed by single newline.STRING
HIGHtests/data/cases/module_docstring_1.py0single line module-level docstring should be followed by single newline.STRING
HIGHtests/data/cases/module_docstring_3.py0single line module-level docstring should be followed by single newline.STRING
HIGHtests/data/cases/composition_no_trailing_comma.py0\ %3d 0 load_fast 1 (x) 2 load_const 1 (1) 4 compare_op 2 (==) 6 load_fast 0 (self) 8 store_attr 0 (x) 10 load_const 0 (STRING
HIGHtests/data/cases/composition.py0\ %3d 0 load_fast 1 (x) 2 load_const 1 (1) 4 compare_op 2 (==) 6 load_fast 0 (self) 8 store_attr 0 (x) 10 load_const 0 (STRING
HIGHtests/data/cases/multiline_strings.py0\ %3d 0 load_fast 1 (x) 2 load_const 1 (1) 4 compare_op 2 (==) 6 load_fast 0 (self) 8 store_attr 0 (x) 10 load_const 0 (STRING
Over-Commented Block27 hits · 24 pts
SeverityFileLineSnippetContext
LOWtests/data/empty_pyproject.toml1# Empty pyproject.toml to use with some tests that depend on Python 3.6 autodiscoveryCOMMENT
LOWtests/data/cases/comments8.py1# The percent-percent comments are Spyder IDE cells.COMMENT
LOWtests/data/cases/fmtonoff.py101COMMENT
LOWtests/data/cases/fmtonoff.py201#nospaceatallCOMMENT
LOWtests/data/cases/fmtonoff.py221# fmt: onCOMMENT
LOWtests/data/cases/fmtonoff.py361 # fmt: offCOMMENT
LOWtests/data/cases/fmtonoff.py481#nospaceatallCOMMENT
LOWtests/data/cases/fmtonoff.py501# fmt: onCOMMENT
LOWtests/data/cases/line_ranges_preserve_outside_prefix.py1# flags: --line-ranges=2-10COMMENT
LOWtests/data/cases/line_ranges_preserve_outside_prefix.py21 # don't format whitespaceCOMMENT
LOWtests/data/cases/line_ranges_preserve_outside_prefix.py41 # don't format whitespaceCOMMENT
LOWtests/data/cases/pyi_overload_groups.py1# flags: --preview --pyiCOMMENT
LOWtests/data/cases/pyi_overload_groups.py461 @overloadCOMMENT
LOWtests/data/cases/jupytext_markdown_fmt.py1# Test that Jupytext markdown comments are preserved before fmt:off/on blocksCOMMENT
LOWtests/data/cases/line_ranges_diff_edge_case.py1# flags: --line-ranges=10-11COMMENT
LOWtests/data/miscellaneous/missing_final_newline.py1# A comment-only file, with no final EOL characterCOMMENT
LOWdocs/conf.py1#COMMENT
LOWdocs/conf.py101# The language for content autogenerated by Sphinx. Refer to documentationCOMMENT
LOWdocs/conf.py141# Add any paths that contain custom static files (such as style sheets) here,COMMENT
LOWsrc/blib2to3/Grammar.txt21decorator: '@' namedexpr_test NEWLINECOMMENT
LOWsrc/blib2to3/Grammar.txt201comp_for: [ASYNC] 'for' exprlist 'in' or_test [comp_iter]COMMENT
LOWsrc/black/ranges.py501 # 2. A single backslash on its own line followed by a comment line.COMMENT
LOWsrc/black/trans.py1681 # f-strings but will have the 'f' prefix removed OR (b) substringsCOMMENT
LOWsrc/black/trans.py2521 # A '.' MUST be followed by an attribute or method name.COMMENT
LOWsrc/black/linegen.py681 # assert isinstance(fstring_start, Leaf)COMMENT
LOWsrc/black/linegen.py2221 # After wrapping, the with_stmt will look like this:COMMENT
LOWsrc/black/linegen.py2241 """Recursively hide optional parens in `with` statements."""COMMENT
Excessive Try-Catch Wrapping23 hits · 24 pts
SeverityFileLineSnippetContext
LOWtests/util.py65 except Exception as ve:CODE
LOWtests/util.py74 except Exception as ve:CODE
LOWtests/util.py128 except Exception as e:CODE
LOWtests/util.py155 except Exception as e:CODE
LOWtests/data/cases/remove_parens.py15 except Exception as e:CODE
LOWtests/data/cases/remove_parens.py73 except Exception as e:CODE
LOWtests/data/cases/pep_654.py25except Exception as e:CODE
LOWtests/data/cases/pep_654.py37except Exception as e:CODE
LOW⚡tests/data/cases/import_line_collapse.py126except Exception:CODE
LOW⚡tests/data/cases/import_line_collapse.py135except Exception:CODE
LOWtests/data/cases/import_line_collapse.py35except Exception:CODE
LOWtests/data/cases/import_line_collapse.py42except Exception:CODE
LOWtests/data/cases/pep_654_style.py25except Exception as e:CODE
LOWtests/data/cases/pep_654_style.py38except Exception as e:CODE
LOWtests/data/cases/pep_654_style.py83except Exception as e:CODE
LOWtests/data/cases/pep_654_style.py95except Exception as e:CODE
LOWtests/data/miscellaneous/python2_detection.py60except Exception as err:CODE
LOWaction/main.py213 except Exception as e:CODE
LOWsrc/blackd/__init__.py213 except Exception as e:CODE
LOWsrc/black/__init__.py962 except Exception as exc:CODE
LOWsrc/black/__init__.py1039 except Exception as exc:CODE
LOWsrc/black/__init__.py1842 except Exception as exc:CODE
LOWsrc/black/__init__.py1852 except Exception as exc:CODE
Modern Structural Boilerplate16 hits · 20 pts
SeverityFileLineSnippetContext
LOWtests/data/cases/comments2.py10__all__ = [CODE
LOWtests/data/cases/comments2.py181__all__ = [STRING
LOW⚡tests/data/cases/import_line_collapse.py4logger = logging.getLogger(__name__)CODE
LOW⚡tests/data/cases/import_line_collapse.py11logger = logging.getLogger(__name__)CODE
LOW⚡tests/data/cases/import_line_collapse.py17logger = logging.getLogger(__name__)CODE
LOW⚡tests/data/cases/import_line_collapse.py24logger = logging.getLogger(__name__)CODE
LOW⚡tests/data/cases/import_line_collapse.py97logger = logging.getLogger(__name__)CODE
LOW⚡tests/data/cases/import_line_collapse.py105logger = logging.getLogger(__name__)CODE
LOW⚡tests/data/cases/import_line_collapse.py112logger = logging.getLogger(__name__)CODE
LOW⚡tests/data/cases/import_line_collapse.py117logger = logging.getLogger(__name__)CODE
LOWscripts/release.py178 def update_version_in_docs(self) -> None:CODE
LOWscripts/diff_shades_gha_helper.py42def set_output(name: str, value: str) -> None:CODE
LOWsrc/blib2to3/pytree.py347 def set_child(self, i: int, child: NL) -> None:CODE
LOWsrc/blib2to3/pytree.py457 def update_sibling_maps(self) -> None:CODE
LOWsrc/blib2to3/pgen2/driver.py16__all__ = ["Driver", "load_grammar"]CODE
LOWsrc/blib2to3/pgen2/tokenize.py65__all__ = [x for x in dir(_token) if x[0] != "_"] + [CODE
Dead Code6 hits · 12 pts
SeverityFileLineSnippetContext
MEDIUMtests/data/cases/pep_572_remove_parens.py45CODE
MEDIUMtests/data/cases/pep_572_remove_parens.py46CODE
MEDIUMtests/data/cases/pep_572_remove_parens.py47CODE
MEDIUMtests/data/cases/pep_572_remove_parens.py115CODE
MEDIUMtests/data/cases/pep_572_remove_parens.py116CODE
MEDIUMtests/data/cases/pep_572_remove_parens.py117CODE
AI Structural Patterns10 hits · 9 pts
SeverityFileLineSnippetContext
LOWtests/data/cases/fmtonoff.py41CODE
LOWtests/data/cases/fmtonoff.py44CODE
LOWtests/data/cases/fmtonoff.py286CODE
LOWtests/data/cases/fmtonoff.py291CODE
LOWtests/data/cases/function.py31CODE
LOWtests/data/cases/function.py34CODE
LOWtests/data/cases/function.py146CODE
LOWtests/data/cases/function.py151CODE
LOWsrc/blib2to3/pytree.py495CODE
LOWsrc/blackd/client.py10CODE
AI Slop Vocabulary4 hits · 5 pts
SeverityFileLineSnippetContext
MEDIUMtests/test_black.py3945 We don't (yet) formally expose an API (see issue #779), but we should endeavor toSTRING
LOWscripts/fuzz.py60 # (if you want only bounded fuzzing, just use `pytest fuzz.py`)COMMENT
LOWsrc/blib2to3/pgen2/pgen.py374 # Can't just return self.arcs == other.arcs, because thatCOMMENT
LOWsrc/black/strings.py295 # Do not introduce or remove backslashes in raw strings, just use double quoteCOMMENT
Redundant / Tautological Comments3 hits · 4 pts
SeverityFileLineSnippetContext
LOWsrc/black/lines.py868 # Check if the if_stmt's next sibling is a same-name decorated function.COMMENT
LOWsrc/black/lines.py1660 # Check if the opening bracket (last leaf of head) has comments that would mergeCOMMENT
LOWsrc/black/trans.py1615 # Check if StringMerger registered any custom splits.COMMENT
Structural Annotation Overuse2 hits · 3 pts
SeverityFileLineSnippetContext
LOWtests/data/cases/line_ranges_basic.py20 #NOTE: The following indentation is incorrect:COMMENT
LOWtests/data/cases/line_ranges_basic.py86 #NOTE: The following indentation is incorrect:COMMENT
Overly Generic Function Names2 hits · 2 pts
SeverityFileLineSnippetContext
LOW…ases/preview_parenthesize_expressions_with_comments.py28 def my_method(self):CODE
LOW…ases/preview_parenthesize_expressions_with_comments.py68 def my_method(self):CODE