Repository Analysis

Canner/WrenAI

GenBI (Generative BI) for AI agents, an open-source, governed text-to-SQL through an open context layer that turns natural-language questions into trusted dashboards, charts, and SQL across 20+ data sources, such as BigQuery, Snowflake, PostgreSQL, ClickHouse, Amazon Redshift, Databricks and more.

31.3 Strong AI signal View on GitHub

Analysis Overview

This report presents the forensic synthetic code analysis of Canner/WrenAI, a Python project with 17,417 GitHub stars. SynthScan v2.0 examined 107,922 lines of code across 583 source files, recording 2264 pattern matches distributed across 17 syntactic categories. The overall adjusted score of 31.3 places this repository in the Strong 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).

31.3
Adjusted Score
31.3
Raw Score
100%
Time Factor
2026-08-28
Last Push
17.4K
Stars
Python
Language
107.9K
Lines of Code
583
Files
2.3K
Pattern Hits
2026-08-29
Scan Date
0.03
HC Hit Rate

What These Metrics Mean

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

Score History

This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.

Severity Breakdown

Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.

CRITICAL 1HIGH 17MEDIUM 405LOW 1841

Directory Score Breakdown

This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.

Pattern Findings

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

Hyper-Verbose Identifiers1429 hits · 1447 pts
SeverityFileLineSnippetContext
LOWcore/wren-core-py/tests/test_modeling_core.py162def test_get_available_functions():CODE
LOWcore/wren-core-py/tests/test_modeling_core.py232def test_extractor_with_invalid_manifest(value, expected_error, error_message):CODE
LOWcore/wren-core-py/tests/test_modeling_core.py252def test_resolve_used_table_names(sql, expected):CODE
LOWcore/wren-core-py/tests/test_modeling_core.py456def test_backward_compatible_check():CODE
LOWcore/wren-core-py/tests/test_modeling_core.py561def test_case_sensitive_without_quote():CODE
LOWcore/wren-core-py/tests/test_modeling_core.py600def test_concurrent_calls_from_threads():CODE
LOWcore/wren-core-py/tests/test_modeling_core.py642def test_fork_child_gets_working_runtime():CODE
LOW…re/wren-core-py/tests/test_same_context_concurrency.py251def test_same_context_concurrent_engine_calls(tmp_path):CODE
LOWcore/wren-core-py/tests/test_physical_tables.py73def test_register_before_load_mdl_queryable_via_semantic_layer(tmp_path):CODE
LOWcore/wren-core-py/tests/test_physical_tables.py91def test_register_after_exec_ctx_visible_without_reload(tmp_path):CODE
LOWcore/wren-core-py/tests/test_physical_tables.py115def test_register_after_exec_ctx_then_load_mdl_resolves_model(tmp_path):CODE
LOWcore/wren-core-py/tests/test_cube.py75def test_time_dimension_with_date_range():CODE
LOWcore/wren-core-py/tests/test_cube.py128def test_unknown_measure_error():CODE
LOWcore/wren-core-py/tests/test_cube.py134def test_invalid_cube_query_json():CODE
LOWcore/wren-core-py/tests/test_cube.py139def test_invalid_manifest_json():CODE
LOWcore/wren-core-py/tests/test_query_ipc_schema.py61def test_query_returns_correct_rows_when_mdl_types_differ_from_physical(tmp_path):CODE
LOWcore/wren-core-py/tests/test_query_ipc_schema.py75def test_empty_result_schema_matches_nonempty_result_schema(tmp_path):CODE
LOWcore/wren/tests/test_profile_web.py43def test_form_contains_datasource_options(client):CODE
LOWcore/wren/tests/test_profile_web.py51def test_form_omits_connection_url_datasource(client):CODE
LOWcore/wren/tests/test_profile_web.py63def test_form_has_save_button(client):CODE
LOWcore/wren/tests/test_profile_web.py72def test_fields_endpoint_postgres(client):CODE
LOWcore/wren/tests/test_profile_web.py83def test_fields_endpoint_password_type(client):CODE
LOWcore/wren/tests/test_profile_web.py89def test_fields_endpoint_bigquery_file_input(client):CODE
LOWcore/wren/tests/test_profile_web.py99def test_fields_with_variant_bigquery_project(client):CODE
LOWcore/wren/tests/test_profile_web.py106def test_fields_with_variant_bigquery_dataset(client):CODE
LOWcore/wren/tests/test_profile_web.py114def test_fields_variant_selector_rendered(client):CODE
LOWcore/wren/tests/test_profile_web.py123def test_fields_no_variant_selector_for_postgres(client):CODE
LOWcore/wren/tests/test_profile_web.py129def test_fields_empty_datasource_returns_empty(client):CODE
LOWcore/wren/tests/test_profile_web.py136def test_fields_duckdb_url_label(client):CODE
LOWcore/wren/tests/test_profile_web.py142def test_fields_duckdb_format_hidden(client):CODE
LOWcore/wren/tests/test_profile_web.py149def test_fields_snowflake_schema_label(client):CODE
LOWcore/wren/tests/test_profile_web.py160def test_save_creates_profile(isolated_profiles):CODE
LOWcore/wren/tests/test_profile_web.py186def test_save_populates_result_dict(isolated_profiles):CODE
LOWcore/wren/tests/test_profile_web.py198def test_save_missing_datasource(client):CODE
LOWcore/wren/tests/test_profile_web.py206def test_save_with_json_fallback(isolated_profiles):CODE
LOWcore/wren/tests/test_profile_web.py228def test_save_invalid_json_returns_error(client):CODE
LOWcore/wren/tests/test_profile_web.py266def test_save_skips_empty_fields(isolated_profiles):CODE
LOWcore/wren/tests/test_cli_memory_detection.py32def test_import_cli_does_not_pull_heavy_ml_stack():CODE
LOWcore/wren/tests/test_cli_memory_detection.py40def test_memory_subcommand_registered_when_extra_present():CODE
LOWcore/wren/tests/test_cli_memory_detection.py47def test_memory_subcommand_always_registered():CODE
LOWcore/wren/tests/test_field_registry.py61def test_selectable_datasources_sorted():CODE
LOWcore/wren/tests/test_field_registry.py69def test_get_fields_returns_field_defs():CODE
LOWcore/wren/tests/test_field_registry.py76def test_get_fields_postgres_names():CODE
LOWcore/wren/tests/test_field_registry.py94def test_auto_derive_password():CODE
LOWcore/wren/tests/test_field_registry.py104def test_auto_derive_placeholder_from_examples():CODE
LOWcore/wren/tests/test_field_registry.py112def test_ui_override_bigquery_credentials():CODE
LOWcore/wren/tests/test_field_registry.py122def test_datasource_override_duckdb_url():CODE
LOWcore/wren/tests/test_field_registry.py130def test_datasource_override_duckdb_format_hidden():CODE
LOWcore/wren/tests/test_field_registry.py138def test_datasource_override_local_file_url():CODE
LOWcore/wren/tests/test_field_registry.py168def test_get_fields_bigquery_default_variant():CODE
LOWcore/wren/tests/test_field_registry.py178def test_get_fields_bigquery_project_variant():CODE
LOWcore/wren/tests/test_field_registry.py186def test_no_missing_overrides_sf_schema():CODE
LOWcore/wren/tests/test_field_registry.py193def test_no_missing_overrides_trino_schema():CODE
LOWcore/wren/tests/test_field_registry.py200def test_snowflake_sf_schema_alias():CODE
LOWcore/wren/tests/test_field_registry.py206def test_hidden_discriminator_fields():CODE
LOWcore/wren/tests/test_field_registry.py230def test_fields_match_mcp_web_ui_postgres():CODE
LOWcore/wren/tests/test_field_registry.py237def test_fields_match_mcp_web_ui_snowflake():CODE
LOWcore/wren/tests/test_field_registry.py244def test_fields_match_mcp_web_ui_bigquery():CODE
LOWcore/wren/tests/test_field_registry.py251def test_unknown_datasource_raises():CODE
LOWcore/wren/tests/test_field_registry.py17def test_all_datasources_covered():CODE
1369 more matches not shown…
Decorative Section Separators391 hits · 1386 pts
SeverityFileLineSnippetContext
MEDIUMcore/wren-core-wasm/examples/csv-quickstart.html146 // ── 1. Standard CSV with inferred schema ─────────────────────────COMMENT
MEDIUMcore/wren-core-wasm/examples/csv-quickstart.html151 // ── 2. TSV: tab delimiter ────────────────────────────────────────COMMENT
MEDIUMcore/wren-core-wasm/examples/csv-quickstart.html156 // ── 3. Headerless CSV with explicit Arrow schema ────────────────COMMENT
MEDIUMcore/wren-core-wasm/src/lib.rs1114 // ── register_csv ────────────────────────────────────────────────────────COMMENT
MEDIUMcore/wren/tests/test_profile_web.py33# ── GET / ──────────────────────────────────────────────────────────────────────COMMENT
MEDIUMcore/wren/tests/test_profile_web.py69# ── GET /fields ────────────────────────────────────────────────────────────────COMMENT
MEDIUMcore/wren/tests/test_profile_web.py157# ── POST /save ─────────────────────────────────────────────────────────────────COMMENT
MEDIUMcore/wren/tests/test_profile.py85# ── Sensitive field masking ───────────────────────────────────────────────────COMMENT
MEDIUMcore/wren/tests/test_profile.py118# ── resolve_connection ────────────────────────────────────────────────────────COMMENT
MEDIUMcore/wren/tests/test_profile.py277# ── from-file import helpers (used by CLI) ────────────────────────────────────COMMENT
MEDIUMcore/wren/tests/test_profile.py23# ── CRUD ──────────────────────────────────────────────────────────────────────COMMENT
MEDIUMcore/wren/tests/test_profile.py148# ── resolve_profile_for_project ───────────────────────────────────────────────COMMENT
MEDIUMcore/wren/tests/test_profile.py236# ── Round-trip persistence ────────────────────────────────────────────────────COMMENT
MEDIUMcore/wren/tests/test_profile_cli.py63# ── add ───────────────────────────────────────────────────────────────────────COMMENT
MEDIUMcore/wren/tests/test_profile_cli.py190# ── import dbt ────────────────────────────────────────────────────────────────COMMENT
MEDIUMcore/wren/tests/test_profile_cli.py434# ── add --validate ────────────────────────────────────────────────────────────COMMENT
MEDIUMcore/wren/tests/test_profile_cli.py35# ── list ──────────────────────────────────────────────────────────────────────COMMENT
MEDIUMcore/wren/tests/test_profile_cli.py357# ── switch ────────────────────────────────────────────────────────────────────COMMENT
MEDIUMcore/wren/tests/test_profile_cli.py381# ── rm ────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMcore/wren/tests/test_profile_cli.py398# ── debug ─────────────────────────────────────────────────────────────────────COMMENT
MEDIUMcore/wren/tests/connectors/test_canner.py82# ── helper-level unit tests ───────────────────────────────────────────────STRING
MEDIUMcore/wren/tests/connectors/test_canner.py203# ── end-to-end testcontainer test ─────────────────────────────────────────STRING
MEDIUMcore/wren/tests/connectors/test_trino.py35# ---------------------------------------------------------------------------COMMENT
MEDIUMcore/wren/tests/connectors/test_trino.py37# ---------------------------------------------------------------------------COMMENT
MEDIUMcore/wren/tests/connectors/test_trino.py104 # ------------------------------------------------------------------COMMENT
MEDIUMcore/wren/tests/connectors/test_trino.py107 # ------------------------------------------------------------------COMMENT
MEDIUMcore/wren/tests/connectors/test_mssql.py141# ----------------------------------------------------------------------STRING
MEDIUMcore/wren/tests/connectors/test_mssql.py143# ----------------------------------------------------------------------STRING
MEDIUMcore/wren/tests/connectors/test_mssql.py311# ---------------------------------------------------------------------------STRING
MEDIUMcore/wren/tests/connectors/test_mssql.py313# ---------------------------------------------------------------------------STRING
MEDIUMcore/wren/tests/connectors/test_postgres.py428# ---------------------------------------------------------------------------COMMENT
MEDIUMcore/wren/tests/connectors/test_postgres.py435# ---------------------------------------------------------------------------COMMENT
MEDIUMcore/wren/tests/connectors/test_postgres.py214# ---------------------------------------------------------------------------STRING
MEDIUMcore/wren/tests/connectors/test_postgres.py216# ---------------------------------------------------------------------------STRING
MEDIUMcore/wren/tests/unit/test_osi.py102# ── Unit: WREN block extraction ───────────────────────────────────────────COMMENT
MEDIUMcore/wren/tests/unit/test_osi.py138# ── Unit: extract_wren_config — precedence ────────────────────────────────COMMENT
MEDIUMcore/wren/tests/unit/test_osi.py178# ── Unit: _parse_source ───────────────────────────────────────────────────COMMENT
MEDIUMcore/wren/tests/unit/test_osi.py216# ── Unit: _pick_expression ────────────────────────────────────────────────COMMENT
MEDIUMcore/wren/tests/unit/test_osi.py277# ── Unit: _is_calculated_expression ───────────────────────────────────────COMMENT
MEDIUMcore/wren/tests/unit/test_osi.py295# ── Integration: build_manifest_from_osi on minimal fixture ──────────────COMMENT
MEDIUMcore/wren/tests/unit/test_osi.py369# ── Integration: build_json_from_osi (camelCase + layoutVersion) ──────────COMMENT
MEDIUMcore/wren/tests/unit/test_osi.py396# ── Integration: TPC-DS full fixture (exercises every warning path) ───────COMMENT
MEDIUMcore/wren/tests/unit/test_osi.py465# ── Integration: ref_sql source detection ────────────────────────────────COMMENT
MEDIUMcore/wren/tests/unit/test_osi.py481# ── Integration: multi semantic_model requires selection ──────────────────COMMENT
MEDIUMcore/wren/tests/unit/test_osi.py504# ── Integration: lint_osi_file ─────────────────────────────────────────────COMMENT
MEDIUMcore/wren/tests/unit/test_osi.py525# ── Regression: malformed inputs surface as ValidationError ──────────────COMMENT
MEDIUMcore/wren/tests/unit/test_osi.py25# ── Fixtures ──────────────────────────────────────────────────────────────COMMENT
MEDIUMcore/wren/tests/unit/test_osi.py34# ── Unit: parse_osi / select_semantic_model ───────────────────────────────COMMENT
MEDIUMcore/wren/tests/unit/test_osi.py600# ── CLI integration ──────────────────────────────────────────────────────COMMENT
MEDIUMcore/wren/tests/unit/test_osi.py775# ── CLI: init --from-osi (one-way migration) ─────────────────────────────COMMENT
MEDIUMcore/wren/tests/unit/test_skills_cli.py58# ── Ticket 1b: all bundled skills + --full + --script ───────────────────────COMMENT
MEDIUMcore/wren/tests/unit/test_engine.py69# ------------------------------------------------------------------COMMENT
MEDIUMcore/wren/tests/unit/test_engine.py71# ------------------------------------------------------------------COMMENT
MEDIUMcore/wren/tests/unit/test_engine.py100# ------------------------------------------------------------------COMMENT
MEDIUMcore/wren/tests/unit/test_engine.py102# ------------------------------------------------------------------COMMENT
MEDIUMcore/wren/tests/unit/test_engine.py114# ------------------------------------------------------------------COMMENT
MEDIUMcore/wren/tests/unit/test_engine.py116# ------------------------------------------------------------------COMMENT
MEDIUMcore/wren/tests/unit/test_engine.py173# ------------------------------------------------------------------COMMENT
MEDIUMcore/wren/tests/unit/test_engine.py175# ------------------------------------------------------------------COMMENT
MEDIUMcore/wren/tests/unit/test_genbi_deploy.py55# ── TokenResolver ──────────────────────────────────────────────────────────COMMENT
331 more matches not shown…
Unused Imports178 hits · 162 pts
SeverityFileLineSnippetContext
LOWevals/spodbtify_ab/run_eval.py9CODE
LOWcore/wren/tests/test_profile_web.py3CODE
LOWcore/wren/tests/test_cli_memory_detection.py4CODE
LOWcore/wren/tests/test_field_registry.py3CODE
LOWcore/wren/tests/test_profile.py3CODE
LOWcore/wren/tests/test_profile_cli.py3CODE
LOWcore/wren/tests/connectors/test_datafusion.py7CODE
LOWcore/wren/tests/connectors/test_snowflake.py6CODE
LOWcore/wren/tests/connectors/test_duckdb.py7CODE
LOWcore/wren/tests/connectors/test_canner.py10CODE
LOWcore/wren/tests/connectors/test_mysql_connector.py7CODE
LOWcore/wren/tests/connectors/test_mysql.py7CODE
LOWcore/wren/tests/connectors/test_trino.py14CODE
LOWcore/wren/tests/connectors/test_mssql.py7CODE
LOWcore/wren/tests/connectors/test_clickhouse.py8CODE
LOWcore/wren/tests/connectors/test_postgres.py7CODE
LOW…e/wren/tests/unit/test_schema_indexer_unnamed_cubes.py3CODE
LOWcore/wren/tests/unit/test_osi.py3CODE
LOWcore/wren/tests/unit/test_skills_cli.py3CODE
LOWcore/wren/tests/unit/test_version.py3CODE
LOW…/tests/unit/test_schema_indexer_rel_models_non_list.py3CODE
LOWcore/wren/tests/unit/test_engine.py7CODE
LOWcore/wren/tests/unit/test_ask_cli.py3CODE
LOWcore/wren/tests/unit/test_genbi_deploy.py3CODE
LOWcore/wren/tests/unit/test_genbi_build.py3CODE
LOWcore/wren/tests/unit/test_duckdb_semicolon_unlimited.py3CODE
LOWcore/wren/tests/unit/test_athena_limit_pushdown.py3CODE
LOWcore/wren/tests/unit/test_cli_store_tip.py6CODE
LOW…e/wren/tests/unit/test_athena_strip_unlimited_query.py3CODE
LOWcore/wren/tests/unit/test_mcp_server.py3CODE
LOW…wren/tests/unit/test_schema_indexer_non_dict_models.py3CODE
LOWcore/wren/tests/unit/test_genbi_index.py3CODE
LOWcore/wren/tests/unit/test_mysql_helpers.py8CODE
LOWcore/wren/tests/unit/test_cte_rewriter.py3CODE
LOWcore/wren/tests/unit/test_redshift_semicolon.py10CODE
LOWcore/wren/tests/unit/test_connector_factory.py1CODE
LOWcore/wren/tests/unit/test_served_content_guard.py11CODE
LOWcore/wren/tests/unit/test_athena_connector.py7CODE
LOWcore/wren/tests/unit/test_memory_load_cli.py3CODE
LOWcore/wren/tests/unit/test_skill_stubs.py9CODE
LOWcore/wren/tests/unit/test_index_backend.py8CODE
LOWcore/wren/tests/unit/test_context_cli.py3CODE
LOWcore/wren/tests/unit/test_memory_watch.py9CODE
LOWcore/wren/tests/unit/test_dbt.py3CODE
LOWcore/wren/tests/unit/test_snowflake_limit_pushdown.py3CODE
LOW…e/wren/tests/unit/test_postgres_semicolon_unlimited.py8CODE
LOWcore/wren/tests/unit/test_profile_env_expansion.py9CODE
LOWcore/wren/tests/unit/test_cli_profile_resolve.py5CODE
LOWcore/wren/tests/unit/test_seed_queries.py3CODE
LOWcore/wren/tests/unit/test_trino_parser.py10CODE
LOWcore/wren/tests/unit/test_trino_parser.py270CODE
LOWcore/wren/tests/unit/test_convert_mdl.py3CODE
LOWcore/wren/tests/unit/test_clickhouse_helpers.py6CODE
LOWcore/wren/tests/unit/test_case_sensitivity.py15CODE
LOWcore/wren/tests/unit/test_coerce_limit.py3CODE
LOWcore/wren/tests/unit/test_canner_semicolon.py3CODE
LOWcore/wren/tests/unit/test_config.py3CODE
LOWcore/wren/tests/unit/test_oracle_url_decode.py14CODE
LOWcore/wren/tests/unit/test_databricks_connector.py1CODE
LOWcore/wren/tests/unit/test_context.py3CODE
118 more matches not shown…
Excessive Try-Catch Wrapping79 hits · 86 pts
SeverityFileLineSnippetContext
LOWcore/wren-core-py/tests/test_modeling_core.py394 except Exception as e:CODE
LOWcore/wren-core-py/tests/test_modeling_core.py449 except Exception as e:CODE
LOWcore/wren/tests/connectors/test_mssql.py41 except Exception:CODE
MEDIUMcore/wren/tests/connectors/test_mssql.py38def _have_mssql_driver() -> bool:CODE
LOWcore/wren/tests/connectors/test_clickhouse.py98 except Exception as e: # noqa: BLE001CODE
LOWcore/wren/tests/unit/test_databricks_semicolon.py58 except Exception:CODE
LOWcore/wren/src/wren/context_cli.py493 except Exception as e:CODE
LOWcore/wren/src/wren/context_cli.py508 except Exception as profile_exc:CODE
LOWcore/wren/src/wren/context_cli.py838 except Exception as exc:CODE
LOWcore/wren/src/wren/profile_web.py164 except Exception:CODE
LOWcore/wren/src/wren/profile.py194 except Exception:CODE
LOWcore/wren/src/wren/policy.py274 except Exception:CODE
LOWcore/wren/src/wren/cube_cli.py385 except Exception as e:CODE
LOWcore/wren/src/wren/engine.py132 except Exception as e:CODE
LOWcore/wren/src/wren/engine.py150 except Exception as e:CODE
LOWcore/wren/src/wren/engine.py224 except Exception as e:CODE
LOWcore/wren/src/wren/engine.py254 except Exception as e:CODE
LOWcore/wren/src/wren/context.py2118 except Exception as e:CODE
LOWcore/wren/src/wren/context.py2142 except Exception as e:CODE
LOWcore/wren/src/wren/cli.py41 except Exception as e:CODE
LOWcore/wren/src/wren/cli.py418 except Exception as e:CODE
LOWcore/wren/src/wren/cli.py442 except Exception as e:CODE
LOWcore/wren/src/wren/cli.py503 except Exception as e:CODE
LOWcore/wren/src/wren/cli.py531 except Exception as e:CODE
LOWcore/wren/src/wren/cli.py548 except Exception as e:CODE
LOWcore/wren/src/wren/cli.py568 except Exception:CODE
LOWcore/wren/src/wren/cli.py574 except Exception:CODE
LOWcore/wren/src/wren/cli.py580 except Exception:CODE
LOWcore/wren/src/wren/profile_cli.py141 except Exception as exc:CODE
LOWcore/wren/src/wren/profile_cli.py382 except Exception as exc: # noqa: BLE001 — surface whatever driver raisesCODE
LOWcore/wren/src/wren/mcp_server.py467 except Exception:CODE
LOWcore/wren/src/wren/mcp_server.py540 except Exception as e:CODE
MEDIUM…skills_content/dlt-connector/scripts/introspect_dlt.py407 print(f"Error: {duckdb_path} not found.", file=sys.stderr)CODE
LOWcore/wren/src/wren/memory/cli.py142 except Exception:CODE
LOWcore/wren/src/wren/memory/watch.py126 except Exception: # noqa: BLE001 — surface count, keep change pending for retryCODE
LOWcore/wren/src/wren/memory/watch.py174 except Exception:CODE
LOWcore/wren/src/wren/connector/redshift.py70 except Exception as e:CODE
MEDIUMcore/wren/src/wren/connector/redshift.py67def close(self) -> None:CODE
LOWcore/wren/src/wren/connector/clickhouse.py435 except Exception as e:CODE
LOWcore/wren/src/wren/connector/trino.py535 except Exception as e:CODE
LOWcore/wren/src/wren/connector/mssql.py86 except Exception as e:CODE
LOWcore/wren/src/wren/connector/mssql.py180 except Exception:CODE
LOWcore/wren/src/wren/connector/mssql.py70 except Exception as e:CODE
LOWcore/wren/src/wren/connector/mssql.py110 except Exception:CODE
LOWcore/wren/src/wren/connector/mssql.py162 except Exception:CODE
LOWcore/wren/src/wren/connector/bigquery.py72 except Exception as e:CODE
MEDIUMcore/wren/src/wren/connector/bigquery.py69def close(self) -> None:CODE
LOWcore/wren/src/wren/connector/snowflake.py106 except Exception:CODE
LOWcore/wren/src/wren/connector/postgres.py211 except Exception:CODE
LOWcore/wren/src/wren/connector/postgres.py320 except Exception as e:CODE
LOWcore/wren/src/wren/connector/postgres.py337 except Exception as e:CODE
LOWcore/wren/src/wren/connector/postgres.py352 except Exception:CODE
LOWcore/wren/src/wren/connector/postgres.py355 except Exception as e:CODE
LOWcore/wren/src/wren/connector/spark.py50 except Exception:CODE
LOWcore/wren/src/wren/connector/databricks.py70 except Exception as e:CODE
MEDIUMcore/wren/src/wren/connector/databricks.py67def close(self) -> None:CODE
LOWcore/wren/src/wren/connector/oracle.py220 except Exception:CODE
LOWcore/wren/src/wren/connector/datafusion.py78 except Exception as e:CODE
LOWcore/wren/src/wren/connector/duckdb.py71 except Exception:CODE
LOWcore/wren/src/wren/connector/duckdb.py161 except Exception as e:CODE
19 more matches not shown…
Over-Commented Block69 hits · 68 pts
SeverityFileLineSnippetContext
LOWcore/wren-core-py/scripts/publish.sh1#!/usr/bin/env bashCOMMENT
LOWcore/wren-core-py/src/extractor.rs381 match PyManifestExtractor::new(value) {COMMENT
LOWcore/wren-core-py/src/extractor.rs401 extractor: PyManifestExtractor,COMMENT
LOWcore/wren-core-py/src/extractor.rs481 #[case(&["orders"], &["orders_cube"])]COMMENT
LOWcore/wren-core-py/src/remote_functions.rs1// Licensed to the Apache Software Foundation (ASF) under oneCOMMENT
LOWcore/wren-core-py/src/context.rs1// Licensed to the Apache Software Foundation (ASF) under oneCOMMENT
LOWcore/wren-core-wasm/src/lib.rs1//! # wren-core-wasmCOMMENT
LOWcore/wren-core-wasm/src/lib.rs21//!COMMENT
LOWcore/wren-core-wasm/src/lib.rs41 ctx: datafusion::execution::context::SessionContext,COMMENT
LOWcore/wren-core-wasm/src/lib.rs181 /// CSV is read with `arrow::csv::ReaderBuilder`. Schema is inferred fromCOMMENT
LOWcore/wren-core-wasm/src/lib.rs281COMMENT
LOWcore/wren-core-wasm/src/lib.rs581 ))COMMENT
LOWcore/wren/tests/unit/test_policy.py521 validate_sql_policy(ast, _MODELS, config)COMMENT
LOWcore/wren/scripts/publish.sh1#!/usr/bin/env bashCOMMENT
LOWcore/wren/src/wren/policy.py21from wren.config import WrenConfigCOMMENT
LOWcore/wren/src/wren/policy.py41#COMMENT
LOWcore/wren/src/wren/policy.py121#COMMENT
LOWcore/wren/src/wren/policy.py381 if isinstance(source, exp.Alias):COMMENT
LOWcore/wren/src/wren/mdl/cte_rewriter.py41}COMMENT
LOWcore/wren/src/wren/mdl/cte_rewriter.py101 # aliases, cube columns, …). Render those with ``identify=True`` so theCOMMENT
LOWcore/wren/src/wren/mdl/cte_rewriter.py281 # the CTE alias share the same quoting, so the dialect folds themCOMMENT
LOWcore/wren/src/wren/mdl/cte_rewriter.py361 """COMMENT
LOWcore/wren/src/wren/mdl/cte_rewriter.py381 # against the ``normalize=False`` schema with no folding.COMMENT
LOWcore/wren/src/wren/mdl/cte_rewriter.py401 ident = tbl.thisCOMMENT
LOWcore/wren/src/wren/mdl/cte_rewriter.py721 # via its passthrough/fallback branch.COMMENT
LOWcore/wren/src/wren/mdl/cte_rewriter.py881 # BigQuery — it treats the qualifier as a recursive reference toCOMMENT
LOWcore/wren/src/wren/connector/clickhouse.py321 # ``unquote`` (not ``unquote_plus``): in a URL, ``+`` is only a spaceCOMMENT
LOWcore/wren-core/rustfmt.toml1# Licensed to the Apache Software Foundation (ASF) under oneCOMMENT
LOWcore/wren-core/taplo.toml1# Licensed to the Apache Software Foundation (ASF) under oneCOMMENT
LOWcore/wren-core/core/src/mdl/mod.rs2761 /// A model with multiple calculated columns that traverse *different*COMMENT
LOWcore/wren-core/core/src/mdl/mod.rs5341 }COMMENT
LOWcore/wren-core/core/src/mdl/utils.rs221 return plan_err!("Error for creating schemas: {}", qualified_col);COMMENT
LOWcore/wren-core/core/src/mdl/context.rs41COMMENT
LOWcore/wren-core/core/src/mdl/context.rs281 ]COMMENT
LOWcore/wren-core/core/src/mdl/context.rs301 // Arc::new(SimplifyExpressions::new()),COMMENT
LOW…n-core/core/src/logical_plan/optimize/type_coercion.rs901 .map(|(i, expr)| expr.cast_to(&new_types[i], schema))COMMENT
LOW…n-core/core/src/logical_plan/optimize/type_coercion.rs921 //COMMENT
LOW…en-core/core/src/logical_plan/analyze/model_anlayze.rs41/// 2. Analyze the model and generate the ModelPlanNode according to the scope analysis. (button-up and depth-first, excCOMMENT
LOW…en-core/core/src/logical_plan/analyze/model_anlayze.rs521 join_constraint: join.join_constraint,COMMENT
LOWcore/wren-core/core/src/logical_plan/analyze/plan.rs1081 // skip the calculated fieldCOMMENT
LOWcore/wren-core/core/src/logical_plan/analyze/scope.rs21/// SELECT a, b, c FROM tableCOMMENT
LOW…n-core/core/src/logical_plan/analyze/access_control.rs281}COMMENT
LOWcore/wren-core/benchmarks/bench.sh1#!/usr/bin/env bashCOMMENT
LOWcore/wren-core/benchmarks/requirements.txt1# Licensed to the Apache Software Foundation (ASF) under oneCOMMENT
LOWcore/wren-core/benchmarks/compare.py1#!/usr/bin/env pythonCOMMENT
LOWcore/wren-core/sqllogictest/bin/sqllogictests.rs1// Licensed to the Apache Software Foundation (ASF) under oneCOMMENT
LOWcore/wren-core/sqllogictest/bin/sqllogictests.rs281 ///COMMENT
LOWcore/wren-core/sqllogictest/src/test_context.rs1// Licensed to the Apache Software Foundation (ASF) under oneCOMMENT
LOWcore/wren-core/sqllogictest/src/test_context.rs181 // TODO: duplicate `orders.customer_state`COMMENT
LOWcore/wren-core/sqllogictest/src/engine/conversion.rs1// Licensed to the Apache Software Foundation (ASF) under oneCOMMENT
LOWcore/wren-core/sqllogictest/src/engine/normalize.rs1// Licensed to the Apache Software Foundation (ASF) under oneCOMMENT
LOWcore/wren-core/sqllogictest/src/engine/normalize.rs61COMMENT
LOWcore/wren-core/sqllogictest/src/engine/normalize.rs121COMMENT
LOWcore/wren-core/sqllogictest/src/engine/error.rs1// Licensed to the Apache Software Foundation (ASF) under oneCOMMENT
LOWcore/wren-core/sqllogictest/src/engine/runner.rs1// Licensed to the Apache Software Foundation (ASF) under oneCOMMENT
LOWcore/wren-core/sqllogictest/src/engine/mod.rs1// Licensed to the Apache Software Foundation (ASF) under oneCOMMENT
LOWcore/wren-core/sqllogictest/src/engine/output.rs1// Licensed to the Apache Software Foundation (ASF) under oneCOMMENT
LOWcore/wren-core-base/src/mdl/migration.rs101/// The `dialect` field on Model and View is optional and defaults to null.COMMENT
LOWdocs/core/.sync.yml1# Declarative sync config: WrenAI/docs/core → doc websiteCOMMENT
LOWsdk/wren-pydantic/pyproject.toml61COMMENT
9 more matches not shown…
Cross-Language Confusion10 hits · 42 pts
SeverityFileLineSnippetContext
HIGHcore/wren/tests/connectors/test_snowflake.py147 assert result.equals(expected)CODE
HIGHcore/wren/tests/connectors/test_snowflake.py165 assert result.equals(returned)CODE
HIGHcore/wren/tests/unit/test_osi.py287 ("a || b", "concat", True), # concatCODE
HIGHcore/wren/tests/unit/test_profile_env_expansion.py149 (mirrors the typical ``cd subdir && wren --sql`` usage)."""STRING
HIGHcore/wren/tests/unit/test_clickhouse_helpers.py248 and that None values in the result rows are preserved as null, not coercedSTRING
HIGHcore/wren/tests/unit/test_context.py1353 """YAML `dimensions:` (null) must become [] so mdl.json never carries null."""STRING
HIGHcore/wren/tests/unit/test_context.py1913 """Explicit `columns:` (YAML null) is present and non-list — report it."""STRING
HIGHcore/wren/tests/unit/test_cube_cli.py109 """Explicit cubes: null is invalid (Rust Vec rejects null; missing is empty)."""STRING
HIGHcore/wren/src/wren/profile.py175 f"profiles.yml: 'active' must be a string or null; got {type(active).__name__}.\n"CODE
HIGHcore/wren/src/wren/context.py71| Rebuild after changes | `wren context build && wren memory index` |CODE
Deep Nesting43 hits · 38 pts
SeverityFileLineSnippetContext
LOWevals/spodbtify_ab/run_eval.py92CODE
LOW…re/wren-core-py/tests/test_same_context_concurrency.py103CODE
LOW…re/wren-core-py/tests/test_same_context_concurrency.py196CODE
LOWcore/wren/tests/unit/test_served_content_guard.py28CODE
LOWcore/wren/src/wren/context_cli.py678CODE
LOWcore/wren/src/wren/dbt.py753CODE
LOWcore/wren/src/wren/dbt.py1139CODE
LOWcore/wren/src/wren/osi.py403CODE
LOWcore/wren/src/wren/profile.py325CODE
LOWcore/wren/src/wren/policy.py311CODE
LOWcore/wren/src/wren/policy.py413CODE
LOWcore/wren/src/wren/docs.py145CODE
LOWcore/wren/src/wren/docs.py168CODE
LOWcore/wren/src/wren/cube_cli.py157CODE
LOWcore/wren/src/wren/context.py306CODE
LOWcore/wren/src/wren/context.py961CODE
LOWcore/wren/src/wren/context.py2054CODE
LOWcore/wren/src/wren/context.py2083CODE
LOWcore/wren/src/wren/cli.py151CODE
LOWcore/wren/src/wren/cli.py450CODE
LOWcore/wren/src/wren/profile_cli.py395CODE
LOWcore/wren/src/wren/mdl/cte_rewriter.py614CODE
LOWcore/wren/src/wren/mdl/cte_rewriter.py844CODE
LOWcore/wren/src/wren/mdl/cte_rewriter.py913CODE
LOWcore/wren/src/wren/mdl/cte_rewriter.py1000CODE
LOWcore/wren/src/wren/mdl/cte_rewriter.py1081CODE
LOWcore/wren/src/wren/mdl/cte_rewriter.py1027CODE
LOWcore/wren/src/wren/memory/cli.py109CODE
LOWcore/wren/src/wren/memory/cli.py151CODE
LOWcore/wren/src/wren/memory/watch.py141CODE
LOWcore/wren/src/wren/model/field_registry.py258CODE
LOWcore/wren/src/wren/connector/clickhouse.py197CODE
LOWcore/wren/src/wren/connector/trino.py156CODE
LOWcore/wren/src/wren/connector/mssql.py119CODE
LOWcore/wren/src/wren/connector/mssql.py277CODE
LOWcore/wren/src/wren/connector/postgres.py199CODE
LOWcore/wren/src/wren/connector/oracle.py90CODE
LOWcore/wren/src/wren/connector/duckdb.py144CODE
LOWcore/wren/src/wren/connector/athena.py141CODE
LOWcore/wren/src/wren/connector/canner.py130CODE
LOWcore/wren/src/wren/connector/mysql.py529CODE
LOWsdk/wren-pydantic/src/wren_pydantic/_errors.py82CODE
LOWsdk/wren-langchain/examples/langgraph_demo.py127CODE
Structural Annotation Overuse24 hits · 37 pts
SeverityFileLineSnippetContext
LOWcore/wren/src/wren/skills_content/usage/SKILL.md313### Step 1: Discover cubesCOMMENT
LOWcore/wren/src/wren/skills_content/usage/SKILL.md323### Step 2: Inspect cube structureCOMMENT
LOWcore/wren/src/wren/skills_content/usage/SKILL.md332### Step 3: Match user's question to cube measures + dimensionsCOMMENT
LOWcore/wren/src/wren/skills_content/usage/SKILL.md342### Step 4: Execute via CLI flags OR JSON inputCOMMENT
LOWcore/wren/src/wren/skills_content/usage/SKILL.md364### Step 5: Error recoveryCOMMENT
LOW…re/wren/src/wren/skills_content/dlt-connector/SKILL.md52### Step 1: Pick the SaaS sourceCOMMENT
LOW…re/wren/src/wren/skills_content/dlt-connector/SKILL.md56### Step 2: Install dltCOMMENT
LOW…re/wren/src/wren/skills_content/dlt-connector/SKILL.md62### Step 3: Write the pipeline scriptCOMMENT
LOW…re/wren/src/wren/skills_content/dlt-connector/SKILL.md87### Step 4: Set up credentialsCOMMENT
LOW…re/wren/src/wren/skills_content/dlt-connector/SKILL.md102### Step 5: Run the pipelineCOMMENT
LOW…re/wren/src/wren/skills_content/dlt-connector/SKILL.md203### Step 1: Build the MDLSTRING
LOW…re/wren/src/wren/skills_content/dlt-connector/SKILL.md212### Step 2: Validate with a real querySTRING
LOW…re/wren/src/wren/skills_content/dlt-connector/SKILL.md226### Step 3: Run interesting queriesSTRING
LOW…re/wren/src/wren/skills_content/dlt-connector/SKILL.md241### Step 4: Confirm successSTRING
LOWdocs/core/get_started/quickstart.md37## Step 0: Create a Python virtual environmentCOMMENT
LOWdocs/core/get_started/quickstart.md50## Step 1: Seed the jaffle_shop datasetCOMMENT
LOWdocs/core/get_started/quickstart.md89## Step 2: Install wrenai Python packageCOMMENT
LOWdocs/core/get_started/quickstart.md112## Step 3: Install the CLI skillCOMMENT
LOWdocs/core/get_started/quickstart.md135## Step 4: Set up a profileCOMMENT
LOWdocs/core/get_started/quickstart.md190## Step 5: Initialize a Wren projectCOMMENT
LOWdocs/core/get_started/quickstart.md225## Step 6: Generate MDL with Claude CodeCOMMENT
LOWdocs/core/get_started/quickstart.md272## Step 7: Start asking questionsCOMMENT
LOWdocs/core/get_started/quickstart.md300## Step 8: Add and query a cube (optional)COMMENT
LOWdocs/core/get_started/quickstart.md333## Step 9: Build and deploy a GenBI dashboard (optional)COMMENT
Cross-File Repetition6 hits · 30 pts
SeverityFileLineSnippetContext
HIGHcore/wren/tests/connectors/test_mysql.py0create table orders ( o_orderkey integer primary key, o_custkey integer not null, o_orderstatus char(1) not null, o_totaSTRING
HIGHcore/wren/tests/connectors/test_mssql.py0create table orders ( o_orderkey integer primary key, o_custkey integer not null, o_orderstatus char(1) not null, o_totaSTRING
HIGHcore/wren/tests/connectors/test_postgres.py0create table orders ( o_orderkey integer primary key, o_custkey integer not null, o_orderstatus char(1) not null, o_totaSTRING
HIGHcore/wren/tests/connectors/test_mysql.py0create table customer ( c_custkey integer primary key, c_name varchar(25) not null )STRING
HIGHcore/wren/tests/connectors/test_mssql.py0create table customer ( c_custkey integer primary key, c_name varchar(25) not null )STRING
HIGHcore/wren/tests/connectors/test_postgres.py0create table customer ( c_custkey integer primary key, c_name varchar(25) not null )STRING
Modern AI Meta-Vocabulary9 hits · 29 pts
SeverityFileLineSnippetContext
MEDIUMcore/wren/tests/unit/test_context_cli.py306 # Other scaffold files are still producedCOMMENT
MEDIUMcore/wren/tests/unit/test_context.py2453 # Minimal project scaffold for validate_projectCOMMENT
MEDIUMcore/wren/src/wren/context_cli.py288 # Empty relationships.yml (shared between empty and full scaffold)COMMENT
MEDIUMcore/wren/src/wren/memory/schema_indexer.py61# description fits comfortably in a single LLM context window andCOMMENT
MEDIUMcore/wren-core/benchmarks/bench.sh21# etc and orchestrates gathering data and run the benchmark binary inCOMMENT
MEDIUMdocs/core/guides/model.md32## What scaffolding gives youCOMMENT
MEDIUMdocs/core/guides/model.md43## What scaffolding cannot give youCOMMENT
MEDIUMdocs/core/guides/manage_project.md19wren context init # scaffold a new project in cwdCODE
MEDIUMdocs/core/concepts/agent_learning.md15## Two phases: scaffold fast, enrich deepCOMMENT
Hallucination Indicators1 hit · 15 pts
SeverityFileLineSnippetContext
CRITICALcore/wren/tests/unit/test_spark_semicolon.py71 session.sql.return_value.limit.return_value.count.assert_called_once_with()CODE
Modern Structural Boilerplate9 hits · 8 pts
SeverityFileLineSnippetContext
LOWcore/wren/tests/unit/test_context.py1520def _set_v1_entity_name(project_path: Path, entity: str, name: str) -> None:CODE
LOWcore/wren/tests/unit/test_context.py1539def _set_v1_view_statement(project_path: Path, statement: int) -> None:CODE
LOWcore/wren/tests/unit/test_context.py1552def _set_v1_model_ref_sql(project_path: Path, ref_sql: int) -> None:CODE
LOWcore/wren/src/wren/profile_web.py36logger = logging.getLogger(__name__)CODE
LOWcore/wren/src/wren/__init__.py15__all__ = ["WrenEngine", "DataSource", "WrenError", "__version__"]CODE
LOWcore/wren/src/wren/memory/__init__.py112__all__ = ["WrenMemory"]CODE
LOWcore/wren/src/wren/connector/__init__.py4__all__ = ["ConnectorABC", "get_connector"]CODE
LOWsdk/wren-pydantic/src/wren_pydantic/__init__.py10__all__ = [CODE
LOWsdk/wren-langchain/src/wren_langchain/__init__.py11__all__ = [CODE
Fake / Example Data5 hits · 6 pts
SeverityFileLineSnippetContext
LOWcore/wren/src/wren/model/field_registry.py168 "placeholder": "eyJ...",CODE
LOWcore/wren/src/wren/model/field_registry.py184 "format": {"label": "File Format", "placeholder": "parquet"},CODE
LOWcore/wren/src/wren/model/field_registry.py189 "placeholder": "/data",CODE
LOWcore/wren/src/wren/model/field_registry.py195 "url": {"label": "Root Path", "placeholder": "/data"},CODE
LOWcore/wren/src/wren/model/field_registry.py306 placeholder=overrides.get("placeholder", base_placeholder),CODE
Example Usage Blocks4 hits · 6 pts
SeverityFileLineSnippetContext
LOWcore/wren-core-py/scripts/publish.sh5# Usage:COMMENT
LOWcore/wren/scripts/publish.sh5# Usage:COMMENT
LOWscripts/sync-docs.sh10# Usage:COMMENT
LOWskills/install.sh9# Usage:COMMENT
AI Structural Patterns5 hits · 5 pts
SeverityFileLineSnippetContext
LOWcore/wren/src/wren/serve_cli.py122CODE
LOWcore/wren/src/wren/cube_cli.py277CODE
LOWcore/wren/src/wren/cli.py356CODE
LOWcore/wren/src/wren/profile_cli.py38CODE
LOWcore/wren/src/wren/mcp_server.py146CODE
Docstring Block Structure1 hit · 5 pts
SeverityFileLineSnippetContext
HIGHcore/wren/src/wren/model/field_registry.py342Return ordered FieldDef list for a datasource. Args: datasource: DataSource name (e.g. "bigquery"). STRING
AI Slop Vocabulary1 hit · 2 pts
SeverityFileLineSnippetContext
LOWcore/wren/tests/unit/test_memory_watch.py72 # watcher reindexes on disappearance, not just add/edit.COMMENT