The uncompromising Python code formatter
This report presents the forensic synthetic code analysis of psf/black, a Python project with 41,730 GitHub stars. SynthScan v2.0 examined 93,807 lines of code across 422 source files, recording 837 pattern matches distributed across 14 syntactic categories. The overall adjusted score of 9.0 places this repository in the Low AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 837 distinct pattern matches across 14 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. 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 diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_ranges.py | 16 | def test_parse_line_ranges_valid( | CODE |
| LOW | tests/test_ranges.py | 31 | def test_parse_line_ranges_invalid(lines_str: list[str]) -> None: | CODE |
| LOW | tests/optional.py | 107 | def pytest_collection_modifyitems(config: "Config", items: "list[Node]") -> None: | CODE |
| LOW | tests/util.py | 341 | def read_jupyter_notebook_from_file(file_name: Path) -> str: | CODE |
| LOW | tests/test_docs.py | 59 | def test_feature_lists_are_up_to_date() -> None: | CODE |
| LOW⚡ | tests/test_ipynb.py | 66 | def test_trailing_semicolon_with_comment() -> None: | CODE |
| LOW⚡ | tests/test_ipynb.py | 73 | def test_trailing_semicolon_with_comment_on_next_line() -> None: | CODE |
| LOW⚡ | tests/test_ipynb.py | 79 | def test_trailing_semicolon_indented() -> None: | CODE |
| LOW⚡ | tests/test_ipynb.py | 85 | def test_trailing_semicolon_noop() -> None: | CODE |
| LOW | tests/test_ipynb.py | 48 | def test_create_token_uses_requested_length(n_chars: int) -> None: | CODE |
| LOW | tests/test_ipynb.py | 52 | def test_unmask_cell_raises_when_token_is_not_unique() -> None: | CODE |
| LOW | tests/test_ipynb.py | 173 | def test_input_already_contains_transformed_magic() -> None: | CODE |
| LOW | tests/test_ipynb.py | 185 | def test_cell_magic_with_magic() -> None: | CODE |
| LOW | tests/test_ipynb.py | 203 | def test_cell_magic_with_empty_lines(src: str, expected: str) -> None: | CODE |
| LOW | tests/test_ipynb.py | 231 | def test_cell_magic_with_custom_python_magic( | CODE |
| LOW | tests/test_ipynb.py | 252 | def test_cell_magic_with_custom_python_magic_after_spaces_and_comments_noop( | CODE |
| LOW | tests/test_ipynb.py | 266 | def test_cell_magic_with_magic_noop() -> None: | CODE |
| LOW | tests/test_ipynb.py | 291 | def test_cell_magic_with_invalid_body() -> None: | CODE |
| LOW | tests/test_ipynb.py | 303 | def test_entire_notebook_empty_metadata() -> None: | CODE |
| LOW | tests/test_ipynb.py | 338 | def test_entire_notebook_trailing_newline() -> None: | CODE |
| LOW | tests/test_ipynb.py | 385 | def test_entire_notebook_no_trailing_newline() -> None: | CODE |
| LOW | tests/test_ipynb.py | 432 | def test_entire_notebook_without_changes() -> None: | CODE |
| LOW | tests/test_ipynb.py | 450 | def test_unparseable_notebook() -> None: | CODE |
| LOW | tests/test_ipynb.py | 457 | def test_ipynb_diff_with_change() -> None: | CODE |
| LOW | tests/test_ipynb.py | 470 | def test_ipynb_diff_with_no_change() -> None: | CODE |
| LOW | tests/test_ipynb.py | 483 | def test_cache_isnt_written_if_no_jupyter_deps_single( | CODE |
| LOW | tests/test_ipynb.py | 504 | def test_cache_isnt_written_if_no_jupyter_deps_dir( | CODE |
| LOW | tests/test_ipynb.py | 559 | def test_unable_to_replace_magics(monkeypatch: MonkeyPatch) -> None: | CODE |
| LOW | tests/test_concurrency_manager_shutdown.py | 26 | def test_manager_shutdown_called_for_diff(monkeypatch: Any, tmp_path: Path) -> None: | CODE |
| LOW | tests/test_concurrency_manager_shutdown.py | 35 | def fake_format_file_in_place( | CODE |
| LOW⚡ | tests/test_black.py | 1453 | def test_required_version_matches_version(self) -> None: | CODE |
| LOW⚡ | tests/test_black.py | 1460 | def test_required_version_matches_partial_version(self) -> None: | CODE |
| LOW⚡ | tests/test_black.py | 1467 | def test_required_version_does_not_match_on_minor_version(self) -> None: | CODE |
| LOW⚡ | tests/test_black.py | 1474 | def test_required_version_does_not_match_version(self) -> None: | CODE |
| LOW⚡ | tests/test_black.py | 1482 | def test_preserves_line_endings(self) -> None: | CODE |
| LOW⚡ | tests/test_black.py | 3214 | def test_assert_equivalent_basic(self) -> None: | CODE |
| LOW⚡ | tests/test_black.py | 3219 | def test_assert_equivalent_del(self) -> None: | CODE |
| LOW⚡ | tests/test_black.py | 3222 | def test_assert_equivalent_strings(self) -> None: | CODE |
| LOW | tests/test_black.py | 215 | def test_piping_diff_with_color(self) -> None: | CODE |
| LOW | tests/test_black.py | 236 | def test_piping_diff_with_color_respects_no_color(self) -> None: | CODE |
| LOW | tests/test_black.py | 337 | def test_expression_diff_with_color(self) -> None: | CODE |
| LOW | tests/test_black.py | 357 | def test_detect_pos_only_arguments(self) -> None: | CODE |
| LOW | tests/test_black.py | 365 | def test_detect_debug_f_strings(self) -> None: | CODE |
| LOW | tests/test_black.py | 395 | def test_skip_source_first_line(self) -> None: | CODE |
| LOW | tests/test_black.py | 408 | def test_skip_source_first_line_when_mixing_newlines(self) -> None: | CODE |
| LOW | tests/test_black.py | 418 | def test_skip_magic_trailing_comma(self) -> None: | CODE |
| LOW | tests/test_black.py | 470 | def test_tab_comment_indentation(self) -> None: | CODE |
| LOW | tests/test_black.py | 808 | def test_report_respects_no_color(self) -> None: | CODE |
| LOW | tests/test_black.py | 831 | def test_get_features_used_decorator(self) -> None: | CODE |
| LOW | tests/test_black.py | 954 | def test_get_features_used_for_future_flags(self) -> None: | CODE |
| LOW | tests/test_black.py | 1027 | def test_format_file_contents(self) -> None: | CODE |
| LOW | tests/test_black.py | 1115 | def test_works_in_mono_process_only_environment(self) -> None: | CODE |
| LOW | tests/test_black.py | 1125 | def test_invalid_black_num_workers(self) -> None: | CODE |
| LOW | tests/test_black.py | 1145 | def test_check_diff_use_together(self) -> None: | CODE |
| LOW | tests/test_black.py | 1173 | def test_single_file_force_pyi(self) -> None: | CODE |
| LOW | tests/test_black.py | 1191 | def test_multi_file_force_pyi(self) -> None: | CODE |
| LOW | tests/test_black.py | 1273 | def test_reformat_one_with_stdin(self) -> None: | CODE |
| LOW | tests/test_black.py | 1291 | def test_reformat_one_with_stdin_filename(self) -> None: | CODE |
| LOW | tests/test_black.py | 1314 | def test_reformat_one_with_stdin_filename_pyi(self) -> None: | CODE |
| LOW | tests/test_black.py | 1340 | def test_reformat_one_with_stdin_filename_ipynb(self) -> None: | CODE |
| 338 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/optional.py | 30 | CODE | |
| LOW | tests/optional.py | 31 | CODE | |
| LOW | tests/optional.py | 32 | CODE | |
| LOW | tests/optional.py | 33 | CODE | |
| LOW | tests/test_concurrency_manager_shutdown.py | 1 | CODE | |
| LOW | tests/data/cases/preview_comments7.py | 2 | CODE | |
| LOW | tests/data/cases/preview_comments7.py | 2 | CODE | |
| LOW | tests/data/cases/preview_comments7.py | 2 | CODE | |
| LOW | tests/data/cases/preview_comments7.py | 2 | CODE | |
| LOW | tests/data/cases/preview_comments7.py | 2 | CODE | |
| LOW | tests/data/cases/preview_comments7.py | 2 | CODE | |
| LOW | tests/data/cases/preview_comments7.py | 15 | CODE | |
| LOW | tests/data/cases/preview_comments7.py | 15 | CODE | |
| LOW | tests/data/cases/preview_comments7.py | 15 | CODE | |
| LOW | tests/data/cases/preview_comments7.py | 15 | CODE | |
| LOW | tests/data/cases/preview_comments7.py | 15 | CODE | |
| LOW | tests/data/cases/preview_comments7.py | 15 | CODE | |
| LOW | tests/data/cases/preview_comments7.py | 26 | CODE | |
| LOW | tests/data/cases/preview_comments7.py | 29 | CODE | |
| LOW | tests/data/cases/preview_comments7.py | 149 | CODE | |
| LOW | tests/data/cases/preview_comments7.py | 149 | CODE | |
| LOW | tests/data/cases/preview_comments7.py | 149 | CODE | |
| LOW | tests/data/cases/preview_comments7.py | 149 | CODE | |
| LOW | tests/data/cases/preview_comments7.py | 149 | CODE | |
| LOW | tests/data/cases/preview_comments7.py | 149 | CODE | |
| LOW | tests/data/cases/preview_comments7.py | 162 | CODE | |
| LOW | tests/data/cases/preview_comments7.py | 162 | CODE | |
| LOW | tests/data/cases/preview_comments7.py | 162 | CODE | |
| LOW | tests/data/cases/preview_comments7.py | 162 | CODE | |
| LOW | tests/data/cases/preview_comments7.py | 162 | CODE | |
| LOW | tests/data/cases/preview_comments7.py | 162 | CODE | |
| LOW | tests/data/cases/preview_comments7.py | 173 | CODE | |
| LOW | tests/data/cases/preview_comments7.py | 176 | CODE | |
| LOW | tests/data/cases/line_ranges_imports.py | 7 | CODE | |
| LOW | tests/data/cases/line_ranges_imports.py | 8 | CODE | |
| LOW | tests/data/cases/line_ranges_imports.py | 9 | CODE | |
| LOW | tests/data/cases/line_ranges_fmt_off.py | 6 | CODE | |
| LOW | tests/data/cases/line_ranges_fmt_off.py | 32 | CODE | |
| LOW | tests/data/cases/fmtonoff.py | 3 | CODE | |
| LOW | tests/data/cases/fmtonoff.py | 5 | CODE | |
| LOW | tests/data/cases/fmtonoff.py | 5 | CODE | |
| LOW | tests/data/cases/fmtonoff.py | 5 | CODE | |
| LOW | tests/data/cases/fmtonoff.py | 10 | CODE | |
| LOW | tests/data/cases/fmtonoff.py | 10 | CODE | |
| LOW | tests/data/cases/fmtonoff.py | 10 | CODE | |
| LOW | tests/data/cases/fmtonoff.py | 248 | CODE | |
| LOW | tests/data/cases/fmtonoff.py | 250 | CODE | |
| LOW | tests/data/cases/fmtonoff.py | 250 | CODE | |
| LOW | tests/data/cases/fmtonoff.py | 250 | CODE | |
| LOW | tests/data/cases/fmtonoff.py | 254 | CODE | |
| LOW | tests/data/cases/fmtonoff.py | 254 | CODE | |
| LOW | tests/data/cases/fmtonoff.py | 254 | CODE | |
| LOW | tests/data/cases/comments2.py | 1 | CODE | |
| LOW | tests/data/cases/comments2.py | 4 | CODE | |
| LOW | tests/data/cases/comments2.py | 172 | CODE | |
| LOW | tests/data/cases/comments2.py | 175 | CODE | |
| LOW | tests/data/cases/function2.py | 28 | CODE | |
| LOW | tests/data/cases/function2.py | 91 | CODE | |
| LOW | tests/data/cases/function2.py | 33 | CODE | |
| LOW | tests/data/cases/function2.py | 98 | CODE | |
| 165 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_black.py | 1698 | CODE | |
| LOW | tests/test_black.py | 2573 | CODE | |
| LOW | tests/test_blackd.py | 212 | CODE | |
| LOW | tests/data/cases/composition_no_trailing_comma.py | 2 | CODE | |
| LOW | tests/data/cases/composition_no_trailing_comma.py | 188 | CODE | |
| LOW | tests/data/cases/empty_lines.py | 5 | CODE | |
| LOW | tests/data/cases/empty_lines.py | 102 | CODE | |
| LOW | tests/data/cases/composition.py | 2 | CODE | |
| LOW | action/main.py | 102 | CODE | |
| LOW | src/blib2to3/pytree.py | 1027 | CODE | |
| LOW | src/blib2to3/pytree.py | 756 | CODE | |
| LOW | src/blib2to3/pytree.py | 876 | CODE | |
| LOW | src/blib2to3/pytree.py | 887 | CODE | |
| LOW | src/blib2to3/pytree.py | 932 | CODE | |
| LOW | src/blib2to3/pytree.py | 978 | CODE | |
| LOW | src/blib2to3/pgen2/pgen.py | 132 | CODE | |
| LOW | src/blib2to3/pgen2/pgen.py | 189 | CODE | |
| LOW | src/blib2to3/pgen2/pgen.py | 228 | CODE | |
| LOW | src/blib2to3/pgen2/conv.py | 85 | CODE | |
| LOW | src/blib2to3/pgen2/parse.py | 274 | CODE | |
| LOW | src/blib2to3/pgen2/parse.py | 320 | CODE | |
| LOW | src/blib2to3/pgen2/driver.py | 209 | CODE | |
| LOW | src/blib2to3/pgen2/tokenize.py | 146 | CODE | |
| LOW | src/blackd/client.py | 69 | CODE | |
| LOW | src/blackd/__init__.py | 297 | CODE | |
| LOW | src/black/files.py | 204 | CODE | |
| LOW | src/black/files.py | 329 | CODE | |
| LOW | src/black/parsing.py | 188 | CODE | |
| LOW | src/black/handle_ipynb_magics.py | 443 | CODE | |
| LOW | src/black/handle_ipynb_magics.py | 476 | CODE | |
| LOW | src/black/concurrency.py | 157 | CODE | |
| LOW | src/black/__init__.py | 554 | CODE | |
| LOW | src/black/__init__.py | 779 | CODE | |
| LOW | src/black/__init__.py | 910 | CODE | |
| LOW | src/black/__init__.py | 1039 | CODE | |
| LOW | src/black/__init__.py | 1380 | CODE | |
| LOW | src/black/__init__.py | 1589 | CODE | |
| LOW | src/black/__init__.py | 1593 | CODE | |
| LOW | src/black/brackets.py | 394 | CODE | |
| LOW | src/black/lines.py | 1318 | CODE | |
| LOW | src/black/lines.py | 1420 | CODE | |
| LOW | src/black/lines.py | 1456 | CODE | |
| LOW | src/black/lines.py | 1475 | CODE | |
| LOW | src/black/lines.py | 266 | CODE | |
| LOW | src/black/lines.py | 302 | CODE | |
| LOW | src/black/lines.py | 612 | CODE | |
| LOW | src/black/lines.py | 974 | CODE | |
| LOW | src/black/lines.py | 1135 | CODE | |
| LOW | src/black/ranges.py | 355 | CODE | |
| LOW | src/black/ranges.py | 272 | CODE | |
| LOW | src/black/trans.py | 1335 | CODE | |
| LOW | src/black/trans.py | 425 | CODE | |
| LOW | src/black/trans.py | 761 | CODE | |
| LOW | src/black/trans.py | 1180 | CODE | |
| LOW | src/black/trans.py | 1518 | CODE | |
| LOW | src/black/trans.py | 2004 | CODE | |
| LOW | src/black/trans.py | 2100 | CODE | |
| LOW | src/black/trans.py | 2135 | CODE | |
| LOW | src/black/trans.py | 2182 | CODE | |
| LOW | src/black/trans.py | 2246 | CODE | |
| 20 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/test_ipynb.py | 311 | ' "execution_count": null,\n' | CODE |
| HIGH | tests/test_ipynb.py | 324 | ' "execution_count": null,\n' | CODE |
| HIGH | tests/test_ipynb.py | 346 | ' "execution_count": null,\n' | CODE |
| HIGH | tests/test_ipynb.py | 359 | ' "execution_count": null,\n' | CODE |
| HIGH | tests/test_ipynb.py | 393 | ' "execution_count": null,\n' | CODE |
| HIGH | tests/test_ipynb.py | 406 | ' "execution_count": null,\n' | CODE |
| HIGH | tests/data/cases/preview_long_strings__regression.py | 128 | "xx {xxxxxxxxxxx}/xxxxxxxxxxx.xxx xxxx.xxx && xxxxxx -x " | CODE |
| HIGH | tests/data/cases/preview_long_strings__regression.py | 140 | "xx {xxxxxxxxxxx}/xxxxxxxxxxx.xxx xxxx.xxx && xxxxxx -x " | CODE |
| HIGH | tests/data/cases/preview_long_strings__regression.py | 727 | "xx {xxxxxxxxxxx}/xxxxxxxxxxx.xxx xxxx.xxx && xxxxxx -x " | CODE |
| HIGH | tests/data/cases/preview_long_strings__regression.py | 738 | "xx {xxxxxxxxxxx}/xxxxxxxxxxx.xxx xxxx.xxx && xxxxxx -x " | CODE |
| HIGH | src/blib2to3/pgen2/parse.py | 289 | self.push(t, itsdfa, newstate, context) | CODE |
| HIGH | src/black/__init__.py | 502 | " (which can silenced by 2>/dev/null)." | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/data/cases/module_docstring_4.py | 0 | single line module-level docstring should be followed by single newline. | STRING |
| HIGH | tests/data/cases/module_docstring_1.py | 0 | single line module-level docstring should be followed by single newline. | STRING |
| HIGH | tests/data/cases/module_docstring_3.py | 0 | single line module-level docstring should be followed by single newline. | STRING |
| HIGH | tests/data/cases/composition_no_trailing_comma.py | 0 | \ %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 |
| HIGH | tests/data/cases/composition.py | 0 | \ %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 |
| HIGH | tests/data/cases/multiline_strings.py | 0 | \ %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 |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/data/empty_pyproject.toml | 1 | # Empty pyproject.toml to use with some tests that depend on Python 3.6 autodiscovery | COMMENT |
| LOW | tests/data/cases/comments8.py | 1 | # The percent-percent comments are Spyder IDE cells. | COMMENT |
| LOW | tests/data/cases/fmtonoff.py | 101 | COMMENT | |
| LOW | tests/data/cases/fmtonoff.py | 201 | #nospaceatall | COMMENT |
| LOW | tests/data/cases/fmtonoff.py | 221 | # fmt: on | COMMENT |
| LOW | tests/data/cases/fmtonoff.py | 361 | # fmt: off | COMMENT |
| LOW | tests/data/cases/fmtonoff.py | 481 | #nospaceatall | COMMENT |
| LOW | tests/data/cases/fmtonoff.py | 501 | # fmt: on | COMMENT |
| LOW | tests/data/cases/pyi_overload_groups.py | 1 | # flags: --preview --pyi | COMMENT |
| LOW | tests/data/cases/pyi_overload_groups.py | 461 | @overload | COMMENT |
| LOW | tests/data/cases/jupytext_markdown_fmt.py | 1 | # Test that Jupytext markdown comments are preserved before fmt:off/on blocks | COMMENT |
| LOW | tests/data/cases/line_ranges_diff_edge_case.py | 1 | # flags: --line-ranges=10-11 | COMMENT |
| LOW | tests/data/miscellaneous/missing_final_newline.py | 1 | # A comment-only file, with no final EOL character | COMMENT |
| LOW | docs/conf.py | 1 | # | COMMENT |
| LOW | docs/conf.py | 101 | # The language for content autogenerated by Sphinx. Refer to documentation | COMMENT |
| LOW | docs/conf.py | 141 | # Add any paths that contain custom static files (such as style sheets) here, | COMMENT |
| LOW | src/blib2to3/Grammar.txt | 21 | decorator: '@' namedexpr_test NEWLINE | COMMENT |
| LOW | src/blib2to3/Grammar.txt | 201 | comp_for: [ASYNC] 'for' exprlist 'in' or_test [comp_iter] | COMMENT |
| LOW | src/black/lines.py | 301 | COMMENT | |
| LOW | src/black/lines.py | 1541 | COMMENT | |
| LOW | src/black/ranges.py | 441 | # This also means the indentation will be changed on the unchanged lines, and | COMMENT |
| LOW | src/black/trans.py | 1661 | # HACK: The following 'if' statement is a hack to fix the custom | COMMENT |
| LOW | src/black/linegen.py | 621 | # causing breakages. skip normalization when nested quotes exist | COMMENT |
| LOW | src/black/linegen.py | 641 | COMMENT | |
| LOW | src/black/linegen.py | 1801 | break | COMMENT |
| LOW | src/black/linegen.py | 1821 | ) | COMMENT |
| LOW | src/black/comments.py | 741 | grandparent is not None | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/util.py | 65 | except Exception as ve: | CODE |
| LOW | tests/util.py | 74 | except Exception as ve: | CODE |
| LOW | tests/util.py | 128 | except Exception as e: | CODE |
| LOW | tests/util.py | 155 | except Exception as e: | CODE |
| LOW | tests/data/cases/remove_parens.py | 15 | except Exception as e: | CODE |
| LOW | tests/data/cases/remove_parens.py | 73 | except Exception as e: | CODE |
| LOW | tests/data/cases/pep_654.py | 25 | except Exception as e: | CODE |
| LOW | tests/data/cases/pep_654.py | 37 | except Exception as e: | CODE |
| LOW⚡ | tests/data/cases/import_line_collapse.py | 126 | except Exception: | CODE |
| LOW⚡ | tests/data/cases/import_line_collapse.py | 135 | except Exception: | CODE |
| LOW | tests/data/cases/import_line_collapse.py | 35 | except Exception: | CODE |
| LOW | tests/data/cases/import_line_collapse.py | 42 | except Exception: | CODE |
| LOW | tests/data/cases/pep_654_style.py | 25 | except Exception as e: | CODE |
| LOW | tests/data/cases/pep_654_style.py | 38 | except Exception as e: | CODE |
| LOW | tests/data/cases/pep_654_style.py | 83 | except Exception as e: | CODE |
| LOW | tests/data/cases/pep_654_style.py | 95 | except Exception as e: | CODE |
| LOW | tests/data/miscellaneous/python2_detection.py | 60 | except Exception as err: | CODE |
| LOW | action/main.py | 196 | except Exception as e: | CODE |
| LOW | src/blackd/__init__.py | 213 | except Exception as e: | CODE |
| LOW | src/black/__init__.py | 901 | except Exception as exc: | CODE |
| LOW | src/black/__init__.py | 965 | except Exception as exc: | CODE |
| LOW | src/black/__init__.py | 1653 | except Exception as exc: | CODE |
| LOW | src/black/__init__.py | 1663 | except Exception as exc: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/data/cases/docstring_no_string_normalization.py | 40 | Lorem ipsum dolor sit amet. | STRING |
| LOW | tests/data/cases/docstring_no_string_normalization.py | 40 | Lorem ipsum dolor sit amet. | STRING |
| LOW | tests/data/cases/docstring_no_string_normalization.py | 167 | Lorem ipsum dolor sit amet. | STRING |
| LOW | tests/data/cases/docstring_no_string_normalization.py | 167 | Lorem ipsum dolor sit amet. | STRING |
| LOW | tests/data/cases/preview_long_dict_values.py | 25 | r"Lorem ipsum dolor sit amet, an sed convenire eloquentiam \t" | CODE |
| LOW | tests/data/cases/preview_long_dict_values.py | 25 | r"Lorem ipsum dolor sit amet, an sed convenire eloquentiam \t" | CODE |
| LOW | tests/data/cases/preview_long_dict_values.py | 172 | r"Lorem ipsum dolor sit amet, an sed convenire eloquentiam \t" | CODE |
| LOW | tests/data/cases/preview_long_dict_values.py | 172 | r"Lorem ipsum dolor sit amet, an sed convenire eloquentiam \t" | CODE |
| LOW | tests/data/cases/preview_long_strings__regression.py | 376 | print(f"Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam. {[f'{i}' for i in range(10)]}") | CODE |
| LOW | tests/data/cases/preview_long_strings__regression.py | 376 | print(f"Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam. {[f'{i}' for i in range(10)]}") | CODE |
| LOW | tests/data/cases/preview_long_strings__regression.py | 531 | r"Lorem ipsum dolor sit amet, an sed convenire eloquentiam \t" | CODE |
| LOW | tests/data/cases/preview_long_strings__regression.py | 531 | r"Lorem ipsum dolor sit amet, an sed convenire eloquentiam \t" | CODE |
| LOW | tests/data/cases/preview_long_strings__regression.py | 563 | s = f'Lorem Ipsum is simply dummy text of the printing and typesetting industry:\'{my_dict["foo"]}\'' | CODE |
| LOW | tests/data/cases/preview_long_strings__regression.py | 1041 | "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam." | CODE |
| LOW | tests/data/cases/preview_long_strings__regression.py | 1041 | "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam." | CODE |
| LOW | tests/data/cases/preview_long_strings__regression.py | 1222 | r"Lorem ipsum dolor sit amet, an sed convenire eloquentiam \t" | CODE |
| LOW | tests/data/cases/preview_long_strings__regression.py | 1222 | r"Lorem ipsum dolor sit amet, an sed convenire eloquentiam \t" | CODE |
| LOW | tests/data/cases/preview_long_strings__regression.py | 1260 | "Lorem Ipsum is simply dummy text of the printing and typesetting" | CODE |
| LOW | tests/data/cases/docstring.py | 49 | Lorem ipsum dolor sit amet. | STRING |
| LOW | tests/data/cases/docstring.py | 49 | Lorem ipsum dolor sit amet. | STRING |
| LOW | tests/data/cases/docstring.py | 281 | Lorem ipsum dolor sit amet. | STRING |
| LOW | tests/data/cases/docstring.py | 281 | Lorem ipsum dolor sit amet. | STRING |
| LOW | tests/data/cases/module_docstring_2.py | 4 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, | STRING |
| LOW | tests/data/cases/module_docstring_2.py | 4 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, | STRING |
| LOW | tests/data/cases/module_docstring_2.py | 42 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, | STRING |
| LOW | tests/data/cases/module_docstring_2.py | 42 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/data/cases/comments2.py | 10 | __all__ = [ | CODE |
| LOW | tests/data/cases/comments2.py | 181 | __all__ = [ | STRING |
| LOW⚡ | tests/data/cases/import_line_collapse.py | 4 | logger = logging.getLogger(__name__) | CODE |
| LOW⚡ | tests/data/cases/import_line_collapse.py | 11 | logger = logging.getLogger(__name__) | CODE |
| LOW⚡ | tests/data/cases/import_line_collapse.py | 17 | logger = logging.getLogger(__name__) | CODE |
| LOW⚡ | tests/data/cases/import_line_collapse.py | 24 | logger = logging.getLogger(__name__) | CODE |
| LOW⚡ | tests/data/cases/import_line_collapse.py | 97 | logger = logging.getLogger(__name__) | CODE |
| LOW⚡ | tests/data/cases/import_line_collapse.py | 105 | logger = logging.getLogger(__name__) | CODE |
| LOW⚡ | tests/data/cases/import_line_collapse.py | 112 | logger = logging.getLogger(__name__) | CODE |
| LOW⚡ | tests/data/cases/import_line_collapse.py | 117 | logger = logging.getLogger(__name__) | CODE |
| LOW | scripts/release.py | 189 | def update_version_in_docs(self) -> None: | CODE |
| LOW | scripts/diff_shades_gha_helper.py | 44 | def set_output(name: str, value: str) -> None: | CODE |
| LOW | src/blib2to3/pytree.py | 328 | def set_child(self, i: int, child: NL) -> None: | CODE |
| LOW | src/blib2to3/pytree.py | 438 | def update_sibling_maps(self) -> None: | CODE |
| LOW | src/blib2to3/pgen2/driver.py | 16 | __all__ = ["Driver", "load_grammar"] | CODE |
| LOW | src/blib2to3/pgen2/tokenize.py | 65 | __all__ = [x for x in dir(_token) if x[0] != "_"] + [ | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/data/cases/pep_572_remove_parens.py | 45 | CODE | |
| MEDIUM | tests/data/cases/pep_572_remove_parens.py | 46 | CODE | |
| MEDIUM | tests/data/cases/pep_572_remove_parens.py | 47 | CODE | |
| MEDIUM | tests/data/cases/pep_572_remove_parens.py | 115 | CODE | |
| MEDIUM | tests/data/cases/pep_572_remove_parens.py | 116 | CODE | |
| MEDIUM | tests/data/cases/pep_572_remove_parens.py | 117 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/data/cases/fmtonoff.py | 41 | CODE | |
| LOW | tests/data/cases/fmtonoff.py | 44 | CODE | |
| LOW | tests/data/cases/fmtonoff.py | 286 | CODE | |
| LOW | tests/data/cases/fmtonoff.py | 291 | CODE | |
| LOW | tests/data/cases/function.py | 31 | CODE | |
| LOW | tests/data/cases/function.py | 34 | CODE | |
| LOW | tests/data/cases/function.py | 146 | CODE | |
| LOW | tests/data/cases/function.py | 151 | CODE | |
| LOW | src/blackd/client.py | 10 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/test_black.py | 3165 | We don't (yet) formally expose an API (see issue #779), but we should endeavor to | STRING |
| LOW | scripts/fuzz.py | 60 | # (if you want only bounded fuzzing, just use `pytest fuzz.py`) | COMMENT |
| LOW | src/blib2to3/pgen2/pgen.py | 374 | # Can't just return self.arcs == other.arcs, because that | COMMENT |
| LOW | src/black/strings.py | 273 | # Do not introduce or remove backslashes in raw strings, just use double quote | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/black/lines.py | 823 | # Check if the if_stmt's next sibling is a same-name decorated function. | COMMENT |
| LOW | src/black/lines.py | 1490 | # Check if the opening bracket (last leaf of head) has comments that would merge | COMMENT |
| LOW | src/black/trans.py | 1597 | # Check if StringMerger registered any custom splits. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/data/cases/line_ranges_basic.py | 20 | #NOTE: The following indentation is incorrect: | COMMENT |
| LOW | tests/data/cases/line_ranges_basic.py | 86 | #NOTE: The following indentation is incorrect: | COMMENT |