Apache Superset is a Data Visualization and Data Exploration Platform
This report presents the forensic synthetic code analysis of apache/superset, a TypeScript project with 73,817 GitHub stars. SynthScan v2.0 examined 1,369,308 lines of code across 7484 source files, recording 16192 pattern matches distributed across 24 syntactic categories. The overall adjusted score of 13.6 places this repository in the Low AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 16192 distinct pattern matches across 24 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 | …erset-core/src/superset_core/semantic_layers/config.py | 25 | def build_configuration_schema( | CODE |
| LOW | superset-core/src/superset_core/semantic_layers/daos.py | 67 | def validate_update_uniqueness(cls, layer_uuid: str, name: str) -> bool: | CODE |
| LOW | superset-core/src/superset_core/semantic_layers/daos.py | 137 | def validate_update_uniqueness( | CODE |
| LOW | superset-core/src/superset_core/semantic_layers/view.py | 106 | def get_compatible_dimensions( | CODE |
| LOW | tests/conftest.py | 79 | def pandas_loader_configuration( | CODE |
| LOW | tests/unit_tests/conftest.py | 194 | def test_your_feature_enabled(self): | STRING |
| LOW | tests/unit_tests/conftest.py | 198 | def test_your_feature_disabled(self): | STRING |
| LOW | tests/unit_tests/core_tests.py | 60 | def test_get_metric_name_saved_metric(): | CODE |
| LOW | tests/unit_tests/core_tests.py | 65 | def test_get_metric_name_adhoc(): | CODE |
| LOW | tests/unit_tests/core_tests.py | 88 | def test_get_metric_name_invalid_metric(): | CODE |
| LOW | tests/unit_tests/core_tests.py | 130 | def test_get_column_name_physical_column(): | CODE |
| LOW | tests/unit_tests/core_tests.py | 135 | def test_get_column_name_adhoc(): | CODE |
| LOW | tests/unit_tests/core_tests.py | 159 | def test_get_column_name_invalid_metric(): | CODE |
| LOW⚡ | tests/unit_tests/core_tests.py | 173 | def test_get_time_filter_status_time_col(): | CODE |
| LOW⚡ | tests/unit_tests/core_tests.py | 181 | def test_get_time_filter_status_time_range(): | CODE |
| LOW⚡ | tests/unit_tests/core_tests.py | 189 | def test_get_time_filter_status_time_grain(): | CODE |
| LOW⚡ | tests/unit_tests/core_tests.py | 197 | def test_get_time_filter_status_no_temporal_col(): | CODE |
| LOW | tests/unit_tests/test_marshmallow_compatibility.py | 29 | def restore_schema_init_fields(): | CODE |
| LOW | tests/unit_tests/test_marshmallow_compatibility.py | 41 | def test_patch_marshmallow_for_flask_appbuilder_applies_patch(self): | CODE |
| LOW | tests/unit_tests/test_marshmallow_compatibility.py | 52 | def test_patch_functionality_with_real_schema_creation(self): | CODE |
| LOW | tests/unit_tests/test_marshmallow_compatibility.py | 66 | def test_patch_handles_schema_with_no_fields(self): | CODE |
| LOW | tests/unit_tests/test_marshmallow_compatibility.py | 76 | def test_patch_pre_stubs_missing_fab_fields_before_initialization(self): | CODE |
| LOW | tests/unit_tests/test_marshmallow_compatibility.py | 101 | def test_raw_field_creation_and_configuration(self): | CODE |
| LOW | tests/unit_tests/test_marshmallow_compatibility.py | 110 | def test_schema_declared_fields_manipulation(self): | CODE |
| LOW | tests/unit_tests/test_marshmallow_compatibility.py | 133 | def test_flask_appbuilder_field_names_list(self): | CODE |
| LOW | tests/unit_tests/test_marshmallow_compatibility.py | 151 | def test_patch_function_is_callable(self): | CODE |
| LOW | tests/unit_tests/test_marshmallow_compatibility.py | 161 | def test_marshmallow_schema_basic_functionality(self): | CODE |
| LOW⚡ | tests/unit_tests/jinja_context_test.py | 121 | def test_filter_values_default() -> None: | CODE |
| LOW⚡ | tests/unit_tests/jinja_context_test.py | 130 | def test_filter_values_remove_not_present() -> None: | CODE |
| LOW⚡ | tests/unit_tests/jinja_context_test.py | 139 | def test_filter_values_no_default() -> None: | CODE |
| LOW⚡ | tests/unit_tests/jinja_context_test.py | 147 | def test_get_filters_adhoc_filters() -> None: | CODE |
| LOW⚡ | tests/unit_tests/jinja_context_test.py | 560 | def test_url_param_escaped_request_args() -> None: | CODE |
| LOW⚡ | tests/unit_tests/jinja_context_test.py | 570 | def test_url_param_unescaped_request_args() -> None: | CODE |
| LOW⚡ | tests/unit_tests/jinja_context_test.py | 579 | def test_safe_proxy_primitive() -> None: | CODE |
| LOW | tests/unit_tests/jinja_context_test.py | 58 | def test_filter_values_adhoc_filters() -> None: | CODE |
| LOW | tests/unit_tests/jinja_context_test.py | 105 | def test_filter_values_extra_filters() -> None: | CODE |
| LOW | tests/unit_tests/jinja_context_test.py | 224 | def test_get_filters_is_null_operator() -> None: | CODE |
| LOW | tests/unit_tests/jinja_context_test.py | 254 | def test_get_filters_remove_not_present() -> None: | CODE |
| LOW | tests/unit_tests/jinja_context_test.py | 263 | def test_get_filters_query_context_filters() -> None: | CODE |
| LOW | tests/unit_tests/jinja_context_test.py | 279 | def test_get_filters_query_context_filters_remove_filter() -> None: | CODE |
| LOW | tests/unit_tests/jinja_context_test.py | 294 | def test_get_filters_query_context_filters_is_null() -> None: | CODE |
| LOW | tests/unit_tests/jinja_context_test.py | 305 | def test_get_filters_query_context_filters_is_not_null() -> None: | CODE |
| LOW | tests/unit_tests/jinja_context_test.py | 318 | def test_get_filters_adhoc_filters_take_precedence_over_query_context_filters() -> None: | CODE |
| LOW | tests/unit_tests/jinja_context_test.py | 347 | def test_filter_values_query_context_filters() -> None: | CODE |
| LOW | tests/unit_tests/jinja_context_test.py | 358 | def test_get_filters_escaped_val_string_adhoc() -> None: | CODE |
| LOW | tests/unit_tests/jinja_context_test.py | 392 | def test_get_filters_escaped_val_list_adhoc() -> None: | CODE |
| LOW | tests/unit_tests/jinja_context_test.py | 426 | def test_get_filters_escaped_val_query_context_filters() -> None: | CODE |
| LOW | tests/unit_tests/jinja_context_test.py | 447 | def test_get_filters_no_escaped_val_without_dialect() -> None: | CODE |
| LOW | tests/unit_tests/jinja_context_test.py | 494 | def test_url_param_no_default() -> None: | CODE |
| LOW | tests/unit_tests/jinja_context_test.py | 514 | def test_url_param_escaped_form_data() -> None: | CODE |
| LOW | tests/unit_tests/jinja_context_test.py | 526 | def test_url_param_escaped_default_form_data() -> None: | CODE |
| LOW | tests/unit_tests/jinja_context_test.py | 537 | def test_url_param_unescaped_form_data() -> None: | CODE |
| LOW | tests/unit_tests/jinja_context_test.py | 549 | def test_url_param_unescaped_default_form_data() -> None: | CODE |
| LOW | tests/unit_tests/jinja_context_test.py | 614 | def test_safe_proxy_nested_lambda() -> None: | CODE |
| LOW | tests/unit_tests/jinja_context_test.py | 673 | def test_user_macros_without_user_info(mocker: MockerFixture): | CODE |
| LOW | tests/unit_tests/jinja_context_test.py | 687 | def test_current_user_rls_rules_with_no_table(mocker: MockerFixture): | CODE |
| LOW | tests/unit_tests/jinja_context_test.py | 708 | def test_current_user_rls_rules_guest_user(mocker: MockerFixture): | CODE |
| LOW | tests/unit_tests/jinja_context_test.py | 898 | def test_dataset_macro_mutator_with_comments(mocker: MockerFixture) -> None: | CODE |
| LOW | tests/unit_tests/jinja_context_test.py | 921 | def test_metric_macro_with_dataset_id(mocker: MockerFixture) -> None: | CODE |
| LOW | tests/unit_tests/jinja_context_test.py | 941 | def test_metric_macro_recursive(mocker: MockerFixture) -> None: | CODE |
| 9505 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | docker-compose-image-tag.yml | 18 | # ----------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | docker-compose-image-tag.yml | 26 | # ----------------------------------------------------------------------- | COMMENT |
| MEDIUM | pyproject.toml | 85 | # -------------------------- | COMMENT |
| MEDIUM | pyproject.toml | 89 | # -------------------------- | COMMENT |
| MEDIUM | pyproject.toml | 481 | # -------------------------------------------------------------- | COMMENT |
| MEDIUM | pyproject.toml | 486 | # -------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | docker-compose-non-dev.yml | 18 | # ----------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | docker-compose-non-dev.yml | 26 | # ----------------------------------------------------------------------- | COMMENT |
| MEDIUM | docker-compose-light.yml | 18 | # ----------------------------------------------------------------------- | COMMENT |
| MEDIUM | docker-compose-light.yml | 61 | # ----------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | docker-compose.yml | 18 | # ----------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | docker-compose.yml | 26 | # ----------------------------------------------------------------------- | COMMENT |
| MEDIUM | docker/docker-entrypoint-initdb.d/examples-init.sh | 20 | # ------------------------------------------------------------------------ | COMMENT |
| MEDIUM | docker/docker-entrypoint-initdb.d/examples-init.sh | 23 | # ------------------------------------------------------------------------ | COMMENT |
| MEDIUM | docker/docker-entrypoint-initdb.d/cypress-init.sh | 20 | # ------------------------------------------------------------------------ | COMMENT |
| MEDIUM | docker/docker-entrypoint-initdb.d/cypress-init.sh | 23 | # ------------------------------------------------------------------------ | COMMENT |
| MEDIUM | superset-core/src/superset_core/extensions/types.py | 82 | # ============================================================================= | COMMENT |
| MEDIUM | superset-core/src/superset_core/extensions/types.py | 84 | # ============================================================================= | COMMENT |
| MEDIUM | superset-core/src/superset_core/extensions/types.py | 109 | # ============================================================================= | COMMENT |
| MEDIUM | superset-core/src/superset_core/extensions/types.py | 111 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | tests/unit_tests/test_sqllab_error_stacktrace.py | 64 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit_tests/test_sqllab_error_stacktrace.py | 66 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit_tests/test_sqllab_error_stacktrace.py | 104 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit_tests/test_sqllab_error_stacktrace.py | 106 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit_tests/test_sqllab_error_stacktrace.py | 140 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit_tests/test_sqllab_error_stacktrace.py | 142 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit_tests/test_sqllab_error_stacktrace.py | 182 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit_tests/test_sqllab_error_stacktrace.py | 184 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit_tests/test_sqllab_error_stacktrace.py | 219 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit_tests/test_sqllab_error_stacktrace.py | 221 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit_tests/test_sqllab_error_stacktrace.py | 253 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit_tests/test_sqllab_error_stacktrace.py | 255 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit_tests/test_sqllab_error_stacktrace.py | 47 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit_tests/test_sqllab_error_stacktrace.py | 49 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …s/unit_tests/middleware/test_legacy_prefix_redirect.py | 593 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …s/unit_tests/middleware/test_legacy_prefix_redirect.py | 595 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …s/unit_tests/middleware/test_legacy_prefix_redirect.py | 669 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …s/unit_tests/middleware/test_legacy_prefix_redirect.py | 671 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …s/unit_tests/middleware/test_legacy_prefix_redirect.py | 753 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …s/unit_tests/middleware/test_legacy_prefix_redirect.py | 755 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …s/unit_tests/middleware/test_legacy_prefix_redirect.py | 51 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …s/unit_tests/middleware/test_legacy_prefix_redirect.py | 53 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …s/unit_tests/middleware/test_legacy_prefix_redirect.py | 121 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …s/unit_tests/middleware/test_legacy_prefix_redirect.py | 123 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …s/unit_tests/middleware/test_legacy_prefix_redirect.py | 397 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …s/unit_tests/middleware/test_legacy_prefix_redirect.py | 408 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …s/unit_tests/middleware/test_legacy_prefix_redirect.py | 557 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …s/unit_tests/middleware/test_legacy_prefix_redirect.py | 559 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …s/unit_tests/middleware/test_legacy_prefix_redirect.py | 698 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …s/unit_tests/middleware/test_legacy_prefix_redirect.py | 700 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit_tests/tasks/test_thumbnails.py | 48 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit_tests/tasks/test_thumbnails.py | 50 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit_tests/tasks/test_thumbnails.py | 68 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit_tests/tasks/test_thumbnails.py | 70 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit_tests/tasks/test_timeout.py | 113 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | tests/unit_tests/tasks/test_timeout.py | 115 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | tests/unit_tests/tasks/test_timeout.py | 196 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | tests/unit_tests/tasks/test_timeout.py | 198 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | tests/unit_tests/tasks/test_timeout.py | 399 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | tests/unit_tests/tasks/test_timeout.py | 401 | # ============================================================================= | COMMENT |
| 644 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .asf.yaml | 1 | # Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| LOW | docker-compose-image-tag.yml | 1 | # | COMMENT |
| LOW | pytest.ini | 1 | # | COMMENT |
| LOW | pytest.ini | 21 | # `-p no:warnings` temporarily disabled in favor of more finely tuned `filterwarnings`. | COMMENT |
| LOW | .pre-commit-config.yaml | 1 | # | COMMENT |
| LOW | .fossa.yml | 1 | # | COMMENT |
| LOW | pyproject.toml | 1 | # Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| LOW | lintconf.yaml | 1 | # | COMMENT |
| LOW | setup.py | 1 | # Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| LOW | docker-compose-non-dev.yml | 1 | # | COMMENT |
| LOW | docker-compose-light.yml | 1 | # | COMMENT |
| LOW | docker-compose-light.yml | 21 | # | COMMENT |
| LOW | docker-compose-light.yml | 41 | # | COMMENT |
| LOW | docker-compose.yml | 1 | # | COMMENT |
| LOW | docker-compose.yml | 141 | extra_hosts: | COMMENT |
| LOW | superset_text.yml | 1 | # Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| LOW | superset_text.yml | 21 | # DB_IMAGES: | COMMENT |
| LOW | docker/frontend-mem-nag.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | docker/tag_latest_release.sh | 1 | #! /bin/bash | COMMENT |
| LOW | docker/docker-bootstrap.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | docker/docker-healthcheck.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | docker/apt-install.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | docker/docker-pytest-entrypoint.sh | 1 | #!/bin/bash | COMMENT |
| LOW | docker/pip-install.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | docker/docker-init.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | docker/docker-frontend.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | docker/pythonpath_dev/superset_config_docker_light.py | 1 | # Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| LOW | docker/pythonpath_dev/superset_config_docker_light.py | 61 | # just turn it off. | COMMENT |
| LOW | docker/pythonpath_dev/superset_config.py | 1 | # Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| LOW | docker/pythonpath_dev/superset_test_config_light.py | 1 | # Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| LOW | docker/docker-entrypoint-initdb.d/examples-init.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | docker/docker-entrypoint-initdb.d/cypress-init.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | docker/entrypoints/run-server.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | docker/entrypoints/docker-ci.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | superset-core/pyproject.toml | 1 | COMMENT | |
| LOW | superset-core/src/superset_core/__init__.py | 1 | # Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| LOW | superset-core/src/superset_core/tasks/models.py | 1 | # Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| LOW | superset-core/src/superset_core/tasks/daos.py | 1 | # Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| LOW | superset-core/src/superset_core/tasks/__init__.py | 1 | # Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| LOW | superset-core/src/superset_core/tasks/types.py | 1 | # Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| LOW | superset-core/src/superset_core/tasks/decorators.py | 1 | # Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| LOW | …erset-core/src/superset_core/semantic_layers/config.py | 1 | # Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| LOW | …erset-core/src/superset_core/semantic_layers/models.py | 1 | # Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| LOW | superset-core/src/superset_core/semantic_layers/daos.py | 1 | # Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| LOW | …perset-core/src/superset_core/semantic_layers/types.py | 1 | # Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| LOW | superset-core/src/superset_core/semantic_layers/view.py | 1 | # Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| LOW | …perset-core/src/superset_core/semantic_layers/layer.py | 1 | # Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| LOW | …t-core/src/superset_core/semantic_layers/decorators.py | 1 | # Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| LOW | superset-core/src/superset_core/queries/models.py | 1 | # Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| LOW | superset-core/src/superset_core/queries/query.py | 1 | # Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| LOW | superset-core/src/superset_core/queries/daos.py | 1 | # Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| LOW | superset-core/src/superset_core/queries/__init__.py | 1 | # Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| LOW | superset-core/src/superset_core/queries/types.py | 1 | # Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| LOW | superset-core/src/superset_core/mcp/__init__.py | 1 | # Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| LOW | superset-core/src/superset_core/mcp/decorators.py | 1 | # Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| LOW | superset-core/src/superset_core/extensions/constants.py | 1 | # Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| LOW | superset-core/src/superset_core/extensions/__init__.py | 1 | # Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| LOW | superset-core/src/superset_core/extensions/types.py | 1 | # Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| LOW | superset-core/src/superset_core/common/models.py | 1 | # Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| LOW | superset-core/src/superset_core/common/daos.py | 1 | # Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| 2389 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | superset-core/src/superset_core/tasks/daos.py | 0 | abstract keyvalue model interface. host implementations will replace this class during initialization with concrete impl | STRING |
| HIGH | superset-core/src/superset_core/queries/models.py | 0 | abstract keyvalue model interface. host implementations will replace this class during initialization with concrete impl | STRING |
| HIGH | superset-core/src/superset_core/queries/daos.py | 0 | abstract keyvalue model interface. host implementations will replace this class during initialization with concrete impl | STRING |
| HIGH | superset-core/src/superset_core/common/models.py | 0 | abstract keyvalue model interface. host implementations will replace this class during initialization with concrete impl | STRING |
| HIGH | superset-core/src/superset_core/common/daos.py | 0 | abstract keyvalue model interface. host implementations will replace this class during initialization with concrete impl | STRING |
| HIGH | tests/unit_tests/pandas_postprocessing/test_cum.py | 0 | count_metric sum_metric country uk us uk us dttm 2019-01-01 1 2 5 6 2019-01-02 3 4 7 8 | STRING |
| HIGH | tests/unit_tests/pandas_postprocessing/test_rolling.py | 0 | count_metric sum_metric country uk us uk us dttm 2019-01-01 1 2 5 6 2019-01-02 3 4 7 8 | STRING |
| HIGH | tests/unit_tests/pandas_postprocessing/test_compare.py | 0 | count_metric sum_metric country uk us uk us dttm 2019-01-01 1 2 5 6 2019-01-02 3 4 7 8 | STRING |
| HIGH | …it_tests/datasets/commands/importers/v1/import_test.py | 0 | non-overwrite re-import of a soft-deleted uuid is implicitly a restore-and-update: the user is bringing the dashboard ba | STRING |
| HIGH | …unit_tests/charts/commands/importers/v1/import_test.py | 0 | non-overwrite re-import of a soft-deleted uuid is implicitly a restore-and-update: the user is bringing the dashboard ba | STRING |
| HIGH | …_tests/dashboards/commands/importers/v1/import_test.py | 0 | non-overwrite re-import of a soft-deleted uuid is implicitly a restore-and-update: the user is bringing the dashboard ba | STRING |
| HIGH | …it_tests/datasets/commands/importers/v1/import_test.py | 0 | non-overwrite re-import that would resurrect a soft-deleted dashboard must respect editorship: a non-editor without admi | STRING |
| HIGH | …unit_tests/charts/commands/importers/v1/import_test.py | 0 | non-overwrite re-import that would resurrect a soft-deleted dashboard must respect editorship: a non-editor without admi | STRING |
| HIGH | …_tests/dashboards/commands/importers/v1/import_test.py | 0 | non-overwrite re-import that would resurrect a soft-deleted dashboard must respect editorship: a non-editor without admi | STRING |
| HIGH | …it_tests/datasets/commands/importers/v1/import_test.py | 0 | an *active* (not soft-deleted) dashboard re-imported with overwrite=true by a caller without can_write must fall through | STRING |
| HIGH | …unit_tests/charts/commands/importers/v1/import_test.py | 0 | an *active* (not soft-deleted) dashboard re-imported with overwrite=true by a caller without can_write must fall through | STRING |
| HIGH | …_tests/dashboards/commands/importers/v1/import_test.py | 0 | an *active* (not soft-deleted) dashboard re-imported with overwrite=true by a caller without can_write must fall through | STRING |
| HIGH | …ests/mcp_service/semantic_layer/tool/test_get_table.py | 0 | errors when neither dataset_id nor view_id is provided. | STRING |
| HIGH | …/semantic_layer/tool/test_get_compatible_dimensions.py | 0 | errors when neither dataset_id nor view_id is provided. | STRING |
| HIGH | …ice/semantic_layer/tool/test_get_compatible_metrics.py | 0 | errors when neither dataset_id nor view_id is provided. | STRING |
| HIGH | …ests/mcp_service/semantic_layer/tool/test_get_table.py | 0 | errors when both dataset_id and view_id are provided. | STRING |
| HIGH | …/semantic_layer/tool/test_get_compatible_dimensions.py | 0 | errors when both dataset_id and view_id are provided. | STRING |
| HIGH | …ice/semantic_layer/tool/test_get_compatible_metrics.py | 0 | errors when both dataset_id and view_id are provided. | STRING |
| HIGH | …ests/mcp_service/semantic_layer/tool/test_get_table.py | 0 | errors when the user lacks data-model metadata access. | STRING |
| HIGH | …/semantic_layer/tool/test_get_compatible_dimensions.py | 0 | errors when the user lacks data-model metadata access. | STRING |
| HIGH | …ice/semantic_layer/tool/test_get_compatible_metrics.py | 0 | errors when the user lacks data-model metadata access. | STRING |
| HIGH | …ests/mcp_service/semantic_layer/tool/test_get_table.py | 0 | returns accessdenied when raise_for_access rejects the view. | STRING |
| HIGH | …/semantic_layer/tool/test_get_compatible_dimensions.py | 0 | returns accessdenied when raise_for_access rejects the view. | STRING |
| HIGH | …ice/semantic_layer/tool/test_get_compatible_metrics.py | 0 | returns accessdenied when raise_for_access rejects the view. | STRING |
| HIGH | …t_tests/mcp_service/dataset/tool/test_dataset_tools.py | 0 | test that minimal default columns are properly defined. | STRING |
| HIGH | …/unit_tests/mcp_service/chart/tool/test_list_charts.py | 0 | test that minimal default columns are properly defined. | STRING |
| HIGH | …sts/mcp_service/dashboard/tool/test_dashboard_tools.py | 0 | test that minimal default columns are properly defined. | STRING |
| HIGH | …p_service/dashboard/tool/test_manage_native_filters.py | 0 | return the fastmcp app instance for use in mcp client tests. | STRING |
| HIGH | …dashboard/tool/test_add_chart_to_existing_dashboard.py | 0 | return the fastmcp app instance for use in mcp client tests. | STRING |
| HIGH | …ice/dashboard/tool/test_remove_chart_from_dashboard.py | 0 | return the fastmcp app instance for use in mcp client tests. | STRING |
| HIGH | …mcp_service/dashboard/tool/test_duplicate_dashboard.py | 0 | return the fastmcp app instance for use in mcp client tests. | STRING |
| HIGH | …dashboard/tool/test_add_chart_to_existing_dashboard.py | 0 | create a minimal mock slice object with the given id and name. | STRING |
| HIGH | …ice/dashboard/tool/test_remove_chart_from_dashboard.py | 0 | create a minimal mock slice object with the given id and name. | STRING |
| HIGH | …mcp_service/dashboard/tool/test_duplicate_dashboard.py | 0 | create a minimal mock slice object with the given id and name. | STRING |
| HIGH | tests/unit_tests/db_engine_specs/test_snowflake.py | 0 | test the ``adjust_engine_params`` method when the url has catalog and schema. | STRING |
| HIGH | tests/unit_tests/db_engine_specs/test_presto.py | 0 | test the ``adjust_engine_params`` method when the url has catalog and schema. | STRING |
| HIGH | tests/unit_tests/db_engine_specs/test_trino.py | 0 | test the ``adjust_engine_params`` method when the url has catalog and schema. | STRING |
| HIGH | tests/unit_tests/db_engine_specs/test_snowflake.py | 0 | test the ``adjust_engine_params`` method when the url has only the catalog. | STRING |
| HIGH | tests/unit_tests/db_engine_specs/test_presto.py | 0 | test the ``adjust_engine_params`` method when the url has only the catalog. | STRING |
| HIGH | tests/unit_tests/db_engine_specs/test_trino.py | 0 | test the ``adjust_engine_params`` method when the url has only the catalog. | STRING |
| HIGH | tests/unit_tests/db_engine_specs/test_snowflake.py | 0 | test that the private key is masked when the database is edited. | STRING |
| HIGH | tests/unit_tests/db_engine_specs/test_bigquery.py | 0 | test that the private key is masked when the database is edited. | STRING |
| HIGH | tests/unit_tests/db_engine_specs/test_datastore.py | 0 | test that the private key is masked when the database is edited. | STRING |
| HIGH | tests/unit_tests/db_engine_specs/test_base.py | 0 | test that the private key is masked when the database is edited. | STRING |
| HIGH | tests/unit_tests/db_engine_specs/test_gsheets.py | 0 | test that the private key is masked when the database is edited. | STRING |
| HIGH | tests/unit_tests/db_engine_specs/test_databricks.py | 0 | test that the result from ``get_parameters_from_uri`` is json serializable. | STRING |
| HIGH | tests/unit_tests/db_engine_specs/test_bigquery.py | 0 | test that the result from ``get_parameters_from_uri`` is json serializable. | STRING |
| HIGH | tests/unit_tests/db_engine_specs/test_datastore.py | 0 | test that the result from ``get_parameters_from_uri`` is json serializable. | STRING |
| HIGH | tests/unit_tests/db_engine_specs/test_databricks.py | 0 | test that custom error messages are extracted correctly. | STRING |
| HIGH | tests/unit_tests/db_engine_specs/test_athena.py | 0 | test that custom error messages are extracted correctly. | STRING |
| HIGH | tests/unit_tests/db_engine_specs/test_mssql.py | 0 | test that custom error messages are extracted correctly. | STRING |
| HIGH | …ts/integration_tests/db_engine_specs/postgres_tests.py | 0 | test that custom error messages are extracted correctly. | STRING |
| HIGH | tests/integration_tests/db_engine_specs/mysql_tests.py | 0 | test that custom error messages are extracted correctly. | STRING |
| HIGH | …ts/integration_tests/db_engine_specs/redshift_tests.py | 0 | test that custom error messages are extracted correctly. | STRING |
| HIGH | …sts/integration_tests/db_engine_specs/gsheets_tests.py | 0 | test that custom error messages are extracted correctly. | STRING |
| 152 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docker/pythonpath_dev/superset_config_docker_light.py | 25 | CODE | |
| LOW | docker/pythonpath_dev/superset_config.py | 134 | CODE | |
| LOW | docker/pythonpath_dev/superset_config.py | 144 | CODE | |
| LOW | docker/pythonpath_dev/superset_test_config_light.py | 26 | CODE | |
| LOW | superset-core/src/superset_core/tasks/models.py | 28 | CODE | |
| LOW | superset-core/src/superset_core/tasks/models.py | 37 | CODE | |
| LOW | superset-core/src/superset_core/tasks/types.py | 18 | CODE | |
| LOW | superset-core/src/superset_core/tasks/decorators.py | 18 | CODE | |
| LOW | superset-core/src/superset_core/tasks/decorators.py | 25 | CODE | |
| LOW | …erset-core/src/superset_core/semantic_layers/config.py | 18 | CODE | |
| LOW | …erset-core/src/superset_core/semantic_layers/models.py | 32 | CODE | |
| LOW | superset-core/src/superset_core/semantic_layers/daos.py | 32 | CODE | |
| LOW | …perset-core/src/superset_core/semantic_layers/types.py | 18 | CODE | |
| LOW | superset-core/src/superset_core/semantic_layers/view.py | 18 | CODE | |
| LOW | …perset-core/src/superset_core/semantic_layers/layer.py | 18 | CODE | |
| LOW | …perset-core/src/superset_core/semantic_layers/layer.py | 24 | CODE | |
| LOW | …t-core/src/superset_core/semantic_layers/decorators.py | 42 | CODE | |
| LOW | superset-core/src/superset_core/queries/models.py | 28 | CODE | |
| LOW | superset-core/src/superset_core/queries/query.py | 35 | CODE | |
| LOW | superset-core/src/superset_core/queries/types.py | 25 | CODE | |
| LOW | superset-core/src/superset_core/extensions/types.py | 26 | CODE | |
| LOW | superset-core/src/superset_core/common/models.py | 33 | CODE | |
| LOW | superset-core/src/superset_core/common/models.py | 43 | CODE | |
| LOW | superset-core/src/superset_core/common/models.py | 43 | CODE | |
| LOW | superset-core/src/superset_core/common/models.py | 43 | CODE | |
| LOW | superset-core/src/superset_core/rest_api/decorators.py | 36 | CODE | |
| LOW | tests/conftest.py | 26 | CODE | |
| LOW | tests/unit_tests/jinja_context_test.py | 18 | CODE | |
| LOW | tests/unit_tests/legacy_tests.py | 23 | CODE | |
| LOW | tests/unit_tests/test_marshmallow4_compat.py | 157 | CODE | |
| LOW | tests/unit_tests/test_sqllab_error_stacktrace.py | 43 | CODE | |
| LOW | …s/unit_tests/middleware/test_legacy_prefix_redirect.py | 35 | CODE | |
| LOW | tests/unit_tests/databases/api_test.py | 20 | CODE | |
| LOW | tests/unit_tests/tasks/test_native_filter_cache.py | 17 | CODE | |
| LOW | …t_tests/security/test_guest_token_dataset_allowlist.py | 23 | CODE | |
| LOW | tests/unit_tests/security/guest_rls_test.py | 25 | CODE | |
| LOW | tests/unit_tests/dao/role_test.py | 17 | CODE | |
| LOW | tests/unit_tests/dao/user_test.py | 17 | CODE | |
| LOW | tests/unit_tests/dao/user_test.py | 29 | CODE | |
| LOW | tests/unit_tests/dao/group_test.py | 17 | CODE | |
| LOW | tests/unit_tests/dao/subject_test.py | 17 | CODE | |
| LOW | tests/unit_tests/dao/key_value_test.py | 18 | CODE | |
| LOW | tests/unit_tests/dao/key_value_test.py | 41 | CODE | |
| LOW | tests/unit_tests/semantic_layers/decorators_test.py | 18 | CODE | |
| LOW | tests/unit_tests/semantic_layers/models_test.py | 20 | CODE | |
| LOW | tests/unit_tests/semantic_layers/dao_test.py | 20 | CODE | |
| LOW | tests/unit_tests/semantic_layers/types_test.py | 18 | CODE | |
| LOW | tests/unit_tests/charts/test_chart_data_api.py | 17 | CODE | |
| LOW | …sts/unit_tests/charts/test_dashboard_filter_context.py | 17 | CODE | |
| LOW | tests/unit_tests/models/test_no_filter_time_range.py | 19 | CODE | |
| LOW | …sts/unit_tests/models/multi_space_column_names_test.py | 31 | CODE | |
| LOW | tests/unit_tests/models/test_soft_delete_mixin.py | 26 | CODE | |
| LOW | tests/unit_tests/models/core_test.py | 1303 | CODE | |
| LOW | tests/unit_tests/models/helpers_test.py | 20 | CODE | |
| LOW | tests/unit_tests/models/helpers_test.py | 39 | CODE | |
| LOW | …t_tests/models/test_core_database_password_encoding.py | 20 | CODE | |
| LOW | …s/unit_tests/models/test_double_rls_virtual_dataset.py | 25 | CODE | |
| LOW | …it_tests/models/test_time_filter_double_application.py | 19 | CODE | |
| LOW | tests/unit_tests/models/test_virtual_dataset_format.py | 33 | CODE | |
| LOW | tests/unit_tests/models/test_time_filter_hour_offset.py | 19 | CODE | |
| 966 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | docker/docker-init.sh | 51 | # Create an admin user | COMMENT |
| MEDIUM | docker/pythonpath_dev/superset_config.py | 18 | # This file is included in the final Docker image and SHOULD be overridden when | COMMENT |
| MEDIUM | tests/unit_tests/connectors/sqla/models_test.py | 862 | # Create a Postgres-like engine to test proper quoting | COMMENT |
| MEDIUM | tests/unit_tests/connectors/sqla/models_test.py | 899 | # Create a PostgreSQL engine (doesn't support cross-catalog queries) | COMMENT |
| MEDIUM | tests/unit_tests/connectors/sqla/models_test.py | 1050 | # Create a mock slice whose get_query_context raises DatasourceNotFound | COMMENT |
| MEDIUM | tests/unit_tests/pandas_postprocessing/test_compare.py | 194 | # Define a non-lexicographical column order | COMMENT |
| MEDIUM | tests/unit_tests/databases/api_test.py | 626 | # Create a mock object | COMMENT |
| MEDIUM | tests/unit_tests/databases/api_test.py | 2431 | # Create a database with a non-default configuration_method | COMMENT |
| MEDIUM | tests/unit_tests/security/manager_test.py | 2210 | # Create a mock table where .data raises an exception if accessed | COMMENT |
| MEDIUM | tests/unit_tests/dao/tag_test.py | 150 | # Define a list of objects to tag | COMMENT |
| MEDIUM | tests/unit_tests/semantic_layers/mapper_test.py | 1820 | # Create main dataframe | COMMENT |
| MEDIUM⚡ | tests/unit_tests/utils/test_date_parsing.py | 197 | # Create a DataFrame with string values representing dates that are | COMMENT |
| MEDIUM⚡ | tests/unit_tests/utils/test_date_parsing.py | 202 | # Create a mock type that raises ValueError when pd.Timestamp is called on it | COMMENT |
| MEDIUM⚡ | tests/unit_tests/utils/test_core.py | 501 | # Create a mock SQLAlchemy database object | COMMENT |
| MEDIUM⚡ | tests/unit_tests/utils/test_core.py | 504 | # Define the table name and constraint details | COMMENT |
| MEDIUM⚡ | tests/unit_tests/utils/test_core.py | 510 | # Create a mock table object with the same structure | COMMENT |
| MEDIUM⚡ | tests/unit_tests/utils/test_core.py | 515 | # Create a mock for the referred_table with a name attribute | COMMENT |
| MEDIUM⚡ | tests/unit_tests/utils/test_core.py | 519 | # Create a mock for the foreign key constraint with a name attribute | COMMENT |
| MEDIUM⚡ | tests/unit_tests/utils/test_core.py | 544 | # Create a mock SQLAlchemy database object | COMMENT |
| MEDIUM⚡ | tests/unit_tests/utils/test_core.py | 547 | # Define the table name and constraint details | COMMENT |
| MEDIUM⚡ | tests/unit_tests/utils/test_core.py | 552 | # Create a mock table object with the same structure but no matching constraint | COMMENT |
| MEDIUM | tests/unit_tests/utils/test_core.py | 409 | # Create a DataFrame with timestamp strings | COMMENT |
| MEDIUM | tests/unit_tests/utils/test_core.py | 576 | # Create a mock for the foreign key constraint as a dictionary | COMMENT |
| MEDIUM | tests/unit_tests/models/helpers_test.py | 384 | # Create a mock table for testing | COMMENT |
| MEDIUM | tests/unit_tests/models/helpers_test.py | 415 | # Create a condition factory that always returns True | COMMENT |
| MEDIUM | tests/unit_tests/models/helpers_test.py | 476 | # Create a mock table for testing | COMMENT |
| MEDIUM | tests/unit_tests/models/helpers_test.py | 493 | # Create a condition factory that always returns False | COMMENT |
| MEDIUM | tests/unit_tests/models/helpers_test.py | 539 | # Create a real table instance | COMMENT |
| MEDIUM | tests/unit_tests/models/helpers_test.py | 637 | # Create a table instance | COMMENT |
| MEDIUM | tests/unit_tests/models/helpers_test.py | 902 | # Create a mock template processor | COMMENT |
| MEDIUM | tests/unit_tests/models/helpers_test.py | 1256 | # Create a mock template processor | COMMENT |
| MEDIUM | tests/unit_tests/models/helpers_test.py | 1386 | # Create a simple query | COMMENT |
| MEDIUM | tests/unit_tests/models/helpers_test.py | 1442 | # Create a simple query | COMMENT |
| MEDIUM | tests/unit_tests/models/helpers_test.py | 1492 | # Create a query with GROUP BY | COMMENT |
| MEDIUM | tests/unit_tests/models/helpers_test.py | 1553 | # Create a simple query | COMMENT |
| MEDIUM | tests/unit_tests/models/helpers_test.py | 1598 | # Create a simple query | COMMENT |
| MEDIUM | tests/unit_tests/models/helpers_test.py | 1760 | # Create a table with a temporal column | COMMENT |
| MEDIUM | tests/unit_tests/models/helpers_test.py | 1843 | # Create a mock SqlaTable with columns | COMMENT |
| MEDIUM | …it_tests/models/test_time_filter_double_application.py | 54 | # Create a virtual dataset that uses get_time_filter with | COMMENT |
| MEDIUM | …it_tests/models/test_time_filter_double_application.py | 93 | # Create a query object with a time filter | STRING |
| MEDIUM | tests/unit_tests/tags/models_test.py | 154 | # Create an existing tag | COMMENT |
| MEDIUM | tests/unit_tests/tags/commands/create_test.py | 77 | # Define a list of objects to tag | COMMENT |
| MEDIUM | tests/unit_tests/tags/commands/create_test.py | 120 | # Define a list of objects to tag | COMMENT |
| MEDIUM | tests/unit_tests/tags/commands/update_test.py | 237 | # Create a tag with multiple objects | COMMENT |
| MEDIUM | tests/unit_tests/mcp_service/chart/test_chart_utils.py | 1302 | # Create a time series chart configuration | COMMENT |
| MEDIUM | …it_tests/mcp_service/chart/tool/test_generate_chart.py | 145 | # Create a validation error with the correct structure | COMMENT |
| MEDIUM⚡ | tests/unit_tests/common/test_query_context_processor.py | 597 | # Create a dataframe for testing | COMMENT |
| MEDIUM⚡ | tests/unit_tests/common/test_query_context_processor.py | 606 | # Create a properly mocked datasource | COMMENT |
| MEDIUM⚡ | tests/unit_tests/common/test_query_context_processor.py | 1196 | # Create a mock query context | COMMENT |
| MEDIUM⚡ | tests/unit_tests/common/test_query_context_processor.py | 1201 | # Create a mock datasource | COMMENT |
| MEDIUM | tests/unit_tests/common/test_query_context_processor.py | 49 | # Create a processor instance | COMMENT |
| MEDIUM | tests/unit_tests/common/test_query_context_processor.py | 532 | # Create a dataframe for testing | COMMENT |
| MEDIUM | tests/unit_tests/common/test_query_context_processor.py | 1041 | # Create a mock datasource | COMMENT |
| MEDIUM | tests/unit_tests/common/test_query_context_processor.py | 1215 | # Create a query object with unsanitized where clause | COMMENT |
| MEDIUM | tests/unit_tests/common/test_query_context_processor.py | 1282 | # Create a mock datasource | COMMENT |
| MEDIUM | tests/unit_tests/db_engine_specs/test_snowflake.py | 363 | # Create a mock SQLAlchemy column | COMMENT |
| MEDIUM | tests/unit_tests/db_engine_specs/test_athena.py | 101 | # Create a mock SQLAlchemy column | COMMENT |
| MEDIUM | tests/unit_tests/db_engine_specs/test_base.py | 492 | # Create a mock SQLAlchemy column | COMMENT |
| MEDIUM | tests/unit_tests/db_engine_specs/test_base.py | 511 | # Create a test engine spec that uses equality | COMMENT |
| MEDIUM | tests/unit_tests/examples/data_loading_test.py | 178 | # Create a simple example with data.parquet and dataset.yaml | COMMENT |
| 134 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | superset-core/src/superset_core/tasks/models.py | 91 | def set_payload(self, data: dict[str, Any]) -> None: | CODE |
| LOW | superset-core/src/superset_core/tasks/models.py | 123 | def update_properties(self, updates: "TaskProperties") -> None: | CODE |
| LOW | superset-core/src/superset_core/tasks/models.py | 166 | __all__ = [ | CODE |
| LOW | superset-core/src/superset_core/tasks/daos.py | 76 | __all__ = ["TaskDAO"] | CODE |
| LOW | superset-core/src/superset_core/tasks/types.py | 231 | __all__ = [ | CODE |
| LOW | superset-core/src/superset_core/tasks/decorators.py | 149 | __all__ = [ | CODE |
| LOW | …erset-core/src/superset_core/semantic_layers/models.py | 85 | __all__ = ["SemanticLayerModel", "SemanticViewModel"] | CODE |
| LOW | superset-core/src/superset_core/semantic_layers/daos.py | 169 | __all__ = ["AbstractSemanticLayerDAO", "AbstractSemanticViewDAO"] | CODE |
| LOW | …t-core/src/superset_core/semantic_layers/decorators.py | 102 | __all__ = ["semantic_layer"] | CODE |
| LOW | superset-core/src/superset_core/queries/models.py | 76 | __all__ = [ | CODE |
| LOW | superset-core/src/superset_core/queries/query.py | 51 | __all__ = ["get_sqlglot_dialect"] | CODE |
| LOW | superset-core/src/superset_core/queries/daos.py | 60 | __all__ = [ | CODE |
| LOW | superset-core/src/superset_core/queries/types.py | 170 | __all__ = [ | CODE |
| LOW | superset-core/src/superset_core/mcp/decorators.py | 188 | __all__ = [ | CODE |
| LOW | superset-core/src/superset_core/common/models.py | 395 | __all__ = [ | CODE |
| LOW | superset-core/src/superset_core/rest_api/api.py | 32 | __all__ = ["RestApi"] | CODE |
| LOW | superset-core/src/superset_core/rest_api/decorators.py | 103 | __all__ = ["api"] | CODE |
| LOW | tests/unit_tests/security/test_password_change.py | 133 | def _set_user() -> None: # pylint: disable=unused-variable | CODE |
| LOW | tests/unit_tests/models/test_virtual_dataset_format.py | 71 | def _set_virtual_sql(datasource: MagicMock, sql: str) -> None: | CODE |
| LOW | tests/unit_tests/mcp_service/rls/tool/test_rls_tools.py | 30 | logger = logging.getLogger(__name__) | CODE |
| LOW | …tests/mcp_service/database/tool/test_database_tools.py | 34 | logger = logging.getLogger(__name__) | CODE |
| LOW | …t_tests/mcp_service/dataset/tool/test_dataset_tools.py | 47 | logger = logging.getLogger(__name__) | CODE |
| LOW⚡ | …mcp_service/saved_query/tool/test_saved_query_tools.py | 36 | logger = logging.getLogger(__name__) | CODE |
| LOW⚡ | …e/annotation_layer/tool/test_annotation_layer_tools.py | 39 | logger = logging.getLogger(__name__) | CODE |
| LOW | …mcp_service/explore/tool/test_generate_explore_link.py | 50 | logger = logging.getLogger(__name__) | CODE |
| LOW | …p_service/dashboard/tool/test_manage_native_filters.py | 53 | logger = logging.getLogger(__name__) | CODE |
| LOW⚡ | …dashboard/tool/test_add_chart_to_existing_dashboard.py | 44 | logger = logging.getLogger(__name__) | CODE |
| LOW | …sts/mcp_service/dashboard/tool/test_dashboard_tools.py | 45 | logger = logging.getLogger(__name__) | CODE |
| LOW | …cp_service/dashboard/tool/test_dashboard_generation.py | 46 | logger = logging.getLogger(__name__) | CODE |
| LOW⚡ | …ice/dashboard/tool/test_remove_chart_from_dashboard.py | 53 | logger = logging.getLogger(__name__) | CODE |
| LOW⚡ | …mcp_service/dashboard/tool/test_duplicate_dashboard.py | 56 | logger = logging.getLogger(__name__) | CODE |
| LOW | …nit_tests/mcp_service/sql_lab/tool/test_execute_sql.py | 40 | logger = logging.getLogger(__name__) | CODE |
| LOW | …nit_tests/mcp_service/report/tool/test_report_tools.py | 31 | logger = logging.getLogger(__name__) | CODE |
| LOW⚡ | …/unit_tests/mcp_service/query/tool/test_query_tools.py | 35 | logger = logging.getLogger(__name__) | CODE |
| LOW | tests/unit_tests/mcp_service/tag/tool/test_tag_tools.py | 31 | logger = logging.getLogger(__name__) | CODE |
| LOW | tests/unit_tests/commands/report/update_test.py | 58 | def _setup_mocks(mocker: MockerFixture, model: Mock) -> None: | CODE |
| LOW | tests/unit_tests/sql/execution/test_executor.py | 736 | def set_query_id(query: Any) -> None: | CODE |
| LOW | tests/integration_tests/core_tests.py | 74 | logger = logging.getLogger(__name__) | CODE |
| LOW | tests/integration_tests/viz_tests.py | 37 | logger = logging.getLogger(__name__) | CODE |
| LOW | tests/integration_tests/cli_tests.py | 42 | logger = logging.getLogger(__name__) | CODE |
| LOW | tests/integration_tests/email_tests.py | 36 | logger = logging.getLogger(__name__) | CODE |
| LOW | tests/integration_tests/security/migrate_roles_tests.py | 36 | logger = logging.getLogger(__name__) | CODE |
| LOW | …tegration_tests/security/session_invalidation_tests.py | 42 | def _set_active(self, active: bool) -> None: | CODE |
| LOW | …s/integration_tests/dashboards/dashboard_test_utils.py | 30 | logger = logging.getLogger(__name__) | CODE |
| LOW | …/integration_tests/dashboards/superset_factory_util.py | 41 | logger = logging.getLogger(__name__) | CODE |
| LOW | …generator/birth_names/birth_names_generator_factory.py | 40 | def set_instance(cls, factory: BirthNamesGeneratorFactory) -> None: | CODE |
| LOW | scripts/benchmark_migration.py | 39 | logger = logging.getLogger(__name__) | CODE |
| LOW | superset/config.py | 72 | logger = logging.getLogger(__name__) | CODE |
| LOW | superset/stats_logger.py | 22 | logger = logging.getLogger(__name__) | CODE |
| LOW | superset/legacy.py | 22 | def update_time_range(form_data: dict[str, Any]) -> None: | CODE |
| LOW | superset/dataframe.py | 26 | logger = logging.getLogger(__name__) | CODE |
| LOW | superset/marshmallow_compatibility.py | 35 | logger = logging.getLogger(__name__) | CODE |
| LOW | superset/sql_lab.py | 76 | logger = logging.getLogger(__name__) | CODE |
| LOW | superset/app.py | 49 | logger = logging.getLogger(__name__) | CODE |
| LOW | superset/result_set.py | 33 | logger = logging.getLogger(__name__) | CODE |
| LOW | superset/viz.py | 92 | logger = logging.getLogger(__name__) | CODE |
| LOW | superset/viz.py | 1876 | def _setup_metric_label(self) -> None: | CODE |
| LOW | superset/jinja_context.py | 66 | logger = logging.getLogger(__name__) | CODE |
| LOW | superset/jinja_context.py | 791 | def set_context(self, **kwargs: Any) -> None: | CODE |
| LOW | superset/jinja_context.py | 903 | def set_context(self, **kwargs: Any) -> None: | CODE |
| 489 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | setup.py | 35 | except Exception: # pylint: disable=broad-except | CODE |
| MEDIUM | setup.py | 31 | def get_git_sha() -> str: | CODE |
| LOW | tests/unit_tests/server/test_gunicorn_gevent_smoke.py | 117 | except Exception as ex: # noqa: BLE001 | CODE |
| LOW⚡ | tests/unit_tests/utils/test_core.py | 1692 | except Exception: | CODE |
| LOW⚡ | tests/unit_tests/utils/test_core.py | 1699 | except Exception: | CODE |
| MEDIUM | tests/unit_tests/models/core_test.py | 985 | def worker() -> None: | CODE |
| MEDIUM | tests/unit_tests/models/core_test.py | 1963 | def thread_a() -> None: | CODE |
| MEDIUM | tests/unit_tests/models/core_test.py | 1974 | def thread_b() -> None: | CODE |
| LOW | tests/unit_tests/models/core_test.py | 991 | except Exception as ex: # pylint: disable=broad-except | CODE |
| LOW | tests/unit_tests/models/core_test.py | 1229 | except Exception: | CODE |
| LOW | tests/unit_tests/models/core_test.py | 1968 | except Exception as ex: # pylint: disable=broad-except | CODE |
| LOW | tests/unit_tests/models/core_test.py | 1982 | except Exception as ex: # pylint: disable=broad-except | CODE |
| LOW | tests/unit_tests/extensions/test_sqlalchemy.py | 136 | except Exception as e: | CODE |
| LOW | tests/unit_tests/extensions/test_sqlalchemy.py | 177 | except Exception as e: | CODE |
| LOW | tests/unit_tests/extensions/test_sqlalchemy.py | 212 | except Exception as e: | CODE |
| LOW | tests/unit_tests/extensions/test_sqlalchemy.py | 256 | except Exception as e: | STRING |
| LOW | tests/unit_tests/extensions/test_sqlalchemy.py | 323 | except Exception as e: | CODE |
| LOW | tests/unit_tests/extensions/test_sqlalchemy.py | 357 | except Exception as e: | CODE |
| LOW | tests/unit_tests/commands/dataset/update_test.py | 836 | except Exception as e: | CODE |
| LOW | tests/unit_tests/commands/dataset/update_test.py | 880 | except Exception as e: | CODE |
| LOW | tests/unit_tests/commands/dataset/update_test.py | 939 | except Exception as e: | CODE |
| LOW | tests/unit_tests/commands/dataset/update_test.py | 1002 | except Exception as e: | CODE |
| LOW | tests/unit_tests/commands/dataset/update_test.py | 1043 | except Exception as e: | CODE |
| LOW | tests/unit_tests/commands/dataset/update_test.py | 1091 | except Exception as e: | CODE |
| LOW | tests/unit_tests/commands/dataset/update_test.py | 1116 | except Exception as e: | CODE |
| LOW | tests/integration_tests/conftest.py | 128 | except Exception: # noqa: S110 | CODE |
| LOW | tests/integration_tests/tasks/api_tests.py | 110 | except Exception: # noqa: S110 | CODE |
| LOW | tests/integration_tests/tasks/api_tests.py | 115 | except Exception: | CODE |
| LOW | …sts/integration_tests/tags/mysql_compatibility_test.py | 263 | except Exception as e: | CODE |
| LOW⚡ | …integration_tests/dashboards/test_theme_integration.py | 82 | except Exception: | CODE |
| LOW⚡ | …integration_tests/dashboards/test_theme_integration.py | 329 | except Exception: | CODE |
| MEDIUM | …/integration_tests/dashboards/superset_factory_util.py | 200 | def delete_all_inserted_dashboards(): | CODE |
| MEDIUM | …/integration_tests/dashboards/superset_factory_util.py | 264 | def delete_all_inserted_slices(): | CODE |
| MEDIUM | …/integration_tests/dashboards/superset_factory_util.py | 303 | def delete_all_inserted_tables(): | CODE |
| MEDIUM | …/integration_tests/dashboards/superset_factory_util.py | 342 | def delete_all_inserted_dbs(): | CODE |
| LOW | …/integration_tests/dashboards/superset_factory_util.py | 213 | except Exception: | CODE |
| LOW | …/integration_tests/dashboards/superset_factory_util.py | 219 | except Exception: | CODE |
| LOW | …/integration_tests/dashboards/superset_factory_util.py | 278 | except Exception: | CODE |
| LOW | …/integration_tests/dashboards/superset_factory_util.py | 284 | except Exception: | CODE |
| LOW | …/integration_tests/dashboards/superset_factory_util.py | 317 | except Exception: | CODE |
| LOW | …/integration_tests/dashboards/superset_factory_util.py | 323 | except Exception: | CODE |
| LOW | …/integration_tests/dashboards/superset_factory_util.py | 352 | except Exception: | CODE |
| LOW | …/integration_tests/dashboards/superset_factory_util.py | 358 | except Exception: | CODE |
| LOW⚡ | …integration_tests/themes/test_theme_api_permissions.py | 66 | except Exception: | CODE |
| LOW⚡ | …integration_tests/themes/test_theme_api_permissions.py | 71 | except Exception: | CODE |
| LOW | tests/integration_tests/reports/utils.py | 222 | except Exception as ex: # pylint: disable=broad-except | CODE |
| LOW | …rsion-6.1.0/guidelines/backend/dao-style-guidelines.md | 251 | except Exception: | CODE |
| LOW | …eloper_docs/guidelines/backend/dao-style-guidelines.md | 251 | except Exception: | CODE |
| MEDIUM | docs/scripts/fix-openapi-spec.py | 795 | print(f"Error: OpenAPI spec not found at {spec_path}", file=sys.stderr) | CODE |
| MEDIUM | docs/scripts/extract_custom_errors.py | 182 | print(f"Error parsing {filepath}: {e}", file=sys.stderr) | CODE |
| MEDIUM | docs/scripts/extract_custom_errors.py | 274 | print(f"Error: Engine specs directory not found: {specs_dir}", file=sys.stderr) | CODE |
| LOW | scripts/benchmark_migration.py | 203 | except Exception: | CODE |
| LOW | superset/config.py | 130 | except Exception: # pylint: disable=broad-except | CODE |
| LOW | superset/config.py | 138 | except Exception: # pylint: disable=broad-except | CODE |
| LOW | superset/config.py | 3053 | except Exception: | CODE |
| LOW | superset/config.py | 3068 | except Exception: | CODE |
| LOW | superset/stats_logger.py | 108 | except Exception as e: # pylint: disable=broad-except # noqa: S110 | CODE |
| LOW | superset/sql_lab.py | 162 | except Exception as ex: | CODE |
| LOW | superset/sql_lab.py | 198 | except Exception as ex: # pylint: disable=broad-except | CODE |
| LOW | superset/sql_lab.py | 328 | except Exception as ex: | CODE |
| 455 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/unit_tests/sql_lab_test.py | 202 | app_context.push() | CODE |
| HIGH | tests/unit_tests/pandas_postprocessing/test_cum.py | 39 | assert _timeseries_df.equals(timeseries_df) | CODE |
| HIGH | tests/unit_tests/pandas_postprocessing/test_cum.py | 122 | assert cum_and_flat_df.equals( | CODE |
| HIGH | tests/unit_tests/pandas_postprocessing/test_cum.py | 168 | assert flat_df.equals( | CODE |
| HIGH | tests/unit_tests/pandas_postprocessing/test_rolling.py | 40 | assert _timeseries_df.equals(timeseries_df) | CODE |
| HIGH | tests/unit_tests/pandas_postprocessing/test_rolling.py | 161 | assert flat_df.equals( | CODE |
| HIGH | tests/unit_tests/pandas_postprocessing/test_rolling.py | 212 | assert flat_df.equals( | CODE |
| HIGH | tests/unit_tests/pandas_postprocessing/test_resample.py | 34 | assert _timeseries_df.equals(timeseries_df) | CODE |
| HIGH | tests/unit_tests/pandas_postprocessing/test_resample.py | 49 | assert post_df.equals( | CODE |
| HIGH | tests/unit_tests/pandas_postprocessing/test_resample.py | 72 | assert post_df.equals( | CODE |
| HIGH | tests/unit_tests/pandas_postprocessing/test_resample.py | 95 | assert post_df.equals( | CODE |
| HIGH | tests/unit_tests/pandas_postprocessing/test_resample.py | 120 | assert post_df.equals( | CODE |
| HIGH | tests/unit_tests/pandas_postprocessing/test_resample.py | 194 | assert flat_df.equals( | CODE |
| HIGH | tests/unit_tests/pandas_postprocessing/test_resample.py | 241 | assert post_df.equals( | CODE |
| HIGH | tests/unit_tests/pandas_postprocessing/test_sort.py | 49 | assert df.equals(timeseries_df) | CODE |
| HIGH | tests/unit_tests/pandas_postprocessing/test_rename.py | 34 | assert _categories_df.equals(categories_df) | CODE |
| HIGH⚡ | tests/unit_tests/pandas_postprocessing/test_rename.py | 54 | assert not new_categories_df.equals(categories_df) | CODE |
| HIGH⚡ | tests/unit_tests/pandas_postprocessing/test_rename.py | 67 | assert _categories_df_inplaced.equals(_categories_df) | CODE |
| HIGH | tests/unit_tests/pandas_postprocessing/test_compare.py | 36 | assert _timeseries_df2.equals(timeseries_df2) | CODE |
| HIGH | tests/unit_tests/pandas_postprocessing/test_compare.py | 54 | assert post_df.equals( | CODE |
| HIGH | tests/unit_tests/pandas_postprocessing/test_compare.py | 74 | assert post_df.equals( | CODE |
| HIGH | tests/unit_tests/pandas_postprocessing/test_compare.py | 100 | assert post_df.equals( | CODE |
| HIGH | tests/unit_tests/pandas_postprocessing/test_compare.py | 128 | assert post_df.equals( | CODE |
| HIGH | tests/unit_tests/pandas_postprocessing/test_compare.py | 170 | assert flat_df.equals( | CODE |
| HIGH | tests/unit_tests/pandas_postprocessing/test_compare.py | 234 | assert flat_df.equals( | CODE |
| HIGH | tests/unit_tests/pandas_postprocessing/test_compare.py | 286 | assert flat_df.equals( | CODE |
| HIGH | tests/unit_tests/databases/schema_tests.py | 491 | (e.g. {"metadata_cache_timeout": {"schema_cache_timeout": null}}). Import | STRING |
| HIGH | …it_tests/datasets/commands/importers/v1/import_test.py | 192 | assert sqla_table.metrics[0].extra == '{"warning_markdown": null}' | CODE |
| HIGH | …it_tests/datasets/commands/importers/v1/import_test.py | 662 | assert sqla_table.metrics[0].extra == '{"warning_markdown": null}' | CODE |
| HIGH | …it_tests/datasets/commands/importers/v1/import_test.py | 724 | "extra": '{"warning_markdown": null}', | CODE |
| HIGH | …it_tests/datasets/commands/importers/v1/import_test.py | 752 | assert sqla_table.metrics[0].extra == '{"warning_markdown": null}' | CODE |
| HIGH | tests/unit_tests/charts/test_client_processing.py | 2836 | ) # Second data row should have empty last_name (NA converted to null) | STRING |
| HIGH⚡ | tests/unit_tests/db_engine_specs/test_druid.py | 129 | real numbers must keep their numeric type (specials become null). | STRING |
| HIGH | tests/unit_tests/examples/utils_test.py | 125 | # Verify schema normalization happened (main -> null) | COMMENT |
| HIGH⚡ | …s/scripts/translations/build_translation_index_test.py | 222 | """Empty plural forms across the board → null, not an empty dict.""" | STRING |
| HIGH⚡ | …ts/unit_tests/scripts/translations/backfill_po_test.py | 94 | Non-object JSON (list, string, null, number) must raise ValueError so | STRING |
| HIGH⚡ | tests/unit_tests/sql/dialects/vertica_tests.py | 69 | sql = "SELECT a::INT, b || c FROM t WHERE d ~ '^foo'" | CODE |
| HIGH⚡ | tests/unit_tests/sql/dialects/vertica_tests.py | 74 | assert regenerated == "SELECT CAST(a AS INT), b || c FROM t WHERE d ~ '^foo'" | CODE |
| HIGH | tests/integration_tests/model_tests.py | 475 | else "state || gender || '_test'" | STRING |
| HIGH | tests/integration_tests/sqla_models_tests.py | 1148 | assert df.equals(result.df) | CODE |
| HIGH | tests/integration_tests/query_context_tests.py | 1303 | assert df.equals( | CODE |
| HIGH | tests/integration_tests/query_context_tests.py | 1355 | assert df.equals( | CODE |
| HIGH | tests/integration_tests/utils/hashing_tests.py | 166 | '{"company": "Gobias Industries", "price": null, "product": "Coffee"}' | CODE |
| HIGH | tests/integration_tests/utils/hashing_tests.py | 193 | '{"company": "Gobias Industries", "price": null, "product": "Coffee"}' | CODE |
| HIGH | tests/integration_tests/db_engine_specs/presto_tests.py | 373 | {"row_column": "[[null]]"}, | CODE |
| HIGH | tests/integration_tests/db_engine_specs/presto_tests.py | 374 | {"row_column": "[null]"}, | CODE |
| HIGH | scripts/translations/backfill_po.py | 355 | # response (list, scalar, null) must surface as ValueError rather than | COMMENT |
| HIGH | superset/databases/schemas.py | 286 | # rejects null) and avoiding a stored ``null`` that would break the | COMMENT |
| HIGH | superset/charts/schemas.py | 445 | "metrics have a unique identifier. If undefined, a random name" | CODE |
| HIGH | superset/charts/schemas.py | 785 | "When metrics is undefined or null, the query is executed without a groupby. " # noqa: E501 | CODE |
| HIGH | superset/utils/encrypt.py | 526 | target form), null, and failed (undecryptable) outcomes. If any | STRING |
| HIGH | superset/utils/encrypt.py | 555 | " %d null, %d failed", | CODE |
| HIGH | superset/utils/encrypt.py | 558 | stats.null, | CODE |
| HIGH | superset/utils/screenshot_utils.py | 162 | if (r.top < window.innerHeight && r.bottom > 0) { | STRING |
| HIGH | superset/utils/core.py | 1528 | current user (which may be undefined) to different one, execute some SQLAlchemy | STRING |
| HIGH | superset/utils/webdriver.py | 53 | "pip install playwright && playwright install chromium" | CODE |
| HIGH | superset/utils/pandas_postprocessing/select.py | 37 | If left undefined, all columns will be selected. If columns are | STRING |
| HIGH | superset/cli/update.py | 159 | f"{stats.skipped} skipped, {stats.null} null, {stats.failed} failed.", | CODE |
| HIGH | superset/mcp_service/chart/tool/get_chart_data.py | 455 | # Only use if it's actually a dict (not null, list, etc.) | COMMENT |
| HIGH | superset/versioning/diff.py | 294 | * ``edit`` — both populated (or both null, which shouldn't reach here). | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/unit_tests/initialization_test.py | 228 | CODE | |
| LOW | …/unit_tests/distributed_lock/distributed_lock_tests.py | 63 | CODE | |
| LOW | …/unit_tests/distributed_lock/distributed_lock_tests.py | 93 | CODE | |
| LOW | tests/unit_tests/server/test_gunicorn_gevent_smoke.py | 63 | CODE | |
| LOW | tests/unit_tests/utils/date_parser_tests.py | 42 | CODE | |
| LOW | tests/unit_tests/models/core_test.py | 946 | CODE | |
| LOW | tests/unit_tests/models/core_test.py | 985 | CODE | |
| LOW | tests/unit_tests/mcp_service/test_auth_api_key.py | 146 | CODE | |
| LOW | tests/unit_tests/mcp_service/test_auth_api_key.py | 188 | CODE | |
| LOW | …ts/unit_tests/mcp_service/test_auth_user_resolution.py | 264 | CODE | |
| LOW | tests/unit_tests/mcp_service/test_mcp_caching.py | 158 | CODE | |
| LOW | tests/unit_tests/mcp_service/test_mcp_storage.py | 61 | CODE | |
| LOW | …it_tests/mcp_service/chart/tool/test_get_chart_data.py | 97 | CODE | |
| LOW | …t_tests/mcp_service/sql_lab/test_execute_sql_helper.py | 26 | CODE | |
| LOW | tests/unit_tests/common/test_query_context_processor.py | 526 | CODE | |
| LOW | tests/unit_tests/common/test_query_context_processor.py | 592 | CODE | |
| LOW | tests/unit_tests/common/test_query_context_processor.py | 1642 | CODE | |
| LOW | tests/unit_tests/common/test_query_context_processor.py | 1712 | CODE | |
| LOW | tests/unit_tests/common/test_query_context_processor.py | 1772 | CODE | |
| LOW | tests/unit_tests/commands/databases/csv_reader_test.py | 1260 | CODE | |
| LOW | tests/unit_tests/commands/dataset/test_duplicate.py | 77 | CODE | |
| LOW | tests/unit_tests/commands/dataset/test_duplicate.py | 170 | CODE | |
| LOW | tests/unit_tests/commands/dataset/test_duplicate.py | 261 | CODE | |
| LOW | tests/unit_tests/commands/dataset/test_duplicate.py | 300 | CODE | |
| LOW | tests/unit_tests/commands/dataset/test_duplicate.py | 342 | CODE | |
| LOW | tests/unit_tests/commands/dataset/test_duplicate.py | 450 | CODE | |
| LOW | tests/unit_tests/commands/dataset/test_create.py | 29 | CODE | |
| LOW | tests/unit_tests/commands/dataset/test_create.py | 78 | CODE | |
| LOW | tests/unit_tests/commands/dataset/test_create.py | 140 | CODE | |
| LOW | tests/unit_tests/commands/dataset/test_create.py | 176 | CODE | |
| LOW | tests/unit_tests/commands/dataset/test_create.py | 217 | CODE | |
| LOW | tests/unit_tests/commands/chart/test_access_checks.py | 43 | CODE | |
| LOW | tests/unit_tests/commands/chart/test_access_checks.py | 72 | CODE | |
| LOW | tests/unit_tests/commands/chart/test_access_checks.py | 103 | CODE | |
| LOW | tests/unit_tests/commands/chart/test_access_checks.py | 144 | CODE | |
| LOW | tests/integration_tests/base_tests.py | 688 | CODE | |
| LOW | tests/integration_tests/datasource_tests.py | 389 | CODE | |
| LOW | tests/integration_tests/tasks/commands/test_cancel.py | 342 | CODE | |
| LOW | tests/integration_tests/tasks/commands/test_cancel.py | 379 | CODE | |
| LOW | tests/integration_tests/tasks/commands/test_cancel.py | 453 | CODE | |
| LOW | tests/integration_tests/charts/data/api_tests.py | 1629 | CODE | |
| LOW | tests/integration_tests/dashboards/api_tests.py | 2965 | CODE | |
| LOW | docs/scripts/fix-openapi-spec.py | 327 | CODE | |
| LOW | docs/scripts/fix-openapi-spec.py | 548 | CODE | |
| LOW | docs/scripts/fix-openapi-spec.py | 652 | CODE | |
| LOW | docs/scripts/fix-openapi-spec.py | 711 | CODE | |
| LOW | docs/scripts/fix-openapi-spec.py | 746 | CODE | |
| LOW | docs/scripts/extract_custom_errors.py | 119 | CODE | |
| LOW | docs/scripts/extract_custom_errors.py | 139 | CODE | |
| LOW | scripts/cypress_run.py | 106 | CODE | |
| LOW | scripts/extract_feature_flags.py | 50 | CODE | |
| LOW | scripts/extract_feature_flags.py | 118 | CODE | |
| LOW | scripts/benchmark_migration.py | 73 | CODE | |
| LOW | scripts/benchmark_migration.py | 141 | CODE | |
| LOW | scripts/translations/build_translation_index.py | 76 | CODE | |
| LOW | superset/sql_lab.py | 253 | CODE | |
| LOW | superset/sql_lab.py | 391 | CODE | |
| LOW | superset/result_set.py | 70 | CODE | |
| LOW | superset/result_set.py | 177 | CODE | |
| LOW | superset/viz.py | 201 | CODE | |
| 259 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docker/frontend-mem-nag.sh | 26 | # Check if running in Codespaces first | COMMENT |
| LOW | docker/docker-pytest-entrypoint.sh | 89 | # Check if test database exists | COMMENT |
| LOW | tests/unit_tests/tasks/test_handlers.py | 562 | # Set task to SUCCESS (not aborting) so only cleanup handlers run | COMMENT |
| LOW | tests/unit_tests/tasks/test_handlers.py | 614 | # Set task to ABORTING so both abort and cleanup handlers run | COMMENT |
| LOW⚡ | tests/unit_tests/security/manager_test.py | 563 | # Check if Alpha role already exists | COMMENT |
| LOW⚡ | tests/unit_tests/security/manager_test.py | 570 | # Check if user already exists | COMMENT |
| LOW | tests/unit_tests/dao/base_dao_test.py | 205 | # Set model_cls to None but allow method to proceed past guard clause | COMMENT |
| LOW | tests/unit_tests/utils/test_screenshot_cache_fix.py | 224 | # Set TTL to 300 seconds | COMMENT |
| LOW | tests/unit_tests/utils/test_screenshot_cache_fix.py | 239 | # Set TTL to 300 seconds | COMMENT |
| LOW | …it_tests/models/test_time_filter_double_application.py | 135 | # Check if there's a WHERE clause after the subquery closes | STRING |
| LOW | …it_tests/models/test_time_filter_double_application.py | 358 | # Check if there's a WHERE clause after the subquery | STRING |
| LOW | …s/unit_tests/mcp_service/test_mcp_tool_registration.py | 104 | # Check if it has any .py files in it or its subdirectories | COMMENT |
| LOW | …t_tests/mcp_service/sql_lab/test_execute_sql_helper.py | 36 | # Check if it's a Pydantic model with model_dump | COMMENT |
| LOW | tests/unit_tests/db_engine_specs/test_trino.py | 560 | # Set stats to FINISHED so the progress loop exits immediately | COMMENT |
| LOW⚡ | tests/unit_tests/commands/databases/csv_reader_test.py | 262 | # Check if both values are NaN | COMMENT |
| LOW⚡ | …sts/unit_tests/commands/databases/excel_reader_test.py | 185 | # Check if both values are NaN | COMMENT |
| LOW | …/unit_tests/commands/databases/columnar_reader_test.py | 129 | # Check if both values are NaN | COMMENT |
| LOW | tests/unit_tests/sql/execution/test_celery_task.py | 84 | # Set end_time to trigger the branch skip | COMMENT |
| LOW | tests/integration_tests/tasks/test_event_handlers.py | 251 | # Set status to ABORTING (simulating CancelTaskCommand) | COMMENT |
| LOW⚡ | …integration_tests/dashboards/test_theme_integration.py | 89 | # Assign theme to dashboard | COMMENT |
| LOW⚡ | …integration_tests/dashboards/test_theme_integration.py | 100 | # Assign theme to dashboard | COMMENT |
| LOW⚡ | …integration_tests/dashboards/test_theme_integration.py | 332 | # Set theme to None so tearDown doesn't try to delete it | COMMENT |
| LOW | …integration_tests/dashboards/test_theme_integration.py | 157 | # Assign theme to dashboard | COMMENT |
| LOW | …integration_tests/dashboards/test_theme_integration.py | 182 | # Assign theme to dashboard | COMMENT |
| LOW | …integration_tests/dashboards/test_theme_integration.py | 211 | # Assign theme to dashboard | COMMENT |
| LOW | …integration_tests/dashboards/test_theme_integration.py | 231 | # Set theme to None so tearDown doesn't try to delete it | COMMENT |
| LOW | …integration_tests/dashboards/test_theme_integration.py | 251 | # Assign theme to both dashboards | COMMENT |
| LOW | …integration_tests/dashboards/test_theme_integration.py | 374 | # Assign theme to dashboard | COMMENT |
| LOW | docs/scripts/fix-openapi-spec.py | 467 | # Check if endpoint has a request body | COMMENT |
| LOW | docs/scripts/fix-openapi-spec.py | 504 | # Check if already configured | COMMENT |
| LOW | docs/scripts/fix-openapi-spec.py | 780 | # Check if this suffix is already in the summary | COMMENT |
| LOW | .devcontainer/start-superset.sh | 7 | # Check if MCP is enabled | COMMENT |
| LOW | .devcontainer/start-superset.sh | 21 | # Check if docker is running | COMMENT |
| LOW | scripts/docker-compose-up.sh | 131 | # Check if containers are running and get actual ports, otherwise use available ports | COMMENT |
| LOW | scripts/change_detector.py | 146 | # Output results | COMMENT |
| LOW | .github/workflows/bashlib.sh | 347 | # Check if there are any test files in the specified path | COMMENT |
| LOW⚡ | superset/config.py | 2989 | # Set CACHE_TYPE to 'RedisCache' for standard Redis or 'RedisSentinelCache' for | COMMENT |
| LOW | superset/sql_lab.py | 515 | # Check if stopped | COMMENT |
| LOW | superset/app.py | 191 | # Check if database is up-to-date with migrations | COMMENT |
| LOW | superset/result_set.py | 234 | # Check if original data has nested types (lists/dicts) | COMMENT |
| LOW | superset/connectors/sqla/models.py | 273 | # Check if all requested columns are drillable | COMMENT |
| LOW | superset/databases/schemas.py | 1122 | # Check if any sensitive field is still masked | COMMENT |
| LOW | superset/tasks/context.py | 372 | # Check if task execution has already completed (late abort race). | COMMENT |
| LOW⚡ | superset/tasks/context.py | 433 | # Check if all abort handlers completed successfully | COMMENT |
| LOW | superset/tasks/context.py | 479 | # Check if task already has an error (preserve original context) | COMMENT |
| LOW | superset/tasks/context.py | 545 | # Check if task has abort handler (requires app context) | COMMENT |
| LOW | superset/tasks/context.py | 564 | # Set status to ABORTING (same as user abort) | COMMENT |
| LOW | superset/tasks/manager.py | 81 | # Check if thread is still running after timeout | COMMENT |
| LOW | superset/tasks/manager.py | 540 | # Check if stop was requested - if so, this may be expected | COMMENT |
| LOW | superset/tasks/manager.py | 591 | # Check if we were asked to stop - if so, this is expected | COMMENT |
| LOW | superset/tasks/decorators.py | 336 | # Check if already in terminal state | COMMENT |
| LOW | superset/security/manager.py | 1623 | # Check if this is actually a multi-layer deck.gl chart | COMMENT |
| LOW | superset/security/manager.py | 2612 | # Check if database name has changed | COMMENT |
| LOW | superset/security/manager.py | 2933 | # Check if watched fields have changed | COMMENT |
| LOW | superset/semantic_layers/mapper.py | 912 | # Check if we need separate filters for the group limit subquery | COMMENT |
| LOW | superset/semantic_layers/mapper.py | 939 | # Check if inner time bounds are explicitly set and differ from outer bounds | COMMENT |
| LOW | superset/charts/client_processing.py | 372 | # Check if the DataFrame has a default RangeIndex, which should not be shown | COMMENT |
| LOW | superset/charts/data/api.py | 492 | # Check if we should use streaming for large datasets | COMMENT |
| LOW | superset/charts/data/api.py | 680 | # Check if we have rowcount in the second query result (like frontend does) | COMMENT |
| LOW | superset/utils/cache.py | 196 | # Check if the user can access the resource | COMMENT |
| 86 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/unit_tests/test_marshmallow_compatibility.py | 172 | data = {"name": "John Doe", "email": "john@example.com", "age": 30} | CODE |
| LOW | tests/unit_tests/test_marshmallow_compatibility.py | 174 | assert result["name"] == "John Doe" | CODE |
| LOW⚡ | tests/unit_tests/security/manager_test.py | 576 | email="adoe@example.org", | CODE |
| LOW | tests/unit_tests/security/manager_test.py | 466 | email="adoe@example.org", | CODE |
| LOW | tests/unit_tests/security/manager_test.py | 526 | email="adoe@example.org", | CODE |
| LOW | …it_tests/datasets/commands/importers/v1/import_test.py | 1028 | email="adoe@example.org", | CODE |
| LOW | …it_tests/datasets/commands/importers/v1/import_test.py | 1118 | email="adoe@example.org", | CODE |
| LOW | …it_tests/datasets/commands/importers/v1/import_test.py | 1167 | email="adoe@example.org", | CODE |
| LOW | …it_tests/datasets/commands/importers/v1/import_test.py | 1212 | email="bob@example.org", | CODE |
| LOW | …it_tests/datasets/commands/importers/v1/import_test.py | 1411 | email="adoe@example.org", | CODE |
| LOW | …unit_tests/charts/commands/importers/v1/import_test.py | 193 | email="adoe@example.org", | CODE |
| LOW | …unit_tests/charts/commands/importers/v1/import_test.py | 234 | email="adoe@example.org", | CODE |
| LOW | …unit_tests/charts/commands/importers/v1/import_test.py | 269 | email="adoe@example.org", | CODE |
| LOW | …unit_tests/charts/commands/importers/v1/import_test.py | 324 | email="adoe@example.org", | CODE |
| LOW | …unit_tests/charts/commands/importers/v1/import_test.py | 380 | email="adoe@example.org", | CODE |
| LOW | …unit_tests/charts/commands/importers/v1/import_test.py | 413 | email="bob@example.org", | CODE |
| LOW | tests/unit_tests/models/core_test.py | 526 | user.email = "alice.doe@example.org" | CODE |
| LOW | tests/unit_tests/models/core_test.py | 642 | user.email = "alice.doe@example.org" | CODE |
| LOW | tests/unit_tests/models/core_test.py | 697 | user.email = "alice.doe@example.org" | CODE |
| LOW | tests/unit_tests/models/core_test.py | 1312 | email="adoe@example.org", | CODE |
| LOW | tests/unit_tests/models/helpers_test.py | 2417 | "val": ["John Doe", "Jane Doe"], | CODE |
| LOW | tests/unit_tests/models/helpers_test.py | 2417 | "val": ["John Doe", "Jane Doe"], | CODE |
| LOW | tests/unit_tests/mcp_service/test_guest_token_auth.py | 65 | fake_token = "fake-token" # noqa: S105 — test fixture, not a real credential | CODE |
| LOW | tests/unit_tests/mcp_service/test_guest_token_auth.py | 66 | return AccessToken(token=fake_token, client_id=client_id, scopes=[], claims=claims) | CODE |
| LOW | tests/unit_tests/mcp_service/user/test_schemas.py | 88 | user.email = "admin@example.com" | CODE |
| LOW | tests/unit_tests/mcp_service/user/test_schemas.py | 102 | assert info.email == "admin@example.com" | CODE |
| LOW | tests/unit_tests/mcp_service/user/test_schemas.py | 116 | user.email = "admin@example.com" | CODE |
| LOW | tests/unit_tests/mcp_service/user/test_schemas.py | 139 | user.email = "admin@example.com" | CODE |
| LOW | tests/unit_tests/mcp_service/user/test_schemas.py | 153 | assert info.email == "admin@example.com" | CODE |
| LOW⚡ | …ts/unit_tests/mcp_service/user/tool/test_user_tools.py | 206 | user = create_mock_user(email="admin@example.com", roles=["Admin"]) | CODE |
| LOW⚡ | …ts/unit_tests/mcp_service/user/tool/test_user_tools.py | 216 | assert data["users"][0]["email"] == "admin@example.com" | CODE |
| LOW⚡ | …ts/unit_tests/mcp_service/user/tool/test_user_tools.py | 224 | user = create_mock_user(email="admin@example.com") | CODE |
| LOW | …ts/unit_tests/mcp_service/user/tool/test_user_tools.py | 44 | email: str = "admin@example.com", | CODE |
| LOW⚡ | …sts/mcp_service/dashboard/tool/test_dashboard_tools.py | 610 | refreshed_user.email = "admin@example.com" | CODE |
| LOW⚡ | …sts/mcp_service/dashboard/tool/test_dashboard_tools.py | 614 | current_user.email = "admin@example.com" | CODE |
| LOW | …sts/mcp_service/dashboard/tool/test_dashboard_tools.py | 629 | email="admin@example.com" | CODE |
| LOW | …cp_service/dashboard/tool/test_dashboard_generation.py | 155 | mock_user.email = "admin@example.com" | CODE |
| LOW | …cp_service/dashboard/tool/test_dashboard_generation.py | 457 | email="admin@example.com", | CODE |
| LOW | …cp_service/dashboard/tool/test_dashboard_generation.py | 504 | email="admin@example.com", | CODE |
| LOW | …cp_service/dashboard/tool/test_dashboard_generation.py | 563 | email="admin@example.com", | CODE |
| LOW⚡ | …tests/mcp_service/system/test_serialize_user_object.py | 40 | user.email = "admin@example.com" | CODE |
| LOW | …tests/mcp_service/system/test_serialize_user_object.py | 51 | assert result.email == "admin@example.com" | CODE |
| LOW | …tests/mcp_service/system/test_serialize_user_object.py | 68 | user.email = "admin@example.com" | CODE |
| LOW⚡ | tests/unit_tests/db_engine_specs/test_starrocks.py | 304 | user.email = "alice@example.org" | CODE |
| LOW⚡ | tests/unit_tests/db_engine_specs/test_starrocks.py | 313 | database.get_effective_user.return_value = "alice@example.org" | CODE |
| LOW⚡ | tests/unit_tests/db_engine_specs/test_starrocks.py | 328 | user.email = "alice.doe@example.org" | CODE |
| LOW⚡ | tests/unit_tests/db_engine_specs/test_starrocks.py | 337 | database.get_effective_user.return_value = "alice.doe@example.org" | CODE |
| LOW⚡ | tests/unit_tests/db_engine_specs/test_starrocks.py | 352 | user.email = "alice.doe@example.org" | CODE |
| LOW⚡ | tests/unit_tests/db_engine_specs/test_gsheets.py | 224 | "subject": "admin@example.com", | CODE |
| LOW⚡ | tests/unit_tests/db_engine_specs/test_gsheets.py | 240 | g.user.email = "admin@example.com" | CODE |
| LOW | tests/unit_tests/db_engine_specs/test_gsheets.py | 69 | g.user.email = "admin@example.org" | CODE |
| LOW | tests/unit_tests/db_engine_specs/test_gsheets.py | 88 | g.user.email = "admin@example.org" | CODE |
| LOW | tests/unit_tests/db_engine_specs/test_gsheets.py | 115 | g.user.email = "admin@example.org" | CODE |
| LOW | tests/unit_tests/db_engine_specs/test_gsheets.py | 144 | g.user.email = "admin@example.com" | CODE |
| LOW | tests/unit_tests/db_engine_specs/test_gsheets.py | 297 | "subject": "admin@example.com", | CODE |
| LOW | tests/unit_tests/db_engine_specs/test_gsheets.py | 535 | user.email = "alice@example.org" | CODE |
| LOW | tests/unit_tests/db_engine_specs/test_gsheets.py | 1004 | g.user.email = "admin@example.org" | CODE |
| LOW | tests/unit_tests/db_engine_specs/test_gsheets.py | 1044 | g.user.email = "admin@example.org" | CODE |
| LOW | …_tests/dashboards/commands/importers/v1/import_test.py | 156 | email="adoe@example.org", | CODE |
| LOW | …_tests/dashboards/commands/importers/v1/import_test.py | 197 | email="adoe@example.org", | CODE |
| 110 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | …commands/importers/v1/test_find_existing_for_import.py | 165 | # Step 1: find (pure). Caller now has the row to make decisions on. | COMMENT |
| LOW⚡ | …commands/importers/v1/test_find_existing_for_import.py | 170 | # Step 2: caller decides to clear (in real code, after overwrite + | COMMENT |
| LOW⚡ | …commands/importers/v1/test_find_existing_for_import.py | 174 | # Step 3: caller can now re-insert with the same UUID without | COMMENT |
| LOW⚡ | tests/unit_tests/reports/notifications/slack_tests.py | 1077 | # Step 1: v1 send raises SlackV1NotificationError because v2 is available. | COMMENT |
| LOW⚡ | tests/unit_tests/reports/notifications/slack_tests.py | 1082 | # Step 2: command-level upgrade rewrites the row to SlackV2 with channel IDs. | COMMENT |
| LOW⚡ | tests/unit_tests/reports/notifications/slack_tests.py | 1088 | # Step 3: a fresh SlackV2Notification on the rewritten row sends to the | COMMENT |
| LOW | …ntegration_tests/tasks/test_subscription_visibility.py | 47 | # Step 1: Gamma submits a shared task | COMMENT |
| LOW | …ntegration_tests/tasks/test_subscription_visibility.py | 66 | # Step 2: Admin joins the same task | COMMENT |
| LOW | …ntegration_tests/tasks/test_subscription_visibility.py | 84 | # Step 3: Gamma cancels (unsubscribes) | COMMENT |
| LOW⚡ | …ntegration_tests/tasks/test_subscription_visibility.py | 96 | # Step 4: Verify gamma can no longer see the task | COMMENT |
| LOW⚡ | …ntegration_tests/tasks/test_subscription_visibility.py | 103 | # Step 5: Verify admin still sees the task | COMMENT |
| LOW⚡ | tests/integration_tests/utils/encrypt_tests.py | 192 | # Step 1: Encrypt with KEY_A | COMMENT |
| LOW⚡ | tests/integration_tests/utils/encrypt_tests.py | 197 | # Step 2: Verify decryption with KEY_A works | COMMENT |
| LOW⚡ | tests/integration_tests/utils/encrypt_tests.py | 201 | # Step 3: Rotate key to KEY_B | COMMENT |
| LOW⚡ | tests/integration_tests/utils/encrypt_tests.py | 204 | # Step 4: Re-encrypt with KEY_B (simulating SecretsMigrator logic) | COMMENT |
| LOW⚡ | tests/integration_tests/utils/encrypt_tests.py | 215 | # Step 5: Verify decryption with KEY_B works | COMMENT |
| LOW⚡ | tests/integration_tests/utils/encrypt_tests.py | 219 | # Step 6: Verify KEY_A can no longer decrypt the new ciphertext | COMMENT |
| LOW⚡ | tests/integration_tests/dashboards/commands_tests.py | 823 | # Step 1: Add an embedded dashboard | COMMENT |
| LOW⚡ | tests/integration_tests/dashboards/commands_tests.py | 830 | # Step 2: Assert that the embedded dashboard was added | COMMENT |
| LOW⚡ | tests/integration_tests/dashboards/commands_tests.py | 835 | # Step 3: Delete the embedded dashboard | COMMENT |
| LOW⚡ | tests/integration_tests/dashboards/commands_tests.py | 840 | # Step 4: Assert that the embedded dashboard was deleted | COMMENT |
| LOW | .claude/projects/js-to-ts/AGENT.md | 20 | ## Step 0: Dependency Check (MANDATORY) | COMMENT |
| LOW | .claude/projects/js-to-ts/AGENT.md | 33 | ## Step 1: Identify Related Files (REQUIRED) | COMMENT |
| LOW⚡ | .claude/projects/js-to-ts/AGENT.md | 201 | ### Step 2: File Conversion | COMMENT |
| LOW⚡ | .claude/projects/js-to-ts/AGENT.md | 208 | ### Step 3: Import & Type Setup | COMMENT |
| LOW⚡ | .claude/projects/js-to-ts/AGENT.md | 217 | ### Step 4: Function & Component Typing | COMMENT |
| LOW | .claude/projects/js-to-ts/AGENT.md | 238 | ### Step 5: State & Redux Typing | COMMENT |
| LOW | …gin-chart-echarts/src/utils/safeEChartOptionsParser.ts | 406 | // Step 1: Parse into AST | COMMENT |
| LOW⚡ | …gin-chart-echarts/src/utils/safeEChartOptionsParser.ts | 440 | // Step 2: Validate AST for security (no functions, eval, etc.) | COMMENT |
| LOW⚡ | …gin-chart-echarts/src/utils/safeEChartOptionsParser.ts | 448 | // Step 3: Convert AST to JavaScript object | COMMENT |
| LOW⚡ | …gin-chart-echarts/src/utils/safeEChartOptionsParser.ts | 451 | // Step 4: Validate against Zod schema with partial/lenient mode | COMMENT |
| LOW | …ents/TimeGrain/TimeGrainPreFilter.integration.test.tsx | 46 | // Step 1: Simulate saved dashboard config | COMMENT |
| LOW⚡ | …ents/TimeGrain/TimeGrainPreFilter.integration.test.tsx | 83 | // Step 2: Render the dashboard filter | COMMENT |
| LOW⚡ | …ents/TimeGrain/TimeGrainPreFilter.integration.test.tsx | 91 | // Step 3: Verify only pre-filtered options appear | COMMENT |
| LOW | …ents/TimeGrain/TimeGrainPreFilter.integration.test.tsx | 107 | // Step 4: Selecting one allowed option should update runtime payload | COMMENT |
| LOW⚡ | …-frontend/src/dashboard/reducers/nativeFilters.test.ts | 474 | // Step 1: filter(Boolean) — as hydrate.ts does | COMMENT |
| LOW⚡ | …-frontend/src/dashboard/reducers/nativeFilters.test.ts | 476 | // Step 2: migrate — as hydrate.ts does | COMMENT |
| LOW⚡ | …-frontend/src/dashboard/reducers/nativeFilters.test.ts | 478 | // Step 3: combine with native filters and pass to getInitialState | COMMENT |
| LOW | …versioned_docs/version-6.1.0/extensions/quick-start.md | 38 | ## Step 1: Install the Extensions CLI | COMMENT |
| LOW | …versioned_docs/version-6.1.0/extensions/quick-start.md | 46 | ## Step 2: Create a New Extension | COMMENT |
| LOW | …versioned_docs/version-6.1.0/extensions/quick-start.md | 94 | ## Step 3: Configure Extension Metadata | COMMENT |
| LOW | …versioned_docs/version-6.1.0/extensions/quick-start.md | 116 | ## Step 4: Create Backend API | COMMENT |
| LOW | …versioned_docs/version-6.1.0/extensions/quick-start.md | 189 | ## Step 5: Create Frontend Component | COMMENT |
| LOW | …versioned_docs/version-6.1.0/extensions/quick-start.md | 422 | ## Step 6: Install Dependencies | COMMENT |
| LOW | …versioned_docs/version-6.1.0/extensions/quick-start.md | 432 | ## Step 7: Package the Extension | COMMENT |
| LOW | …versioned_docs/version-6.1.0/extensions/quick-start.md | 450 | ## Step 8: Deploy to Superset | COMMENT |
| LOW | …versioned_docs/version-6.1.0/extensions/quick-start.md | 487 | ## Step 9: Test Your Extension | COMMENT |
| LOW | docs/developer_docs/extensions/quick-start.md | 38 | ## Step 1: Install the Extensions CLI | COMMENT |
| LOW | docs/developer_docs/extensions/quick-start.md | 46 | ## Step 2: Create a New Extension | COMMENT |
| LOW | docs/developer_docs/extensions/quick-start.md | 94 | ## Step 3: Configure Extension Metadata | COMMENT |
| LOW | docs/developer_docs/extensions/quick-start.md | 116 | ## Step 4: Create Backend API | COMMENT |
| LOW | docs/developer_docs/extensions/quick-start.md | 189 | ## Step 5: Create Frontend Component | COMMENT |
| LOW | docs/developer_docs/extensions/quick-start.md | 422 | ## Step 6: Install Dependencies | COMMENT |
| LOW | docs/developer_docs/extensions/quick-start.md | 432 | ## Step 7: Package the Extension | COMMENT |
| LOW | docs/developer_docs/extensions/quick-start.md | 450 | ## Step 8: Deploy to Superset | COMMENT |
| LOW | docs/developer_docs/extensions/quick-start.md | 487 | ## Step 9: Test Your Extension | COMMENT |
| LOW⚡ | superset/config.py | 435 | # NOTE: This variable is used to populate THEME_DEFAULT. If you override this in | COMMENT |
| LOW | superset/config.py | 452 | # NOTE: This variable is deprecated and not used in the new theme system. | COMMENT |
| LOW | superset/config.py | 456 | # NOTE: This variable is deprecated and not used in the new theme system. | COMMENT |
| LOW⚡ | superset/semantic_layers/mapper.py | 120 | # Step 1: Convert QueryObject to list of SemanticQuery objects | COMMENT |
| 38 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | …commands/importers/v1/test_find_existing_for_import.py | 165 | # Step 1: find (pure). Caller now has the row to make decisions on. | COMMENT |
| LOW⚡ | …commands/importers/v1/test_find_existing_for_import.py | 170 | # Step 2: caller decides to clear (in real code, after overwrite + | COMMENT |
| LOW⚡ | …commands/importers/v1/test_find_existing_for_import.py | 174 | # Step 3: caller can now re-insert with the same UUID without | COMMENT |
| LOW⚡ | tests/unit_tests/reports/notifications/slack_tests.py | 1077 | # Step 1: v1 send raises SlackV1NotificationError because v2 is available. | COMMENT |
| LOW⚡ | tests/unit_tests/reports/notifications/slack_tests.py | 1082 | # Step 2: command-level upgrade rewrites the row to SlackV2 with channel IDs. | COMMENT |
| LOW⚡ | tests/unit_tests/reports/notifications/slack_tests.py | 1088 | # Step 3: a fresh SlackV2Notification on the rewritten row sends to the | COMMENT |
| LOW | …ntegration_tests/tasks/test_subscription_visibility.py | 47 | # Step 1: Gamma submits a shared task | COMMENT |
| LOW | …ntegration_tests/tasks/test_subscription_visibility.py | 66 | # Step 2: Admin joins the same task | COMMENT |
| LOW | …ntegration_tests/tasks/test_subscription_visibility.py | 84 | # Step 3: Gamma cancels (unsubscribes) | COMMENT |
| LOW⚡ | …ntegration_tests/tasks/test_subscription_visibility.py | 96 | # Step 4: Verify gamma can no longer see the task | COMMENT |
| LOW⚡ | …ntegration_tests/tasks/test_subscription_visibility.py | 103 | # Step 5: Verify admin still sees the task | COMMENT |
| LOW⚡ | tests/integration_tests/utils/encrypt_tests.py | 192 | # Step 1: Encrypt with KEY_A | COMMENT |
| LOW⚡ | tests/integration_tests/utils/encrypt_tests.py | 197 | # Step 2: Verify decryption with KEY_A works | COMMENT |
| LOW⚡ | tests/integration_tests/utils/encrypt_tests.py | 201 | # Step 3: Rotate key to KEY_B | COMMENT |
| LOW⚡ | tests/integration_tests/utils/encrypt_tests.py | 204 | # Step 4: Re-encrypt with KEY_B (simulating SecretsMigrator logic) | COMMENT |
| LOW⚡ | tests/integration_tests/utils/encrypt_tests.py | 215 | # Step 5: Verify decryption with KEY_B works | COMMENT |
| LOW⚡ | tests/integration_tests/utils/encrypt_tests.py | 219 | # Step 6: Verify KEY_A can no longer decrypt the new ciphertext | COMMENT |
| LOW⚡ | tests/integration_tests/dashboards/commands_tests.py | 823 | # Step 1: Add an embedded dashboard | COMMENT |
| LOW⚡ | tests/integration_tests/dashboards/commands_tests.py | 830 | # Step 2: Assert that the embedded dashboard was added | COMMENT |
| LOW⚡ | tests/integration_tests/dashboards/commands_tests.py | 835 | # Step 3: Delete the embedded dashboard | COMMENT |
| LOW⚡ | tests/integration_tests/dashboards/commands_tests.py | 840 | # Step 4: Assert that the embedded dashboard was deleted | COMMENT |
| LOW | …gin-chart-echarts/src/utils/safeEChartOptionsParser.ts | 406 | // Step 1: Parse into AST | COMMENT |
| LOW⚡ | …gin-chart-echarts/src/utils/safeEChartOptionsParser.ts | 440 | // Step 2: Validate AST for security (no functions, eval, etc.) | COMMENT |
| LOW⚡ | …gin-chart-echarts/src/utils/safeEChartOptionsParser.ts | 448 | // Step 3: Convert AST to JavaScript object | COMMENT |
| LOW⚡ | …gin-chart-echarts/src/utils/safeEChartOptionsParser.ts | 451 | // Step 4: Validate against Zod schema with partial/lenient mode | COMMENT |
| LOW | …ents/TimeGrain/TimeGrainPreFilter.integration.test.tsx | 46 | // Step 1: Simulate saved dashboard config | COMMENT |
| LOW⚡ | …ents/TimeGrain/TimeGrainPreFilter.integration.test.tsx | 83 | // Step 2: Render the dashboard filter | COMMENT |
| LOW⚡ | …ents/TimeGrain/TimeGrainPreFilter.integration.test.tsx | 91 | // Step 3: Verify only pre-filtered options appear | COMMENT |
| LOW | …ents/TimeGrain/TimeGrainPreFilter.integration.test.tsx | 107 | // Step 4: Selecting one allowed option should update runtime payload | COMMENT |
| LOW⚡ | …-frontend/src/dashboard/reducers/nativeFilters.test.ts | 474 | // Step 1: filter(Boolean) — as hydrate.ts does | COMMENT |
| LOW⚡ | …-frontend/src/dashboard/reducers/nativeFilters.test.ts | 476 | // Step 2: migrate — as hydrate.ts does | COMMENT |
| LOW⚡ | …-frontend/src/dashboard/reducers/nativeFilters.test.ts | 478 | // Step 3: combine with native filters and pass to getInitialState | COMMENT |
| LOW⚡ | superset/semantic_layers/mapper.py | 120 | # Step 1: Convert QueryObject to list of SemanticQuery objects | COMMENT |
| LOW⚡ | superset/semantic_layers/mapper.py | 124 | # Step 2: Execute the main query (first in the list) | COMMENT |
| LOW | superset/semantic_layers/mapper.py | 196 | # Step 5: Perform left join on dimension columns | COMMENT |
| LOW | superset/mcp_service/jwt_verifier.py | 492 | # Step 1: Decode header and check algorithm | COMMENT |
| LOW | superset/mcp_service/jwt_verifier.py | 535 | # Step 2: Get verification key (static or JWKS). | COMMENT |
| LOW | superset/mcp_service/jwt_verifier.py | 577 | # Step 3: Decode and verify signature | COMMENT |
| LOW | superset/mcp_service/jwt_verifier.py | 600 | # Step 4: Check expiration. An ``exp`` claim is required — tokens | COMMENT |
| LOW | superset/mcp_service/jwt_verifier.py | 652 | # Step 5: Validate issuer | COMMENT |
| LOW | superset/mcp_service/jwt_verifier.py | 670 | # Step 6: Validate audience | COMMENT |
| LOW | superset/mcp_service/jwt_verifier.py | 697 | # Step 7: Check required scopes | COMMENT |
| LOW⚡ | superset/mcp_service/dataset/tool/query_dataset.py | 121 | # Step 1: Check data-model metadata access BEFORE the dataset lookup. | COMMENT |
| LOW⚡ | superset/mcp_service/dataset/tool/query_dataset.py | 137 | # Step 2: Resolve dataset | COMMENT |
| LOW⚡ | superset/mcp_service/dataset/tool/query_dataset.py | 171 | # Step 2: Validate requested columns and metrics | COMMENT |
| LOW⚡ | superset/mcp_service/dataset/tool/query_dataset.py | 211 | # Step 3: Build filters and time range | COMMENT |
| LOW⚡ | superset/mcp_service/dataset/tool/query_dataset.py | 273 | # Step 4: Build query dict | COMMENT |
| LOW⚡ | superset/mcp_service/dataset/tool/query_dataset.py | 294 | # Step 5: Create QueryContext and execute | COMMENT |
| LOW⚡ | superset/mcp_service/dataset/tool/query_dataset.py | 327 | # Step 6: Format response | COMMENT |
| LOW⚡ | …erset/mcp_service/chart/prompts/create_chart_guided.py | 88 | ### Step 1: Find a Dataset | COMMENT |
| LOW⚡ | …erset/mcp_service/chart/prompts/create_chart_guided.py | 91 | ### Step 2: Examine Columns | COMMENT |
| LOW⚡ | …erset/mcp_service/chart/prompts/create_chart_guided.py | 94 | ### Step 3: Choose Chart Configuration | COMMENT |
| LOW⚡ | …erset/mcp_service/chart/prompts/create_chart_guided.py | 101 | ### Step 4: Create the Chart | COMMENT |
| LOW | …erset/mcp_service/chart/prompts/create_chart_guided.py | 133 | ### Step 5: Validate Results | COMMENT |
| LOW⚡ | superset/db_engine_specs/aws_iam.py | 481 | # Step 1: Assume the IAM role | COMMENT |
| LOW⚡ | superset/db_engine_specs/aws_iam.py | 489 | # Step 2: Generate the RDS auth token | COMMENT |
| LOW⚡ | superset/db_engine_specs/aws_iam.py | 498 | # Step 3: Update connection parameters | COMMENT |
| LOW⚡ | superset/db_engine_specs/aws_iam.py | 507 | # Step 4: Enable SSL (required for IAM authentication) | COMMENT |
| LOW⚡ | superset/db_engine_specs/aws_iam.py | 616 | # Step 1: Assume the IAM role | COMMENT |
| LOW⚡ | superset/db_engine_specs/aws_iam.py | 624 | # Step 2: Get Redshift credentials based on deployment type | COMMENT |
| 6 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …t-core/src/superset_core/semantic_layers/decorators.py | 55 | Decorator to register a semantic layer implementation. Automatically detects extension context and applies app | STRING |
| HIGH | superset-core/src/superset_core/mcp/decorators.py | 62 | Decorator to register an MCP tool with optional authentication. This decorator combines FastMCP tool registrat | STRING |
| HIGH | superset-core/src/superset_core/mcp/decorators.py | 139 | Decorator to register an MCP prompt with optional authentication. This decorator combines FastMCP prompt regis | STRING |
| HIGH | superset-core/src/superset_core/rest_api/decorators.py | 48 | Unified API decorator for both host and extension APIs. Automatically detects context: - Host context: /ap | STRING |
| HIGH | superset/tasks/decorators.py | 560 | Schedule this task for asynchronous execution. The signature mirrors the original task function, with | STRING |
| HIGH | superset/utils/cache_manager.py | 59 | Create a hash object using the configured algorithm. Args: data: Optional initial data to | STRING |
| HIGH | superset/utils/date_parser.py | 186 | Generates a datetime expression for the start of a given unit (e.g., start of month, start of year). This | STRING |
| HIGH | superset/utils/date_parser.py | 216 | Generates a datetime expression for the end of a given unit (e.g., end of month, end of year). This funct | STRING |
| HIGH | superset/utils/date_parser.py | 251 | Handles "first" time expressions like "first of the month" or "first week of this year". This handler retu | STRING |
| HIGH | superset/utils/date_parser.py | 308 | Generates a datetime expression based on a modifier, scope, delta, unit, and relative base. This function h | STRING |
| HIGH | superset/utils/date_parser.py | 353 | Generates a datetime expression based on the scope, delta, unit, and relative base. This function handles queri | STRING |
| HIGH | superset/utils/hashing.py | 49 | Generate a hash from a string using the configured or specified algorithm. Args: val: String to hash | STRING |
| HIGH | superset/mcp_service/storage.py | 40 | Create a store instance with the specified prefix. Uses shared MCP_STORE_CONFIG for Redis URL and wrapper type | STRING |
| HIGH | superset/mcp_service/storage.py | 187 | Import a wrapper class from a dotted path. Args: class_path: Dotted path like 'key_value.a | STRING |
| HIGH | superset/mcp_service/utils/schema_utils.py | 53 | Parse a value that can be either a JSON string or a native Python object. This function handles the common pat | STRING |
| HIGH | superset/mcp_service/utils/schema_utils.py | 114 | Parse a value into a list, accepting JSON string, list, or comma-separated string. This function provides maxi | STRING |
| HIGH | superset/mcp_service/utils/schema_utils.py | 186 | Parse a value into a Pydantic model, accepting JSON string or dict. Args: value: Input value to parse | STRING |
| HIGH | superset/mcp_service/utils/schema_utils.py | 230 | Parse a value into a list of Pydantic models, accepting JSON string or list. Args: value: Input value | STRING |
| HIGH | superset/mcp_service/utils/sanitization.py | 344 | Centralized sanitization for user-provided text inputs. Uses nh3 to strip HTML tags and performs additional se | STRING |
| HIGH | superset/mcp_service/utils/sanitization.py | 408 | Sanitize filter values which can be strings or other types. For non-string values, returns as-is (no sanitizat | STRING |
| HIGH | superset/examples/helpers.py | 94 | Normalize example data URLs for consistency. This function ensures that example data URLs are properly formatted. | STRING |
| HIGH | superset/examples/helpers.py | 148 | Load data from local Parquet files. Examples are organized as: superset/examples/{example_name}/data.parque | STRING |
| HIGH | superset-extensions-cli/tests/utils.py | 106 | Load and parse a JSON file. Args: path: Path to the JSON file Returns: Parsed JSON conten | STRING |
| HIGH | …et-extensions-cli/src/superset_extensions_cli/utils.py | 258 | Validate and normalize display name format. Args: display_name: Human-readable extension name Ret | STRING |
| HIGH | …et-extensions-cli/src/superset_extensions_cli/utils.py | 337 | Generate all extension name variants from input. Args: display_name: Human-readable name (e.g., "Dashb | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …sts/unit_tests/security/test_guest_token_revocation.py | 156 | # Should simply return without raising when the UUID does not resolve. | COMMENT |
| MEDIUM⚡ | tests/unit_tests/utils/webdriver_test.py | 308 | """Test comprehensive Playwright availability checking.""" | STRING |
| MEDIUM⚡ | …tegration_tests/tasks/commands/test_internal_update.py | 263 | """Test atomic conditional status transitions with comprehensive scenarios. | STRING |
| MEDIUM | tests/integration_tests/dao/base_dao_test.py | 52 | # Create a test model for comprehensive testing | COMMENT |
| LOW | tests/integration_tests/charts/commands_tests.py | 693 | # can just pass in chart as well | COMMENT |
| MEDIUM | …frontend/plugins/plugin-chart-table/src/TableChart.tsx | 1602 | // Use a ref to store previous clientViewRows and exportColumns for robust change detection | COMMENT |
| MEDIUM | …nd/src/pages/DatasetList/DatasetList.listview.test.tsx | 1784 | // Select row by dataset name (row-scoped query is more robust than array index) | COMMENT |
| MEDIUM | …nd/src/pages/DatasetList/DatasetList.listview.test.tsx | 1847 | // Select row by dataset name (row-scoped query is more robust than array index) | COMMENT |
| MEDIUM | …nd/src/pages/DatasetList/DatasetList.listview.test.tsx | 1921 | // Select first virtual dataset by name (row-scoped query is more robust than array index) | COMMENT |
| MEDIUM | …nd/src/pages/DatasetList/DatasetList.listview.test.tsx | 1967 | // Select first physical dataset by name (row-scoped query is more robust than array index) | COMMENT |
| MEDIUM | …nd/src/pages/DatasetList/DatasetList.listview.test.tsx | 2017 | // Select first dataset by name (row-scoped query is more robust than array index) | COMMENT |
| MEDIUM | superset/config.py | 1775 | # This is move involved example where depending on the database you can leverage data | COMMENT |
| MEDIUM | superset/viz.py | 279 | payload = self.get_df_payload(query_obj) # leverage caching logic | CODE |
| MEDIUM | superset/viz.py | 731 | df = self.get_df_payload()["df"] # leverage caching logic | CODE |
| LOW | superset/tasks/context.py | 501 | # No original error, just use handler failures | COMMENT |
| MEDIUM⚡ | superset/mcp_service/mcp_core.py | 715 | """Tool interface for generating comprehensive instance information.""" | STRING |
| MEDIUM⚡ | superset/mcp_service/mcp_core.py | 724 | """Generate comprehensive instance information.""" | STRING |
| MEDIUM | superset/mcp_service/mcp_core.py | 869 | """Execute schema discovery and return comprehensive schema info.""" | STRING |
| LOW | …vice/chart/validation/runtime/cardinality_validator.py | 90 | # but that requires DB access - for now just return OK | COMMENT |
| MEDIUM | superset/mcp_service/chart/tool/generate_chart.py | 223 | # Run comprehensive validation pipeline | COMMENT |
| MEDIUM | superset/mcp_service/chart/tool/get_chart_data.py | 764 | # Generate comprehensive summary with cache info | COMMENT |
| LOW | superset/db_engine_specs/lint_metadata.py | 364 | # f-strings - just return placeholder | COMMENT |
| MEDIUM | superset/commands/dataset/importers/v1/utils.py | 316 | # a hidden contract; the explicit flush makes it robust. The lookup | COMMENT |
| MEDIUM | superset/commands/chart/importers/v1/utils.py | 102 | # contract; the explicit flush makes it robust. The lookup then | COMMENT |
| MEDIUM | superset/commands/dashboard/importers/v1/utils.py | 366 | # hidden contract; the explicit flush makes it robust. The lookup | COMMENT |
| MEDIUM | superset/views/redirect.py | 65 | # Block dangerous schemes using urlparse for robust detection | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | …art-point-cluster-map/test/ScatterPlotOverlay.test.tsx | 418 | expect(redrawParams.ctx.fillText.mock.calls.map(call => call[0])).toEqual([ | CODE |
| CRITICAL | …art-point-cluster-map/test/ScatterPlotOverlay.test.tsx | 933 | redrawParams.ctx.arc.mock.calls.forEach(call => { | CODE |
| CRITICAL | .github/workflows/check_db_migration_confict.yml | 40 | const opts = github.rest.pulls.list.endpoint.merge({ | CODE |
| CRITICAL | .github/workflows/check_db_migration_confict.yml | 54 | const listFilesOpts = await github.rest.pulls.listFiles.endpoint.merge({ | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | superset-core/src/superset_core/mcp/decorators.py | 51 | CODE | |
| LOW | …sts/unit_tests/charts/test_dashboard_filter_context.py | 69 | CODE | |
| LOW | …tests/mcp_service/database/tool/test_database_tools.py | 63 | CODE | |
| LOW | …mcp_service/saved_query/tool/test_saved_query_tools.py | 78 | CODE | |
| LOW | …ts/unit_tests/mcp_service/task/tool/test_task_tools.py | 36 | CODE | |
| LOW | …nit_tests/mcp_service/report/tool/test_report_tools.py | 34 | CODE | |
| LOW | …/unit_tests/mcp_service/query/tool/test_query_tools.py | 72 | CODE | |
| LOW | tests/unit_tests/daos/test_tasks.py | 37 | CODE | |
| LOW | tests/integration_tests/base_tests.py | 438 | CODE | |
| LOW | tests/integration_tests/base_tests.py | 613 | CODE | |
| LOW | tests/integration_tests/base_tests.py | 685 | CODE | |
| LOW | tests/integration_tests/insert_chart_mixin.py | 31 | CODE | |
| LOW | tests/integration_tests/datasets/api_tests.py | 91 | CODE | |
| LOW | tests/integration_tests/queries/api_tests.py | 43 | CODE | |
| LOW | …/integration_tests/dashboards/superset_factory_util.py | 49 | CODE | |
| LOW | …/integration_tests/dashboards/superset_factory_util.py | 75 | CODE | |
| LOW | tests/integration_tests/reports/utils.py | 64 | CODE | |
| LOW | tests/integration_tests/reports/utils.py | 120 | CODE | |
| LOW | superset/core/mcp/core_mcp_injection.py | 61 | CODE | |
| LOW | superset/security/manager.py | 3630 | CODE | |
| LOW | superset/utils/cache_manager.py | 94 | CODE | |
| LOW | superset/utils/cache_manager.py | 118 | CODE | |
| LOW | superset/utils/core.py | 829 | CODE | |
| LOW | superset/utils/dashboard_import_export.py | 33 | CODE | |
| LOW | superset/utils/json.py | 188 | CODE | |
| LOW | superset/importexport/api.py | 93 | CODE | |
| LOW | superset/models/helpers.py | 997 | CODE | |
| LOW | superset/models/helpers.py | 3275 | CODE | |
| LOW | superset/mcp_service/mcp_core.py | 289 | CODE | |
| LOW | superset/mcp_service/app.py | 601 | CODE | |
| LOW | superset/mcp_service/app.py | 938 | CODE | |
| LOW | superset/mcp_service/utils/sanitization.py | 401 | CODE | |
| LOW | superset/mcp_service/utils/sanitization.py | 472 | CODE | |
| LOW | superset/common/query_object.py | 113 | CODE | |
| LOW | superset/common/utils/query_cache_manager.py | 55 | CODE | |
| LOW | superset/db_engine_specs/presto.py | 408 | CODE | |
| LOW | superset/async_events/cache_backend.py | 29 | CODE | |
| LOW | superset/async_events/cache_backend.py | 160 | CODE | |
| LOW | superset/daos/base.py | 820 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | docker-compose-image-tag.yml | 20 | # If you choose to use this type of deployment make sure to | COMMENT |
| LOW⚡ | docker-compose-non-dev.yml | 20 | # If you choose to use this type of deployment make sure to | COMMENT |
| LOW⚡ | docker-compose.yml | 20 | # If you choose to use this type of deployment make sure to | COMMENT |
| LOW | tests/integration_tests/reports/utils.py | 225 | # make sure to clean up in case of yield exceptions | COMMENT |
| MEDIUM | superset/config.py | 89 | # Note that you can use `StdOutEventLogger` for debugging | COMMENT |
| MEDIUM | superset/config.py | 290 | # Note that you can use this to set the isolation level of your database, as in | COMMENT |
| MEDIUM | superset/config.py | 590 | # for adding your own map tiles, you can use the following format: | COMMENT |
| LOW | superset/config.py | 216 | # You should also make sure to configure your WSGI server | COMMENT |
| LOW | superset/constants.py | 18 | # ATTENTION: If you change any constants, make sure to also change utils/common.js | COMMENT |
| LOW | superset/utils/pandas_postprocessing/utils.py | 217 | # make sure to return a new DataFrame instead of changing the `base_df`. | COMMENT |
| LOW | helm/superset/values.yaml | 911 | # Make sure you are giving a strong password for the admin user creation( else make sure you are changing after setup) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | superset-core/src/superset_core/mcp/decorators.py | 61 | ) -> Any: # Use Any to avoid mypy issues with dependency injection | CODE |
| MEDIUM | superset-core/src/superset_core/mcp/decorators.py | 138 | ) -> Any: # Use Any to avoid mypy issues with dependency injection | CODE |
| MEDIUM | CHANGELOG/6.1.0.md | 191 | - [#35163](https://github.com/apache/superset/pull/35163) feat(mcp): PR1 - Add MCP service scaffold for Apache Superset | CODE |
| MEDIUM | CHANGELOG/6.1.0.md | 191 | - [#35163](https://github.com/apache/superset/pull/35163) feat(mcp): PR1 - Add MCP service scaffold for Apache Superset | CODE |
| MEDIUM | CHANGELOG/6.1.0.md | 439 | - [#38391](https://github.com/apache/superset/pull/38391) fix(mcp): add guardrails to prevent LLM artifact generation (@ | CODE |
| MEDIUM | CHANGELOG/6.1.0.md | 439 | - [#38391](https://github.com/apache/superset/pull/38391) fix(mcp): add guardrails to prevent LLM artifact generation (@ | CODE |
| MEDIUM | CHANGELOG/6.1.0.md | 732 | - [#38472](https://github.com/apache/superset/pull/38472) docs(extensions): fix extension developer documentation and CL | CODE |
| MEDIUM | superset/mcp_service/app.py | 677 | # Initialize MCP dependency injection BEFORE importing tools/prompts. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | superset/mcp_service/jwt_verifier.py | 192 | ' "Authorization": "Bearer <your-api-key>"\n' | CODE |
| HIGH | superset/mcp_service/jwt_verifier.py | 228 | "and <code><your-api-key></code> with a valid API key or JWT token." | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | docs/developer_docs/contributing/howtos.md | 354 | translations](#applying-translations) above), so an AI-generated string is shown | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | scripts/docker-compose-up.sh | 27 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | superset/viz.py | 1066 | def process_data(self, df: pd.DataFrame, aggregate: bool = False) -> VizData: | CODE |
| LOW | superset/tasks/scheduler.py | 256 | def execute_task( # noqa: C901 | CODE |