Repository Analysis

plotly/dash

Data Apps & Dashboards for Python. No JavaScript Required.

4.6 Likely human-written View on GitHub

Analysis Overview

This report presents the forensic synthetic code analysis of plotly/dash, a Python project with 24,391 GitHub stars. SynthScan v2.0 examined 299,936 lines of code across 1142 source files, recording 858 pattern matches distributed across 18 syntactic categories. The overall adjusted score of 4.6 places this repository in the Likely human-written 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).

4.6
Adjusted Score
4.6
Raw Score
100%
Time Factor
2026-08-28
Last Push
24.4K
Stars
Python
Language
299.9K
Lines of Code
1.1K
Files
858
Pattern Hits
2026-08-29
Scan Date
0.05
HC Hit Rate

What These Metrics Mean

Adjusted Score
Primary synthetic code indicator. Raw score normalised per 1,000 lines of code and multiplied by the temporal discount factor. This is the definitive comparative metric — use it to rank repositories by AI authorship density.
Raw Score
The unmodified sum of all severity-weighted, context-multiplied pattern match scores before temporal discounting. Reflects the absolute signal strength independent of when the repository was last active.
Time Factor
The temporal discount multiplier (0–100%) applied to the raw score. Repositories last updated before ChatGPT's launch (Nov 2022) receive a 5% factor. Full signal is only assigned to repositories active in the post-adoption era (Jan 2024+).
Pattern Hits
Total count of individual pattern matches across all files and categories. A high hit count with a low score may indicate a very large codebase with isolated AI snippets; a low count with a high score indicates dense, concentrated AI signatures.
HC Hit Rate
High+Critical pattern hits per file, averaged across the repository. This orthogonal signal catches repositories where a few files are densely packed with high-severity AI tells — a strong indicator even when the normalised score appears moderate due to codebase size.
Lines of Code / Files
Total lines and files analysed. The scanner examines 94 file extensions. These denominators are used to normalise the score, enabling fair comparison between repositories of vastly different sizes.

Score History

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.

Severity Breakdown

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.

CRITICAL 2HIGH 53MEDIUM 139LOW 664

Directory Score Breakdown

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.

Pattern Findings

The scanner identified 858 distinct pattern matches across 18 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.

