Apache Superset is a Data Visualization and Data Exploration Platform
This report presents the forensic synthetic code analysis of apache/superset, a Python project with 74,513 GitHub stars. SynthScan v2.0 examined 1,598,335 lines of code across 7962 source files, recording 19897 pattern matches distributed across 24 syntactic categories. The overall adjusted score of 14.2 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 19897 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 | superset-core/tests/semantic_layers/test_types.py | 22 | def test_dimension_metadata_is_not_part_of_identity() -> None: | CODE |
| LOW | superset-core/tests/semantic_layers/test_types.py | 42 | def test_metric_metadata_is_not_part_of_identity() -> None: | CODE |
| LOW | superset-core/tests/semantic_layers/test_types.py | 66 | def test_metric_accepts_superset_presentation_fields() -> None: | CODE |
| LOW | superset-core/tests/semantic_layers/test_types.py | 80 | def test_dimension_accepts_superset_presentation_fields() -> None: | CODE |
| LOW | superset-core/tests/semantic_layers/test_types.py | 91 | def test_metadata_defaults_are_not_shared() -> None: | CODE |
| 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 | 65 | def test_get_metric_name_saved_metric(): | CODE |
| LOW | tests/unit_tests/core_tests.py | 70 | def test_get_metric_name_adhoc(): | CODE |
| LOW | tests/unit_tests/core_tests.py | 93 | def test_get_metric_name_invalid_metric(): | CODE |
| LOW | tests/unit_tests/core_tests.py | 135 | def test_get_column_name_physical_column(): | CODE |
| LOW | tests/unit_tests/core_tests.py | 140 | def test_get_column_name_adhoc(): | CODE |
| LOW | tests/unit_tests/core_tests.py | 164 | def test_get_column_name_invalid_metric(): | CODE |
| LOW⚡ | tests/unit_tests/core_tests.py | 178 | def test_get_time_filter_status_time_col(): | CODE |
| LOW⚡ | tests/unit_tests/core_tests.py | 186 | def test_get_time_filter_status_time_range(): | CODE |
| LOW⚡ | tests/unit_tests/core_tests.py | 194 | def test_get_time_filter_status_time_grain(): | CODE |
| LOW⚡ | tests/unit_tests/core_tests.py | 202 | def test_get_time_filter_status_no_temporal_col(): | CODE |
| LOW | tests/unit_tests/core_tests.py | 243 | def test_split_adhoc_filters_joins_sql_expressions(): | CODE |
| LOW | tests/unit_tests/core_tests.py | 264 | def test_split_adhoc_filters_preserves_jinja_templates(): | CODE |
| LOW | tests/unit_tests/core_tests.py | 280 | def test_split_adhoc_filters_terminates_inline_comments(): | 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 | 122 | def test_filter_values_default() -> None: | CODE |
| LOW⚡ | tests/unit_tests/jinja_context_test.py | 131 | def test_filter_values_remove_not_present() -> None: | CODE |
| LOW⚡ | tests/unit_tests/jinja_context_test.py | 140 | def test_filter_values_no_default() -> None: | CODE |
| LOW⚡ | tests/unit_tests/jinja_context_test.py | 148 | def test_get_filters_adhoc_filters() -> None: | CODE |
| LOW⚡ | tests/unit_tests/jinja_context_test.py | 645 | def test_url_param_escaped_request_args() -> None: | CODE |
| LOW⚡ | tests/unit_tests/jinja_context_test.py | 655 | def test_url_param_unescaped_request_args() -> None: | CODE |
| LOW⚡ | tests/unit_tests/jinja_context_test.py | 664 | def test_url_param_postgres_backslash_preserved() -> None: | CODE |
| LOW | tests/unit_tests/jinja_context_test.py | 59 | def test_filter_values_adhoc_filters() -> None: | CODE |
| LOW | tests/unit_tests/jinja_context_test.py | 106 | def test_filter_values_extra_filters() -> None: | CODE |
| LOW | tests/unit_tests/jinja_context_test.py | 225 | def test_get_filters_is_null_operator() -> None: | CODE |
| LOW | tests/unit_tests/jinja_context_test.py | 255 | def test_get_filters_remove_not_present() -> None: | CODE |
| LOW | tests/unit_tests/jinja_context_test.py | 264 | def test_get_filters_query_context_filters() -> None: | CODE |
| LOW | tests/unit_tests/jinja_context_test.py | 280 | def test_get_filters_query_context_filters_remove_filter() -> None: | CODE |
| LOW | tests/unit_tests/jinja_context_test.py | 295 | def test_get_filters_query_context_filters_is_null() -> None: | CODE |
| LOW | tests/unit_tests/jinja_context_test.py | 306 | def test_get_filters_query_context_filters_is_not_null() -> None: | CODE |
| LOW | tests/unit_tests/jinja_context_test.py | 319 | def test_get_filters_adhoc_filters_take_precedence_over_query_context_filters() -> None: | CODE |
| LOW | tests/unit_tests/jinja_context_test.py | 348 | def test_filter_values_query_context_filters() -> None: | CODE |
| LOW | tests/unit_tests/jinja_context_test.py | 359 | def test_get_filters_escaped_val_string_adhoc() -> None: | CODE |
| LOW | tests/unit_tests/jinja_context_test.py | 393 | def test_get_filters_escaped_val_list_adhoc() -> None: | CODE |
| LOW | tests/unit_tests/jinja_context_test.py | 427 | def test_get_filters_escaped_val_query_context_filters() -> None: | CODE |
| LOW | tests/unit_tests/jinja_context_test.py | 448 | def test_get_filters_no_escaped_val_without_dialect() -> None: | CODE |
| LOW | tests/unit_tests/jinja_context_test.py | 477 | def test_escape_value_nested_list_is_escaped() -> None: | CODE |
| LOW | tests/unit_tests/jinja_context_test.py | 501 | def test_escape_value_flat_list_renders_without_raw_quotes() -> None: | CODE |
| LOW | tests/unit_tests/jinja_context_test.py | 524 | def test_escape_value_dict_renders_without_raw_quotes() -> None: | CODE |
| LOW | tests/unit_tests/jinja_context_test.py | 544 | def test_escape_value_dict_escapes_keys_too() -> None: | CODE |
| 12355 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 | 89 | # -------------------------- | COMMENT |
| MEDIUM | pyproject.toml | 93 | # -------------------------- | COMMENT |
| MEDIUM | pyproject.toml | 541 | # -------------------------------------------------------------- | COMMENT |
| MEDIUM | pyproject.toml | 551 | # -------------------------------------------------------------- | 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 | 87 | # ============================================================================= | COMMENT |
| MEDIUM | superset-core/src/superset_core/extensions/types.py | 89 | # ============================================================================= | COMMENT |
| MEDIUM | superset-core/src/superset_core/extensions/types.py | 114 | # ============================================================================= | COMMENT |
| MEDIUM | superset-core/src/superset_core/extensions/types.py | 116 | # ============================================================================= | 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 | 477 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …s/unit_tests/middleware/test_legacy_prefix_redirect.py | 484 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …s/unit_tests/middleware/test_legacy_prefix_redirect.py | 619 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …s/unit_tests/middleware/test_legacy_prefix_redirect.py | 621 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …s/unit_tests/middleware/test_legacy_prefix_redirect.py | 653 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …s/unit_tests/middleware/test_legacy_prefix_redirect.py | 655 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …s/unit_tests/middleware/test_legacy_prefix_redirect.py | 729 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …s/unit_tests/middleware/test_legacy_prefix_redirect.py | 731 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …s/unit_tests/middleware/test_legacy_prefix_redirect.py | 813 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …s/unit_tests/middleware/test_legacy_prefix_redirect.py | 815 | # --------------------------------------------------------------------------- | 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 | 115 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …s/unit_tests/middleware/test_legacy_prefix_redirect.py | 117 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …s/unit_tests/middleware/test_legacy_prefix_redirect.py | 238 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …s/unit_tests/middleware/test_legacy_prefix_redirect.py | 249 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …s/unit_tests/middleware/test_legacy_prefix_redirect.py | 758 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …s/unit_tests/middleware/test_legacy_prefix_redirect.py | 760 | # --------------------------------------------------------------------------- | 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 |
| 750 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 | .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 | pyproject.toml | 141 | "sqlalchemy-bigquery>=1.17.2", | COMMENT |
| LOW | pyproject.toml | 221 | # Actively maintained upstream, but setup.py on main hard-pins | 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 | 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/tests/semantic_layers/test_types.py | 1 | # Licensed to the Apache Software Foundation (ASF) under one | 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 | …set-core/src/superset_core/semantic_layers/__init__.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 |
| 2739 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 | tests/unit_tests/mcp_service/rls/tool/test_rls_tools.py | 0 | schema-level pagination boundary tests — ``page`` is positiveint and ``page_size`` is constrained to (0, max_page_size]. | STRING |
| HIGH | …tests/mcp_service/database/tool/test_database_tools.py | 0 | schema-level pagination boundary tests — ``page`` is positiveint and ``page_size`` is constrained to (0, max_page_size]. | STRING |
| HIGH | …ts/unit_tests/mcp_service/user/tool/test_user_tools.py | 0 | schema-level pagination boundary tests — ``page`` is positiveint and ``page_size`` is constrained to (0, max_page_size]. | STRING |
| HIGH | tests/unit_tests/mcp_service/tag/tool/test_tag_tools.py | 0 | schema-level pagination boundary tests — ``page`` is positiveint and ``page_size`` is constrained to (0, max_page_size]. | STRING |
| HIGH | tests/unit_tests/mcp_service/rls/tool/test_rls_tools.py | 0 | page_size=0 is rejected before the tool body runs, surfacing as a structured toolerror rather than a raw 500. | STRING |
| HIGH | …tests/mcp_service/database/tool/test_database_tools.py | 0 | page_size=0 is rejected before the tool body runs, surfacing as a structured toolerror rather than a raw 500. | STRING |
| HIGH | …ts/unit_tests/mcp_service/user/tool/test_user_tools.py | 0 | page_size=0 is rejected before the tool body runs, surfacing as a structured toolerror rather than a raw 500. | STRING |
| HIGH | tests/unit_tests/mcp_service/tag/tool/test_tag_tools.py | 0 | page_size=0 is rejected before the tool body runs, surfacing as a structured toolerror rather than a raw 500. | STRING |
| HIGH | tests/unit_tests/mcp_service/rls/tool/test_rls_tools.py | 0 | a page far past the last page returns an empty list, not an error. | STRING |
| HIGH | …tests/mcp_service/database/tool/test_database_tools.py | 0 | a page far past the last page returns an empty list, not an error. | STRING |
| HIGH | …ts/unit_tests/mcp_service/user/tool/test_user_tools.py | 0 | a page far past the last page returns an empty list, not an error. | STRING |
| HIGH | tests/unit_tests/mcp_service/tag/tool/test_tag_tools.py | 0 | a page far past the last page returns an empty list, not an error. | 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 | …unit_tests/mcp_service/dataset/test_dataset_schemas.py | 0 | test that llm-friendly field name variants are accepted on the dashboard mcp tool request schemas, so callers sending 'i | STRING |
| HIGH | …sts/unit_tests/mcp_service/chart/test_chart_schemas.py | 0 | test that llm-friendly field name variants are accepted on the dashboard mcp tool request schemas, so callers sending 'i | STRING |
| HIGH | …_tests/mcp_service/dashboard/test_dashboard_schemas.py | 0 | test that llm-friendly field name variants are accepted on the dashboard mcp tool request schemas, so callers sending 'i | 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 | …t_tests/mcp_service/dataset/tool/test_dataset_tools.py | 0 | regression test: order_column='changed_on_delta_humanized' is the "last modified" column name used by superset's own res | STRING |
| HIGH | …/unit_tests/mcp_service/chart/tool/test_list_charts.py | 0 | regression test: order_column='changed_on_delta_humanized' is the "last modified" column name used by superset's own res | STRING |
| HIGH | …sts/mcp_service/dashboard/tool/test_dashboard_tools.py | 0 | regression test: order_column='changed_on_delta_humanized' is the "last modified" column name used by superset's own res | STRING |
| HIGH | …t_tests/mcp_service/dataset/tool/test_dataset_tools.py | 0 | a genuinely unknown order_column must still be rejected. | STRING |
| HIGH | …/unit_tests/mcp_service/chart/tool/test_list_charts.py | 0 | a genuinely unknown order_column must still be rejected. | STRING |
| HIGH | …sts/mcp_service/dashboard/tool/test_dashboard_tools.py | 0 | a genuinely unknown order_column must still be rejected. | STRING |
| HIGH | …nit_tests/mcp_service/chart/tool/test_restore_chart.py | 0 | unit tests for the restore_dashboard mcp tool. run through the async mcp client (not direct calls); auth is mocked via t | STRING |
| HIGH | …unit_tests/mcp_service/chart/tool/test_delete_chart.py | 0 | unit tests for the restore_dashboard mcp tool. run through the async mcp client (not direct calls); auth is mocked via t | STRING |
| HIGH | …s/mcp_service/dashboard/tool/test_restore_dashboard.py | 0 | unit tests for the restore_dashboard mcp tool. run through the async mcp client (not direct calls); auth is mocked via t | STRING |
| HIGH | …nit_tests/mcp_service/chart/tool/test_restore_chart.py | 0 | raw sqlalchemy text (sql, connection details) must not reach the client. | STRING |
| HIGH | …unit_tests/mcp_service/chart/tool/test_delete_chart.py | 0 | raw sqlalchemy text (sql, connection details) must not reach the client. | STRING |
| HIGH | …s/mcp_service/dashboard/tool/test_restore_dashboard.py | 0 | raw sqlalchemy text (sql, connection details) must not reach the client. | STRING |
| HIGH | …ts/mcp_service/dashboard/tool/test_delete_dashboard.py | 0 | raw sqlalchemy text (sql, connection details) must not reach the client. | STRING |
| 202 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 | 150 | CODE | |
| LOW | docker/pythonpath_dev/superset_config.py | 160 | 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/extensions/context.py | 42 | CODE | |
| LOW | superset-core/src/superset_core/extensions/context.py | 47 | CODE | |
| LOW | superset-core/src/superset_core/extensions/context.py | 48 | CODE | |
| LOW | superset-core/src/superset_core/extensions/context.py | 49 | CODE | |
| LOW | …et-core/src/superset_core/extensions/storage/models.py | 31 | CODE | |
| LOW | …et-core/src/superset_core/extensions/storage/models.py | 39 | CODE | |
| LOW | …-core/src/superset_core/extensions/storage/__init__.py | 74 | CODE | |
| LOW | …-core/src/superset_core/extensions/storage/__init__.py | 74 | CODE | |
| LOW | …-core/src/superset_core/extensions/storage/__init__.py | 74 | CODE | |
| LOW | …-core/src/superset_core/extensions/storage/__init__.py | 74 | 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/error_provenance_test.py | 18 | CODE | |
| LOW | tests/unit_tests/databases/api_test.py | 20 | CODE | |
| LOW | tests/unit_tests/tasks/test_export_dashboard_excel.py | 17 | CODE | |
| LOW | …sts/unit_tests/tasks/test_version_history_retention.py | 29 | CODE | |
| LOW | tests/unit_tests/tasks/test_native_filter_cache.py | 17 | CODE | |
| LOW | …_tests/security/test_superset_user_api_subject_sync.py | 33 | CODE | |
| LOW | …_tests/security/test_superset_user_api_subject_sync.py | 45 | CODE | |
| LOW | …nit_tests/security/test_embedded_guest_chart_access.py | 26 | CODE | |
| LOW | …/security/test_password_change_session_invalidation.py | 29 | CODE | |
| LOW | …/security/test_password_change_session_invalidation.py | 44 | 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 | |
| 1136 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/jinja_context_test.py | 2698 | # Create a guest token with attributes | COMMENT |
| MEDIUM | tests/unit_tests/jinja_context_test.py | 2752 | # Create a guest token without attributes | COMMENT |
| MEDIUM | tests/unit_tests/jinja_context_test.py | 2794 | # Create a guest token with empty attributes | COMMENT |
| MEDIUM | tests/unit_tests/jinja_context_test.py | 2837 | # Create a guest token with null attributes | COMMENT |
| MEDIUM | tests/unit_tests/jinja_context_test.py | 2883 | # Create a real GuestUser object with attributes | COMMENT |
| MEDIUM | tests/unit_tests/connectors/sqla/models_test.py | 956 | # Create a Postgres-like engine to test proper quoting | COMMENT |
| MEDIUM | tests/unit_tests/connectors/sqla/models_test.py | 993 | # Create a PostgreSQL engine (doesn't support cross-catalog queries) | 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 | 638 | # Create a mock object | COMMENT |
| MEDIUM | tests/unit_tests/databases/api_test.py | 2539 | # Create a database with a non-default configuration_method | COMMENT |
| MEDIUM | tests/unit_tests/security/manager_test.py | 3040 | # 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 | 2194 | # 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 | 668 | # Create a mock SQLAlchemy database object | COMMENT |
| MEDIUM⚡ | tests/unit_tests/utils/test_core.py | 671 | # Define the table name and constraint details | COMMENT |
| MEDIUM⚡ | tests/unit_tests/utils/test_core.py | 677 | # Create a mock table object with the same structure | COMMENT |
| MEDIUM⚡ | tests/unit_tests/utils/test_core.py | 682 | # Create a mock for the referred_table with a name attribute | COMMENT |
| MEDIUM⚡ | tests/unit_tests/utils/test_core.py | 686 | # Create a mock for the foreign key constraint with a name attribute | COMMENT |
| MEDIUM⚡ | tests/unit_tests/utils/test_core.py | 711 | # Create a mock SQLAlchemy database object | COMMENT |
| MEDIUM⚡ | tests/unit_tests/utils/test_core.py | 714 | # Define the table name and constraint details | COMMENT |
| MEDIUM⚡ | tests/unit_tests/utils/test_core.py | 719 | # Create a mock table object with the same structure but no matching constraint | COMMENT |
| MEDIUM | tests/unit_tests/utils/test_core.py | 576 | # Create a DataFrame with timestamp strings | COMMENT |
| MEDIUM | tests/unit_tests/utils/test_core.py | 743 | # Create a mock for the foreign key constraint as a dictionary | COMMENT |
| MEDIUM | tests/unit_tests/models/helpers_test.py | 467 | # Create a mock table for testing | COMMENT |
| MEDIUM | tests/unit_tests/models/helpers_test.py | 498 | # Create a condition factory that always returns True | COMMENT |
| MEDIUM | tests/unit_tests/models/helpers_test.py | 559 | # Create a mock table for testing | COMMENT |
| MEDIUM | tests/unit_tests/models/helpers_test.py | 576 | # Create a condition factory that always returns False | COMMENT |
| MEDIUM | tests/unit_tests/models/helpers_test.py | 622 | # Create a real table instance | COMMENT |
| MEDIUM | tests/unit_tests/models/helpers_test.py | 720 | # Create a table instance | COMMENT |
| MEDIUM | tests/unit_tests/models/helpers_test.py | 985 | # Create a mock template processor | COMMENT |
| MEDIUM | tests/unit_tests/models/helpers_test.py | 1339 | # Create a mock template processor | COMMENT |
| MEDIUM | tests/unit_tests/models/helpers_test.py | 1469 | # Create a simple query | COMMENT |
| MEDIUM | tests/unit_tests/models/helpers_test.py | 1525 | # Create a simple query | COMMENT |
| MEDIUM | tests/unit_tests/models/helpers_test.py | 1575 | # Create a query with GROUP BY | COMMENT |
| MEDIUM | tests/unit_tests/models/helpers_test.py | 1636 | # Create a simple query | COMMENT |
| MEDIUM | tests/unit_tests/models/helpers_test.py | 1681 | # Create a simple query | COMMENT |
| MEDIUM | tests/unit_tests/models/helpers_test.py | 1843 | # Create a table with a temporal column | COMMENT |
| MEDIUM | tests/unit_tests/models/helpers_test.py | 1926 | # 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 | 189 | # 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 | 1427 | # 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 | 667 | # Create a dataframe for testing | COMMENT |
| MEDIUM⚡ | tests/unit_tests/common/test_query_context_processor.py | 676 | # Create a properly mocked datasource | COMMENT |
| MEDIUM⚡ | tests/unit_tests/common/test_query_context_processor.py | 1524 | # Create a mock query context | COMMENT |
| MEDIUM⚡ | tests/unit_tests/common/test_query_context_processor.py | 1529 | # Create a mock datasource | COMMENT |
| MEDIUM | tests/unit_tests/common/test_query_context_processor.py | 63 | # Create a processor instance | COMMENT |
| MEDIUM | tests/unit_tests/common/test_query_context_processor.py | 602 | # Create a dataframe for testing | COMMENT |
| MEDIUM | tests/unit_tests/common/test_query_context_processor.py | 1366 | # Create a mock datasource | COMMENT |
| MEDIUM | tests/unit_tests/common/test_query_context_processor.py | 1543 | # Create a query object with unsanitized where clause | COMMENT |
| MEDIUM | tests/unit_tests/common/test_query_context_processor.py | 1610 | # Create a mock datasource | COMMENT |
| MEDIUM | tests/unit_tests/db_engine_specs/test_snowflake.py | 413 | # Create a mock SQLAlchemy column | COMMENT |
| 140 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/dao/dataset_rls_test.py | 23 | def _setup_tables(session: Session) -> None: | CODE |
| LOW | tests/unit_tests/models/test_virtual_dataset_format.py | 72 | def _set_virtual_sql(datasource: MagicMock, sql: str) -> None: | CODE |
| LOW | tests/unit_tests/extensions/storage/conftest.py | 62 | def set_user(user_id: int) -> None: | CODE |
| LOW | tests/unit_tests/mcp_service/rls/tool/test_rls_tools.py | 32 | logger = logging.getLogger(__name__) | CODE |
| LOW | …tests/mcp_service/database/tool/test_database_tools.py | 36 | logger = logging.getLogger(__name__) | CODE |
| LOW | …t_tests/mcp_service/dataset/tool/test_dataset_tools.py | 42 | 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 | 35 | 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 | 39 | logger = logging.getLogger(__name__) | CODE |
| LOW | …cp_service/dashboard/tool/test_dashboard_generation.py | 47 | 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 | 52 | 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 | 32 | logger = logging.getLogger(__name__) | CODE |
| LOW | tests/unit_tests/commands/report/update_test.py | 60 | def _setup_mocks(mocker: MockerFixture, model: Mock) -> None: | CODE |
| LOW | tests/unit_tests/sql/execution/test_executor.py | 740 | 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/cli_tests.py | 43 | 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 | 73 | 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 | 78 | logger = logging.getLogger(__name__) | CODE |
| LOW | superset/app.py | 40 | logger = logging.getLogger(__name__) | CODE |
| LOW | superset/result_set.py | 33 | logger = logging.getLogger(__name__) | CODE |
| LOW | superset/jinja_context.py | 66 | logger = logging.getLogger(__name__) | CODE |
| LOW | superset/jinja_context.py | 964 | def set_context(self, **kwargs: Any) -> None: | CODE |
| LOW | superset/jinja_context.py | 1074 | def set_context(self, **kwargs: Any) -> None: | CODE |
| LOW | superset/jinja_context.py | 1138 | def set_context(self, **kwargs: Any) -> None: | CODE |
| 505 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 | …s/unit_tests/datasets/test_datetime_format_detector.py | 63 | except Exception as ex: | CODE |
| LOW | …s/unit_tests/datasets/test_datetime_format_detector.py | 68 | except Exception as retry_ex: | 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 | 1924 | except Exception: | CODE |
| LOW⚡ | tests/unit_tests/utils/test_core.py | 1931 | except Exception: | CODE |
| MEDIUM | tests/unit_tests/models/core_test.py | 1090 | def worker() -> None: | CODE |
| MEDIUM | tests/unit_tests/models/core_test.py | 2265 | def thread_a() -> None: | CODE |
| MEDIUM | tests/unit_tests/models/core_test.py | 2276 | def thread_b() -> None: | CODE |
| LOW | tests/unit_tests/models/core_test.py | 1096 | except Exception as ex: # pylint: disable=broad-except | CODE |
| LOW | tests/unit_tests/models/core_test.py | 1334 | except Exception: | CODE |
| LOW | tests/unit_tests/models/core_test.py | 2270 | except Exception as ex: # pylint: disable=broad-except | CODE |
| LOW | tests/unit_tests/models/core_test.py | 2284 | except Exception as ex: # pylint: disable=broad-except | CODE |
| LOW | tests/unit_tests/extensions/test_sqlalchemy.py | 151 | except Exception as e: | CODE |
| LOW | tests/unit_tests/extensions/test_sqlalchemy.py | 192 | except Exception as e: | CODE |
| LOW | tests/unit_tests/extensions/test_sqlalchemy.py | 227 | except Exception as e: | CODE |
| LOW | tests/unit_tests/extensions/test_sqlalchemy.py | 414 | except Exception as e: | STRING |
| LOW | tests/unit_tests/extensions/test_sqlalchemy.py | 464 | except Exception as e: | STRING |
| LOW | tests/unit_tests/extensions/test_sqlalchemy.py | 518 | except Exception as e: | STRING |
| LOW | tests/unit_tests/extensions/test_sqlalchemy.py | 571 | except Exception as e: | STRING |
| LOW | tests/unit_tests/extensions/test_sqlalchemy.py | 624 | except Exception as e: | STRING |
| LOW | tests/unit_tests/extensions/test_sqlalchemy.py | 675 | except Exception as e: | STRING |
| LOW | tests/unit_tests/extensions/test_sqlalchemy.py | 747 | except Exception as e: | CODE |
| LOW | tests/unit_tests/extensions/test_sqlalchemy.py | 781 | except Exception as e: | CODE |
| LOW | tests/unit_tests/commands/dataset/update_test.py | 999 | 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 | 1102 | except Exception as e: | CODE |
| LOW | tests/unit_tests/commands/dataset/update_test.py | 1165 | except Exception as e: | CODE |
| LOW | tests/unit_tests/commands/dataset/update_test.py | 1206 | except Exception as e: | CODE |
| LOW | tests/unit_tests/commands/dataset/update_test.py | 1254 | except Exception as e: | CODE |
| LOW | tests/unit_tests/commands/dataset/update_test.py | 1279 | except Exception as e: | CODE |
| LOW | …ts/unit_tests/commands/explore/test_get_explore_rls.py | 120 | except Exception: # noqa: BLE001 | CODE |
| LOW | tests/integration_tests/conftest.py | 128 | except Exception: # noqa: S110 | CODE |
| LOW | …s/integration_tests/deletion_retention/window_tests.py | 54 | except Exception: # pylint: disable=broad-except | CODE |
| LOW | …s/integration_tests/deletion_retention/window_tests.py | 124 | except Exception: # pylint: disable=broad-except | 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 | 70 | except Exception: | CODE |
| LOW⚡ | …integration_tests/themes/test_theme_api_permissions.py | 75 | except Exception: | CODE |
| LOW | tests/integration_tests/reports/utils.py | 252 | 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 |
| 504 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …ore/src/superset_core/extensions/storage/persistent.py | 30 | - Shared (global): (extension_id, null, key) | STRING |
| HIGH | tests/unit_tests/sql_lab_test.py | 472 | 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 | 178 | assert flat_df.equals( | CODE |
| HIGH | tests/unit_tests/pandas_postprocessing/test_rolling.py | 229 | assert flat_df.equals( | CODE |
| HIGH | tests/unit_tests/pandas_postprocessing/test_resample.py | 35 | assert _timeseries_df.equals(timeseries_df) | CODE |
| HIGH | tests/unit_tests/pandas_postprocessing/test_resample.py | 50 | assert post_df.equals( | CODE |
| HIGH | tests/unit_tests/pandas_postprocessing/test_resample.py | 73 | assert post_df.equals( | CODE |
| HIGH | tests/unit_tests/pandas_postprocessing/test_resample.py | 96 | assert post_df.equals( | CODE |
| HIGH | tests/unit_tests/pandas_postprocessing/test_resample.py | 121 | assert post_df.equals( | CODE |
| HIGH | tests/unit_tests/pandas_postprocessing/test_resample.py | 195 | assert flat_df.equals( | CODE |
| HIGH | tests/unit_tests/pandas_postprocessing/test_resample.py | 280 | 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 | 194 | assert sqla_table.metrics[0].extra == '{"warning_markdown": null}' | CODE |
| HIGH | …it_tests/datasets/commands/importers/v1/import_test.py | 1109 | assert sqla_table.metrics[0].extra == '{"warning_markdown": null}' | CODE |
| HIGH | …it_tests/datasets/commands/importers/v1/import_test.py | 1171 | "extra": '{"warning_markdown": null}', | CODE |
| HIGH | …it_tests/datasets/commands/importers/v1/import_test.py | 1199 | assert sqla_table.metrics[0].extra == '{"warning_markdown": null}' | CODE |
| HIGH | tests/unit_tests/charts/test_client_processing.py | 3655 | ) # Second data row should have empty last_name (NA converted to null) | STRING |
| HIGH | tests/unit_tests/extensions/storage/test_api.py | 955 | back with value=null, but the row and its codec are still listed.""" | STRING |
| HIGH⚡ | tests/unit_tests/mcp_service/test_middleware_logging.py | 678 | '"tables": 161}], "row_count": 1, "error": null, ' | CODE |
| HIGH⚡ | tests/unit_tests/mcp_service/test_middleware_logging.py | 679 | '"error_type": null}' | CODE |
| HIGH | tests/unit_tests/mcp_service/test_middleware_logging.py | 282 | '{"success": false, "chart": null, ' | CODE |
| HIGH⚡ | tests/unit_tests/mcp_service/test_middleware_logging.py | 672 | substring (as "error_type":null). The substring check must not treat | STRING |
| HIGH | tests/unit_tests/common/test_form_data_query_context.py | 504 | # order_by_cols entries that parse but aren't [col, asc] pairs (a stray null, | COMMENT |
| 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 | 126 | # 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 | 112 | Non-object JSON (list, string, null, number) must raise ValueError so | STRING |
| HIGH | tests/unit_tests/commands/chart/update_test.py | 221 | '{"datasource": null}', # null datasource | CODE |
| HIGH⚡ | …ts/unit_tests/versioning/test_normalization_changes.py | 55 | [missing, null] | CODE |
| 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 | 494 | else "state || gender || '_test'" | STRING |
| HIGH | tests/integration_tests/sqla_models_tests.py | 1176 | 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 | 1407 | 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 | 371 | # response (list, scalar, null) must surface as ValueError rather than | COMMENT |
| HIGH | superset/jinja_context.py | 387 | all JSON-native types (string, number, boolean, array, object, null). | STRING |
| HIGH | superset/jinja_context.py | 394 | the default and null) so two principals whose tokens render | STRING |
| HIGH | superset/jinja_context.py | 435 | # null); a guest whose attribute is absent renders different SQL | COMMENT |
| HIGH | superset/databases/schemas.py | 296 | # rejects null) and avoiding a stored ``null`` that would break the | COMMENT |
| 39 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/unit_tests/jinja_context_test.py | 3256 | CODE | |
| LOW | tests/unit_tests/initialization_test.py | 294 | 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 | 46 | CODE | |
| LOW | tests/unit_tests/utils/test_screenshot_utils.py | 911 | CODE | |
| LOW | tests/unit_tests/utils/test_screenshot_utils.py | 950 | CODE | |
| LOW | tests/unit_tests/utils/test_screenshot_utils.py | 980 | CODE | |
| LOW | tests/unit_tests/models/core_test.py | 1051 | CODE | |
| LOW | tests/unit_tests/models/core_test.py | 1090 | CODE | |
| LOW | …/mcp_service/test_mcp_multi_issuer_identity_binding.py | 66 | 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 | 236 | CODE | |
| LOW | …ts/unit_tests/mcp_service/test_auth_user_resolution.py | 294 | CODE | |
| LOW | …ts/unit_tests/mcp_service/test_auth_user_resolution.py | 705 | CODE | |
| LOW | tests/unit_tests/mcp_service/test_mcp_caching.py | 185 | CODE | |
| LOW | …s/unit_tests/mcp_service/test_mcp_tool_registration.py | 60 | CODE | |
| LOW | tests/unit_tests/mcp_service/test_mcp_e2e_smoke.py | 91 | CODE | |
| LOW | tests/unit_tests/mcp_service/test_mcp_e2e_smoke.py | 112 | 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 | 189 | CODE | |
| LOW | tests/unit_tests/mcp_service/utils/test_retry_utils.py | 248 | 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 | 596 | CODE | |
| LOW | tests/unit_tests/common/test_query_context_processor.py | 662 | CODE | |
| LOW | tests/unit_tests/common/test_query_context_processor.py | 1974 | CODE | |
| LOW | tests/unit_tests/common/test_query_context_processor.py | 2044 | CODE | |
| LOW | tests/unit_tests/common/test_query_context_processor.py | 2104 | 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 | 259 | CODE | |
| LOW | tests/unit_tests/commands/dataset/test_duplicate.py | 298 | CODE | |
| LOW | tests/unit_tests/commands/dataset/test_duplicate.py | 340 | CODE | |
| LOW | tests/unit_tests/commands/dataset/test_duplicate.py | 446 | 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 | 698 | CODE | |
| LOW | tests/integration_tests/datasource_tests.py | 386 | 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 | 1705 | CODE | |
| LOW | tests/integration_tests/sql_lab/commands_tests.py | 439 | CODE | |
| LOW | tests/integration_tests/dashboards/api_tests.py | 3243 | CODE | |
| LOW | tests/integration_tests/views/test_explore_redirect.py | 299 | 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 | |
| 297 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 | 1274 | # Check if Alpha role already exists | COMMENT |
| LOW⚡ | tests/unit_tests/security/manager_test.py | 1281 | # 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 | 267 | # Set TTL to 300 seconds | COMMENT |
| LOW | tests/unit_tests/utils/test_screenshot_cache_fix.py | 282 | # 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 | 146 | # 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 | 90 | # 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 | 219 | # Output results | COMMENT |
| LOW | .github/workflows/bashlib.sh | 350 | # Check if there are any test files in the specified path | COMMENT |
| LOW⚡ | superset/config.py | 3215 | # Set CACHE_TYPE to 'RedisCache' for standard Redis or 'RedisSentinelCache' for | COMMENT |
| LOW | superset/sql_lab.py | 518 | # Check if stopped | COMMENT |
| LOW | superset/app.py | 190 | # 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 | 289 | # Check if all requested columns are drillable | COMMENT |
| LOW | superset/databases/schemas.py | 1133 | # Check if any sensitive field is still masked | COMMENT |
| LOW | superset/tasks/context.py | 378 | # Check if task execution has already completed (late abort race). | COMMENT |
| LOW⚡ | superset/tasks/context.py | 439 | # Check if all abort handlers completed successfully | COMMENT |
| LOW | superset/tasks/context.py | 486 | # Check if task already has an error (preserve original context) | COMMENT |
| LOW | superset/tasks/context.py | 552 | # Check if task has abort handler (requires app context) | COMMENT |
| LOW | superset/tasks/context.py | 572 | # Set status to ABORTING (same as user abort) | COMMENT |
| LOW | superset/tasks/manager.py | 82 | # Check if thread is still running after timeout | COMMENT |
| LOW | superset/tasks/manager.py | 548 | # Check if stop was requested - if so, this may be expected | COMMENT |
| LOW | superset/tasks/manager.py | 599 | # Check if we were asked to stop - if so, this is expected | COMMENT |
| LOW | superset/tasks/decorators.py | 342 | # Check if already in terminal state | COMMENT |
| LOW | superset/security/manager.py | 2271 | # Check if this is actually a multi-layer deck.gl chart | COMMENT |
| LOW | superset/security/manager.py | 3286 | # Check if database name has changed | COMMENT |
| LOW | superset/security/manager.py | 3607 | # Check if watched fields have changed | COMMENT |
| LOW | superset/semantic_layers/mapper.py | 937 | # Check if we need separate filters for the group limit subquery | COMMENT |
| LOW | superset/semantic_layers/mapper.py | 964 | # Check if inner time bounds are explicitly set and differ from outer bounds | COMMENT |
| LOW | superset/charts/client_processing.py | 825 | # Check if the DataFrame has a default RangeIndex, which should not be shown | COMMENT |
| LOW | superset/charts/data/api.py | 524 | # Check if we should use streaming for large datasets | COMMENT |
| LOW | superset/charts/data/api.py | 799 | # Check if we have rowcount in the second query result (like frontend does) | COMMENT |
| LOW | superset/utils/cache.py | 227 | # Check if the user can access the resource | COMMENT |
| 74 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/tasks/test_export_dashboard_excel.py | 90 | user.email = "user@example.com" | CODE |
| LOW | …_tests/security/test_superset_user_api_subject_sync.py | 62 | email=f"{username}@example.org", | CODE |
| LOW | …_tests/security/test_superset_user_api_subject_sync.py | 76 | email=f"{username}@example.org", | CODE |
| LOW⚡ | tests/unit_tests/security/manager_test.py | 1287 | email="adoe@example.org", | CODE |
| LOW | tests/unit_tests/security/manager_test.py | 1177 | email="adoe@example.org", | CODE |
| LOW | tests/unit_tests/security/manager_test.py | 1237 | email="adoe@example.org", | CODE |
| LOW | …/security/test_password_change_session_invalidation.py | 66 | email="session_invalidation_target@example.org", | CODE |
| LOW | …/security/test_password_change_session_invalidation.py | 73 | email="session_invalidation_actor@example.org", | CODE |
| LOW | …/security/test_password_change_session_invalidation.py | 160 | email="admin_edit_password_target@example.org", | CODE |
| LOW | …/security/test_password_change_session_invalidation.py | 195 | email="admin_edit_no_password_target@example.org", | CODE |
| LOW | …/security/test_password_change_session_invalidation.py | 244 | email="terminate_sessions_target@example.org", | CODE |
| LOW⚡ | tests/unit_tests/datasets/schema_tests.py | 86 | label = "Jane Doe" | CODE |
| LOW⚡ | tests/unit_tests/datasets/schema_tests.py | 93 | assert dumped == {"id": 1, "label": "Jane Doe", "img": "avatar.png", "type": 1} | CODE |
| LOW | …it_tests/datasets/commands/importers/v1/import_test.py | 1475 | email="adoe@example.org", | CODE |
| LOW | …it_tests/datasets/commands/importers/v1/import_test.py | 1565 | email="adoe@example.org", | CODE |
| LOW | …it_tests/datasets/commands/importers/v1/import_test.py | 1614 | email="adoe@example.org", | CODE |
| LOW | …it_tests/datasets/commands/importers/v1/import_test.py | 1659 | email="bob@example.org", | CODE |
| LOW | …it_tests/datasets/commands/importers/v1/import_test.py | 1858 | email="adoe@example.org", | CODE |
| LOW | …unit_tests/charts/commands/importers/v1/import_test.py | 195 | email="adoe@example.org", | CODE |
| LOW | …unit_tests/charts/commands/importers/v1/import_test.py | 236 | email="adoe@example.org", | CODE |
| LOW | …unit_tests/charts/commands/importers/v1/import_test.py | 271 | email="adoe@example.org", | CODE |
| LOW | …unit_tests/charts/commands/importers/v1/import_test.py | 326 | email="adoe@example.org", | CODE |
| LOW | …unit_tests/charts/commands/importers/v1/import_test.py | 382 | email="adoe@example.org", | CODE |
| LOW | …unit_tests/charts/commands/importers/v1/import_test.py | 415 | email="bob@example.org", | CODE |
| LOW | tests/unit_tests/models/core_test.py | 571 | user.email = "alice.doe@example.org" | CODE |
| LOW | tests/unit_tests/models/core_test.py | 729 | user.email = "alice.doe@example.org" | CODE |
| LOW | tests/unit_tests/models/core_test.py | 793 | user.email = "alice.doe@example.org" | CODE |
| LOW | tests/unit_tests/models/core_test.py | 1417 | email="adoe@example.org", | CODE |
| LOW | tests/unit_tests/models/core_test.py | 1503 | email="adoe2@example.org", | CODE |
| LOW | tests/unit_tests/models/core_test.py | 1521 | email=f"drift{i}@example.org", | CODE |
| LOW | tests/unit_tests/models/core_test.py | 1602 | email="adoe3@example.org", | CODE |
| LOW | tests/unit_tests/models/helpers_test.py | 2882 | "val": ["John Doe", "Jane Doe"], | CODE |
| LOW | tests/unit_tests/models/helpers_test.py | 2882 | "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 | 100 | assert info.email == "admin@example.com" | CODE |
| LOW | tests/unit_tests/mcp_service/user/test_schemas.py | 114 | user.email = "admin@example.com" | CODE |
| LOW | tests/unit_tests/mcp_service/user/test_schemas.py | 137 | user.email = "admin@example.com" | CODE |
| LOW | tests/unit_tests/mcp_service/user/test_schemas.py | 149 | assert info.email == "admin@example.com" | CODE |
| LOW⚡ | …ts/unit_tests/mcp_service/user/tool/test_user_tools.py | 235 | user = create_mock_user(email="admin@example.com", roles=["Admin"]) | CODE |
| LOW⚡ | …ts/unit_tests/mcp_service/user/tool/test_user_tools.py | 245 | assert data["users"][0]["email"] == "admin@example.com" | CODE |
| LOW⚡ | …ts/unit_tests/mcp_service/user/tool/test_user_tools.py | 253 | user = create_mock_user(email="admin@example.com") | CODE |
| LOW | …ts/unit_tests/mcp_service/user/tool/test_user_tools.py | 45 | email: str = "admin@example.com", | CODE |
| LOW⚡ | …sts/unit_tests/mcp_service/dashboard/test_permalink.py | 89 | (None, "admin@example.com", {"email": "admin@example.com"}), | CODE |
| LOW | …cp_service/dashboard/tool/test_dashboard_generation.py | 156 | mock_user.email = "admin@example.com" | CODE |
| LOW | …cp_service/dashboard/tool/test_dashboard_generation.py | 476 | email="admin@example.com", | CODE |
| LOW | …cp_service/dashboard/tool/test_dashboard_generation.py | 523 | email="admin@example.com", | CODE |
| LOW | …cp_service/dashboard/tool/test_dashboard_generation.py | 582 | 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 | 306 | user.email = "alice@example.org" | CODE |
| LOW⚡ | tests/unit_tests/db_engine_specs/test_starrocks.py | 315 | database.get_effective_user.return_value = "alice@example.org" | CODE |
| LOW⚡ | tests/unit_tests/db_engine_specs/test_starrocks.py | 330 | user.email = "alice.doe@example.org" | CODE |
| LOW⚡ | tests/unit_tests/db_engine_specs/test_starrocks.py | 339 | database.get_effective_user.return_value = "alice.doe@example.org" | CODE |
| LOW⚡ | tests/unit_tests/db_engine_specs/test_starrocks.py | 354 | user.email = "alice.doe@example.org" | CODE |
| LOW⚡ | tests/unit_tests/db_engine_specs/test_gsheets.py | 229 | "subject": "admin@example.com", | CODE |
| 138 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 | 2506 | # Step 1: v1 send raises SlackV1NotificationError because v2 is available. | COMMENT |
| LOW⚡ | tests/unit_tests/reports/notifications/slack_tests.py | 2511 | # Step 2: command-level upgrade rewrites the row to SlackV2 with channel IDs. | COMMENT |
| LOW⚡ | tests/unit_tests/reports/notifications/slack_tests.py | 2517 | # 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 | 193 | # Step 1: Encrypt with KEY_A | COMMENT |
| LOW⚡ | tests/integration_tests/utils/encrypt_tests.py | 198 | # Step 2: Verify decryption with KEY_A works | COMMENT |
| LOW⚡ | tests/integration_tests/utils/encrypt_tests.py | 202 | # Step 3: Rotate key to KEY_B | COMMENT |
| LOW⚡ | tests/integration_tests/utils/encrypt_tests.py | 205 | # Step 4: Re-encrypt with KEY_B (simulating SecretsMigrator logic) | COMMENT |
| LOW⚡ | tests/integration_tests/utils/encrypt_tests.py | 223 | # Step 5: Verify decryption with KEY_B works | COMMENT |
| LOW⚡ | tests/integration_tests/utils/encrypt_tests.py | 227 | # Step 6: Verify KEY_A can no longer decrypt the new ciphertext | COMMENT |
| LOW⚡ | tests/integration_tests/dashboards/commands_tests.py | 928 | # Step 1: Add an embedded dashboard | COMMENT |
| LOW⚡ | tests/integration_tests/dashboards/commands_tests.py | 935 | # Step 2: Assert that the embedded dashboard was added | COMMENT |
| LOW⚡ | tests/integration_tests/dashboards/commands_tests.py | 940 | # Step 3: Delete the embedded dashboard | COMMENT |
| LOW⚡ | tests/integration_tests/dashboards/commands_tests.py | 945 | # Step 4: Assert that the embedded dashboard was deleted | COMMENT |
| LOW⚡ | …ts/integration_tests/versioning/activity_view_tests.py | 424 | # Step 1: generate a chart-edit change record for "Girls". | COMMENT |
| LOW⚡ | …ts/integration_tests/versioning/activity_view_tests.py | 428 | # Step 2: hard-delete the chart. The fixture's _cleanup will | 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 | 410 | // Step 1: Parse into AST | COMMENT |
| LOW⚡ | …gin-chart-echarts/src/utils/safeEChartOptionsParser.ts | 444 | // Step 2: Validate AST for security (no functions, eval, etc.) | COMMENT |
| LOW⚡ | …gin-chart-echarts/src/utils/safeEChartOptionsParser.ts | 452 | // Step 3: Convert AST to JavaScript object | COMMENT |
| LOW⚡ | …gin-chart-echarts/src/utils/safeEChartOptionsParser.ts | 455 | // 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 | 510 | // Step 1: filter(Boolean) — as hydrate.ts does | COMMENT |
| LOW⚡ | …-frontend/src/dashboard/reducers/nativeFilters.test.ts | 512 | // Step 2: migrate — as hydrate.ts does | COMMENT |
| LOW⚡ | …-frontend/src/dashboard/reducers/nativeFilters.test.ts | 514 | // 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 | 421 | ## Step 6: Install Dependencies | COMMENT |
| LOW | docs/developer_docs/extensions/quick-start.md | 431 | ## Step 7: Package the Extension | COMMENT |
| LOW | docs/developer_docs/extensions/quick-start.md | 449 | ## Step 8: Deploy to Superset | COMMENT |
| LOW | docs/developer_docs/extensions/quick-start.md | 486 | ## Step 9: Test Your Extension | COMMENT |
| LOW⚡ | superset/config.py | 449 | # NOTE: This variable is used to populate THEME_DEFAULT. If you override this in | COMMENT |
| LOW | superset/config.py | 466 | # NOTE: This variable is deprecated and not used in the new theme system. | COMMENT |
| 45 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 | 2506 | # Step 1: v1 send raises SlackV1NotificationError because v2 is available. | COMMENT |
| LOW⚡ | tests/unit_tests/reports/notifications/slack_tests.py | 2511 | # Step 2: command-level upgrade rewrites the row to SlackV2 with channel IDs. | COMMENT |
| LOW⚡ | tests/unit_tests/reports/notifications/slack_tests.py | 2517 | # 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 | 193 | # Step 1: Encrypt with KEY_A | COMMENT |
| LOW⚡ | tests/integration_tests/utils/encrypt_tests.py | 198 | # Step 2: Verify decryption with KEY_A works | COMMENT |
| LOW⚡ | tests/integration_tests/utils/encrypt_tests.py | 202 | # Step 3: Rotate key to KEY_B | COMMENT |
| LOW⚡ | tests/integration_tests/utils/encrypt_tests.py | 205 | # Step 4: Re-encrypt with KEY_B (simulating SecretsMigrator logic) | COMMENT |
| LOW⚡ | tests/integration_tests/utils/encrypt_tests.py | 223 | # Step 5: Verify decryption with KEY_B works | COMMENT |
| LOW⚡ | tests/integration_tests/utils/encrypt_tests.py | 227 | # Step 6: Verify KEY_A can no longer decrypt the new ciphertext | COMMENT |
| LOW⚡ | tests/integration_tests/dashboards/commands_tests.py | 928 | # Step 1: Add an embedded dashboard | COMMENT |
| LOW⚡ | tests/integration_tests/dashboards/commands_tests.py | 935 | # Step 2: Assert that the embedded dashboard was added | COMMENT |
| LOW⚡ | tests/integration_tests/dashboards/commands_tests.py | 940 | # Step 3: Delete the embedded dashboard | COMMENT |
| LOW⚡ | tests/integration_tests/dashboards/commands_tests.py | 945 | # Step 4: Assert that the embedded dashboard was deleted | COMMENT |
| LOW⚡ | …ts/integration_tests/versioning/activity_view_tests.py | 424 | # Step 1: generate a chart-edit change record for "Girls". | COMMENT |
| LOW⚡ | …ts/integration_tests/versioning/activity_view_tests.py | 428 | # Step 2: hard-delete the chart. The fixture's _cleanup will | COMMENT |
| LOW | …gin-chart-echarts/src/utils/safeEChartOptionsParser.ts | 410 | // Step 1: Parse into AST | COMMENT |
| LOW⚡ | …gin-chart-echarts/src/utils/safeEChartOptionsParser.ts | 444 | // Step 2: Validate AST for security (no functions, eval, etc.) | COMMENT |
| LOW⚡ | …gin-chart-echarts/src/utils/safeEChartOptionsParser.ts | 452 | // Step 3: Convert AST to JavaScript object | COMMENT |
| LOW⚡ | …gin-chart-echarts/src/utils/safeEChartOptionsParser.ts | 455 | // 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 | 510 | // Step 1: filter(Boolean) — as hydrate.ts does | COMMENT |
| LOW⚡ | …-frontend/src/dashboard/reducers/nativeFilters.test.ts | 512 | // Step 2: migrate — as hydrate.ts does | COMMENT |
| LOW⚡ | …-frontend/src/dashboard/reducers/nativeFilters.test.ts | 514 | // 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 | 123 | # Step 1: Check data-model metadata access BEFORE the dataset lookup. | COMMENT |
| LOW⚡ | superset/mcp_service/dataset/tool/query_dataset.py | 139 | # Step 2: Resolve dataset | COMMENT |
| LOW⚡ | superset/mcp_service/dataset/tool/query_dataset.py | 173 | # Step 2: Validate requested columns and metrics | COMMENT |
| LOW⚡ | superset/mcp_service/dataset/tool/query_dataset.py | 213 | # Step 3: Build filters and time range | COMMENT |
| LOW⚡ | superset/mcp_service/dataset/tool/query_dataset.py | 275 | # Step 4: Build query dict | COMMENT |
| LOW⚡ | superset/mcp_service/dataset/tool/query_dataset.py | 296 | # Step 5: Create QueryContext and execute | COMMENT |
| LOW⚡ | superset/mcp_service/dataset/tool/query_dataset.py | 331 | # 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/common/query_context_processor.py | 574 | # Step 1: Request-level custom timeout (e.g., Force refresh bypass) | COMMENT |
| LOW⚡ | superset/common/query_context_processor.py | 578 | # Step 2: Native filter option query override. | COMMENT |
| LOW⚡ | superset/common/query_context_processor.py | 587 | # Step 3: Slice, Dataset, or Database timeouts | COMMENT |
| LOW⚡ | superset/common/query_context_processor.py | 591 | # Step 4: DATA_CACHE_CONFIG fallback. | COMMENT |
| 13 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/jinja_context.py | 383 | Get a specific user attribute from guest user. This function retrieves attributes from the guest user | STRING |
| HIGH | superset/tasks/decorators.py | 568 | Schedule this task for asynchronous execution. The signature mirrors the original task function, with | STRING |
| HIGH | superset/utils/screenshot_utils.py | 415 | Take a tiled screenshot of a large dashboard by scrolling and capturing sections. Args: page: Playwrig | 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 | 259 | 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 | 289 | 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 | 324 | 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 | 381 | Generates a datetime expression based on a modifier, scope, delta, unit, and relative base. This function h | STRING |
| HIGH | superset/utils/date_parser.py | 426 | 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 | 196 | 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 | 198 | 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 | 282 | 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 |
|---|---|---|---|---|
| CRITICAL⚡ | …s/unit_tests/extensions/storage/test_persistent_dao.py | 492 | mock_db.session.query.return_value.filter.return_value.scalar.assert_not_called() | CODE |
| CRITICAL⚡ | …s/unit_tests/extensions/storage/test_persistent_dao.py | 509 | mock_db.session.query.return_value.filter.return_value.scalar.assert_not_called() | CODE |
| CRITICAL | …s/unit_tests/extensions/storage/test_persistent_dao.py | 435 | mock_db.session.query.return_value.filter.return_value.first.assert_not_called() | CODE |
| 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 | 43 | const opts = github.rest.pulls.list.endpoint.merge({ | CODE |
| CRITICAL | .github/workflows/check-db-migration-confict.yml | 57 | const listFilesOpts = await github.rest.pulls.listFiles.endpoint.merge({ | CODE |
| 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 | 73 | """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 | 689 | # can just pass in chart as well | COMMENT |
| MEDIUM | …ion_tests/dashboards/soft_delete_fixture_leak_tests.py | 41 | # End any transaction the harness opened earlier: an already-open SQLite | COMMENT |
| MEDIUM | …frontend/plugins/plugin-chart-table/src/TableChart.tsx | 1608 | // Use a ref to store previous clientViewRows and exportColumns for robust change detection | COMMENT |
| MEDIUM | …nd/src/pages/DatasetList/DatasetList.listview.test.tsx | 1797 | // Select row by dataset name (row-scoped query is more robust than array index) | COMMENT |
| MEDIUM | …nd/src/pages/DatasetList/DatasetList.listview.test.tsx | 1865 | // Select row by dataset name (row-scoped query is more robust than array index) | COMMENT |
| MEDIUM | …nd/src/pages/DatasetList/DatasetList.listview.test.tsx | 1939 | // 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 | 1985 | // 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 | 2035 | // Select first dataset by name (row-scoped query is more robust than array index) | COMMENT |
| MEDIUM | superset/config.py | 1954 | # This is move involved example where depending on the database you can leverage data | COMMENT |
| LOW | superset/tasks/context.py | 508 | # No original error, just use handler failures | COMMENT |
| MEDIUM⚡ | superset/mcp_service/mcp_core.py | 827 | """Tool interface for generating comprehensive instance information.""" | STRING |
| MEDIUM⚡ | superset/mcp_service/mcp_core.py | 836 | """Generate comprehensive instance information.""" | STRING |
| MEDIUM | superset/mcp_service/mcp_core.py | 981 | """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 | 244 | # Run comprehensive validation pipeline | COMMENT |
| MEDIUM | superset/mcp_service/chart/tool/get_chart_data.py | 899 | # 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 | 362 | # a hidden contract; the explicit flush makes it robust. The lookup | COMMENT |
| MEDIUM | superset/commands/chart/importers/v1/utils.py | 103 | # contract; the explicit flush makes it robust. The lookup then | COMMENT |
| MEDIUM | superset/commands/dashboard/importers/v1/utils.py | 368 | # 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 |
|---|---|---|---|---|
| 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 | 65 | 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 | 35 | 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 | 38 | CODE | |
| LOW | tests/integration_tests/base_tests.py | 448 | CODE | |
| LOW | tests/integration_tests/base_tests.py | 623 | CODE | |
| LOW | tests/integration_tests/base_tests.py | 695 | CODE | |
| LOW | tests/integration_tests/insert_chart_mixin.py | 31 | CODE | |
| LOW | tests/integration_tests/datasets/api_tests.py | 113 | 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 | 67 | CODE | |
| LOW | tests/integration_tests/reports/utils.py | 140 | CODE | |
| LOW | superset/core/mcp/core_mcp_injection.py | 63 | CODE | |
| LOW | superset/security/manager.py | 4304 | CODE | |
| LOW | superset/charts/data/api.py | 682 | CODE | |
| LOW | superset/utils/cache_manager.py | 94 | CODE | |
| LOW | superset/utils/cache_manager.py | 118 | CODE | |
| LOW | superset/utils/core.py | 901 | CODE | |
| LOW | superset/utils/dashboard_import_export.py | 33 | CODE | |
| LOW | superset/utils/json.py | 188 | CODE | |
| LOW | superset/models/helpers.py | 1583 | CODE | |
| LOW | superset/models/helpers.py | 4327 | CODE | |
| LOW | superset/mcp_service/mcp_core.py | 364 | CODE | |
| LOW | superset/mcp_service/app.py | 636 | CODE | |
| LOW | superset/mcp_service/app.py | 999 | CODE | |
| LOW | superset/common/query_object.py | 116 | CODE | |
| LOW | superset/common/utils/query_cache_manager.py | 55 | CODE | |
| LOW | superset/db_engine_specs/presto.py | 419 | CODE | |
| LOW | superset/async_events/cache_backend.py | 29 | CODE | |
| LOW | superset/async_events/cache_backend.py | 187 | CODE | |
| LOW | superset/daos/base.py | 846 | 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 | 255 | # make sure to clean up in case of yield exceptions | COMMENT |
| MEDIUM | superset/config.py | 90 | # Note that you can use `StdOutEventLogger` for debugging | COMMENT |
| MEDIUM | superset/config.py | 291 | # Note that you can use this to set the isolation level of your database, as in | COMMENT |
| MEDIUM | superset/config.py | 604 | # for adding your own map tiles, you can use the following format: | COMMENT |
| LOW | superset/config.py | 217 | # 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 | 221 | # make sure to return a new DataFrame instead of changing the `base_df`. | COMMENT |
| LOW | helm/superset/values.yaml | 1137 | # 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 | 733 | # 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 | 360 | 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/tasks/scheduler.py | 281 | def execute_task( # noqa: C901 | CODE |