Statistical data visualization in Python
This report presents the forensic synthetic code analysis of mwaskom/seaborn, a Python project with 13,956 GitHub stars. SynthScan v2.0 examined 55,765 lines of code across 166 source files, recording 735 pattern matches distributed across 12 syntactic categories. The overall adjusted score of 15.2 places this repository in the Moderate 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 735 distinct pattern matches across 12 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 | seaborn/matrix.py | 534 | def _calculate_linkage_fastcluster(self): | CODE |
| LOW | seaborn/matrix.py | 919 | def color_list_to_matrix_and_cmap(colors, ind, axis=0): | CODE |
| LOW | seaborn/_base.py | 694 | def _assign_variables_wideform(self, data=None, **kwargs): | CODE |
| LOW | seaborn/categorical.py | 187 | def _palette_without_hue_backcompat(self, palette, hue_order): | CODE |
| LOW | seaborn/categorical.py | 3358 | def first_non_overlapping_candidate(self, candidates, neighbors): | CODE |
| LOW | seaborn/widgets.py | 47 | def choose_colorbrewer_palette(data_type, as_cmap=False): | CODE |
| LOW | seaborn/widgets.py | 295 | def choose_light_palette_husl(h=(0, 359), | CODE |
| LOW | seaborn/distributions.py | 298 | def _compute_univariate_density( | CODE |
| LOW | seaborn/distributions.py | 376 | def plot_univariate_histogram( | CODE |
| LOW | seaborn/utils.py | 673 | def locator_to_legend_entries(locator, limits, dtype): | CODE |
| LOW | seaborn/_statistics.py | 98 | def _define_support_univariate(self, x, weights): | CODE |
| LOW | seaborn/_statistics.py | 107 | def _define_support_bivariate(self, x1, x2, weights): | CODE |
| LOW | seaborn/_compat.py | 75 | def groupby_apply_include_groups(val): | CODE |
| LOW | seaborn/_core/subplots.py | 46 | def _check_dimension_uniqueness( | CODE |
| LOW | seaborn/_core/subplots.py | 78 | def _determine_grid_dimensions( | CODE |
| LOW | seaborn/_core/properties.py | 571 | def _standardize_color_sequence(self, colors: ArrayLike) -> ArrayLike: | CODE |
| LOW | seaborn/_core/scales.py | 91 | def set_default_locators_and_formatters(self, axis): | CODE |
| LOW | seaborn/_core/scales.py | 284 | def set_default_locators_and_formatters(self, axis): | CODE |
| LOW | seaborn/_core/scales.py | 1003 | def _make_identity_transforms() -> TransFuncs: | CODE |
| LOW | seaborn/_marks/area.py | 53 | def _standardize_coordinate_parameters(self, data, orient): | CODE |
| LOW | seaborn/_marks/area.py | 115 | def _standardize_coordinate_parameters(self, data, orient): | CODE |
| LOW | seaborn/_marks/area.py | 162 | def _standardize_coordinate_parameters(self, data, orient): | CODE |
| LOW | seaborn/_stats/density.py | 99 | def _check_var_list_or_boolean(self, param: str, grouping_vars: Any) -> None: | CODE |
| LOW | seaborn/external/appdirs.py | 132 | def _get_win_folder_from_registry(csidl_name): | STRING |
| LOW | seaborn/external/appdirs.py | 180 | def _get_win_folder_with_ctypes(csidl_name): | STRING |
| LOW | seaborn/external/docscrape.py | 110 | def read_to_next_unindented_line(self): | CODE |
| LOW | tests/test_palettes.py | 120 | def test_terrible_palette_name(self): | CODE |
| LOW | tests/test_palettes.py | 138 | def test_palette_is_list_of_tuples(self): | CODE |
| LOW | tests/test_palettes.py | 317 | def test_cubehelix_against_matplotlib(self): | CODE |
| LOW | tests/test_palettes.py | 413 | def test_preserved_palette_length(self): | CODE |
| LOW | tests/test_palettes.py | 426 | def test_colormap_display_patch(self): | CODE |
| LOW | tests/test_utils.py | 156 | def test_despine_specific_axes(self): | CODE |
| LOW | tests/test_utils.py | 186 | def test_despine_side_specific_offset(self): | CODE |
| LOW | tests/test_utils.py | 199 | def test_despine_with_offset_specific_axes(self): | CODE |
| LOW | tests/test_utils.py | 224 | def test_despine_trim_inverted(self): | CODE |
| LOW | tests/test_utils.py | 236 | def test_despine_trim_noticks(self): | CODE |
| LOW | tests/test_utils.py | 244 | def test_despine_trim_categorical(self): | CODE |
| LOW | tests/test_utils.py | 312 | def test_locator_to_legend_entries(): | CODE |
| LOW | tests/test_utils.py | 343 | def test_move_legend_matplotlib_objects(): | CODE |
| LOW | tests/test_utils.py | 392 | def test_move_legend_grid_object(long_df): | CODE |
| LOW | tests/test_utils.py | 420 | def test_move_legend_input_checks(): | CODE |
| LOW | tests/test_utils.py | 433 | def test_move_legend_with_labels(long_df): | CODE |
| LOW | tests/test_utils.py | 460 | def check_load_cached_dataset(name): | CODE |
| LOW⚡ | tests/test_utils.py | 490 | def test_load_dataset_string_error(): | CODE |
| LOW⚡ | tests/test_utils.py | 498 | def test_load_dataset_passed_data_error(): | CODE |
| LOW⚡ | tests/test_utils.py | 507 | def test_load_cached_datasets(): | CODE |
| LOW | tests/test_utils.py | 564 | def test_assign_default_kwargs(): | CODE |
| LOW | tests/test_statistics.py | 88 | def test_density_normalization(self, rng): | CODE |
| LOW | tests/test_statistics.py | 145 | def test_bivariate_normalization(self, rng): | CODE |
| LOW | tests/test_statistics.py | 158 | def test_bivariate_cumulative(self, rng): | CODE |
| LOW | tests/test_statistics.py | 192 | def test_bivariate_string_bins(self, x, y): | CODE |
| LOW | tests/test_statistics.py | 220 | def test_bivariate_array_bins(self, x, y): | CODE |
| LOW | tests/test_statistics.py | 291 | def test_odd_single_observation(self): | CODE |
| LOW | tests/test_statistics.py | 349 | def test_cumulative_probability(self, x): | CODE |
| LOW | tests/test_statistics.py | 355 | def test_cumulative_frequency(self, x): | CODE |
| LOW⚡ | tests/test_statistics.py | 374 | def test_bivariate_count_stat(self, x, y): | CODE |
| LOW⚡ | tests/test_statistics.py | 380 | def test_bivariate_density_stat(self, x, y): | CODE |
| LOW⚡ | tests/test_statistics.py | 387 | def test_bivariate_probability_stat(self, x, y): | CODE |
| LOW⚡ | tests/test_statistics.py | 393 | def test_bivariate_frequency_stat(self, x, y): | CODE |
| LOW⚡ | tests/test_statistics.py | 400 | def test_bivariate_cumulative_count(self, x, y): | CODE |
| 398 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | seaborn/matrix.py | 74 | if not mask.index.equals(data.index) \ | CODE |
| HIGH | seaborn/matrix.py | 75 | and mask.columns.equals(data.columns): | CODE |
| HIGH | seaborn/categorical.py | 364 | # somewhat undefined; because we don't add null category data to the plot in | COMMENT |
| HIGH | seaborn/categorical.py | 2827 | # Capture this here because scale_categorical is going to insert a (null) | STRING |
| HIGH | seaborn/axisgrid.py | 728 | # If this subset is null, move on | STRING |
| HIGH | seaborn/axisgrid.py | 800 | # If this subset is null, move on | STRING |
| HIGH | seaborn/_stats/base.py | 53 | names = ", ".join(f"{x!r}" for x in undefined) | CODE |
| HIGH⚡ | tests/test_axisgrid.py | 123 | npt.assert_array_equal(g._not_bottom_axes, null) | CODE |
| HIGH⚡ | tests/test_axisgrid.py | 125 | npt.assert_array_equal(g._not_left_axes, null) | CODE |
| HIGH⚡ | tests/test_axisgrid.py | 126 | npt.assert_array_equal(g._inner_axes, null) | CODE |
| HIGH⚡ | tests/test_axisgrid.py | 130 | npt.assert_array_equal(g._not_bottom_axes, null) | CODE |
| HIGH⚡ | tests/test_axisgrid.py | 133 | npt.assert_array_equal(g._inner_axes, null) | CODE |
| HIGH⚡ | tests/test_axisgrid.py | 139 | npt.assert_array_equal(g._not_left_axes, null) | CODE |
| HIGH⚡ | tests/test_axisgrid.py | 140 | npt.assert_array_equal(g._inner_axes, null) | CODE |
| HIGH | tests/test_axisgrid.py | 159 | npt.assert_array_equal(g._inner_axes, null) | CODE |
| HIGH | tests/test_categorical.py | 3121 | assert g2.data.equals(long_df[["a", "y", "c"]]) | CODE |
| HIGH⚡ | tests/_core/test_scales.py | 436 | assert_array_equal(s(y), [c2, c1, null, c1]) | CODE |
| HIGH⚡ | tests/_core/test_scales.py | 445 | assert_array_equal(s(z), [c1, null, c2]) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | seaborn/matrix.py | 774 | CODE | |
| LOW | seaborn/_base.py | 1551 | CODE | |
| LOW | seaborn/_base.py | 1731 | CODE | |
| LOW | seaborn/_base.py | 204 | CODE | |
| LOW | seaborn/_base.py | 253 | CODE | |
| LOW | seaborn/_base.py | 380 | CODE | |
| LOW | seaborn/_base.py | 590 | CODE | |
| LOW | seaborn/_base.py | 694 | CODE | |
| LOW | seaborn/_base.py | 847 | CODE | |
| LOW | seaborn/_base.py | 964 | CODE | |
| LOW | seaborn/_base.py | 1008 | CODE | |
| LOW | seaborn/_base.py | 1023 | CODE | |
| LOW | seaborn/_base.py | 1271 | CODE | |
| LOW | seaborn/categorical.py | 2756 | CODE | |
| LOW | seaborn/categorical.py | 591 | CODE | |
| LOW | seaborn/categorical.py | 750 | CODE | |
| LOW | seaborn/categorical.py | 891 | CODE | |
| LOW | seaborn/regression.py | 154 | CODE | |
| LOW | seaborn/regression.py | 196 | CODE | |
| LOW | seaborn/rcmod.py | 146 | CODE | |
| LOW | seaborn/palettes.py | 122 | CODE | |
| LOW | seaborn/palettes.py | 799 | CODE | |
| LOW | seaborn/axisgrid.py | 2010 | CODE | |
| LOW | seaborn/axisgrid.py | 2184 | CODE | |
| LOW | seaborn/axisgrid.py | 371 | CODE | |
| LOW | seaborn/axisgrid.py | 944 | CODE | |
| LOW | seaborn/axisgrid.py | 1413 | CODE | |
| LOW | seaborn/axisgrid.py | 1437 | CODE | |
| LOW | seaborn/relational.py | 229 | CODE | |
| LOW | seaborn/widgets.py | 143 | CODE | |
| LOW | seaborn/widgets.py | 228 | CODE | |
| LOW | seaborn/distributions.py | 2095 | CODE | |
| LOW | seaborn/distributions.py | 2391 | CODE | |
| LOW | seaborn/distributions.py | 376 | CODE | |
| LOW | seaborn/distributions.py | 741 | CODE | |
| LOW | seaborn/utils.py | 69 | CODE | |
| LOW | seaborn/utils.py | 277 | CODE | |
| LOW | seaborn/utils.py | 379 | CODE | |
| LOW | seaborn/utils.py | 524 | CODE | |
| LOW | seaborn/utils.py | 783 | CODE | |
| LOW | seaborn/_statistics.py | 670 | CODE | |
| LOW | seaborn/_statistics.py | 276 | CODE | |
| LOW | seaborn/_statistics.py | 484 | CODE | |
| LOW | seaborn/_statistics.py | 619 | CODE | |
| LOW | seaborn/_testing.py | 24 | CODE | |
| LOW | seaborn/_core/subplots.py | 46 | CODE | |
| LOW | seaborn/_core/subplots.py | 121 | CODE | |
| LOW | seaborn/_core/subplots.py | 142 | CODE | |
| LOW | seaborn/_core/plot.py | 638 | CODE | |
| LOW | seaborn/_core/plot.py | 1105 | CODE | |
| LOW | seaborn/_core/plot.py | 1207 | CODE | |
| LOW | seaborn/_core/plot.py | 1303 | CODE | |
| LOW | seaborn/_core/plot.py | 1415 | CODE | |
| LOW | seaborn/_core/plot.py | 1520 | CODE | |
| LOW | seaborn/_core/plot.py | 1584 | CODE | |
| LOW | seaborn/_core/plot.py | 1660 | CODE | |
| LOW | seaborn/_core/plot.py | 1773 | CODE | |
| LOW | seaborn/_core/plot.py | 1598 | CODE | |
| LOW | seaborn/_core/properties.py | 171 | CODE | |
| LOW | seaborn/_core/properties.py | 244 | CODE | |
| 24 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | seaborn/_base.py | 1 | CODE | |
| LOW | seaborn/axisgrid.py | 1 | CODE | |
| LOW | seaborn/__init__.py | 2 | CODE | |
| LOW | seaborn/__init__.py | 3 | CODE | |
| LOW | seaborn/__init__.py | 4 | CODE | |
| LOW | seaborn/__init__.py | 5 | CODE | |
| LOW | seaborn/__init__.py | 6 | CODE | |
| LOW | seaborn/__init__.py | 7 | CODE | |
| LOW | seaborn/__init__.py | 8 | CODE | |
| LOW | seaborn/__init__.py | 9 | CODE | |
| LOW | seaborn/__init__.py | 10 | CODE | |
| LOW | seaborn/__init__.py | 11 | CODE | |
| LOW | seaborn/__init__.py | 12 | CODE | |
| LOW | seaborn/__init__.py | 13 | CODE | |
| LOW | seaborn/__init__.py | 13 | CODE | |
| LOW | seaborn/__init__.py | 14 | CODE | |
| LOW | seaborn/_compat.py | 1 | CODE | |
| LOW | seaborn/objects.py | 29 | CODE | |
| LOW | seaborn/objects.py | 31 | CODE | |
| LOW | seaborn/objects.py | 32 | CODE | |
| LOW | seaborn/objects.py | 32 | CODE | |
| LOW | seaborn/objects.py | 33 | CODE | |
| LOW | seaborn/objects.py | 33 | CODE | |
| LOW | seaborn/objects.py | 34 | CODE | |
| LOW | seaborn/objects.py | 34 | CODE | |
| LOW | seaborn/objects.py | 35 | CODE | |
| LOW | seaborn/objects.py | 35 | CODE | |
| LOW | seaborn/objects.py | 35 | CODE | |
| LOW | seaborn/objects.py | 35 | CODE | |
| LOW | seaborn/objects.py | 35 | CODE | |
| LOW | seaborn/objects.py | 35 | CODE | |
| LOW | seaborn/objects.py | 36 | CODE | |
| LOW | seaborn/objects.py | 38 | CODE | |
| LOW | seaborn/objects.py | 39 | CODE | |
| LOW | seaborn/objects.py | 39 | CODE | |
| LOW | seaborn/objects.py | 40 | CODE | |
| LOW | seaborn/objects.py | 40 | CODE | |
| LOW | seaborn/objects.py | 41 | CODE | |
| LOW | seaborn/objects.py | 42 | CODE | |
| LOW | seaborn/objects.py | 43 | CODE | |
| LOW | seaborn/objects.py | 45 | CODE | |
| LOW | seaborn/objects.py | 45 | CODE | |
| LOW | seaborn/objects.py | 45 | CODE | |
| LOW | seaborn/objects.py | 45 | CODE | |
| LOW | seaborn/objects.py | 45 | CODE | |
| LOW | seaborn/objects.py | 45 | CODE | |
| LOW | seaborn/objects.py | 47 | CODE | |
| LOW | seaborn/objects.py | 47 | CODE | |
| LOW | seaborn/objects.py | 47 | CODE | |
| LOW | seaborn/objects.py | 47 | CODE | |
| LOW | seaborn/objects.py | 47 | CODE | |
| LOW | seaborn/_core/subplots.py | 1 | CODE | |
| LOW | seaborn/_core/moves.py | 1 | CODE | |
| LOW | seaborn/_core/plot.py | 2 | CODE | |
| LOW | seaborn/_core/properties.py | 1 | CODE | |
| LOW | seaborn/_core/scales.py | 1 | CODE | |
| LOW | seaborn/_core/rules.py | 1 | CODE | |
| LOW | seaborn/_core/exceptions.py | 7 | CODE | |
| LOW | seaborn/_core/typing.py | 1 | CODE | |
| LOW | seaborn/_core/groupby.py | 2 | CODE | |
| 17 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | seaborn/matrix.py | 445 | # Initialize the plotter object | COMMENT |
| MEDIUM | seaborn/_base.py | 824 | # Define the variable names | COMMENT |
| MEDIUM | seaborn/regression.py | 200 | # Create the grid for the regression | COMMENT |
| MEDIUM | seaborn/axisgrid.py | 1276 | # Create the figure and the array of subplots | COMMENT |
| MEDIUM | seaborn/axisgrid.py | 2242 | # Initialize the JointGrid object | STRING |
| MEDIUM | seaborn/__init__.py | 20 | # Define the seaborn version | COMMENT |
| MEDIUM | seaborn/relational.py | 255 | # Initialize the aggregation object | COMMENT |
| MEDIUM | seaborn/relational.py | 410 | # Define the vectors of x and y positions | COMMENT |
| MEDIUM | seaborn/relational.py | 787 | # Define the common plotting parameters | STRING |
| MEDIUM | seaborn/relational.py | 806 | # Define the named variables for plotting on each facet | STRING |
| MEDIUM | seaborn/distributions.py | 307 | # Initialize the estimator object | COMMENT |
| MEDIUM | seaborn/distributions.py | 557 | # Define the matplotlib attributes that depend on semantic mapping | COMMENT |
| MEDIUM | seaborn/distributions.py | 823 | # Define the specific kwargs for this artist | COMMENT |
| MEDIUM | seaborn/distributions.py | 1103 | # Define a grid of iso-proportion levels | COMMENT |
| MEDIUM | seaborn/distributions.py | 1124 | # Define the coloring of the contours | COMMENT |
| MEDIUM | seaborn/_statistics.py | 323 | # Define the bins for this variable | COMMENT |
| MEDIUM | seaborn/_core/data.py | 96 | # Create a new dataset with just the info passed here | COMMENT |
| MEDIUM | seaborn/external/version.py | 19 | # This file is dual licensed under the terms of the Apache License, Version | COMMENT |
| MEDIUM | examples/structured_heatmap.py | 21 | # Create a categorical palette to identify the networks | COMMENT |
| MEDIUM | examples/kde_ridgeplot.py | 13 | # Create the data | COMMENT |
| MEDIUM | examples/kde_ridgeplot.py | 21 | # Initialize the FacetGrid object | COMMENT |
| MEDIUM | examples/many_facets.py | 15 | # Create a dataset with many short random walks | COMMENT |
| MEDIUM | examples/palette_generation.py | 20 | # Create a cubehelix colormap to use with kdeplot | COMMENT |
| MEDIUM | examples/joint_histogram.py | 18 | # Create an inset legend for the histogram colorbar | COMMENT |
| MEDIUM | examples/faceted_lineplot.py | 13 | # Define the palette as a list to specify exact values | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | seaborn/matrix.py | 355 | CODE | |
| LOW | seaborn/matrix.py | 642 | CODE | |
| LOW | seaborn/matrix.py | 1146 | CODE | |
| LOW | seaborn/matrix.py | 698 | CODE | |
| LOW | seaborn/categorical.py | 1592 | CODE | |
| LOW | seaborn/categorical.py | 1717 | CODE | |
| LOW | seaborn/categorical.py | 1907 | CODE | |
| LOW | seaborn/categorical.py | 2077 | CODE | |
| LOW | seaborn/categorical.py | 2202 | CODE | |
| LOW | seaborn/categorical.py | 2331 | CODE | |
| LOW | seaborn/categorical.py | 2473 | CODE | |
| LOW | seaborn/categorical.py | 2622 | CODE | |
| LOW | seaborn/categorical.py | 2756 | CODE | |
| LOW | seaborn/regression.py | 580 | CODE | |
| LOW | seaborn/regression.py | 761 | CODE | |
| LOW | seaborn/regression.py | 864 | CODE | |
| LOW | seaborn/regression.py | 76 | CODE | |
| LOW | seaborn/palettes.py | 665 | CODE | |
| LOW | seaborn/axisgrid.py | 2010 | CODE | |
| LOW | seaborn/axisgrid.py | 2184 | CODE | |
| LOW | seaborn/axisgrid.py | 371 | CODE | |
| LOW | seaborn/axisgrid.py | 1191 | CODE | |
| LOW | seaborn/axisgrid.py | 1687 | CODE | |
| LOW | seaborn/relational.py | 471 | CODE | |
| LOW | seaborn/relational.py | 606 | CODE | |
| LOW | seaborn/relational.py | 700 | CODE | |
| LOW | seaborn/relational.py | 202 | CODE | |
| LOW | seaborn/widgets.py | 405 | CODE | |
| LOW | seaborn/distributions.py | 1359 | CODE | |
| LOW | seaborn/distributions.py | 1582 | CODE | |
| LOW | seaborn/distributions.py | 1862 | CODE | |
| LOW | seaborn/distributions.py | 1974 | CODE | |
| LOW | seaborn/distributions.py | 2095 | CODE | |
| LOW | seaborn/distributions.py | 2391 | CODE | |
| LOW | seaborn/utils.py | 277 | CODE | |
| LOW | seaborn/_core/moves.py | 150 | CODE | |
| LOW | seaborn/_core/groupby.py | 103 | CODE | |
| LOW | seaborn/_stats/aggregation.py | 52 | CODE | |
| LOW | seaborn/_stats/aggregation.py | 122 | CODE | |
| LOW | seaborn/_stats/counting.py | 45 | CODE | |
| LOW | seaborn/external/kde.py | 266 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | seaborn/matrix.py | 28 | __all__ = ["heatmap", "clustermap"] | CODE |
| LOW | seaborn/categorical.py | 41 | __all__ = [ | CODE |
| LOW | seaborn/regression.py | 22 | __all__ = ["lmplot", "regplot", "residplot"] | CODE |
| LOW | seaborn/miscplot.py | 6 | __all__ = ["palplot", "dogplot"] | CODE |
| LOW | seaborn/rcmod.py | 8 | __all__ = ["set_theme", "set", "reset_defaults", "reset_orig", | CODE |
| LOW | seaborn/palettes.py | 14 | __all__ = ["color_palette", "hls_palette", "husl_palette", "mpl_palette", | CODE |
| LOW | seaborn/axisgrid.py | 29 | __all__ = ["FacetGrid", "PairGrid", "JointGrid", "pairplot", "jointplot"] | CODE |
| LOW | seaborn/relational.py | 26 | __all__ = ["relplot", "scatterplot", "lineplot"] | CODE |
| LOW | seaborn/widgets.py | 17 | __all__ = ["choose_colorbrewer_palette", "choose_cubehelix_palette", | CODE |
| LOW | seaborn/distributions.py | 45 | __all__ = ["displot", "histplot", "kdeplot", "ecdfplot", "rugplot", "distplot"] | CODE |
| LOW | seaborn/utils.py | 21 | __all__ = ["desaturate", "saturate", "set_hls_values", "move_legend", | CODE |
| LOW | seaborn/_core/plot.py | 1105 | def _setup_figure(self, p: Plot, common: PlotData, layers: list[Layer]) -> None: | CODE |
| LOW | seaborn/external/version.py | 29 | __all__ = ["Version", "InvalidVersion", "VERSION_PATTERN"] | CODE |
| LOW | seaborn/external/kde.py | 78 | __all__ = ['gaussian_kde'] | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | seaborn/external/kde.py | 53 | # ------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | seaborn/external/kde.py | 70 | # ------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_categorical.py | 226 | # ------------------------------------------------------------------------------ | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | seaborn/_base.py | 968 | # Most of these tests should just use the external interface | COMMENT |
| MEDIUM | seaborn/categorical.py | 3267 | # Sort along the value axis to facilitate the beeswarm | COMMENT |
| MEDIUM | seaborn/axisgrid.py | 2238 | # Matplotlib's hexbin plot is not na-robust | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | seaborn/_base.py | 1361 | COMMENT | |
| LOW | seaborn/_base.py | 1401 | # It feels more consistent, but technically will be a default change | COMMENT |
| LOW | seaborn/categorical.py | 141 | """ | COMMENT |
| LOW | seaborn/_core/scales.py | 261 | if new._tick_params is None: | COMMENT |
| LOW | seaborn/external/docscrape.py | 261 | return params | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | seaborn/_core/plot.py | 1375 | except Exception as err: | CODE |
| LOW | seaborn/_core/plot.py | 1405 | except Exception as err: | CODE |
| LOW | seaborn/_core/data.py | 275 | except Exception as err: | CODE |
| LOW | seaborn/_marks/base.py | 181 | except Exception as err: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | seaborn/categorical.py | 684 | # Set width to 0 to avoid going out of domain | COMMENT |
| LOW | seaborn/axisgrid.py | 725 | # Iterate over the data subsets | STRING |
| LOW | seaborn/axisgrid.py | 797 | # Iterate over the data subsets | STRING |