🪄 Create rich visualizations with AI
3667 matches across 18 categories. Click a row to expand file-level details.
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | py-src/data_formulator/agent_config.py | 39 | # --------------------------------------------------------------------------- |
| MEDIUM | py-src/data_formulator/agent_config.py | 41 | # --------------------------------------------------------------------------- |
| MEDIUM | py-src/data_formulator/agent_config.py | 48 | # ── Heavy: code-gen, multi-step, tool-using ───────────────────────────── |
| MEDIUM | py-src/data_formulator/agent_config.py | 56 | # ── Light: single-turn extractors / classifiers / formatters ──────────── |
| MEDIUM | py-src/data_formulator/error_handler.py | 51 | # --------------------------------------------------------------------------- |
| MEDIUM | py-src/data_formulator/error_handler.py | 53 | # --------------------------------------------------------------------------- |
| MEDIUM | py-src/data_formulator/error_handler.py | 103 | # --------------------------------------------------------------------------- |
| MEDIUM | py-src/data_formulator/error_handler.py | 105 | # --------------------------------------------------------------------------- |
| MEDIUM | py-src/data_formulator/error_handler.py | 133 | # --------------------------------------------------------------------------- |
| MEDIUM | py-src/data_formulator/error_handler.py | 135 | # --------------------------------------------------------------------------- |
| MEDIUM | py-src/data_formulator/error_handler.py | 201 | # --------------------------------------------------------------------------- |
| MEDIUM | py-src/data_formulator/error_handler.py | 203 | # --------------------------------------------------------------------------- |
| MEDIUM | py-src/data_formulator/error_handler.py | 244 | # --------------------------------------------------------------------------- |
| MEDIUM | py-src/data_formulator/error_handler.py | 246 | # --------------------------------------------------------------------------- |
| MEDIUM | py-src/data_formulator/data_connector.py | 52 | # --------------------------------------------------------------------------- |
| MEDIUM | py-src/data_formulator/data_connector.py | 54 | # --------------------------------------------------------------------------- |
| MEDIUM | py-src/data_formulator/data_connector.py | 1172 | # --------------------------------------------------------------------------- |
| MEDIUM | py-src/data_formulator/data_connector.py | 1174 | # --------------------------------------------------------------------------- |
| MEDIUM | py-src/data_formulator/data_connector.py | 1951 | # --------------------------------------------------------------------------- |
| MEDIUM | py-src/data_formulator/data_connector.py | 1953 | # --------------------------------------------------------------------------- |
| MEDIUM | py-src/data_formulator/data_connector.py | 308 | # --------------------------------------------------------------------------- |
| MEDIUM | py-src/data_formulator/data_connector.py | 310 | # --------------------------------------------------------------------------- |
| MEDIUM | py-src/data_formulator/data_connector.py | 667 | # --------------------------------------------------------------------------- |
| MEDIUM | py-src/data_formulator/data_connector.py | 669 | # --------------------------------------------------------------------------- |
| MEDIUM | py-src/data_formulator/data_connector.py | 698 | # --------------------------------------------------------------------------- |
| MEDIUM | py-src/data_formulator/data_connector.py | 700 | # --------------------------------------------------------------------------- |
| MEDIUM | py-src/data_formulator/data_connector.py | 2162 | # --------------------------------------------------------------------------- |
| MEDIUM | py-src/data_formulator/data_connector.py | 2164 | # --------------------------------------------------------------------------- |
| MEDIUM | py-src/data_formulator/security/url_allowlist.py | 46 | # --------------------------------------------------------------------------- |
| MEDIUM | py-src/data_formulator/security/url_allowlist.py | 48 | # --------------------------------------------------------------------------- |
| MEDIUM | py-src/data_formulator/security/url_allowlist.py | 67 | # --------------------------------------------------------------------------- |
| MEDIUM | py-src/data_formulator/security/url_allowlist.py | 69 | # --------------------------------------------------------------------------- |
| MEDIUM | py-src/data_formulator/security/code_signing.py | 35 | # --------------------------------------------------------------------------- |
| MEDIUM | py-src/data_formulator/security/code_signing.py | 37 | # --------------------------------------------------------------------------- |
| MEDIUM | py-src/data_formulator/security/code_signing.py | 96 | # --------------------------------------------------------------------------- |
| MEDIUM | py-src/data_formulator/security/code_signing.py | 98 | # --------------------------------------------------------------------------- |
| MEDIUM | py-src/data_formulator/security/log_sanitizer.py | 37 | # --------------------------------------------------------------------------- |
| MEDIUM | py-src/data_formulator/security/log_sanitizer.py | 39 | # --------------------------------------------------------------------------- |
| MEDIUM | py-src/data_formulator/security/log_sanitizer.py | 56 | # --------------------------------------------------------------------------- |
| MEDIUM | py-src/data_formulator/security/log_sanitizer.py | 58 | # --------------------------------------------------------------------------- |
| MEDIUM | py-src/data_formulator/security/log_sanitizer.py | 106 | # --------------------------------------------------------------------------- |
| MEDIUM | py-src/data_formulator/security/log_sanitizer.py | 108 | # --------------------------------------------------------------------------- |
| MEDIUM | py-src/data_formulator/security/log_sanitizer.py | 190 | # --------------------------------------------------------------------------- |
| MEDIUM | py-src/data_formulator/security/log_sanitizer.py | 192 | # --------------------------------------------------------------------------- |
| MEDIUM | py-src/data_formulator/auth/token_store.py | 31 | # ── Core interface ──────────────────────────────────────── |
| MEDIUM | py-src/data_formulator/auth/token_store.py | 107 | # ── Store / clear ───────────────────────────────────────── |
| MEDIUM | py-src/data_formulator/auth/token_store.py | 182 | # ── Internal: cache ─────────────────────────────────────── |
| MEDIUM | py-src/data_formulator/auth/token_store.py | 192 | # ── Internal: refresh ───────────────────────────────────── |
| MEDIUM | py-src/data_formulator/auth/token_store.py | 227 | # ── Internal: SSO exchange ──────────────────────────────── |
| MEDIUM | py-src/data_formulator/auth/token_store.py | 263 | # ── Internal: vault ─────────────────────────────────────── |
| MEDIUM | py-src/data_formulator/auth/token_store.py | 308 | # ── Internal: SSO refresh ───────────────────────────────── |
| MEDIUM | py-src/data_formulator/auth/token_store.py | 340 | # ── Internal: auth_config lookup ────────────────────────── |
| MEDIUM | py-src/data_formulator/auth/gateways/oidc_gateway.py | 203 | # ── Token management routes (work in all AUTH_MODE settings) ────── |
| MEDIUM | py-src/data_formulator/auth/vault/local_vault.py | 49 | # ------------------------------------------------------------------ |
| MEDIUM | py-src/data_formulator/workflows/create_vl_plots.py | 1762 | # ── 2. Tooltips ─────────────────────────────────────────────────────── |
| MEDIUM | py-src/data_formulator/workflows/create_vl_plots.py | 1765 | # ── 3. Canvas sizing defaults ───────────────────────────────────────── |
| MEDIUM | py-src/data_formulator/workflows/create_vl_plots.py | 1770 | # ── 4. Axis label limits (prevent long labels from overflowing) ────── |
| MEDIUM | py-src/data_formulator/workflows/create_vl_plots.py | 1776 | # ── 5. Step-based sizing for wide discrete axes ─────────────────────── |
| MEDIUM | py-src/data_formulator/workflows/create_vl_plots.py | 731 | # ── Apply semantic enhancements when available ───────────────────── |
| MEDIUM | py-src/data_formulator/workflows/create_vl_plots.py | 878 | # --------------------------------------------------------------------------- |
| 1187 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | .cursor/skills/path-safety/SKILL.md | 118 | def _enforce_deployment_restrictions(): |
| LOW | py-src/data_formulator/workspace_factory.py | 30 | def _build_azure_container_client(cfg: dict): |
| LOW | py-src/data_formulator/workspace_factory.py | 78 | def _get_user_workspaces_root(identity_id: str) -> Path: |
| LOW | py-src/data_formulator/error_handler.py | 76 | def classify_and_wrap_llm_error(exc: Exception) -> AppError: |
| LOW | py-src/data_formulator/data_connector.py | 56 | def classify_and_raise_connector_error(error: Exception, *, operation: str = "") -> None: |
| LOW | py-src/data_formulator/data_connector.py | 1448 | def connector_get_catalog_tree(): |
| LOW | py-src/data_formulator/data_connector.py | 135 | def _lightweight_tree_for_response(tree: list[dict[str, Any]]) -> list[dict[str, Any]]: |
| LOW | py-src/data_formulator/data_connector.py | 193 | def _is_sensitive_or_auth_param( |
| LOW | py-src/data_formulator/data_connector.py | 272 | def _resolve_connector_with_key(data: dict[str, Any]) -> tuple[str, "DataConnector"]: |
| LOW | py-src/data_formulator/data_connector.py | 1506 | def connector_get_cached_catalog_tree(): |
| LOW | py-src/data_formulator/data_connector.py | 1563 | def connector_sync_catalog_metadata(): |
| LOW | py-src/data_formulator/security/sanitize.py | 25 | def _extract_traceback_summary(message: str) -> str: |
| LOW | py-src/data_formulator/security/sanitize.py | 54 | def _structured_error_response(code: str, message: str, status_code: int): |
| LOW | py-src/data_formulator/workflows/create_vl_plots.py | 22 | def field_metadata_to_semantic_types( |
| LOW | py-src/data_formulator/workflows/create_vl_plots.py | 539 | def assign_aesthetic_channels(): |
| LOW | py-src/data_formulator/workflows/create_vl_plots.py | 1225 | def _post_process_candlestick( |
| LOW | py-src/data_formulator/workflows/create_vl_plots.py | 1581 | def _post_process_streamgraph(spec: dict, encodings: dict, config: dict | None) -> None: |
| LOW | py-src/data_formulator/workflows/chart_semantics.py | 570 | def resolve_channel_semantics( |
| LOW | py-src/data_formulator/workflows/chart_semantics.py | 184 | def _looks_like_year_integers(values: List[Any]) -> bool: |
| LOW | …-src/data_formulator/agents/agent_data_loading_chat.py | 385 | def _build_connector_summary_block( |
| LOW | …-src/data_formulator/agents/agent_data_loading_chat.py | 811 | def _tool_show_user_data_preview(self, args, scratch_jail): |
| LOW | …-src/data_formulator/agents/agent_data_loading_chat.py | 1125 | def _normalize_load_plan_candidate(self, candidate): |
| LOW | …-src/data_formulator/agents/agent_data_loading_chat.py | 1205 | def _format_valid_sources_hint(self) -> str: |
| LOW | …-src/data_formulator/agents/agent_data_loading_chat.py | 1238 | def _normalize_load_plan_filters(filters): |
| LOW | py-src/data_formulator/agents/client_utils.py | 72 | def _strip_images_from_messages(self, messages): |
| LOW | py-src/data_formulator/agents/client_utils.py | 85 | def _is_image_deserialize_error(self, error_text: str) -> bool: |
| LOW | py-src/data_formulator/agents/client_utils.py | 90 | def _is_reasoning_effort_error(self, error_text: str) -> bool: |
| LOW | py-src/data_formulator/agents/client_utils.py | 165 | def get_completion_with_tools(self, messages, tools, stream=False, |
| LOW | py-src/data_formulator/agents/agent_utils.py | 83 | def accumulate_reasoning_content( |
| LOW | py-src/data_formulator/agents/agent_utils.py | 109 | def _source_table_matches_catalog_entry( |
| LOW | py-src/data_formulator/agents/agent_utils.py | 124 | def build_catalog_metadata_lookups( |
| LOW | py-src/data_formulator/agents/agent_utils.py | 207 | def format_dataframe_sample_with_budget( |
| LOW | py-src/data_formulator/agents/agent_utils.py | 241 | def field_name_to_ts_variable_name(field_name): |
| LOW | py-src/data_formulator/agents/agent_utils.py | 292 | def extract_code_from_gpt_response(code_raw, language): |
| LOW | py-src/data_formulator/agents/agent_utils.py | 372 | def _fix_json_trailing_commas(s: str) -> str: |
| LOW | py-src/data_formulator/agents/agent_utils.py | 738 | def ensure_output_variable_in_code(code: str, output_variable: str) -> tuple[str, bool, str]: |
| LOW | …src/data_formulator/agents/agent_experience_distill.py | 395 | def _add_fallback_front_matter( |
| LOW | py-src/data_formulator/agents/agent_utils_sql.py | 17 | def create_duckdb_conn_with_parquet_views(workspace, input_tables: list[dict]): |
| LOW | py-src/data_formulator/agents/context.py | 29 | def _ensure_no_auth_catalogs_cached(user_home: Any) -> None: |
| LOW | py-src/data_formulator/agents/context.py | 84 | def _get_workspace_metadata_lookups(workspace: Any) -> tuple[dict[str, str], dict[str, dict[str, str]], dict[str, str]]: |
| LOW | py-src/data_formulator/agents/context.py | 110 | def build_focused_thread_context(focused_thread: list[dict[str, Any]]) -> str: |
| LOW | py-src/data_formulator/agents/context.py | 149 | def build_peripheral_thread_context(other_threads: list[dict[str, Any]]) -> str: |
| LOW | py-src/data_formulator/agents/context.py | 166 | def build_lightweight_table_context( |
| LOW | py-src/data_formulator/agents/context.py | 301 | def handle_inspect_source_data( |
| LOW | py-src/data_formulator/agents/context.py | 342 | def handle_read_catalog_metadata( |
| LOW | py-src/data_formulator/agents/semantic_types.py | 264 | def generate_semantic_types_prompt() -> str: |
| LOW | py-src/data_formulator/agents/data_agent.py | 77 | def _rescue_unpack_json_strings(data: dict) -> None: |
| LOW | py-src/data_formulator/agents/data_agent.py | 1475 | def _build_focused_thread_context( |
| LOW | py-src/data_formulator/agents/data_agent.py | 1480 | def _build_peripheral_thread_context( |
| LOW | py-src/data_formulator/agents/data_agent.py | 1485 | def _build_lightweight_table_context( |
| LOW | py-src/data_formulator/agents/data_agent.py | 1888 | def _search_relevant_knowledge( |
| LOW | py-src/data_formulator/agents/data_agent.py | 817 | def _sanitize_clarification_options(cls, raw_options: Any) -> list[dict[str, Any]]: |
| LOW | py-src/data_formulator/agents/data_agent.py | 852 | def _sanitize_clarification_questions(cls, raw_questions: Any) -> list[dict[str, Any]]: |
| LOW | py-src/data_formulator/agents/data_agent.py | 888 | def _normalize_clarify_action(cls, action: dict[str, Any]) -> dict[str, Any]: |
| LOW | py-src/data_formulator/agents/data_agent.py | 895 | def _normalize_explain_action(cls, action: dict[str, Any]) -> dict[str, Any]: |
| LOW | py-src/data_formulator/agents/data_agent.py | 919 | def _normalize_delegate_action(cls, action: dict[str, Any]) -> dict[str, Any]: |
| LOW | py-src/data_formulator/agents/data_agent.py | 1916 | def _load_active_session_experience(self) -> dict[str, Any] | None: |
| LOW | py-src/data_formulator/agents/web_utils.py | 278 | def get_html_meta_description(html_content: str) -> str | None: |
| LOW | py-src/data_formulator/agents/agent_language.py | 71 | def inject_language_instruction( |
| LOW | py-src/data_formulator/agents/agent_language.py | 104 | def build_language_instruction(language: str, *, mode: str = "full") -> str: |
| 1388 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | .cursor/skills/error-handling/SKILL.md | 77 | except Exception as e: |
| LOW | .cursor/skills/error-handling/SKILL.md | 117 | except Exception as e: |
| LOW | .cursor/skills/error-handling/SKILL.md | 267 | except Exception as e: |
| LOW | .cursor/skills/error-handling/SKILL.md | 285 | except Exception as e: |
| MEDIUM | .cursor/skills/error-handling/SKILL.md | 113 | def generate(): |
| MEDIUM | .cursor/skills/error-handling/SKILL.md | 263 | def my_table_op(): |
| LOW | py-src/data_formulator/_startup_spinner.py | 32 | except Exception: |
| LOW | py-src/data_formulator/app.py | 318 | except Exception: |
| LOW | py-src/data_formulator/data_connector.py | 1141 | except Exception: |
| LOW | py-src/data_formulator/data_connector.py | 1147 | except Exception as e: |
| LOW | py-src/data_formulator/data_connector.py | 1157 | except Exception: |
| LOW | py-src/data_formulator/data_connector.py | 1164 | except Exception as e: |
| LOW | py-src/data_formulator/data_connector.py | 1438 | except Exception as e: |
| LOW | py-src/data_formulator/data_connector.py | 1443 | except Exception as e: |
| LOW | py-src/data_formulator/data_connector.py | 1946 | except Exception as e: |
| LOW | py-src/data_formulator/data_connector.py | 282 | except Exception as exc: |
| LOW | py-src/data_formulator/data_connector.py | 472 | except Exception as exc: |
| LOW | py-src/data_formulator/data_connector.py | 487 | except Exception as exc: |
| LOW | py-src/data_formulator/data_connector.py | 499 | except Exception as exc: |
| LOW | py-src/data_formulator/data_connector.py | 510 | except Exception as e: |
| LOW | py-src/data_formulator/data_connector.py | 571 | except Exception as exc: |
| LOW | py-src/data_formulator/data_connector.py | 605 | except Exception as exc: |
| LOW | py-src/data_formulator/data_connector.py | 618 | except Exception as e: |
| LOW | py-src/data_formulator/data_connector.py | 650 | except Exception as exc: |
| LOW | py-src/data_formulator/data_connector.py | 860 | except Exception as exc: |
| LOW | py-src/data_formulator/data_connector.py | 876 | except Exception as e: |
| LOW | py-src/data_formulator/data_connector.py | 887 | except Exception as e: |
| LOW | py-src/data_formulator/data_connector.py | 975 | except Exception as e: |
| LOW | py-src/data_formulator/data_connector.py | 1022 | except Exception as e: |
| LOW | py-src/data_formulator/data_connector.py | 1056 | except Exception as e: |
| LOW | py-src/data_formulator/data_connector.py | 1060 | except Exception: |
| LOW | py-src/data_formulator/data_connector.py | 1110 | except Exception as e: |
| LOW | py-src/data_formulator/data_connector.py | 1123 | except Exception as e: |
| LOW | py-src/data_formulator/data_connector.py | 1267 | except Exception: |
| LOW | py-src/data_formulator/data_connector.py | 1284 | except Exception as e: |
| LOW | py-src/data_formulator/data_connector.py | 1288 | except Exception: |
| LOW | py-src/data_formulator/data_connector.py | 1319 | except Exception as exc: |
| LOW | py-src/data_formulator/data_connector.py | 1328 | except Exception as e: |
| LOW | py-src/data_formulator/data_connector.py | 1364 | except Exception as e: |
| LOW | py-src/data_formulator/data_connector.py | 1375 | except Exception as e: |
| LOW | py-src/data_formulator/data_connector.py | 1486 | except Exception: |
| LOW | py-src/data_formulator/data_connector.py | 1501 | except Exception as e: |
| LOW | py-src/data_formulator/data_connector.py | 1554 | except Exception as e: |
| LOW | py-src/data_formulator/data_connector.py | 1617 | except Exception: |
| LOW | py-src/data_formulator/data_connector.py | 1648 | except Exception as e: |
| LOW | py-src/data_formulator/data_connector.py | 1676 | except Exception as e: |
| LOW | py-src/data_formulator/data_connector.py | 1717 | except Exception as e: |
| LOW | py-src/data_formulator/data_connector.py | 1753 | except Exception: |
| LOW | py-src/data_formulator/data_connector.py | 1763 | except Exception as e: |
| LOW | py-src/data_formulator/data_connector.py | 1817 | except Exception: |
| LOW | py-src/data_formulator/data_connector.py | 1835 | except Exception as e: |
| LOW | py-src/data_formulator/data_connector.py | 1870 | except Exception as e: |
| LOW | py-src/data_formulator/data_connector.py | 1932 | except Exception as e: |
| LOW | py-src/data_formulator/data_connector.py | 2000 | except Exception as e: |
| LOW | py-src/data_formulator/data_connector.py | 2068 | except Exception as e: |
| LOW | py-src/data_formulator/data_connector.py | 2096 | except Exception as e: |
| LOW | py-src/data_formulator/data_connector.py | 2114 | except Exception as e: |
| LOW | py-src/data_formulator/auth/token_store.py | 89 | except Exception: |
| LOW | py-src/data_formulator/auth/token_store.py | 223 | except Exception as exc: |
| LOW | py-src/data_formulator/auth/token_store.py | 259 | except Exception as exc: |
| 340 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | py-src/data_formulator/_startup_spinner.py | 14 | |
| LOW | py-src/data_formulator/workspace_factory.py | 24 | |
| LOW | py-src/data_formulator/agent_config.py | 32 | |
| LOW | py-src/data_formulator/app.py | 24 | |
| LOW | py-src/data_formulator/app.py | 25 | |
| LOW | py-src/data_formulator/app.py | 26 | |
| LOW | py-src/data_formulator/app.py | 26 | |
| LOW | py-src/data_formulator/app.py | 31 | |
| LOW | py-src/data_formulator/error_handler.py | 19 | |
| LOW | py-src/data_formulator/errors.py | 15 | |
| LOW | py-src/data_formulator/security/url_allowlist.py | 38 | |
| LOW | py-src/data_formulator/security/log_sanitizer.py | 28 | |
| LOW | py-src/data_formulator/security/log_sanitizer.py | 30 | |
| LOW | py-src/data_formulator/security/path_safety.py | 14 | |
| LOW | py-src/data_formulator/security/sanitize.py | 6 | |
| LOW | py-src/data_formulator/security/sanitize.py | 11 | |
| LOW | py-src/data_formulator/auth/token_store.py | 12 | |
| LOW | py-src/data_formulator/auth/token_store.py | 17 | |
| LOW | py-src/data_formulator/auth/token_store.py | 17 | |
| LOW | py-src/data_formulator/auth/providers/oidc.py | 37 | |
| LOW | py-src/data_formulator/auth/providers/oidc.py | 51 | |
| LOW | py-src/data_formulator/auth/providers/github_oauth.py | 18 | |
| LOW | py-src/data_formulator/auth/providers/azure_easyauth.py | 17 | |
| LOW | py-src/data_formulator/auth/providers/__init__.py | 16 | |
| LOW | py-src/data_formulator/auth/providers/base.py | 10 | |
| LOW | py-src/data_formulator/auth/gateways/github_gateway.py | 12 | |
| LOW | py-src/data_formulator/auth/gateways/oidc_gateway.py | 20 | |
| LOW | py-src/data_formulator/auth/vault/__init__.py | 17 | |
| LOW | py-src/data_formulator/auth/vault/base.py | 5 | |
| LOW | py-src/data_formulator/auth/vault/local_vault.py | 12 | |
| LOW | py-src/data_formulator/workflows/create_vl_plots.py | 2 | |
| LOW | py-src/data_formulator/workflows/create_vl_plots.py | 9 | |
| LOW | py-src/data_formulator/workflows/chart_semantics.py | 23 | |
| LOW | …-src/data_formulator/agents/agent_data_loading_chat.py | 16 | |
| LOW | py-src/data_formulator/agents/reasoning_log.py | 22 | |
| LOW | …rc/data_formulator/agents/agent_interactive_explore.py | 11 | |
| LOW | py-src/data_formulator/agents/__init__.py | 4 | |
| LOW | py-src/data_formulator/agents/__init__.py | 5 | |
| LOW | py-src/data_formulator/agents/__init__.py | 7 | |
| LOW | py-src/data_formulator/agents/__init__.py | 8 | |
| LOW | py-src/data_formulator/agents/__init__.py | 9 | |
| LOW | py-src/data_formulator/agents/__init__.py | 10 | |
| LOW | py-src/data_formulator/agents/__init__.py | 11 | |
| LOW | py-src/data_formulator/agents/__init__.py | 12 | |
| LOW | …src/data_formulator/agents/agent_experience_distill.py | 17 | |
| LOW | py-src/data_formulator/agents/agent_report_gen.py | 23 | |
| LOW | py-src/data_formulator/agents/agent_report_gen.py | 35 | |
| LOW | py-src/data_formulator/agents/agent_report_gen.py | 35 | |
| LOW | py-src/data_formulator/agents/agent_report_gen.py | 35 | |
| LOW | py-src/data_formulator/agents/agent_report_gen.py | 35 | |
| LOW | py-src/data_formulator/agents/agent_report_gen.py | 35 | |
| LOW | py-src/data_formulator/agents/agent_diagnostics.py | 11 | |
| LOW | py-src/data_formulator/agents/agent_simple.py | 14 | |
| LOW | py-src/data_formulator/agents/agent_data_rec.py | 4 | |
| LOW | py-src/data_formulator/agents/web_utils.py | 8 | |
| LOW | py-src/data_formulator/agents/web_utils.py | 9 | |
| LOW | py-src/data_formulator/agents/agent_code_explanation.py | 6 | |
| LOW | py-src/data_formulator/datalake/table_names.py | 29 | |
| LOW | py-src/data_formulator/datalake/catalog_cache.py | 24 | |
| LOW | py-src/data_formulator/datalake/workspace_metadata.py | 11 | |
| 273 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | py-src/data_formulator/data_connector.py | 234 | |
| LOW | py-src/data_formulator/data_connector.py | 763 | |
| LOW | py-src/data_formulator/data_connector.py | 942 | |
| LOW | py-src/data_formulator/data_connector.py | 1448 | |
| LOW | py-src/data_formulator/data_connector.py | 1563 | |
| LOW | py-src/data_formulator/data_connector.py | 1768 | |
| LOW | py-src/data_formulator/data_connector.py | 2092 | |
| LOW | py-src/data_formulator/auth/token_store.py | 346 | |
| LOW | py-src/data_formulator/auth/providers/__init__.py | 30 | |
| LOW | py-src/data_formulator/workflows/create_vl_plots.py | 309 | |
| LOW | py-src/data_formulator/workflows/create_vl_plots.py | 610 | |
| LOW | py-src/data_formulator/workflows/create_vl_plots.py | 1032 | |
| LOW | py-src/data_formulator/workflows/create_vl_plots.py | 1078 | |
| LOW | py-src/data_formulator/workflows/create_vl_plots.py | 1735 | |
| LOW | py-src/data_formulator/workflows/create_vl_plots.py | 1855 | |
| LOW | py-src/data_formulator/workflows/create_vl_plots.py | 375 | |
| LOW | py-src/data_formulator/workflows/create_vl_plots.py | 426 | |
| LOW | py-src/data_formulator/workflows/chart_semantics.py | 460 | |
| LOW | …-src/data_formulator/agents/agent_data_loading_chat.py | 501 | |
| LOW | …-src/data_formulator/agents/agent_data_loading_chat.py | 644 | |
| LOW | …-src/data_formulator/agents/agent_data_loading_chat.py | 733 | |
| LOW | …-src/data_formulator/agents/agent_data_loading_chat.py | 964 | |
| LOW | …-src/data_formulator/agents/agent_data_loading_chat.py | 1238 | |
| LOW | …-src/data_formulator/agents/agent_data_loading_chat.py | 1291 | |
| LOW | …-src/data_formulator/agents/agent_data_loading_chat.py | 1362 | |
| LOW | py-src/data_formulator/agents/client_utils.py | 10 | |
| LOW | py-src/data_formulator/agents/client_utils.py | 58 | |
| LOW | py-src/data_formulator/agents/agent_utils.py | 124 | |
| LOW | py-src/data_formulator/agents/agent_utils.py | 250 | |
| LOW | py-src/data_formulator/agents/agent_utils.py | 315 | |
| LOW | py-src/data_formulator/agents/agent_utils.py | 388 | |
| LOW | py-src/data_formulator/agents/agent_utils.py | 429 | |
| LOW | py-src/data_formulator/agents/agent_utils.py | 559 | |
| LOW | …rc/data_formulator/agents/agent_interactive_explore.py | 108 | |
| LOW | …src/data_formulator/agents/agent_experience_distill.py | 335 | |
| LOW | py-src/data_formulator/agents/agent_report_gen.py | 234 | |
| LOW | py-src/data_formulator/agents/context.py | 29 | |
| LOW | py-src/data_formulator/agents/context.py | 84 | |
| LOW | py-src/data_formulator/agents/context.py | 110 | |
| LOW | py-src/data_formulator/agents/agent_data_rec.py | 127 | |
| LOW | py-src/data_formulator/agents/data_agent.py | 437 | |
| LOW | py-src/data_formulator/agents/data_agent.py | 919 | |
| LOW | py-src/data_formulator/agents/data_agent.py | 1041 | |
| LOW | py-src/data_formulator/agents/data_agent.py | 1342 | |
| LOW | py-src/data_formulator/agents/data_agent.py | 1552 | |
| LOW | py-src/data_formulator/agents/data_agent.py | 2063 | |
| LOW | py-src/data_formulator/agents/agent_chart_restyle.py | 75 | |
| LOW | py-src/data_formulator/agents/agent_data_transform.py | 124 | |
| LOW | py-src/data_formulator/agents/agent_chart_insight.py | 38 | |
| LOW | py-src/data_formulator/datalake/catalog_cache.py | 155 | |
| LOW | py-src/data_formulator/datalake/catalog_cache.py | 207 | |
| LOW | py-src/data_formulator/datalake/workspace_metadata.py | 555 | |
| LOW | py-src/data_formulator/datalake/cache_manager.py | 170 | |
| LOW | py-src/data_formulator/datalake/cache_manager.py | 267 | |
| LOW | py-src/data_formulator/datalake/cache_manager.py | 335 | |
| LOW | …ta_formulator/datalake/azure_blob_workspace_manager.py | 116 | |
| LOW | py-src/data_formulator/datalake/workspace.py | 117 | |
| LOW | py-src/data_formulator/datalake/workspace.py | 481 | |
| LOW | py-src/data_formulator/datalake/workspace.py | 785 | |
| LOW | py-src/data_formulator/datalake/workspace.py | 801 | |
| 58 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | py-src/data_formulator/errors.py | 61 | |
| LOW | py-src/data_formulator/security/__init__.py | 1 | # Copyright (c) Microsoft Corporation. |
| LOW | py-src/data_formulator/auth/__init__.py | 1 | # Copyright (c) Microsoft Corporation. |
| LOW | py-src/data_formulator/auth/gateways/__init__.py | 1 | # Copyright (c) Microsoft Corporation. |
| LOW | py-src/data_formulator/datalake/azure_blob_workspace.py | 121 | |
| LOW | py-src/data_formulator/knowledge/__init__.py | 1 | # Copyright (c) Microsoft Corporation. |
| LOW | …rc/data_formulator/data_loader/external_data_loader.py | 601 | * ``path`` *(optional)* — explicit hierarchy path as a list |
| LOW | py-src/data_formulator/routes/__init__.py | 1 | # Copyright (c) Microsoft Corporation. |
| LOW | docs/docs-cn/config-examples/superset/oauth_config.py | 421 | }, |
| LOW | src/icons.tsx | 161 | // sx={{ |
| LOW | src/scss/EncodingShelf.scss | 161 | } |
| LOW | src/components/VirtualizedCatalogTree.tsx | 101 | // - Namespace (folder-like, no semantic icon): chevron itself acts as the |
| LOW | src/components/ConnectorTablePreview.tsx | 441 | <Typography sx={{ fontSize: 14, fontWeight: 600 }} noWrap>{displayName}</Typography> |
| LOW | src/lib/agents-chart/core/compute-layout.ts | 341 | // --- Gas pressure stretch for continuous non-banded axes --- |
| LOW | src/lib/agents-chart/core/compute-layout.ts | 721 | if (count <= 0) continue; |
| LOW | src/lib/agents-chart/core/compute-layout.ts | 1121 | // When a busy discrete axis makes each subplot wider than the |
| LOW | src/lib/agents-chart/core/compute-layout.ts | 1221 | const baseMinSubplot = options.minSubplotSize ?? 60; |
| LOW | src/lib/agents-chart/core/semantic-types.ts | 221 | // getAncestorTypes, isSubtypeOf) have been removed. They were unused |
| LOW | …/lib/agents-chart/test-data/line-area-stretch-tests.ts | 381 | // ----------------------------------------------------------------------- |
| LOW | src/lib/agents-chart/test-data/area-tests.ts | 1 | // Copyright (c) Microsoft Corporation. |
| LOW | src/lib/agents-chart/test-data/scatter-tests.ts | 1 | // Copyright (c) Microsoft Corporation. |
| LOW | src/lib/agents-chart/test-data/semantic-tests.ts | 121 | // 3. Domain constraint + Tick constraint (Rating [1,5]) |
| LOW | src/lib/agents-chart/test-data/semantic-tests.ts | 221 | // Only triggers when data spans ≥ 4 orders of magnitude (10,000×) |
| LOW | src/lib/agents-chart/test-data/semantic-tests.ts | 321 | }, |
| LOW | src/lib/agents-chart/test-data/semantic-tests.ts | 421 | // Semantic type: { semanticType: "Rating", intrinsicDomain: [1, 5] } |
| LOW | src/lib/agents-chart/test-data/semantic-tests.ts | 641 | genScoreColorDivergingTest(), |
| LOW | src/lib/agents-chart/test-data/semantic-tests.ts | 741 | } |
| LOW | src/lib/agents-chart/test-data/semantic-tests.ts | 881 | x: makeEncodingItem('stock'), |
| LOW | src/lib/agents-chart/test-data/semantic-tests.ts | 921 | sales: { type: Type.Number, semanticType: 'Amount', levels: [] }, |
| LOW | src/lib/agents-chart/test-data/semantic-tests.ts | 1061 | }, |
| LOW | src/lib/agents-chart/test-data/semantic-tests.ts | 1221 | // 25. Duration with unit suffix — additive measure, "min" suffix |
| LOW | src/lib/agents-chart/test-data/semantic-tests.ts | 1261 | encodingMap: { |
| LOW | src/lib/agents-chart/test-data/semantic-tests.ts | 1321 | }; |
| LOW | src/lib/agents-chart/test-data/semantic-tests.ts | 1361 | annual_cost: { semanticType: 'Amount', unit: 'USD' }, |
| LOW | src/lib/agents-chart/test-data/semantic-tests.ts | 1461 | y: makeEncodingItem('population'), |
| LOW | src/lib/agents-chart/test-data/semantic-tests.ts | 1561 | } |
| LOW | src/lib/agents-chart/test-data/semantic-tests.ts | 1601 | }, |
| LOW | src/lib/agents-chart/test-data/semantic-tests.ts | 1661 | // |
| LOW | src/lib/agents-chart/test-data/semantic-tests.ts | 1761 | |
| LOW | src/lib/agents-chart/test-data/semantic-tests.ts | 1861 | }; |
| LOW | src/lib/agents-chart/test-data/bar-tests.ts | 1 | // Copyright (c) Microsoft Corporation. |
| LOW | src/lib/agents-chart/test-data/line-tests.ts | 1 | // Copyright (c) Microsoft Corporation. |
| LOW | src/lib/agents-chart/vegalite/instantiate-spec.ts | 121 | // (on by default) already provides breathing room with clean |
| LOW | src/lib/agents-chart/vegalite/instantiate-spec.ts | 661 | for (const [ch, cs] of Object.entries(channelSemantics)) { |
| LOW | src/lib/agents-chart/vegalite/instantiate-spec.ts | 721 | // Full constraints (both min+max) set scale.domain directly. |
| LOW | src/lib/agents-chart/vegalite/instantiate-spec.ts | 841 | if (min !== undefined && max !== undefined) { |
| LOW | src/lib/agents-chart/vegalite/instantiate-spec.ts | 881 | if (cs.tickConstraint.exactTicks && !enc.axis.values) { |
| LOW | src/lib/agents-chart/vegalite/templates/bar-table.ts | 81 | // (many rows) leaves bars only a sliver wide. |
| LOW | src/lib/agents-chart/vegalite/templates/bar-table.ts | 261 | const scopeKey = hasFacet ? scopeKeyOf(r) : ''; |
| LOW | src/lib/agents-chart/vegalite/templates/bar-table.ts | 281 | // we show it as-is and let VL apply its default number rendering. |
| LOW | src/lib/agents-chart/vegalite/templates/bar-table.ts | 361 | |
| LOW | src/lib/agents-chart/vegalite/templates/bar-table.ts | 401 | // (e.g. Month, Day-of-week, Rank); otherwise rank by aggregated x. |
| LOW | src/lib/agents-chart/vegalite/templates/bar-table.ts | 661 | const othersTextTest = canTrim |
| LOW | src/lib/agents-chart/vegalite/templates/kpi-card.ts | 141 | } else { |
| LOW | src/lib/agents-chart/vegalite/templates/kpi-card.ts | 181 | const H = rows * tileH + (rows - 1) * spacing; |
| LOW | src/views/SessionDistill.tsx | 61 | isLeafDerivedTable, |
| LOW | src/views/EncodingShelfCard.tsx | 401 | // Intent-classifier round-trip in progress. Distinct from isRestyling so |
| LOW | src/views/DataSourceSidebar.tsx | 921 | |
| LOW | src/views/InteractionEntryCard.tsx | 321 | && !isActiveAgentPause |
| LOW | src/views/InteractionEntryCard.tsx | 341 | // than "in-progress discussion". |
| 7 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| HIGH | py-src/data_formulator/workflows/create_vl_plots.py | 618 | Assemble a Vega-Lite chart specification from a dataframe, chart type, and encodings. Parameters: - df |
| HIGH | py-src/data_formulator/agents/web_utils.py | 57 | Validate a URL to prevent SSRF attacks. Performs the following checks: 1. Protocol validation (HTTP/HT |
| HIGH | py-src/data_formulator/agents/web_utils.py | 114 | Download HTML content from a given URL with SSRF protection. This function implements comprehensive SSRF p |
| HIGH | py-src/data_formulator/datalake/parquet_utils.py | 44 | Unicode-safe filename sanitisation for data files. Prevents path traversal by extracting the basename while preserv |
| HIGH | py-src/data_formulator/datalake/workspace.py | 460 | Get the filename for a table, suitable for use in generated code. Returns just the filename (e.g. "sal |
| HIGH | py-src/data_formulator/datalake/workspace.py | 482 | Read a table from the workspace as a pandas DataFrame. Automatically selects the appropriate reader ba |
| HIGH | py-src/data_formulator/datalake/workspace_manager.py | 337 | Open an existing workspace and return a Workspace instance. Args: workspace_id: Workspace |
| HIGH | py-src/data_formulator/datalake/file_manager.py | 208 | Save an uploaded file to the workspace. The file is stored as-is without conversion. Metadata is added to |
| HIGH | …rc/data_formulator/data_loader/external_data_loader.py | 397 | Fetch data from the external source as a PyArrow Table. This is the primary method for data fe |
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | py-src/data_formulator/workflows/create_vl_plots.py | 848 | # Uses the robust convert_temporal_data which handles datetime objects, |
| MEDIUM | py-src/data_formulator/workflows/chart_semantics.py | 267 | # Date string detection (mirrors TS looksLikeDateString, much more robust) |
| MEDIUM | public/df_global_energy.json | 1 | {"tables": [{"kind": "table", "id": "global-energy-20-small.csv", "displayId": "energy-co2", "names": ["Year", "Entity", |
| MEDIUM | public/df_global_energy.json | 1 | {"tables": [{"kind": "table", "id": "global-energy-20-small.csv", "displayId": "energy-co2", "names": ["Year", "Entity", |
| MEDIUM | public/df_global_energy.json | 1 | {"tables": [{"kind": "table", "id": "global-energy-20-small.csv", "displayId": "energy-co2", "names": ["Year", "Entity", |
| MEDIUM | public/df_stock_prices_live.json | 1 | {"tables": [{"kind": "table", "id": "history", "displayId": "stock-hist", "names": ["symbol", "date", "open", "high", "l |
| MEDIUM | public/df_stock_prices_live.json | 1 | {"tables": [{"kind": "table", "id": "history", "displayId": "stock-hist", "names": ["symbol", "date", "open", "high", "l |
| MEDIUM | public/df_unemployment.json | 1 | {"tables": [{"kind": "table", "id": "unemployment-across-industries", "displayId": "unemp-by-ind", "names": ["series", " |
| MEDIUM | public/df_unemployment.json | 1 | {"tables": [{"kind": "table", "id": "unemployment-across-industries", "displayId": "unemp-by-ind", "names": ["series", " |
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | py-src/data_formulator/agents/web_utils.py | 163 | # Create a custom adapter to hook into redirect handling |
| MEDIUM | tests/backend/benchmarks/benchmark_sandbox.py | 195 | # Create a temporary workspace directory |
| MEDIUM | tests/backend/data/test_workspace_manager.py | 435 | # Create a legacy source workspace (no workspace_meta.json) |
| MEDIUM | tests/backend/data/test_all_loader_verification.py | 103 | # Create a minimal stub that has params but doesn't connect |
| MEDIUM | tests/database-dockers/docker-compose.test.yml | 3 | # This file is intentionally additive: existing per-service docker-compose.yml |
| MEDIUM | tests/database-dockers/superset/init-superset.sh | 4 | # This file is kept as a reference if you need to customize init further. |
| Severity | File | Line | Snippet |
|---|---|---|---|
| CRITICAL | py-src/data_formulator/datalake/azure_blob_workspace.py | 169 | from azure.core.exceptions import ResourceNotFoundError |
| CRITICAL | …ta_formulator/datalake/azure_blob_workspace_manager.py | 77 | from azure.core.exceptions import ResourceNotFoundError |
| Severity | File | Line | Snippet |
|---|---|---|---|
| HIGH | tests/backend/benchmarks/benchmark_sandbox.py | 26 | # Realistic Data Formulator code snippets (typical AI-generated transforms) |
| HIGH | src/components/ComponentType.tsx | 371 | insight?: ChartInsight, // AI-generated insight about the visualization |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | py-src/data_formulator/workflows/create_vl_plots.py | 101 | # Check if values look like 4-digit years (1000-2999). |
| LOW | py-src/data_formulator/workflows/create_vl_plots.py | 107 | # Check if it looks like a discrete categorical variable |
| LOW | py-src/data_formulator/agents/agent_utils.py | 754 | # Check if output_variable appears as an assignment target (= but not ==, !=, <=, >=) |
| LOW | py-src/data_formulator/agents/data_agent.py | 1435 | # Check if any step in the focused thread has a chart thumbnail |
| LOW | py-src/data_formulator/agents/web_utils.py | 29 | # Check if IP is private, loopback, link-local, multicast, reserved, or unspecified |
| LOW | py-src/data_formulator/agents/web_utils.py | 100 | # Check if this resolved IP is private/internal |
| LOW | py-src/data_formulator/datalake/file_manager.py | 256 | # Write the file |
| LOW | py-src/data_formulator/data_loader/kusto_data_loader.py | 78 | # Check if values look like datetime strings or timestamp numbers |
| LOW | tests/database-dockers/cosmosdb/test_cosmosdb_loader.py | 52 | # Check if the database exists (seed_data.py must have run) |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | tests/database-dockers/bigquery/start.sh | 4 | # Usage: |
| LOW | tests/database-dockers/mongodb/start.sh | 4 | # Usage: |
| LOW | tests/database-dockers/postgres/start.sh | 4 | # Usage: |
| LOW | tests/database-dockers/cosmosdb/start.sh | 4 | # Usage: |
| LOW | tests/database-dockers/mysql/start.sh | 4 | # Usage: |
| LOW | tests/database-dockers/superset/start.sh | 4 | # Usage: |
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | public/df_global_energy.json | 1 | {"tables": [{"kind": "table", "id": "global-energy-20-small.csv", "displayId": "energy-co2", "names": ["Year", "Entity", |
| MEDIUM | public/df_stock_prices_live.json | 1 | {"tables": [{"kind": "table", "id": "history", "displayId": "stock-hist", "names": ["symbol", "date", "open", "high", "l |
| MEDIUM | public/df_unemployment.json | 1 | {"tables": [{"kind": "table", "id": "unemployment-across-industries", "displayId": "unemp-by-ind", "names": ["series", " |
| Severity | File | Line | Snippet |
|---|---|---|---|
| HIGH | py-src/data_formulator/routes/agents.py | 1253 | raw = raw.replace(': NaN,', ': null,').replace(': NaN}', ': null}').replace(':NaN,', ':null,').replace(' |
| HIGH | tests/backend/agents/test_agent_diagnostics.py | 222 | """The front-end currently does JSON.stringify(diagnostics, null, 2) |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | src/app/utils.tsx | 502 | // Step 2: Group by and aggregate |
| LOW | src/views/SessionDistill.tsx | 230 | // Step 1: drop tool_call events. |
| LOW | src/views/SessionDistill.tsx | 243 | // Step 2: shrink each create_table.sample_rows to 1 row. |
| LOW | src/views/SessionDistill.tsx | 260 | // Step 3: drop oldest threads (first in render order). |
| Severity | File | Line | Snippet |
|---|---|---|---|
| HIGH | tests/database-dockers/mongodb/init_data.js | 65 | print("Test database initialized: products(12), customers(10), orders(10), app_settings(4)"); |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | tests/backend/auth/test_credential_vault.py | 140 | "username": "user@example.com", |