Decorative Section Separators126 hits · 381 pts
SeverityFileLineSnippetContext
MEDIUMtests/unit/mcp/test_mcp_session.py28# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/mcp/test_mcp_session.py30# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/mcp/test_mcp_server.py10# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/mcp/test_mcp_server.py12# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/mcp/test_mcp_server.py48# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/mcp/test_mcp_server.py50# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/mcp/test_mcp_configure.py36# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/mcp/test_mcp_configure.py38# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/mcp/test_mcp_configure.py78# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/mcp/test_mcp_configure.py80# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/mcp/test_mcp_configure.py105# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/mcp/test_mcp_configure.py107# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/mcp/test_mcp_configure.py126# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/mcp/test_mcp_configure.py128# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/mcp/test_mcp_configure.py143# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/mcp/test_mcp_configure.py145# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/mcp/test_mcp_configure.py176# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/mcp/test_mcp_configure.py178# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/mcp/test_mcp_configure.py211# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/mcp/test_mcp_configure.py213# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/mcp/test_mcp_configure.py228# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/mcp/test_mcp_configure.py230# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/mcp/test_mcp_configure.py250# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/mcp/test_mcp_configure.py252# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/mcp/tools/test_mcp_pattern_matching.py14# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/mcp/tools/test_mcp_pattern_matching.py16# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/mcp/tools/test_mcp_pattern_matching.py90# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/mcp/tools/test_mcp_pattern_matching.py92# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/mcp/tools/test_mcp_tools.py29# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/mcp/tools/test_mcp_tools.py31# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/mcp/tools/test_mcp_tools.py142# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/mcp/tools/test_mcp_tools.py144# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/mcp/tools/test_mcp_tools.py202# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/mcp/tools/test_mcp_tools.py204# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/mcp/tools/test_mcp_tools.py217# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/mcp/tools/test_mcp_tools.py219# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/mcp/tools/test_mcp_tools.py312# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/mcp/tools/test_mcp_tools.py314# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/mcp/tools/test_mcp_background_callbacks.py41# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/mcp/tools/test_mcp_background_callbacks.py43# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/mcp/tools/test_mcp_background_callbacks.py105# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/mcp/tools/test_mcp_background_callbacks.py107# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/mcp/tools/test_mcp_background_callbacks.py196# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/mcp/tools/test_mcp_background_callbacks.py198# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/mcp/tools/test_mcp_background_callbacks.py260# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/mcp/tools/test_mcp_background_callbacks.py262# ---------------------------------------------------------------------------COMMENT
MEDIUM…ts/unit/mcp/tools/test_mcp_formatted_output_results.py26# ---------------------------------------------------------------------------COMMENT
MEDIUM…ts/unit/mcp/tools/test_mcp_formatted_output_results.py28# ---------------------------------------------------------------------------COMMENT
MEDIUM…ts/unit/mcp/tools/test_mcp_formatted_output_results.py79# ---------------------------------------------------------------------------COMMENT
MEDIUM…ts/unit/mcp/tools/test_mcp_formatted_output_results.py81# ---------------------------------------------------------------------------COMMENT
MEDIUM…ts/unit/mcp/tools/test_mcp_formatted_output_results.py168# ---------------------------------------------------------------------------COMMENT
MEDIUM…ts/unit/mcp/tools/test_mcp_formatted_output_results.py170# ---------------------------------------------------------------------------COMMENT
MEDIUM…ts/unit/mcp/tools/test_mcp_formatted_output_results.py204# ---------------------------------------------------------------------------COMMENT
MEDIUM…ts/unit/mcp/tools/test_mcp_formatted_output_results.py206# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/mcp/tools/test_mcp_input_descriptions.py24# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/mcp/tools/test_mcp_input_descriptions.py26# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/mcp/tools/test_mcp_input_descriptions.py48# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/mcp/tools/test_mcp_input_descriptions.py50# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/mcp/tools/test_mcp_input_descriptions.py192# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/mcp/tools/test_mcp_input_descriptions.py194# ---------------------------------------------------------------------------COMMENT
66 more matches not shown…
Hyper-Verbose Identifiers329 hits · 357 pts
SeverityFileLineSnippetContext
LOWtests/unit/test_configs.py79def test_pathname_prefix_from_environ_app_name(empty_environ):CODE
LOWtests/unit/test_configs.py86def test_pathname_prefix_environ_routes(empty_environ):CODE
LOWtests/unit/test_configs.py92def test_pathname_prefix_environ_requests(empty_environ):CODE
LOWtests/unit/test_configs.py488def test_debug_mode_enable_dev_tools(empty_environ, debug_env, debug, expected):CODE
LOWtests/unit/test_configs.py496def test_missing_flask_compress_raises():CODE
LOWtests/unit/test_configs.py501def test_csrf_config_defaults():CODE
LOWtests/unit/test_configs.py532def test_csrf_config_validation(token_name, header_name):CODE
LOWtests/unit/test_configs.py537def test_csrf_config_read_only():CODE
LOWtests/unit/test_configs.py545def test_init_app_with_flask_run_pattern():CODE
LOWtests/unit/test_configs.py44def test_valid_pathname_prefix_init(CODE
LOWtests/unit/test_configs.py56def test_invalid_pathname_prefix(empty_environ):CODE
LOWtests/unit/test_configs.py106def test_pathname_prefix_assets(empty_environ, req, expected):CODE
LOWtests/unit/test_configs.py189def test_get_combined_config_dev_tools_ui(empty_environ):CODE
LOWtests/unit/test_configs.py203def test_get_combined_config_props_check(empty_environ):CODE
LOWtests/unit/test_configs.py217def test_load_dash_env_vars_refects_to_os_environ(empty_environ):CODE
LOWtests/unit/test_configs.py258def test_pathname_prefix_relative_url(prefix, partial_path, expected):CODE
LOWtests/unit/test_configs.py267def test_invalid_get_relative_path(prefix, partial_path):CODE
LOWtests/unit/test_configs.py309def test_invalid_strip_relative_path(prefix, partial_path):CODE
LOWtests/unit/test_configs.py383def test_proxy_jupyter_server_url(mocker, empty_environ):CODE
LOWtests/unit/test_configs.py445def test_app_invalid_delayed_config():CODE
LOWtests/unit/test_configs.py521def test_csrf_config_in_index():CODE
LOWtests/unit/test_configs.py567def test_init_app_server_false_pattern():CODE
LOWtests/unit/test_resources.py107def test_collect_and_register_resources(mocker):CODE
LOWtests/unit/test_resources.py127def test_resources_with_attributes():CODE
LOWtests/unit/test_resources.py160def test_css_resources_with_attributes():CODE
LOWtests/unit/test_resources.py187def test_resources_without_attributes():CODE
LOWtests/unit/test_resources.py200def test_local_resources_with_attributes(mocker):CODE
LOWtests/unit/test_resources.py235def test_multiple_external_urls_with_attributes():CODE
LOWtests/unit/test_main_module_alias.py49def test_main_module_alias_prevents_double_registration(tmp_path, monkeypatch):CODE
LOWtests/unit/test_main_module_alias.py103def test_main_module_alias_prevents_double_registration_nested(tmp_path, monkeypatch):STRING
LOWtests/unit/test_main_module_alias.py148def test_no_alias_when_names_collide(tmp_path, monkeypatch):CODE
LOWtests/unit/test_pydantic_types.py10 def test_json_schema_is_number(self):CODE
LOWtests/unit/test_pydantic_types.py16 def test_produces_object_schema(self):CODE
LOWtests/unit/test_pydantic_types.py21 def test_schema_has_type_and_props(self):CODE
LOWtests/unit/test_pydantic_types.py29 def test_dispatch_body_schema(self):CODE
LOWtests/unit/test_pydantic_types.py34 def test_dispatch_response_schema(self):CODE
LOWtests/unit/test_app_runners.py15def test_threaded_server_smoke(dash_thread_server):CODE
LOWtests/unit/test_app_runners.py30def test_threaded_server_wrapped_fastapi(monkeypatch):CODE
LOWtests/unit/test_app_runners.py64def test_process_server_smoke(dash_process_server):CODE
LOWtests/unit/test_app_runners.py86def test_run_app_uses_backend_type(server_type, expected_options):CODE
LOWtests/unit/test_health_endpoint_unit.py42def test_health_respects_routes_pathname_prefix():CODE
LOWtests/unit/test_health_endpoint_unit.py54def test_health_custom_nested_path():CODE
LOWtests/unit/test_browser.py21def test_browser_use_remote_webdriver(tmpdir):CODE
LOWtests/unit/test_async_background_callback_job_fn.py63def test_diskcache_async_job_fn_exception_is_reported():CODE
LOWtests/unit/test_async_background_callback_job_fn.py74def test_diskcache_async_job_fn_prevent_update_is_reported():CODE
LOWtests/unit/test_async_background_callback_job_fn.py84def test_diskcache_async_job_fn_success_is_reported():CODE
LOWtests/unit/test_async_background_callback_job_fn.py94def test_celery_async_job_fn_exception_is_reported():CODE
LOWtests/unit/test_async_background_callback_job_fn.py105def test_celery_async_job_fn_prevent_update_is_reported():CODE
LOWtests/unit/test_async_background_callback_job_fn.py115def test_celery_async_job_fn_success_is_reported():CODE
LOWtests/unit/test_payload_compression.py19 def test_compressed_roundtrip(self):CODE
LOWtests/unit/test_payload_compression.py27 def test_decompressed_payload_exceeds_size_limit(self):CODE
LOWtests/unit/test_payload_compression.py38 def test_decompress_invalid_raises(self, bad_data):CODE
LOWtests/unit/test_payload_compression.py42 def test_decompress_valid_gzip_invalid_json_raises(self):CODE
LOWtests/unit/test_partial_matching.py9 def test_partial_subset_keys_match(self):CODE
LOWtests/unit/test_partial_matching.py15 def test_partial_subset_keys_no_match_value(self):CODE
LOWtests/unit/test_partial_matching.py21 def test_partial_wildcard_match(self):CODE
LOWtests/unit/test_partial_matching.py27 def test_partial_all_wildcard(self):CODE
LOWtests/unit/test_partial_matching.py33 def test_partial_no_common_keys(self):CODE
LOWtests/unit/test_partial_matching.py39 def test_partial_exact_same_keys(self):CODE
LOWtests/unit/test_partial_matching.py45 def test_non_partial_different_keys_no_match(self):CODE
269 more matches not shown…
Cross-Language Confusion46 hits · 236 pts
SeverityFileLineSnippetContext
HIGHtests/unit/mcp/tools/test_mcp_input_schemas.py41 """``{anyOf: [*schemas, {type: null}]}`` — a common nullable-type shape."""STRING
HIGHtests/backend_tests/test_preconfig_backends.py32 window._lastResponseHeaders = null;STRING
HIGHtests/integration/callbacks/test_wildcards.py905 unchanged, both sides are undefined, so its initial call is droppedSTRING
HIGHtests/integration/callbacks/test_basic_callback.py462 dash_duo.wait_for_text_to_equal("#output", '[null, null, "A"]')CODE
HIGHtests/integration/callbacks/test_basic_callback.py465 dash_duo.wait_for_text_to_equal("#output", '[null, 1, "A"]')CODE
HIGHtests/integration/callbacks/test_callback_context.py91 '[{"prop_id": ".", "value": null}]',CODE
HIGH…_clientside_multiple_output_return_single_no_update.py26 return [null, null];STRING
HIGHtests/integration/clientside/test_clientside.py417 "btn0.n_clicks = null, "CODE
HIGHtests/integration/clientside/test_clientside.py418 '{"btn1":0}.n_clicks = null, 'CODE
HIGHtests/integration/clientside/test_clientside.py419 '{"btn1":1}.n_clicks = null, 'CODE
HIGHtests/integration/clientside/test_clientside.py430 '{"btn1":0}.n_clicks = null, 'CODE
HIGHtests/integration/clientside/test_clientside.py431 '{"btn1":1}.n_clicks = null, 'CODE
HIGHtests/integration/clientside/test_clientside.py444 '{"btn1":1}.n_clicks = null, 'CODE
HIGHtests/integration/clientside/test_clientside.py456 '{"btn1":1}.n_clicks = null, 'CODE
HIGHtests/integration/clientside/test_clientside.py556 "in0.value = null, "CODE
HIGHtests/integration/clientside/test_clientside.py557 '{"in1":0}.value = null, 'CODE
HIGHtests/integration/clientside/test_clientside.py558 '{"in1":1}.value = null, 'CODE
HIGHtests/integration/clientside/test_clientside.py569 '{"in1":0}.value = null, 'CODE
HIGHtests/integration/clientside/test_clientside.py570 '{"in1":1}.value = null, 'CODE
HIGHtests/integration/clientside/test_clientside.py582 '{"in1":1}.value = null, 'CODE
HIGHtests/integration/clientside/test_clientside.py594 '{"in1":1}.value = null, 'CODE
HIGHtests/async_tests/test_async_callbacks.py471 dash_duo.wait_for_text_to_equal("#output", '[null, null, "A"]')CODE
HIGHtests/async_tests/test_async_callbacks.py474 dash_duo.wait_for_text_to_equal("#output", '[null, 1, "A"]')CODE
HIGH…ore-components/tests/integration/dropdown/test_a11y.py347 return dropdownContent && dropdownContent.contains(activeElement);STRING
HIGH…ore-components/tests/integration/dropdown/test_a11y.py414 if (focused && focused.closest('.dash-options-list-option')) {STRING
HIGH…ore-components/tests/integration/dropdown/test_a11y.py417 return null;STRING
HIGH…ts/tests/integration/loading/test_loading_component.py264 "return gd_ === window.gd && gd_.__test__ === 'boo';"CODE
HIGH…-components/tests/integration/input/test_a11y_input.py66 return container === activeElement || container.contains(activeElement);STRING
HIGH…s/tests/integration/location/test_location_callback.py173 window._test_link_event_counter = (window._test_link_event_counter || 0) + 1;STRING
HIGH…s/tests/integration/location/test_location_callback.py177 window._test_history_event_counter = (window._test_history_event_counter || 0) + 1;STRING
HIGH…nents/tests/integration/graph/test_graph_responsive.py109 # responsive=true will make the graph resize only if autosize=true|undefined, interestingly enough, responsive=undefCOMMENT
HIGH…components/tests/integration/graph/test_graph_varia.py765 figure.layout.title = {text: String(n_fig || 0)};CODE
HIGH…components/tests/integration/graph/test_graph_varia.py773 layout: {width: 300, height: 250, title: {text: String(n_fig || 0)}}CODE
HIGH…components/tests/integration/graph/test_graph_varia.py783 let responsive = [true, false, 'auto'][(n_resp || 0) % 3];CODE
HIGH…components/tests/integration/graph/test_graph_varia.py784 return [new_figure, responsive, (n_fig || 0) + ' ' + responsive];CODE
HIGH…e-components/tests/integration/link/test_link_event.py30 window._test_link_event_counter = (window._test_link_event_counter || 0) + 1;STRING
HIGH…e-components/tests/integration/link/test_link_event.py34 window._test_history_event_counter = (window._test_history_event_counter || 0) + 1;STRING
HIGH…/tests/integration/download/test_download_dataframe.py51 assert df.columns.equals(df_download.columns)CODE
HIGH…/tests/integration/download/test_download_dataframe.py52 assert df.index.equals(df_download.index)CODE
HIGH…onents/tests/integration/store/test_component_props.py179 "#output", '[{"n_clicks": null}, {"n_clicks": null}, {"n_clicks": null}]'CODE
HIGH…onents/tests/integration/store/test_component_props.py188 dash_dcc.wait_for_text_to_equal("#output", "[null, null, null]")CODE
HIGH…onents/tests/integration/store/test_component_props.py198 "#output", '[{"n_clicks": null}, {"n_clicks": null}, {"n_clicks": null}]'CODE
HIGHcomponents/dash-table/tests/selenium/test_export.py28 assert df_bis.equals(df)CODE
HIGHdash/development/base_component.py373 # A component's children can be undefined, a string, another component,COMMENT
HIGHdash/development/_r_components_generation.py22 props <- props[!vapply(props, is.null, logical(1))]CODE
HIGHdash/testing/browser.py192 stash.push(c);STRING
Unused Imports164 hits · 149 pts
SeverityFileLineSnippetContext
LOWtests/utils.py4CODE
LOWtests/unit/test_resources.py3CODE
LOWtests/integration/test_legacy_components.py7CODE
LOWtests/integration/dash/org.py3CODE
LOW@plotly/dash-test-components/base/__init__.py12CODE
LOW…h-generator-test-component-typescript/base/__init__.py12CODE
LOW…ash-generator-test-component-standard/base/__init__.py12CODE
LOW…/dash-generator-test-component-nested/base/__init__.py12CODE
LOW…-core-components/dash_core_components_base/__init__.py7CODE
LOW…-core-components/dash_core_components_base/__init__.py9CODE
LOW…-core-components/dash_core_components_base/__init__.py9CODE
LOW…-core-components/dash_core_components_base/__init__.py9CODE
LOW…-core-components/dash_core_components_base/__init__.py9CODE
LOWcomponents/dash-html-components/tests/utils.py1CODE
LOW…-html-components/dash_html_components_base/__init__.py3CODE
LOWcomponents/dash-table/dash_table_base/__init__.py18CODE
LOWcomponents/dash-table/dash_table_base/__init__.py20CODE
LOWcomponents/dash-table/dash_table_base/__init__.py21CODE
LOWdash/__init__.py5CODE
LOWdash/__init__.py5CODE
LOWdash/__init__.py5CODE
LOWdash/__init__.py5CODE
LOWdash/__init__.py5CODE
LOWdash/__init__.py5CODE
LOWdash/__init__.py5CODE
LOWdash/__init__.py14CODE
LOWdash/__init__.py15CODE
LOWdash/__init__.py16CODE
LOWdash/__init__.py17CODE
LOWdash/__init__.py18CODE
LOWdash/__init__.py19CODE
LOWdash/__init__.py20CODE
LOWdash/__init__.py21CODE
LOWdash/__init__.py22CODE
LOWdash/__init__.py22CODE
LOWdash/__init__.py23CODE
LOWdash/__init__.py24CODE
LOWdash/__init__.py24CODE
LOWdash/__init__.py24CODE
LOWdash/__init__.py29CODE
LOWdash/__init__.py30CODE
LOWdash/__init__.py30CODE
LOWdash/__init__.py34CODE
LOWdash/__init__.py37CODE
LOWdash/__init__.py37CODE
LOWdash/__init__.py38CODE
LOWdash/__init__.py38CODE
LOWdash/__init__.py38CODE
LOWdash/__init__.py43CODE
LOWdash/__init__.py44CODE
LOWdash/__init__.py46CODE
LOWdash/dash.py1077CODE
LOWdash/_layout_utils.py3CODE
LOWdash/_validate.py598CODE
LOWdash/_validate.py605CODE
LOWdash/_jupyter.py396CODE
LOWdash/development/__init__.py1CODE
LOWdash/backends/base_server.py6CODE
LOWdash/backends/base_server.py21CODE
LOWdash/backends/_flask.py1CODE
104 more matches not shown…
Excessive Try-Catch Wrapping57 hits · 64 pts
SeverityFileLineSnippetContext
LOWtests/backend_tests/test_threaded_runner_stop.py73 except Exception: # pylint: disable=broad-exceptCODE
LOWtests/integration/test_hooks.py260 except Exception:CODE
LOWtests/integration/test_hooks.py269 except Exception:CODE
LOWtests/integration/test_hooks.py282 except Exception as err:CODE
MEDIUMtests/integration/test_hooks.py256def layout_hook(layout):CODE
MEDIUMtests/integration/test_hooks.py265def error_hook(error):CODE
MEDIUMtests/integration/test_hooks.py277def callback_hook(n_clicks):CODE
LOW…ents/tests/integration/misc/test_popover_visibility.py35 except Exception as e:CODE
LOW…e-components/tests/integration/calendar/test_portal.py44 except Exception as e:CODE
LOW…components/tests/integration/graph/test_graph_varia.py601 except Exception as e:CODE
LOWdash/_callback.py863 except Exception as err: # pylint: disable=broad-exception-caughtCODE
LOWdash/_callback.py936 except Exception as err: # pylint: disable=broad-exception-caughtCODE
LOWdash/_compression.py47 except Exception as e:CODE
LOWdash/dash.py858 except Exception as e: # pylint: disable=broad-exception-caughtCODE
LOWdash/dash.py1028 except Exception: # pylint: disable=broad-exceptCODE
LOWdash/dash.py2549 except Exception as e:CODE
LOWdash/_jupyter.py415 except Exception as error:CODE
LOWdash/_jupyter.py469 except Exception as final_error: # pylint: disable=broad-exceptCODE
MEDIUMdash/_jupyter.py410def run():CODE
LOWdash/_utils.py247 except Exception: # pylint: disable=broad-exceptCODE
LOWdash/backends/_fastapi.py155 except Exception: # pylint: disable=broad-exception-caughtCODE
LOWdash/backends/_fastapi.py216 except Exception: # pylint: disable=broad-exception-caughtCODE
LOWdash/backends/_fastapi.py252 except Exception as e: # pylint: disable=W0718CODE
LOWdash/backends/_fastapi.py348 except Exception: # pylint: disable=broad-exception-caughtCODE
LOWdash/backends/_fastapi.py680 except Exception: # pylint: disable=broad-exception-caughtCODE
MEDIUMdash/backends/_fastapi.py335def _setup_catchall(self):CODE
LOWdash/backends/_quart.py502 except Exception: # pylint: disable=broad-exception-caughtCODE
LOWdash/backends/_quart.py700 except Exception: # pylint: disable=broad-exception-caughtCODE
LOWdash/backends/ws.py350 except Exception: # pylint: disable=broad-exception-caughtCODE
LOWdash/backends/ws.py378 except Exception: # pylint: disable=broad-exception-caughtCODE
LOWdash/backends/ws.py482 except Exception as e: # pylint: disable=broad-exception-caughtCODE
LOWdash/backends/ws.py580 except Exception as e: # pylint: disable=broad-exception-caughtCODE
LOWdash/backends/ws.py625 except Exception as e: # pylint: disable=broad-exception-caughtCODE
MEDIUMdash/backends/ws.py559def execute() -> dict:CODE
LOWdash/mcp/_server.py305 except Exception as e: # pylint: disable=broad-exception-caughtCODE
LOW…h/mcp/primitives/tools/tool_decorated_mcp_functions.py28 except Exception: # pylint: disable=broad-exception-caughtCODE
LOW…h/mcp/primitives/tools/tool_decorated_mcp_functions.py67 except Exception: # pylint: disable=broad-exception-caughtCODE
LOW…h/mcp/primitives/tools/tool_decorated_mcp_functions.py141 except Exception as exc: # pylint: disable=broad-exception-caughtCODE
LOWdash/mcp/primitives/tools/callback_utils.py36 except Exception as err:CODE
LOWdash/mcp/primitives/tools/callback_adapter.py205 except Exception: # pylint: disable=broad-exception-caughtCODE
LOWdash/mcp/primitives/tools/callback_adapter.py360 except Exception: # pylint: disable=broad-exception-caughtCODE
LOW…ools/input_schemas/schema_callback_type_annotations.py42 except Exception: # pylint: disable=broad-exception-caughtCODE
LOW…h/mcp/primitives/tools/results/result_plotly_figure.py33 except Exception: # pylint: disable=broad-exception-caughtCODE
LOWdash/testing/application_runners.py221 except Exception as error:CODE
LOWdash/testing/application_runners.py243 except Exception as err: # pylint: disable=broad-exceptCODE
LOWdash/testing/application_runners.py305 except Exception as error:CODE
LOWdash/testing/browser.py206 except Exception as err: # pylint: disable=broad-exception-caughtCODE
LOWdash/testing/browser.py288 except Exception as err:CODE
LOWdash/testing/browser.py533 except Exception as e: # pylint: disable=broad-exception-caughtCODE
MEDIUMdash/testing/browser.py91def __exit__(self, exc_type, exc_val, traceback):CODE
LOWdash/testing/plugin.py132 except Exception as e: # pylint: disable=broad-exceptCODE
LOWdash/background_callback/managers/diskcache_manager.py170 except Exception as e:CODE
LOWdash/background_callback/managers/diskcache_manager.py251 except Exception as err: # pylint: disable=broad-exceptCODE
LOWdash/background_callback/managers/diskcache_manager.py287 except Exception as err: # pylint: disable=broad-exceptCODE
LOWdash/background_callback/managers/diskcache_manager.py304 except Exception as err: # pylint: disable=broad-exceptCODE
LOWdash/background_callback/managers/celery_manager.py197 except Exception as err: # pylint: disable=broad-exceptCODE
LOWdash/background_callback/managers/celery_manager.py243 except Exception as err: # pylint: disable=broad-exceptCODE
Deep Nesting59 hits · 59 pts
SeverityFileLineSnippetContext
LOWtests/unit/library/fixtures.py26CODE
LOWtests/backend_tests/test_custom_backend.py13CODE
LOWtests/compliance/test_typing.py68CODE
LOWtests/background_callback/utils.py77CODE
LOWtests/async_tests/utils.py77CODE
LOWcomponents/dash-table/tests/selenium/test_column.py220CODE
LOWcomponents/dash-table/tests/selenium/test_filter2.py12CODE
LOWcomponents/dash-table/tests/selenium/test_formatting.py9CODE
LOWdash/_callback.py610CODE
LOWdash/_callback.py665CODE
LOWdash/_grouping.py20CODE
LOWdash/dash.py1188CODE
LOWdash/dash.py1624CODE
LOWdash/dash.py1702CODE
LOWdash/dash.py1796CODE
LOWdash/dash.py2085CODE
LOWdash/dash.py2323CODE
LOWdash/dash.py2375CODE
LOWdash/_layout_utils.py193CODE
LOWdash/_layout_utils.py216CODE
LOWdash/_watch.py7CODE
LOWdash/_watch.py11CODE
LOWdash/_validate.py215CODE
LOWdash/_validate.py613CODE
LOWdash/_validate.py274CODE
LOWdash/resources.py50CODE
LOWdash/_jupyter.py490CODE
LOWdash/_utils.py146CODE
LOWdash/_pages.py416CODE
LOWdash/development/_collect_nodes.py9CODE
LOWdash/development/_collect_nodes.py22CODE
LOWdash/development/_collect_nodes.py35CODE
LOWdash/development/_collect_nodes.py49CODE
LOWdash/development/base_component.py158CODE
LOWdash/development/base_component.py298CODE
LOWdash/development/base_component.py395CODE
LOWdash/development/base_component.py430CODE
LOWdash/development/_jl_components_generation.py184CODE
LOWdash/development/_r_components_generation.py788CODE
LOWdash/development/_py_components_generation.py468CODE
LOWdash/development/build_process.py110CODE
LOWdash/backends/_fastapi.py74CODE
LOWdash/backends/_fastapi.py386CODE
LOWdash/backends/_fastapi.py628CODE
LOWdash/backends/_fastapi.py684CODE
LOWdash/backends/_fastapi.py715CODE
LOWdash/backends/_quart.py522CODE
LOWdash/backends/_quart.py537CODE
LOWdash/backends/_utils.py5CODE
LOWdash/mcp/primitives/tools/callback_adapter.py433CODE
LOWdash/mcp/primitives/tools/callback_adapter.py66CODE
LOWdash/mcp/primitives/tools/callback_adapter.py239CODE
LOWdash/mcp/primitives/tools/callback_adapter.py311CODE
LOW…sh/mcp/primitives/tools/callback_adapter_collection.py156CODE
LOWdash/testing/application_runners.py199CODE
LOWdash/testing/application_runners.py413CODE
LOWdash/testing/application_runners.py511CODE
LOWdash/testing/plugin.py119CODE
LOWdash/background_callback/managers/diskcache_manager.py63CODE
Synthetic Comment Markers5 hits · 28 pts
SeverityFileLineSnippetContext
HIGHCHANGELOG.md1087- [#2009](https://github.com/plotly/dash/pull/2009) Add support for Promises within Client-side callbacks as requested iCODE
HIGHCHANGELOG.md1087- [#2009](https://github.com/plotly/dash/pull/2009) Add support for Promises within Client-side callbacks as requested iCODE
HIGHCHANGELOG.md1215- [#1883](https://github.com/plotly/dash/pull/1883) in DataTable added `page_current` to `persisted_props` as requested CODE
HIGHCHANGELOG.md1215- [#1883](https://github.com/plotly/dash/pull/1883) in DataTable added `page_current` to `persisted_props` as requested CODE
HIGH…ore-components/tests/unit/computeSliderMarkers.test.ts4 * File is largely generated by ClaudeCOMMENT
Hallucination Indicators2 hits · 20 pts
SeverityFileLineSnippetContext
CRITICAL…sh-html-components/vignettes/dash-html-components.html20return new Za.prototype.init(a,b,c,d,e)}m.Tween=Za,Za.prototype={constructor:Za,init:function(a,b,c,d,e,f){this.elem=a,tCODE
CRITICALcomponents/dash-table/tests/selenium/conftest.py388 self.mixin.driver.switch_to.active_element.send_keys(value + Keys.ENTER)CODE
Modern Structural Boilerplate17 hits · 17 pts
SeverityFileLineSnippetContext
LOW…ash-core-components/tests/dash_core_components_page.py8logger = logging.getLogger(__name__)CODE
LOWdash/__init__.py62__all__ = [CODE
LOWdash/development/update_components.py17logger = logging.getLogger(__name__)CODE
LOWdash/development/build_process.py13logger = logging.getLogger(__name__)CODE
LOWdash/backends/_fastapi.py145 async def _setup_timing(self, request: Request) -> None:CODE
LOWdash/backends/__init__.py72__all__ = [CODE
LOWdash/backends/ws.py118 def set_prop_sync(self, component_id: str, prop_name: str, value: Any) -> None:CODE
LOWdash/backends/ws.py137 async def set_prop(self, component_id: str, prop_name: str, value: Any) -> None:CODE
LOWdash/mcp/__init__.py7__all__ = [CODE
LOWdash/mcp/_server.py47logger = logging.getLogger(__name__)CODE
LOWdash/mcp/tasks/__init__.py5__all__ = ["create_task", "get_task", "get_task_result", "cancel_task"]CODE
LOWdash/mcp/types/__init__.py42__all__ = [CODE
LOWdash/mcp/primitives/__init__.py11__all__ = [CODE
LOW…h/mcp/primitives/tools/results/result_plotly_figure.py17logger = logging.getLogger(__name__)CODE
LOWdash/testing/application_runners.py29logger = logging.getLogger(__name__)CODE
LOWdash/testing/wait.py11logger = logging.getLogger(__name__)CODE
LOWdash/testing/browser.py35logger = logging.getLogger(__name__)CODE
Redundant / Tautological Comments11 hits · 14 pts
SeverityFileLineSnippetContext
LOWtests/compliance/test_typing.py89 # Check if dash is installed as editable or regular install.STRING
LOW…ore-components/tests/integration/dropdown/test_a11y.py809 # Check if the given elements are within the visible viewport of the dropdownCOMMENT
LOW…h-core-components/dash_core_components_base/express.py19 # Read the file contents and send it.COMMENT
LOW…h-core-components/dash_core_components_base/express.py84 # Check if the provided writer is known.COMMENT
LOWdash/_callback.py52 # Check if the function is a coroutine functionCOMMENT
LOWdash/fingerprint.py20 # Check if the resource has a fingerprintCOMMENT
LOWdash/dash.py221 # Check if the function is a coroutine functionSTRING
LOWdash/dash.py1820 # Check if any level of current path matches ignore pathCOMMENT
LOWdash/backends/_fastapi.py391 # Check if we're running in a thread (e.g., from testing framework)COMMENT
LOWdash/backends/_fastapi.py409 # Check if the file is outside the current working directoryCOMMENT
LOWdash/backends/_quart.py274 # Check if we're running in a non-main thread (e.g., testing context)COMMENT
AI Structural Patterns12 hits · 12 pts
SeverityFileLineSnippetContext
LOWtests/unit/development/metadata_test.py137CODE
LOWtests/background_callback/app_ctx_cookies.py39CODE
LOWdash/_callback.py74CODE
LOWdash/_callback.py299CODE
LOWdash/dash.py447CODE
LOWdash/dash.py1434CODE
LOWdash/dash.py2085CODE
LOWdash/dash.py2375CODE
LOWdash/_pages.py159CODE
LOWdash/development/component_generator.py40CODE
LOWdash/development/_py_components_generation.py344CODE
LOWdash/testing/browser.py42CODE
Fake / Example Data12 hits · 12 pts
SeverityFileLineSnippetContext
LOWtests/integration/mcp/test_mcp_callback_behavior.py267 dash_duo.wait_for_text_to_equal("#out", "Jane Doe")CODE
LOWtests/integration/mcp/test_mcp_callback_behavior.py281 assert response["out"]["children"] == "Jane Doe"CODE
LOW…nents/dash-core-components/src/components/Textarea.tsx17 'placeholder',CODE
LOW…mponents/dash-core-components/src/components/Input.tsx30 'placeholder',CODE
LOWcomponents/dash-html-components/dash-info.yaml1594 htmlNobr("Lorem ipsum dolor sit amet,CODE
LOWcomponents/dash-html-components/dash-info.yaml1594 htmlNobr("Lorem ipsum dolor sit amet,CODE
LOW…nts/dash-html-components/scripts/extract-attributes.js26'noValidate', 'nonce', 'open', 'optimum', 'pattern', 'placeholder', 'playsInline', 'poster',CODE
LOW…ents/dash-html-components/scripts/data/attributes.json485 "placeholder": {CODE
LOW…ents/dash-html-components/scripts/data/attributes.json793 "placeholder",CODE
LOW…ents/dash-html-components/scripts/data/attributes.json824 "placeholder",CODE
LOWcomponents/dash-table/tests/selenium/conftest.py394 .get_attribute("placeholder")CODE
LOWcomponents/dash-table/tests/selenium/conftest.py468 ).get_attribute("placeholder")CODE
Self-Referential Comments4 hits · 10 pts
SeverityFileLineSnippetContext
MEDIUMcomponents/dash-core-components/dash_prop_typing.py1# This file is automatically loaded on build time to generate types.COMMENT
MEDIUMcomponents/dash-table/dash_prop_typing.py1# This file is automatically loaded on build time to generate types.COMMENT
MEDIUMdash/_callback.py1027 # Create a hash from the function, it will be the same alwaysSTRING
MEDIUMdash/background_callback/managers/diskcache_manager.py160 # Create a new event loop for the processCOMMENT
Docstring Block Structure2 hits · 10 pts
SeverityFileLineSnippetContext
HIGHdash/_compression.py18 Decompress a gzip-compressed callback request body. The data is expected to be the raw bytes of a gzip-compresSTRING
HIGHdash/backends/ws.py152Request current prop value from the client. On the event-loop path (``self._loop`` set, async callbacks) the waSTRING
Over-Commented Block9 hits · 9 pts
SeverityFileLineSnippetContext
LOWtests/unit/pages/sub_dir/custom_pages/__init__.py1# this directory is used for testing custom values of `pages_folder` param thatCOMMENT
LOWtests/unit/pages/custom_pages/__init__.py1# this directory is used for testing custom values of `pages_folder` param thatCOMMENT
LOWtests/async_tests/test_async_callbacks.py321 dash_duo.wait_for_text_to_equal("#out", str(i + 1))COMMENT
LOWcomponents/dash-table/tests/selenium/test_bootstrap.py1# import dashCOMMENT
LOWcomponents/dash-table/tests/selenium/test_bootstrap.py21# columns=[COMMENT
LOWcomponents/dash-table/tests/selenium/test_bootstrap.py41# )COMMENT
LOWcomponents/dash-table/tests/selenium/test_bootstrap.py61# test,COMMENT
LOWdash/_utils.py461 # importable (e.g. a namespace package or a parent __init__ that errors)COMMENT
LOWdash/dash-renderer/src/actions/dependencies.js1621 // The patch itself tells us which components it created, includingCOMMENT
AI Slop Vocabulary1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMcomponents/dash-table/dash-info.yaml19 # For comprehensive documentation of this package's features,COMMENT
Dead Code1 hit · 2 pts
SeverityFileLineSnippetContext
MEDIUMtests/integration/callbacks/test_prevent_update.py37CODE
Slop Phrases1 hit · 2 pts
SeverityFileLineSnippetContext
LOWdash/__init__.py2# __plotly_dash is for the "make sure you don't have a dash.py" checkCOMMENT