Data Apps & Dashboards for Python. No JavaScript Required.
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).
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 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.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/unit/mcp/test_mcp_session.py | 28 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/mcp/test_mcp_session.py | 30 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/mcp/test_mcp_server.py | 10 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/mcp/test_mcp_server.py | 12 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/mcp/test_mcp_server.py | 48 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/mcp/test_mcp_server.py | 50 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/mcp/test_mcp_configure.py | 36 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/mcp/test_mcp_configure.py | 38 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/mcp/test_mcp_configure.py | 78 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/mcp/test_mcp_configure.py | 80 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/mcp/test_mcp_configure.py | 105 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/mcp/test_mcp_configure.py | 107 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/mcp/test_mcp_configure.py | 126 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/mcp/test_mcp_configure.py | 128 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/mcp/test_mcp_configure.py | 143 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/mcp/test_mcp_configure.py | 145 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/mcp/test_mcp_configure.py | 176 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/mcp/test_mcp_configure.py | 178 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/mcp/test_mcp_configure.py | 211 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/mcp/test_mcp_configure.py | 213 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/mcp/test_mcp_configure.py | 228 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/mcp/test_mcp_configure.py | 230 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/mcp/test_mcp_configure.py | 250 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/mcp/test_mcp_configure.py | 252 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/mcp/tools/test_mcp_pattern_matching.py | 14 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/mcp/tools/test_mcp_pattern_matching.py | 16 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/mcp/tools/test_mcp_pattern_matching.py | 90 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/mcp/tools/test_mcp_pattern_matching.py | 92 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/mcp/tools/test_mcp_tools.py | 29 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/mcp/tools/test_mcp_tools.py | 31 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/mcp/tools/test_mcp_tools.py | 142 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/mcp/tools/test_mcp_tools.py | 144 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/mcp/tools/test_mcp_tools.py | 202 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/mcp/tools/test_mcp_tools.py | 204 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/mcp/tools/test_mcp_tools.py | 217 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/mcp/tools/test_mcp_tools.py | 219 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/mcp/tools/test_mcp_tools.py | 312 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/mcp/tools/test_mcp_tools.py | 314 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/mcp/tools/test_mcp_background_callbacks.py | 41 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/mcp/tools/test_mcp_background_callbacks.py | 43 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/mcp/tools/test_mcp_background_callbacks.py | 105 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/mcp/tools/test_mcp_background_callbacks.py | 107 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/mcp/tools/test_mcp_background_callbacks.py | 196 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/mcp/tools/test_mcp_background_callbacks.py | 198 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/mcp/tools/test_mcp_background_callbacks.py | 260 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/mcp/tools/test_mcp_background_callbacks.py | 262 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …ts/unit/mcp/tools/test_mcp_formatted_output_results.py | 26 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …ts/unit/mcp/tools/test_mcp_formatted_output_results.py | 28 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …ts/unit/mcp/tools/test_mcp_formatted_output_results.py | 79 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …ts/unit/mcp/tools/test_mcp_formatted_output_results.py | 81 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …ts/unit/mcp/tools/test_mcp_formatted_output_results.py | 168 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …ts/unit/mcp/tools/test_mcp_formatted_output_results.py | 170 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …ts/unit/mcp/tools/test_mcp_formatted_output_results.py | 204 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …ts/unit/mcp/tools/test_mcp_formatted_output_results.py | 206 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/mcp/tools/test_mcp_input_descriptions.py | 24 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/mcp/tools/test_mcp_input_descriptions.py | 26 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/mcp/tools/test_mcp_input_descriptions.py | 48 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/mcp/tools/test_mcp_input_descriptions.py | 50 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/mcp/tools/test_mcp_input_descriptions.py | 192 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/mcp/tools/test_mcp_input_descriptions.py | 194 | # --------------------------------------------------------------------------- | COMMENT |
| 66 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tests/unit/test_configs.py | 79 | def test_pathname_prefix_from_environ_app_name(empty_environ): | CODE |
| LOW⚡ | tests/unit/test_configs.py | 86 | def test_pathname_prefix_environ_routes(empty_environ): | CODE |
| LOW⚡ | tests/unit/test_configs.py | 92 | def test_pathname_prefix_environ_requests(empty_environ): | CODE |
| LOW⚡ | tests/unit/test_configs.py | 488 | def test_debug_mode_enable_dev_tools(empty_environ, debug_env, debug, expected): | CODE |
| LOW⚡ | tests/unit/test_configs.py | 496 | def test_missing_flask_compress_raises(): | CODE |
| LOW⚡ | tests/unit/test_configs.py | 501 | def test_csrf_config_defaults(): | CODE |
| LOW⚡ | tests/unit/test_configs.py | 532 | def test_csrf_config_validation(token_name, header_name): | CODE |
| LOW⚡ | tests/unit/test_configs.py | 537 | def test_csrf_config_read_only(): | CODE |
| LOW⚡ | tests/unit/test_configs.py | 545 | def test_init_app_with_flask_run_pattern(): | CODE |
| LOW | tests/unit/test_configs.py | 44 | def test_valid_pathname_prefix_init( | CODE |
| LOW | tests/unit/test_configs.py | 56 | def test_invalid_pathname_prefix(empty_environ): | CODE |
| LOW | tests/unit/test_configs.py | 106 | def test_pathname_prefix_assets(empty_environ, req, expected): | CODE |
| LOW | tests/unit/test_configs.py | 189 | def test_get_combined_config_dev_tools_ui(empty_environ): | CODE |
| LOW | tests/unit/test_configs.py | 203 | def test_get_combined_config_props_check(empty_environ): | CODE |
| LOW | tests/unit/test_configs.py | 217 | def test_load_dash_env_vars_refects_to_os_environ(empty_environ): | CODE |
| LOW | tests/unit/test_configs.py | 258 | def test_pathname_prefix_relative_url(prefix, partial_path, expected): | CODE |
| LOW | tests/unit/test_configs.py | 267 | def test_invalid_get_relative_path(prefix, partial_path): | CODE |
| LOW | tests/unit/test_configs.py | 309 | def test_invalid_strip_relative_path(prefix, partial_path): | CODE |
| LOW | tests/unit/test_configs.py | 383 | def test_proxy_jupyter_server_url(mocker, empty_environ): | CODE |
| LOW | tests/unit/test_configs.py | 445 | def test_app_invalid_delayed_config(): | CODE |
| LOW | tests/unit/test_configs.py | 521 | def test_csrf_config_in_index(): | CODE |
| LOW | tests/unit/test_configs.py | 567 | def test_init_app_server_false_pattern(): | CODE |
| LOW | tests/unit/test_resources.py | 107 | def test_collect_and_register_resources(mocker): | CODE |
| LOW | tests/unit/test_resources.py | 127 | def test_resources_with_attributes(): | CODE |
| LOW | tests/unit/test_resources.py | 160 | def test_css_resources_with_attributes(): | CODE |
| LOW | tests/unit/test_resources.py | 187 | def test_resources_without_attributes(): | CODE |
| LOW | tests/unit/test_resources.py | 200 | def test_local_resources_with_attributes(mocker): | CODE |
| LOW | tests/unit/test_resources.py | 235 | def test_multiple_external_urls_with_attributes(): | CODE |
| LOW | tests/unit/test_main_module_alias.py | 49 | def test_main_module_alias_prevents_double_registration(tmp_path, monkeypatch): | CODE |
| LOW | tests/unit/test_main_module_alias.py | 103 | def test_main_module_alias_prevents_double_registration_nested(tmp_path, monkeypatch): | STRING |
| LOW | tests/unit/test_main_module_alias.py | 148 | def test_no_alias_when_names_collide(tmp_path, monkeypatch): | CODE |
| LOW⚡ | tests/unit/test_pydantic_types.py | 10 | def test_json_schema_is_number(self): | CODE |
| LOW⚡ | tests/unit/test_pydantic_types.py | 16 | def test_produces_object_schema(self): | CODE |
| LOW⚡ | tests/unit/test_pydantic_types.py | 21 | def test_schema_has_type_and_props(self): | CODE |
| LOW⚡ | tests/unit/test_pydantic_types.py | 29 | def test_dispatch_body_schema(self): | CODE |
| LOW⚡ | tests/unit/test_pydantic_types.py | 34 | def test_dispatch_response_schema(self): | CODE |
| LOW | tests/unit/test_app_runners.py | 15 | def test_threaded_server_smoke(dash_thread_server): | CODE |
| LOW | tests/unit/test_app_runners.py | 30 | def test_threaded_server_wrapped_fastapi(monkeypatch): | CODE |
| LOW | tests/unit/test_app_runners.py | 64 | def test_process_server_smoke(dash_process_server): | CODE |
| LOW | tests/unit/test_app_runners.py | 86 | def test_run_app_uses_backend_type(server_type, expected_options): | CODE |
| LOW | tests/unit/test_health_endpoint_unit.py | 42 | def test_health_respects_routes_pathname_prefix(): | CODE |
| LOW | tests/unit/test_health_endpoint_unit.py | 54 | def test_health_custom_nested_path(): | CODE |
| LOW | tests/unit/test_browser.py | 21 | def test_browser_use_remote_webdriver(tmpdir): | CODE |
| LOW | tests/unit/test_async_background_callback_job_fn.py | 63 | def test_diskcache_async_job_fn_exception_is_reported(): | CODE |
| LOW⚡ | tests/unit/test_async_background_callback_job_fn.py | 74 | def test_diskcache_async_job_fn_prevent_update_is_reported(): | CODE |
| LOW⚡ | tests/unit/test_async_background_callback_job_fn.py | 84 | def test_diskcache_async_job_fn_success_is_reported(): | CODE |
| LOW⚡ | tests/unit/test_async_background_callback_job_fn.py | 94 | def test_celery_async_job_fn_exception_is_reported(): | CODE |
| LOW | tests/unit/test_async_background_callback_job_fn.py | 105 | def test_celery_async_job_fn_prevent_update_is_reported(): | CODE |
| LOW | tests/unit/test_async_background_callback_job_fn.py | 115 | def test_celery_async_job_fn_success_is_reported(): | CODE |
| LOW | tests/unit/test_payload_compression.py | 19 | def test_compressed_roundtrip(self): | CODE |
| LOW | tests/unit/test_payload_compression.py | 27 | def test_decompressed_payload_exceeds_size_limit(self): | CODE |
| LOW | tests/unit/test_payload_compression.py | 38 | def test_decompress_invalid_raises(self, bad_data): | CODE |
| LOW | tests/unit/test_payload_compression.py | 42 | def test_decompress_valid_gzip_invalid_json_raises(self): | CODE |
| LOW⚡ | tests/unit/test_partial_matching.py | 9 | def test_partial_subset_keys_match(self): | CODE |
| LOW⚡ | tests/unit/test_partial_matching.py | 15 | def test_partial_subset_keys_no_match_value(self): | CODE |
| LOW⚡ | tests/unit/test_partial_matching.py | 21 | def test_partial_wildcard_match(self): | CODE |
| LOW⚡ | tests/unit/test_partial_matching.py | 27 | def test_partial_all_wildcard(self): | CODE |
| LOW⚡ | tests/unit/test_partial_matching.py | 33 | def test_partial_no_common_keys(self): | CODE |
| LOW⚡ | tests/unit/test_partial_matching.py | 39 | def test_partial_exact_same_keys(self): | CODE |
| LOW⚡ | tests/unit/test_partial_matching.py | 45 | def test_non_partial_different_keys_no_match(self): | CODE |
| 269 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH⚡ | tests/unit/mcp/tools/test_mcp_input_schemas.py | 41 | """``{anyOf: [*schemas, {type: null}]}`` — a common nullable-type shape.""" | STRING |
| HIGH | tests/backend_tests/test_preconfig_backends.py | 32 | window._lastResponseHeaders = null; | STRING |
| HIGH | tests/integration/callbacks/test_wildcards.py | 905 | unchanged, both sides are undefined, so its initial call is dropped | STRING |
| HIGH | tests/integration/callbacks/test_basic_callback.py | 462 | dash_duo.wait_for_text_to_equal("#output", '[null, null, "A"]') | CODE |
| HIGH | tests/integration/callbacks/test_basic_callback.py | 465 | dash_duo.wait_for_text_to_equal("#output", '[null, 1, "A"]') | CODE |
| HIGH | tests/integration/callbacks/test_callback_context.py | 91 | '[{"prop_id": ".", "value": null}]', | CODE |
| HIGH | …_clientside_multiple_output_return_single_no_update.py | 26 | return [null, null]; | STRING |
| HIGH⚡ | tests/integration/clientside/test_clientside.py | 417 | "btn0.n_clicks = null, " | CODE |
| HIGH⚡ | tests/integration/clientside/test_clientside.py | 418 | '{"btn1":0}.n_clicks = null, ' | CODE |
| HIGH⚡ | tests/integration/clientside/test_clientside.py | 419 | '{"btn1":1}.n_clicks = null, ' | CODE |
| HIGH | tests/integration/clientside/test_clientside.py | 430 | '{"btn1":0}.n_clicks = null, ' | CODE |
| HIGH | tests/integration/clientside/test_clientside.py | 431 | '{"btn1":1}.n_clicks = null, ' | CODE |
| HIGH | tests/integration/clientside/test_clientside.py | 444 | '{"btn1":1}.n_clicks = null, ' | CODE |
| HIGH | tests/integration/clientside/test_clientside.py | 456 | '{"btn1":1}.n_clicks = null, ' | CODE |
| HIGH⚡ | tests/integration/clientside/test_clientside.py | 556 | "in0.value = null, " | CODE |
| HIGH⚡ | tests/integration/clientside/test_clientside.py | 557 | '{"in1":0}.value = null, ' | CODE |
| HIGH⚡ | tests/integration/clientside/test_clientside.py | 558 | '{"in1":1}.value = null, ' | CODE |
| HIGH | tests/integration/clientside/test_clientside.py | 569 | '{"in1":0}.value = null, ' | CODE |
| HIGH | tests/integration/clientside/test_clientside.py | 570 | '{"in1":1}.value = null, ' | CODE |
| HIGH | tests/integration/clientside/test_clientside.py | 582 | '{"in1":1}.value = null, ' | CODE |
| HIGH | tests/integration/clientside/test_clientside.py | 594 | '{"in1":1}.value = null, ' | CODE |
| HIGH | tests/async_tests/test_async_callbacks.py | 471 | dash_duo.wait_for_text_to_equal("#output", '[null, null, "A"]') | CODE |
| HIGH | tests/async_tests/test_async_callbacks.py | 474 | dash_duo.wait_for_text_to_equal("#output", '[null, 1, "A"]') | CODE |
| HIGH | …ore-components/tests/integration/dropdown/test_a11y.py | 347 | return dropdownContent && dropdownContent.contains(activeElement); | STRING |
| HIGH | …ore-components/tests/integration/dropdown/test_a11y.py | 414 | if (focused && focused.closest('.dash-options-list-option')) { | STRING |
| HIGH | …ore-components/tests/integration/dropdown/test_a11y.py | 417 | return null; | STRING |
| HIGH | …ts/tests/integration/loading/test_loading_component.py | 264 | "return gd_ === window.gd && gd_.__test__ === 'boo';" | CODE |
| HIGH | …-components/tests/integration/input/test_a11y_input.py | 66 | return container === activeElement || container.contains(activeElement); | STRING |
| HIGH | …s/tests/integration/location/test_location_callback.py | 173 | window._test_link_event_counter = (window._test_link_event_counter || 0) + 1; | STRING |
| HIGH | …s/tests/integration/location/test_location_callback.py | 177 | window._test_history_event_counter = (window._test_history_event_counter || 0) + 1; | STRING |
| HIGH | …nents/tests/integration/graph/test_graph_responsive.py | 109 | # responsive=true will make the graph resize only if autosize=true|undefined, interestingly enough, responsive=undef | COMMENT |
| HIGH⚡ | …components/tests/integration/graph/test_graph_varia.py | 765 | figure.layout.title = {text: String(n_fig || 0)}; | CODE |
| HIGH⚡ | …components/tests/integration/graph/test_graph_varia.py | 773 | layout: {width: 300, height: 250, title: {text: String(n_fig || 0)}} | CODE |
| HIGH⚡ | …components/tests/integration/graph/test_graph_varia.py | 783 | let responsive = [true, false, 'auto'][(n_resp || 0) % 3]; | CODE |
| HIGH⚡ | …components/tests/integration/graph/test_graph_varia.py | 784 | return [new_figure, responsive, (n_fig || 0) + ' ' + responsive]; | CODE |
| HIGH | …e-components/tests/integration/link/test_link_event.py | 30 | window._test_link_event_counter = (window._test_link_event_counter || 0) + 1; | STRING |
| HIGH | …e-components/tests/integration/link/test_link_event.py | 34 | window._test_history_event_counter = (window._test_history_event_counter || 0) + 1; | STRING |
| HIGH | …/tests/integration/download/test_download_dataframe.py | 51 | assert df.columns.equals(df_download.columns) | CODE |
| HIGH | …/tests/integration/download/test_download_dataframe.py | 52 | assert df.index.equals(df_download.index) | CODE |
| HIGH⚡ | …onents/tests/integration/store/test_component_props.py | 179 | "#output", '[{"n_clicks": null}, {"n_clicks": null}, {"n_clicks": null}]' | CODE |
| HIGH⚡ | …onents/tests/integration/store/test_component_props.py | 188 | dash_dcc.wait_for_text_to_equal("#output", "[null, null, null]") | CODE |
| HIGH⚡ | …onents/tests/integration/store/test_component_props.py | 198 | "#output", '[{"n_clicks": null}, {"n_clicks": null}, {"n_clicks": null}]' | CODE |
| HIGH | components/dash-table/tests/selenium/test_export.py | 28 | assert df_bis.equals(df) | CODE |
| HIGH | dash/development/base_component.py | 373 | # A component's children can be undefined, a string, another component, | COMMENT |
| HIGH | dash/development/_r_components_generation.py | 22 | props <- props[!vapply(props, is.null, logical(1))] | CODE |
| HIGH | dash/testing/browser.py | 192 | stash.push(c); | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/utils.py | 4 | CODE | |
| LOW | tests/unit/test_resources.py | 3 | CODE | |
| LOW | tests/integration/test_legacy_components.py | 7 | CODE | |
| LOW | tests/integration/dash/org.py | 3 | CODE | |
| LOW | @plotly/dash-test-components/base/__init__.py | 12 | CODE | |
| LOW | …h-generator-test-component-typescript/base/__init__.py | 12 | CODE | |
| LOW | …ash-generator-test-component-standard/base/__init__.py | 12 | CODE | |
| LOW | …/dash-generator-test-component-nested/base/__init__.py | 12 | CODE | |
| LOW | …-core-components/dash_core_components_base/__init__.py | 7 | CODE | |
| LOW | …-core-components/dash_core_components_base/__init__.py | 9 | CODE | |
| LOW | …-core-components/dash_core_components_base/__init__.py | 9 | CODE | |
| LOW | …-core-components/dash_core_components_base/__init__.py | 9 | CODE | |
| LOW | …-core-components/dash_core_components_base/__init__.py | 9 | CODE | |
| LOW | components/dash-html-components/tests/utils.py | 1 | CODE | |
| LOW | …-html-components/dash_html_components_base/__init__.py | 3 | CODE | |
| LOW | components/dash-table/dash_table_base/__init__.py | 18 | CODE | |
| LOW | components/dash-table/dash_table_base/__init__.py | 20 | CODE | |
| LOW | components/dash-table/dash_table_base/__init__.py | 21 | CODE | |
| LOW | dash/__init__.py | 5 | CODE | |
| LOW | dash/__init__.py | 5 | CODE | |
| LOW | dash/__init__.py | 5 | CODE | |
| LOW | dash/__init__.py | 5 | CODE | |
| LOW | dash/__init__.py | 5 | CODE | |
| LOW | dash/__init__.py | 5 | CODE | |
| LOW | dash/__init__.py | 5 | CODE | |
| LOW | dash/__init__.py | 14 | CODE | |
| LOW | dash/__init__.py | 15 | CODE | |
| LOW | dash/__init__.py | 16 | CODE | |
| LOW | dash/__init__.py | 17 | CODE | |
| LOW | dash/__init__.py | 18 | CODE | |
| LOW | dash/__init__.py | 19 | CODE | |
| LOW | dash/__init__.py | 20 | CODE | |
| LOW | dash/__init__.py | 21 | CODE | |
| LOW | dash/__init__.py | 22 | CODE | |
| LOW | dash/__init__.py | 22 | CODE | |
| LOW | dash/__init__.py | 23 | CODE | |
| LOW | dash/__init__.py | 24 | CODE | |
| LOW | dash/__init__.py | 24 | CODE | |
| LOW | dash/__init__.py | 24 | CODE | |
| LOW | dash/__init__.py | 29 | CODE | |
| LOW | dash/__init__.py | 30 | CODE | |
| LOW | dash/__init__.py | 30 | CODE | |
| LOW | dash/__init__.py | 34 | CODE | |
| LOW | dash/__init__.py | 37 | CODE | |
| LOW | dash/__init__.py | 37 | CODE | |
| LOW | dash/__init__.py | 38 | CODE | |
| LOW | dash/__init__.py | 38 | CODE | |
| LOW | dash/__init__.py | 38 | CODE | |
| LOW | dash/__init__.py | 43 | CODE | |
| LOW | dash/__init__.py | 44 | CODE | |
| LOW | dash/__init__.py | 46 | CODE | |
| LOW | dash/dash.py | 1077 | CODE | |
| LOW | dash/_layout_utils.py | 3 | CODE | |
| LOW | dash/_validate.py | 598 | CODE | |
| LOW | dash/_validate.py | 605 | CODE | |
| LOW | dash/_jupyter.py | 396 | CODE | |
| LOW | dash/development/__init__.py | 1 | CODE | |
| LOW | dash/backends/base_server.py | 6 | CODE | |
| LOW | dash/backends/base_server.py | 21 | CODE | |
| LOW | dash/backends/_flask.py | 1 | CODE | |
| 104 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/backend_tests/test_threaded_runner_stop.py | 73 | except Exception: # pylint: disable=broad-except | CODE |
| LOW | tests/integration/test_hooks.py | 260 | except Exception: | CODE |
| LOW | tests/integration/test_hooks.py | 269 | except Exception: | CODE |
| LOW | tests/integration/test_hooks.py | 282 | except Exception as err: | CODE |
| MEDIUM | tests/integration/test_hooks.py | 256 | def layout_hook(layout): | CODE |
| MEDIUM | tests/integration/test_hooks.py | 265 | def error_hook(error): | CODE |
| MEDIUM | tests/integration/test_hooks.py | 277 | def callback_hook(n_clicks): | CODE |
| LOW | …ents/tests/integration/misc/test_popover_visibility.py | 35 | except Exception as e: | CODE |
| LOW | …e-components/tests/integration/calendar/test_portal.py | 44 | except Exception as e: | CODE |
| LOW | …components/tests/integration/graph/test_graph_varia.py | 601 | except Exception as e: | CODE |
| LOW | dash/_callback.py | 863 | except Exception as err: # pylint: disable=broad-exception-caught | CODE |
| LOW | dash/_callback.py | 936 | except Exception as err: # pylint: disable=broad-exception-caught | CODE |
| LOW | dash/_compression.py | 47 | except Exception as e: | CODE |
| LOW | dash/dash.py | 858 | except Exception as e: # pylint: disable=broad-exception-caught | CODE |
| LOW | dash/dash.py | 1028 | except Exception: # pylint: disable=broad-except | CODE |
| LOW | dash/dash.py | 2549 | except Exception as e: | CODE |
| LOW | dash/_jupyter.py | 415 | except Exception as error: | CODE |
| LOW | dash/_jupyter.py | 469 | except Exception as final_error: # pylint: disable=broad-except | CODE |
| MEDIUM | dash/_jupyter.py | 410 | def run(): | CODE |
| LOW | dash/_utils.py | 247 | except Exception: # pylint: disable=broad-except | CODE |
| LOW | dash/backends/_fastapi.py | 155 | except Exception: # pylint: disable=broad-exception-caught | CODE |
| LOW | dash/backends/_fastapi.py | 216 | except Exception: # pylint: disable=broad-exception-caught | CODE |
| LOW | dash/backends/_fastapi.py | 252 | except Exception as e: # pylint: disable=W0718 | CODE |
| LOW | dash/backends/_fastapi.py | 348 | except Exception: # pylint: disable=broad-exception-caught | CODE |
| LOW | dash/backends/_fastapi.py | 680 | except Exception: # pylint: disable=broad-exception-caught | CODE |
| MEDIUM | dash/backends/_fastapi.py | 335 | def _setup_catchall(self): | CODE |
| LOW | dash/backends/_quart.py | 502 | except Exception: # pylint: disable=broad-exception-caught | CODE |
| LOW | dash/backends/_quart.py | 700 | except Exception: # pylint: disable=broad-exception-caught | CODE |
| LOW | dash/backends/ws.py | 350 | except Exception: # pylint: disable=broad-exception-caught | CODE |
| LOW | dash/backends/ws.py | 378 | except Exception: # pylint: disable=broad-exception-caught | CODE |
| LOW | dash/backends/ws.py | 482 | except Exception as e: # pylint: disable=broad-exception-caught | CODE |
| LOW | dash/backends/ws.py | 580 | except Exception as e: # pylint: disable=broad-exception-caught | CODE |
| LOW | dash/backends/ws.py | 625 | except Exception as e: # pylint: disable=broad-exception-caught | CODE |
| MEDIUM | dash/backends/ws.py | 559 | def execute() -> dict: | CODE |
| LOW | dash/mcp/_server.py | 305 | except Exception as e: # pylint: disable=broad-exception-caught | CODE |
| LOW | …h/mcp/primitives/tools/tool_decorated_mcp_functions.py | 28 | except Exception: # pylint: disable=broad-exception-caught | CODE |
| LOW | …h/mcp/primitives/tools/tool_decorated_mcp_functions.py | 67 | except Exception: # pylint: disable=broad-exception-caught | CODE |
| LOW | …h/mcp/primitives/tools/tool_decorated_mcp_functions.py | 141 | except Exception as exc: # pylint: disable=broad-exception-caught | CODE |
| LOW | dash/mcp/primitives/tools/callback_utils.py | 36 | except Exception as err: | CODE |
| LOW | dash/mcp/primitives/tools/callback_adapter.py | 205 | except Exception: # pylint: disable=broad-exception-caught | CODE |
| LOW | dash/mcp/primitives/tools/callback_adapter.py | 360 | except Exception: # pylint: disable=broad-exception-caught | CODE |
| LOW | …ools/input_schemas/schema_callback_type_annotations.py | 42 | except Exception: # pylint: disable=broad-exception-caught | CODE |
| LOW | …h/mcp/primitives/tools/results/result_plotly_figure.py | 33 | except Exception: # pylint: disable=broad-exception-caught | CODE |
| LOW | dash/testing/application_runners.py | 221 | except Exception as error: | CODE |
| LOW | dash/testing/application_runners.py | 243 | except Exception as err: # pylint: disable=broad-except | CODE |
| LOW | dash/testing/application_runners.py | 305 | except Exception as error: | CODE |
| LOW | dash/testing/browser.py | 206 | except Exception as err: # pylint: disable=broad-exception-caught | CODE |
| LOW | dash/testing/browser.py | 288 | except Exception as err: | CODE |
| LOW | dash/testing/browser.py | 533 | except Exception as e: # pylint: disable=broad-exception-caught | CODE |
| MEDIUM | dash/testing/browser.py | 91 | def __exit__(self, exc_type, exc_val, traceback): | CODE |
| LOW | dash/testing/plugin.py | 132 | except Exception as e: # pylint: disable=broad-except | CODE |
| LOW | dash/background_callback/managers/diskcache_manager.py | 170 | except Exception as e: | CODE |
| LOW | dash/background_callback/managers/diskcache_manager.py | 251 | except Exception as err: # pylint: disable=broad-except | CODE |
| LOW | dash/background_callback/managers/diskcache_manager.py | 287 | except Exception as err: # pylint: disable=broad-except | CODE |
| LOW | dash/background_callback/managers/diskcache_manager.py | 304 | except Exception as err: # pylint: disable=broad-except | CODE |
| LOW | dash/background_callback/managers/celery_manager.py | 197 | except Exception as err: # pylint: disable=broad-except | CODE |
| LOW | dash/background_callback/managers/celery_manager.py | 243 | except Exception as err: # pylint: disable=broad-except | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/unit/library/fixtures.py | 26 | CODE | |
| LOW | tests/backend_tests/test_custom_backend.py | 13 | CODE | |
| LOW | tests/compliance/test_typing.py | 68 | CODE | |
| LOW | tests/background_callback/utils.py | 77 | CODE | |
| LOW | tests/async_tests/utils.py | 77 | CODE | |
| LOW | components/dash-table/tests/selenium/test_column.py | 220 | CODE | |
| LOW | components/dash-table/tests/selenium/test_filter2.py | 12 | CODE | |
| LOW | components/dash-table/tests/selenium/test_formatting.py | 9 | CODE | |
| LOW | dash/_callback.py | 610 | CODE | |
| LOW | dash/_callback.py | 665 | CODE | |
| LOW | dash/_grouping.py | 20 | CODE | |
| LOW | dash/dash.py | 1188 | CODE | |
| LOW | dash/dash.py | 1624 | CODE | |
| LOW | dash/dash.py | 1702 | CODE | |
| LOW | dash/dash.py | 1796 | CODE | |
| LOW | dash/dash.py | 2085 | CODE | |
| LOW | dash/dash.py | 2323 | CODE | |
| LOW | dash/dash.py | 2375 | CODE | |
| LOW | dash/_layout_utils.py | 193 | CODE | |
| LOW | dash/_layout_utils.py | 216 | CODE | |
| LOW | dash/_watch.py | 7 | CODE | |
| LOW | dash/_watch.py | 11 | CODE | |
| LOW | dash/_validate.py | 215 | CODE | |
| LOW | dash/_validate.py | 613 | CODE | |
| LOW | dash/_validate.py | 274 | CODE | |
| LOW | dash/resources.py | 50 | CODE | |
| LOW | dash/_jupyter.py | 490 | CODE | |
| LOW | dash/_utils.py | 146 | CODE | |
| LOW | dash/_pages.py | 416 | CODE | |
| LOW | dash/development/_collect_nodes.py | 9 | CODE | |
| LOW | dash/development/_collect_nodes.py | 22 | CODE | |
| LOW | dash/development/_collect_nodes.py | 35 | CODE | |
| LOW | dash/development/_collect_nodes.py | 49 | CODE | |
| LOW | dash/development/base_component.py | 158 | CODE | |
| LOW | dash/development/base_component.py | 298 | CODE | |
| LOW | dash/development/base_component.py | 395 | CODE | |
| LOW | dash/development/base_component.py | 430 | CODE | |
| LOW | dash/development/_jl_components_generation.py | 184 | CODE | |
| LOW | dash/development/_r_components_generation.py | 788 | CODE | |
| LOW | dash/development/_py_components_generation.py | 468 | CODE | |
| LOW | dash/development/build_process.py | 110 | CODE | |
| LOW | dash/backends/_fastapi.py | 74 | CODE | |
| LOW | dash/backends/_fastapi.py | 386 | CODE | |
| LOW | dash/backends/_fastapi.py | 628 | CODE | |
| LOW | dash/backends/_fastapi.py | 684 | CODE | |
| LOW | dash/backends/_fastapi.py | 715 | CODE | |
| LOW | dash/backends/_quart.py | 522 | CODE | |
| LOW | dash/backends/_quart.py | 537 | CODE | |
| LOW | dash/backends/_utils.py | 5 | CODE | |
| LOW | dash/mcp/primitives/tools/callback_adapter.py | 433 | CODE | |
| LOW | dash/mcp/primitives/tools/callback_adapter.py | 66 | CODE | |
| LOW | dash/mcp/primitives/tools/callback_adapter.py | 239 | CODE | |
| LOW | dash/mcp/primitives/tools/callback_adapter.py | 311 | CODE | |
| LOW | …sh/mcp/primitives/tools/callback_adapter_collection.py | 156 | CODE | |
| LOW | dash/testing/application_runners.py | 199 | CODE | |
| LOW | dash/testing/application_runners.py | 413 | CODE | |
| LOW | dash/testing/application_runners.py | 511 | CODE | |
| LOW | dash/testing/plugin.py | 119 | CODE | |
| LOW | dash/background_callback/managers/diskcache_manager.py | 63 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | CHANGELOG.md | 1087 | - [#2009](https://github.com/plotly/dash/pull/2009) Add support for Promises within Client-side callbacks as requested i | CODE |
| HIGH | CHANGELOG.md | 1087 | - [#2009](https://github.com/plotly/dash/pull/2009) Add support for Promises within Client-side callbacks as requested i | CODE |
| HIGH | CHANGELOG.md | 1215 | - [#1883](https://github.com/plotly/dash/pull/1883) in DataTable added `page_current` to `persisted_props` as requested | CODE |
| HIGH | CHANGELOG.md | 1215 | - [#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.ts | 4 | * File is largely generated by Claude | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | …sh-html-components/vignettes/dash-html-components.html | 20 | return 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,t | CODE |
| CRITICAL | components/dash-table/tests/selenium/conftest.py | 388 | self.mixin.driver.switch_to.active_element.send_keys(value + Keys.ENTER) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …ash-core-components/tests/dash_core_components_page.py | 8 | logger = logging.getLogger(__name__) | CODE |
| LOW | dash/__init__.py | 62 | __all__ = [ | CODE |
| LOW | dash/development/update_components.py | 17 | logger = logging.getLogger(__name__) | CODE |
| LOW | dash/development/build_process.py | 13 | logger = logging.getLogger(__name__) | CODE |
| LOW | dash/backends/_fastapi.py | 145 | async def _setup_timing(self, request: Request) -> None: | CODE |
| LOW | dash/backends/__init__.py | 72 | __all__ = [ | CODE |
| LOW | dash/backends/ws.py | 118 | def set_prop_sync(self, component_id: str, prop_name: str, value: Any) -> None: | CODE |
| LOW | dash/backends/ws.py | 137 | async def set_prop(self, component_id: str, prop_name: str, value: Any) -> None: | CODE |
| LOW | dash/mcp/__init__.py | 7 | __all__ = [ | CODE |
| LOW | dash/mcp/_server.py | 47 | logger = logging.getLogger(__name__) | CODE |
| LOW | dash/mcp/tasks/__init__.py | 5 | __all__ = ["create_task", "get_task", "get_task_result", "cancel_task"] | CODE |
| LOW | dash/mcp/types/__init__.py | 42 | __all__ = [ | CODE |
| LOW | dash/mcp/primitives/__init__.py | 11 | __all__ = [ | CODE |
| LOW | …h/mcp/primitives/tools/results/result_plotly_figure.py | 17 | logger = logging.getLogger(__name__) | CODE |
| LOW | dash/testing/application_runners.py | 29 | logger = logging.getLogger(__name__) | CODE |
| LOW | dash/testing/wait.py | 11 | logger = logging.getLogger(__name__) | CODE |
| LOW | dash/testing/browser.py | 35 | logger = logging.getLogger(__name__) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/compliance/test_typing.py | 89 | # Check if dash is installed as editable or regular install. | STRING |
| LOW | …ore-components/tests/integration/dropdown/test_a11y.py | 809 | # Check if the given elements are within the visible viewport of the dropdown | COMMENT |
| LOW | …h-core-components/dash_core_components_base/express.py | 19 | # Read the file contents and send it. | COMMENT |
| LOW | …h-core-components/dash_core_components_base/express.py | 84 | # Check if the provided writer is known. | COMMENT |
| LOW | dash/_callback.py | 52 | # Check if the function is a coroutine function | COMMENT |
| LOW | dash/fingerprint.py | 20 | # Check if the resource has a fingerprint | COMMENT |
| LOW | dash/dash.py | 221 | # Check if the function is a coroutine function | STRING |
| LOW | dash/dash.py | 1820 | # Check if any level of current path matches ignore path | COMMENT |
| LOW | dash/backends/_fastapi.py | 391 | # Check if we're running in a thread (e.g., from testing framework) | COMMENT |
| LOW | dash/backends/_fastapi.py | 409 | # Check if the file is outside the current working directory | COMMENT |
| LOW | dash/backends/_quart.py | 274 | # Check if we're running in a non-main thread (e.g., testing context) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/unit/development/metadata_test.py | 137 | CODE | |
| LOW | tests/background_callback/app_ctx_cookies.py | 39 | CODE | |
| LOW | dash/_callback.py | 74 | CODE | |
| LOW | dash/_callback.py | 299 | CODE | |
| LOW | dash/dash.py | 447 | CODE | |
| LOW | dash/dash.py | 1434 | CODE | |
| LOW | dash/dash.py | 2085 | CODE | |
| LOW | dash/dash.py | 2375 | CODE | |
| LOW | dash/_pages.py | 159 | CODE | |
| LOW | dash/development/component_generator.py | 40 | CODE | |
| LOW | dash/development/_py_components_generation.py | 344 | CODE | |
| LOW | dash/testing/browser.py | 42 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/integration/mcp/test_mcp_callback_behavior.py | 267 | dash_duo.wait_for_text_to_equal("#out", "Jane Doe") | CODE |
| LOW | tests/integration/mcp/test_mcp_callback_behavior.py | 281 | assert response["out"]["children"] == "Jane Doe" | CODE |
| LOW | …nents/dash-core-components/src/components/Textarea.tsx | 17 | 'placeholder', | CODE |
| LOW | …mponents/dash-core-components/src/components/Input.tsx | 30 | 'placeholder', | CODE |
| LOW | components/dash-html-components/dash-info.yaml | 1594 | htmlNobr("Lorem ipsum dolor sit amet, | CODE |
| LOW | components/dash-html-components/dash-info.yaml | 1594 | htmlNobr("Lorem ipsum dolor sit amet, | CODE |
| LOW | …nts/dash-html-components/scripts/extract-attributes.js | 26 | 'noValidate', 'nonce', 'open', 'optimum', 'pattern', 'placeholder', 'playsInline', 'poster', | CODE |
| LOW | …ents/dash-html-components/scripts/data/attributes.json | 485 | "placeholder": { | CODE |
| LOW | …ents/dash-html-components/scripts/data/attributes.json | 793 | "placeholder", | CODE |
| LOW | …ents/dash-html-components/scripts/data/attributes.json | 824 | "placeholder", | CODE |
| LOW | components/dash-table/tests/selenium/conftest.py | 394 | .get_attribute("placeholder") | CODE |
| LOW | components/dash-table/tests/selenium/conftest.py | 468 | ).get_attribute("placeholder") | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | components/dash-core-components/dash_prop_typing.py | 1 | # This file is automatically loaded on build time to generate types. | COMMENT |
| MEDIUM | components/dash-table/dash_prop_typing.py | 1 | # This file is automatically loaded on build time to generate types. | COMMENT |
| MEDIUM | dash/_callback.py | 1027 | # Create a hash from the function, it will be the same always | STRING |
| MEDIUM | dash/background_callback/managers/diskcache_manager.py | 160 | # Create a new event loop for the process | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | dash/_compression.py | 18 | Decompress a gzip-compressed callback request body. The data is expected to be the raw bytes of a gzip-compres | STRING |
| HIGH | dash/backends/ws.py | 152 | Request current prop value from the client. On the event-loop path (``self._loop`` set, async callbacks) the wa | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/unit/pages/sub_dir/custom_pages/__init__.py | 1 | # this directory is used for testing custom values of `pages_folder` param that | COMMENT |
| LOW | tests/unit/pages/custom_pages/__init__.py | 1 | # this directory is used for testing custom values of `pages_folder` param that | COMMENT |
| LOW | tests/async_tests/test_async_callbacks.py | 321 | dash_duo.wait_for_text_to_equal("#out", str(i + 1)) | COMMENT |
| LOW | components/dash-table/tests/selenium/test_bootstrap.py | 1 | # import dash | COMMENT |
| LOW | components/dash-table/tests/selenium/test_bootstrap.py | 21 | # columns=[ | COMMENT |
| LOW | components/dash-table/tests/selenium/test_bootstrap.py | 41 | # ) | COMMENT |
| LOW | components/dash-table/tests/selenium/test_bootstrap.py | 61 | # test, | COMMENT |
| LOW | dash/_utils.py | 461 | # importable (e.g. a namespace package or a parent __init__ that errors) | COMMENT |
| LOW | dash/dash-renderer/src/actions/dependencies.js | 1621 | // The patch itself tells us which components it created, including | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | components/dash-table/dash-info.yaml | 19 | # For comprehensive documentation of this package's features, | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/integration/callbacks/test_prevent_update.py | 37 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | dash/__init__.py | 2 | # __plotly_dash is for the "make sure you don't have a dash.py" check | COMMENT |