AI Slop Code Risk Monitor

lakehq/sail

SlopCodeMonitor badge for lakehq/sail Adjusted legacy signal; badge bands: 25 / 50 / 75 (different from dashboard bands).

Drop-in Apache Spark replacement written in Rust, unifying batch processing, stream processing, and compute-intensive AI workloads.

4.4 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for lakehq/sail, a Rust project with 3,481 GitHub stars. SynthScan examined 709,791 lines of code across 2371 source files, recording 2791 pattern matches distributed across 18 syntactic categories. The legacy adjusted pattern signal is 4.4 (Low pattern signal); it is not an authorship estimate.

Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.

4.4
Adjusted Signal
4.4
Raw Pattern Score
100%
Time Factor
2026-10-31
Last Push
3.5K
Stars
Rust
Language
709.8K
Lines of Code
2.4K
Files
2.8K
Pattern Hits
2026-10-31
Scan Date
0.01
HC Hit Rate

Risk Review · Payload v1

Use each vector to guide manual verification of the underlying findings.

Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.

Cognitive Ownership Risk 15.2/100 · LOW

Can maintainers explain intent, assumptions, and trade-offs? 2501 finding(s).

Hallucinated Dependency & Supply Chain Risk 1.8/100 · LOW

Are imports declared and package/API names verified? 110 finding(s).

Agent Over-Engineering Ratio 15.9/100 · LOW

Are wrappers, guards, and repeated structures necessary? 2293 finding(s).

PR Review Velocity Impact 20.6/100 · LOW

Which changes need focused human review? 2791 finding(s).

What These Metrics Mean

Adjusted Signal
Legacy pattern score normalized per 1,000 scanned lines and multiplied by the repository-level time factor. It is not an estimate of AI authorship.
Raw Pattern Score
Sum of severity- and context-weighted pattern findings before applying the time factor.
Time Factor
A coarse multiplier based on repository last-push metadata. It does not identify when individual code was written.
Pattern Hits
Count of configured pattern findings. Review each location and surrounding code before acting.
HC Hit Rate
High- and critical-severity findings per scanned file. Severity is a configured detector weight, not proof of a vulnerability or authorship.
Lines / Files
Scan coverage denominators used by the legacy normalized score.

Pattern-Signal History

This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.

Severity Breakdown

Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.

CRITICAL 11HIGH 17MEDIUM 152LOW 2611

Directory Score Breakdown

This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.

Pattern Findings

The scanner identified 2791 distinct pattern matches across 18 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. 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 configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.

Hyper-Verbose Identifiers2112 hits · 1945 pts
SeverityFileLineSnippetContext
LOWcrates/sail-python-udf/src/python/spark.py73def _pandas_serializer_kwargs(config) -> dict[str, bool]:CODE
LOWcrates/sail-python-udf/src/python/spark.py605def _python_values_to_arrow_array(CODE
LOWcrates/sail-python-udf/src/python/spark.py630def _arrow_array_to_output_type(data, data_type: pa.DataType) -> pa.Array:CODE
LOWcrates/sail-cli/src/python/spark_mcp_server.py48def override_default_logging_config():CODE
LOWcrates/sail-cli/src/python/spark_mcp_server.py58def configure_fastmcp_log_level():CODE
LOWpython/pysail/tests/conftest.py82def pytest_collection_modifyitems(config: pytest.Config, items: list[pytest.Item]) -> None:CODE
LOWpython/pysail/tests/conftest.py123def configure_sail_environment():CODE
LOWpython/pysail/tests/test_package.py13def test_pytest_timeout_plugin_is_active(pytestconfig):CODE
LOWpython/pysail/tests/flight/test_flight.py31def test_flight_server_connectivity(flight_connection):CODE
LOWpython/pysail/tests/flight/test_flight.py37def test_flight_execute_simple_query(flight_connection):CODE
LOWpython/pysail/tests/flight/test_flight.py50def test_flight_multiple_columns(flight_connection):CODE
LOWpython/pysail/tests/flight/test_flight.py61def test_flight_error_handling(flight_connection):CODE
LOWpython/pysail/tests/flight/test_flight.py118def test_flight_string_operations(flight_connection):CODE
LOWpython/pysail/tests/flight/test_flight.py135def test_flight_numeric_operations(flight_connection):CODE
LOWpython/pysail/tests/flight/test_flight.py153def test_flight_create_temp_view(flight_connection):CODE
LOWpython/pysail/tests/flight/test_flight.py197def test_flight_multiple_cursors(flight_connection):CODE
LOWpython/pysail/tests/catalog/unity/test_catalog.py170def test_get_nonexistent_schema(unity_catalog: UnityCatalogProvider) -> None:CODE
LOWpython/pysail/tests/catalog/glue/test_catalog.py74def _database_names_with_prefix(catalog: GlueCatalogProvider, prefix: str) -> list[tuple[str, ...]]:CODE
LOWpython/pysail/tests/catalog/glue/test_catalog.py316def test_unsupported_column_types(glue_catalog: GlueCatalogProvider, glue_database: list[str]) -> None:CODE
LOWpython/pysail/tests/catalog/glue/test_catalog.py377def test_hive_rejects_transforms(glue_catalog: GlueCatalogProvider, glue_database: list[str]) -> None:CODE
LOWpython/pysail/tests/catalog/glue/test_catalog.py388def test_iceberg_requires_location(glue_catalog: GlueCatalogProvider, glue_database: list[str]) -> None:CODE
LOWpython/pysail/tests/catalog/glue/test_catalog.py464def test_get_view_not_found_for_table(glue_catalog: GlueCatalogProvider, glue_database: list[str]) -> None:CODE
LOW…thon/pysail/tests/catalog/iceberg_rest/test_catalog.py163def test_get_non_exist_namespace(iceberg_rest_catalog: IcebergRestCatalogProvider) -> None:CODE
LOW…thon/pysail/tests/catalog/iceberg_rest/test_catalog.py199def test_list_empty_namespaces(iceberg_rest_catalog: IcebergRestCatalogProvider) -> None:CODE
LOW…thon/pysail/tests/catalog/iceberg_rest/test_catalog.py209def test_list_root_namespaces(iceberg_rest_catalog: IcebergRestCatalogProvider) -> None:CODE
LOW…thon/pysail/tests/catalog/iceberg_rest/test_catalog.py224def test_list_empty_multi_level_namespaces(iceberg_rest_catalog: IcebergRestCatalogProvider) -> None:CODE
LOW…thon/pysail/tests/catalog/iceberg_rest/test_catalog.py507def _assert_partition_transform(CODE
LOW⚡…thon/pysail/tests/catalog/iceberg_rest/test_catalog.py525def test_create_table_partition_identity(iceberg_rest_catalog: IcebergRestCatalogProvider) -> None:CODE
LOW⚡…thon/pysail/tests/catalog/iceberg_rest/test_catalog.py529def test_create_table_partition_year(iceberg_rest_catalog: IcebergRestCatalogProvider) -> None:CODE
LOW⚡…thon/pysail/tests/catalog/iceberg_rest/test_catalog.py533def test_create_table_partition_bucket(iceberg_rest_catalog: IcebergRestCatalogProvider) -> None:CODE
LOW⚡…thon/pysail/tests/catalog/iceberg_rest/test_catalog.py537def test_create_table_partition_truncate(iceberg_rest_catalog: IcebergRestCatalogProvider) -> None:CODE
LOWpython/pysail/tests/catalog/hms/test_catalog.py30def test_create_get_list_drop_database(hms_catalog: HmsCatalogProvider) -> None:CODE
LOWpython/pysail/tests/catalog/hms/test_catalog.py47def test_create_get_list_drop_table(CODE
LOWpython/pysail/tests/catalog/hms/test_catalog.py72def test_supported_formats_round_trip(CODE
LOWpython/pysail/tests/catalog/hms/test_catalog.py97def test_get_table_returns_table_not_found_for_view(CODE
LOWpython/pysail/tests/catalog/hms/test_catalog.py107def test_list_tables_excludes_views(CODE
LOWpython/pysail/tests/catalog/hms/test_catalog.py122def test_create_get_list_drop_view(CODE
LOWpython/pysail/tests/catalog/hms/test_catalog.py142def test_get_view_returns_view_not_found_for_table(CODE
LOWpython/pysail/tests/catalog/hms/test_catalog.py157def test_list_views_excludes_tables(CODE
LOWpython/pysail/tests/catalog/hms/test_catalog.py172def test_failover_from_dead_primary_endpoint(hms_service: HmsService) -> None:CODE
LOWpython/pysail/tests/catalog/hms/test_kerberos.py57def test_kerberos_hms_database_and_table_round_trip(CODE
LOWpython/pysail/tests/catalog/hms/test_kerberos.py75def test_kerberos_hms_rejects_missing_credentials(CODE
LOWpython/pysail/tests/utils/test_proxy.py138def test_proxy_codec_handles_fragmented_and_combined_frames() -> None:CODE
LOWpython/pysail/tests/utils/test_proxy.py149def test_event_store_does_not_match_missing_attributes() -> None:CODE
LOWpython/pysail/tests/utils/test_proxy.py156def test_endpoint_proxy_records_frames_and_replaces_a_response() -> None:CODE
LOWpython/pysail/tests/utils/test_proxy.py188def test_connection_rule_closes_the_next_accepted_socket() -> None:CODE
LOWpython/pysail/tests/utils/test_proxy.py208def test_close_active_connections_closes_delayed_connections() -> None:CODE
LOWpython/pysail/tests/celeborn/test_lifecycle.py69def test_lifecycle_manager_registers_shuffles_and_unregisters(CODE
LOWpython/pysail/tests/celeborn/test_lifecycle.py81def test_lifecycle_manager_returns_registration_failure() -> None:CODE
LOWpython/pysail/tests/celeborn/test_lifecycle.py89def test_lifecycle_manager_fails_over_master_endpoints(CODE
LOWpython/pysail/tests/celeborn/test_lifecycle.py108def test_lifecycle_manager_sends_periodic_heartbeats(CODE
LOWpython/pysail/tests/celeborn/test_shuffle.py42def _add_drop_next_connection(proxies: dict[str, EndpointProxy]) -> None:CODE
LOWpython/pysail/tests/celeborn/test_shuffle.py111def _split_response_partition_ids(CODE
LOWpython/pysail/tests/celeborn/test_shuffle.py163def test_shuffle_client_registers_and_unregisters(CODE
LOWpython/pysail/tests/celeborn/test_shuffle.py176def test_shuffle_client_pushes_and_reads_partition(CODE
LOWpython/pysail/tests/celeborn/test_shuffle.py187def test_shuffle_client_commits_after_all_mappers_end(CODE
LOWpython/pysail/tests/celeborn/test_shuffle.py200def test_shuffle_client_replicates_data(CODE
LOWpython/pysail/tests/celeborn/test_shuffle.py222def test_shuffle_client_returns_registration_failure() -> None:CODE
LOWpython/pysail/tests/celeborn/test_shuffle.py231def test_shuffle_client_stop_does_not_stop_lifecycle_manager(CODE
LOWpython/pysail/tests/celeborn/test_shuffle.py247def test_shuffle_client_handles_a_partition_split(CODE
2052 more matches not shown…
Decorative Section Separators148 hits · 460 pts
SeverityFileLineSnippetContext
MEDIUMcrates/sail-delta-lake/src/snapshot/mod.rs752 // ── Capability token verification ─────────────────────────────────────────COMMENT
MEDIUMcrates/sail-delta-lake/src/deletion_vector/resolve.rs79// ── Z85 (base-85) encoding for UUIDs ─────────────────────────────────────────COMMENT
MEDIUMcrates/sail-delta-lake/src/schema/arrow_conversions.rs20// ── Delta → Arrow ────────────────────────────────────────────────────────────COMMENT
MEDIUMcrates/sail-delta-lake/src/schema/arrow_conversions.rs139// ── Arrow → Delta ────────────────────────────────────────────────────────────COMMENT
MEDIUM⚡crates/sail-function/src/scalar/array/spark_array.rs221/// ┌─────────┐ ┌─────────┐ ┌──────────────┐COMMENT
MEDIUM⚡crates/sail-function/src/scalar/array/spark_array.rs222/// │ ┌─────┐ │ │ ┌─────┐ │ │ ┌──────────┐ │COMMENT
MEDIUM⚡crates/sail-function/src/scalar/array/spark_array.rs224/// │ ├─────┤ │ │ ├─────┤ │ │ ├──────────┤ │COMMENT
MEDIUM⚡crates/sail-function/src/scalar/array/spark_array.rs225/// │ │NULL │ │ │ │ Y │ │──────────▶│ │[NULL, Y] │ │COMMENT
MEDIUM⚡crates/sail-function/src/scalar/array/spark_array.rs226/// │ ├─────┤ │ │ ├─────┤ │ │ ├──────────┤ │COMMENT
MEDIUM⚡crates/sail-function/src/scalar/array/spark_array.rs228/// │ └─────┘ │ │ └─────┘ │ │ └──────────┘ │COMMENT
MEDIUM⚡crates/sail-function/src/scalar/array/spark_array.rs229/// └─────────┘ └─────────┘ └──────────────┘COMMENT
MEDIUM⚡crates/sail-function/src/scalar/array/spark_array.rs240/// ┌──────────────┐ ┌──────────────┐ ┌─────────────────────────────┐COMMENT
MEDIUM⚡crates/sail-function/src/scalar/array/spark_array.rs241/// │ ┌──────────┐ │ │ ┌──────────┐ │ │ ┌────────────────────────┐ │COMMENT
MEDIUM⚡crates/sail-function/src/scalar/array/spark_array.rs243/// │ ├──────────┤ │ │ ├──────────┤ │ │ ├────────────────────────┤ │COMMENT
MEDIUM⚡crates/sail-function/src/scalar/array/spark_array.rs244/// │ │[NULL, Y] │ │ │ │[Q, R, S] │ │───────▶│ │ [[NULL, Y], [Q, R, S]] │ │COMMENT
MEDIUM⚡crates/sail-function/src/scalar/array/spark_array.rs245/// │ ├──────────┤ │ │ ├──────────┤ │ │ ├────────────────────────│ │COMMENT
MEDIUM⚡crates/sail-function/src/scalar/array/spark_array.rs247/// │ └──────────┘ │ │ └──────────┘ │ │ └────────────────────────┘ │COMMENT
MEDIUM⚡crates/sail-function/src/scalar/array/spark_array.rs248/// └──────────────┘ └──────────────┘ └─────────────────────────────┘COMMENT
MEDIUMpython/pysail/tests/spark/datasource/test_parquet.py448# -----------------------------------------------------------------------------COMMENT
MEDIUMpython/pysail/tests/spark/datasource/test_parquet.py454# -----------------------------------------------------------------------------COMMENT
MEDIUM⚡python/pysail/tests/spark/datasource/test_python.py53# ============================================================================COMMENT
MEDIUM⚡python/pysail/tests/spark/datasource/test_python.py55# ============================================================================COMMENT
MEDIUM⚡python/pysail/tests/spark/datasource/test_python.py190# ============================================================================COMMENT
MEDIUM⚡python/pysail/tests/spark/datasource/test_python.py192# ============================================================================COMMENT
MEDIUM⚡python/pysail/tests/spark/datasource/test_python.py219# ============================================================================COMMENT
MEDIUM⚡python/pysail/tests/spark/datasource/test_python.py221# ============================================================================COMMENT
MEDIUM⚡python/pysail/tests/spark/datasource/test_python.py638# ============================================================================COMMENT
MEDIUM⚡python/pysail/tests/spark/datasource/test_python.py640# ============================================================================COMMENT
MEDIUM⚡python/pysail/tests/spark/datasource/test_python.py1019# ============================================================================COMMENT
MEDIUM⚡python/pysail/tests/spark/datasource/test_python.py1021# ============================================================================COMMENT
MEDIUM⚡python/pysail/tests/spark/datasource/test_python.py1586# ============================================================================COMMENT
MEDIUM⚡python/pysail/tests/spark/datasource/test_python.py1588# ============================================================================COMMENT
MEDIUM⚡python/pysail/tests/spark/datasource/test_jdbc.py92# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡python/pysail/tests/spark/datasource/test_jdbc.py94# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡python/pysail/tests/spark/datasource/test_jdbc.py103# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡python/pysail/tests/spark/datasource/test_jdbc.py105# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡python/pysail/tests/spark/datasource/test_jdbc.py121# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡python/pysail/tests/spark/datasource/test_jdbc.py123# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡python/pysail/tests/spark/datasource/test_jdbc.py132# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡python/pysail/tests/spark/datasource/test_jdbc.py134# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡python/pysail/tests/spark/datasource/test_jdbc.py170# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡python/pysail/tests/spark/datasource/test_jdbc.py172# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡python/pysail/tests/spark/datasource/test_jdbc.py189# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡python/pysail/tests/spark/datasource/test_jdbc.py191# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡python/pysail/tests/spark/datasource/test_jdbc.py201# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡python/pysail/tests/spark/datasource/test_jdbc.py203# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡python/pysail/tests/spark/datasource/test_jdbc.py216# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡python/pysail/tests/spark/datasource/test_jdbc.py218# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡python/pysail/tests/spark/datasource/test_jdbc.py226# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡python/pysail/tests/spark/datasource/test_jdbc.py228# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡python/pysail/tests/spark/datasource/test_jdbc.py242# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡python/pysail/tests/spark/datasource/test_jdbc.py244# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡python/pysail/tests/spark/datasource/test_jdbc.py253# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡python/pysail/tests/spark/datasource/test_jdbc.py255# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡python/pysail/tests/spark/datasource/test_jdbc.py264# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡python/pysail/tests/spark/datasource/test_jdbc.py266# ---------------------------------------------------------------------------COMMENT
MEDIUMpython/pysail/tests/spark/datasource/test_jdbc.py78# ---------------------------------------------------------------------------COMMENT
MEDIUMpython/pysail/tests/spark/datasource/test_jdbc.py80# ---------------------------------------------------------------------------COMMENT
MEDIUMpython/pysail/tests/spark/datasource/test_jdbc.py152# ---------------------------------------------------------------------------COMMENT
MEDIUMpython/pysail/tests/spark/datasource/test_jdbc.py154# ---------------------------------------------------------------------------COMMENT
88 more matches not shown…
Over-Commented Block319 hits · 319 pts
SeverityFileLineSnippetContext
LOWcrates/sail-execution/src/driver/actor/handler.rs301 .job_schedulerCOMMENT
LOWcrates/sail-execution/src/job_graph/planner.rs301 })?;COMMENT
LOWcrates/sail-execution/src/job_graph/mod.rs141/// are executed recursively with the same partition `p`, but this is not always the case.COMMENT
LOWcrates/sail-execution/src/task/scheduling.rs1use crate::id::{TaskKey, WorkerId};COMMENT
LOWcrates/sail-physical-plan/src/barrier.rs21/// **Partition matching**: The `EnforceBarrierPartitioning` physical optimizer rule (whichCOMMENT
LOWcrates/sail-plan/src/function/scalar/lambda.rs501///COMMENT
LOWcrates/sail-plan/src/function/scalar/json.rs21/// `JsonPath::Index` respectively).COMMENT
LOWcrates/sail-plan/src/function/scalar/math.rs141 }COMMENT
LOWcrates/sail-plan/src/function/scalar/math.rs221 (Ok(_), Ok(_)) | (Err(_), _) | (_, Err(_)) => left - right,COMMENT
LOWcrates/sail-plan/src/function/scalar/math.rs741}COMMENT
LOWcrates/sail-plan/src/resolver/data_type.rs21COMMENT
LOWcrates/sail-plan/src/resolver/state.rs101 /// The aggregate state for the current query.COMMENT
LOWcrates/sail-plan/src/resolver/command/write.rs41use sail_function::scalar::misc::raise_error::RaiseError;COMMENT
LOWcrates/sail-plan/src/resolver/command/write.rs61 /// If the target exists, return an error.COMMENT
LOWcrates/sail-plan/src/resolver/command/write.rs81 ///COMMENT
LOWcrates/sail-plan/src/resolver/command/write.rs1261 }COMMENT
LOW…/sail-data-source/src/formats/python/table_provider.rs21///COMMENT
LOWcrates/sail-data-source/src/formats/python/stream.rs21/// # Timeout LimitationsCOMMENT
LOWcrates/sail-data-source/src/formats/python/stream.rs101/// Stream that reads RecordBatches from a Python datasource.COMMENT
LOWcrates/sail-data-source/src/formats/python/exec.rs1//! Execution plan for Python data source batch reads.COMMENT
LOWcrates/sail-data-source/src/formats/python/exec.rs41use super::executor::InputPartition;COMMENT
LOWcrates/sail-data-source/src/formats/python/adapter.rs41/// Each registered Python datasource gets its own PythonDataSourceAdapter instance,COMMENT
LOWcrates/sail-data-source/src/formats/python/error.rs1//! Error types for Python data source operations.COMMENT
LOW…tes/sail-data-source/src/formats/python/arrow_utils.rs1//! Arrow conversion utilities for Python data sources.COMMENT
LOW…ates/sail-data-source/src/formats/python/write_exec.rs1//! Distributed write execution plan for Python data sources.COMMENT
LOWcrates/sail-data-source/src/formats/python/mod.rs1//! Python data source support for Sail.COMMENT
LOWcrates/sail-data-source/src/formats/python/executor.rs41 self.data.len()COMMENT
LOWcrates/sail-data-source/src/formats/python/executor.rs61#[derive(Debug, Clone)]COMMENT
LOWcrates/sail-data-source/src/formats/python/executor.rs81/// Abstract executor for Python datasource operations.COMMENT
LOWcrates/sail-data-source/src/formats/python/executor.rs161 ) -> Result<()>;COMMENT
LOWcrates/sail-data-source/src/formats/python/filter.rs1//! Filter pushdown system for Python data sources.COMMENT
LOW…ates/sail-data-source/src/formats/python/datasource.rs21/// # Caching StrategyCOMMENT
LOW…ates/sail-data-source/src/formats/python/datasource.rs121 *cache = Some(ds.clone().unbind());COMMENT
LOWcrates/sail-data-source/src/formats/csv/projected.rs1//! Projected CSV decoding for all-`Utf8` file schemas.COMMENT
LOWcrates/sail-data-source/src/formats/text/reader.rs121// [Credit]: https://github.com/apache/arrow-rs/blob/ebb6ede98b2b4d96a1a4f501a28ab42a3b937f73/arrow-csv/src/reader/mod.rCOMMENT
LOWcrates/sail-data-source/src/formats/parquet/read.rs441 )COMMENT
LOWcrates/sail-data-source/src/listing/utils.rs21use crate::url::PathGlobFilter;COMMENT
LOWcrates/sail-data-source/src/listing/utils.rs41///COMMENT
LOWcrates/sail-data-source/src/listing/utils.rs81 // Spark has neither Utf8View nor BinaryView, so coerce view types to their plainCOMMENT
LOWcrates/sail-spark-connect/build.rs81 version: String,COMMENT
LOWcrates/sail-delta-lake/Cargo.toml1# Licensed under the Apache License, Version 2.0 (the "License");COMMENT
LOWcrates/sail-delta-lake/src/lib.rs1// Licensed under the Apache License, Version 2.0 (the "License");COMMENT
LOWcrates/sail-delta-lake/src/options.rs1// Licensed under the Apache License, Version 2.0 (the "License");COMMENT
LOWcrates/sail-delta-lake/src/datasource/actions.rs1// https://github.com/delta-io/delta-rs/blob/5575ad16bf641420404611d65f4ad7626e9acb16/LICENSE.txtCOMMENT
LOWcrates/sail-delta-lake/src/datasource/pruning.rs1// https://github.com/delta-io/delta-rs/blob/5575ad16bf641420404611d65f4ad7626e9acb16/LICENSE.txtCOMMENT
LOWcrates/sail-delta-lake/src/datasource/expressions.rs1// https://github.com/delta-io/delta-rs/blob/5575ad16bf641420404611d65f4ad7626e9acb16/LICENSE.txtCOMMENT
LOWcrates/sail-delta-lake/src/datasource/mod.rs1// https://github.com/delta-io/delta-rs/blob/5575ad16bf641420404611d65f4ad7626e9acb16/LICENSE.txtCOMMENT
LOWcrates/sail-delta-lake/src/datasource/schema.rs1// https://github.com/delta-io/delta-rs/blob/5575ad16bf641420404611d65f4ad7626e9acb16/LICENSE.txtCOMMENT
LOWcrates/sail-delta-lake/src/datasource/scan.rs1// https://github.com/delta-io/delta-rs/blob/5575ad16bf641420404611d65f4ad7626e9acb16/LICENSE.txtCOMMENT
LOWcrates/sail-delta-lake/src/transaction/protocol.rs1// https://github.com/delta-io/delta-rs/blob/5575ad16bf641420404611d65f4ad7626e9acb16/LICENSE.txtCOMMENT
LOWcrates/sail-delta-lake/src/transaction/mod.rs1// https://github.com/delta-io/delta-rs/blob/5575ad16bf641420404611d65f4ad7626e9acb16/LICENSE.txtCOMMENT
LOWcrates/sail-delta-lake/src/transaction/mod.rs1101// metadata: impl IntoIterator<Item = (String, serde_json::Value)>,COMMENT
LOWcrates/sail-delta-lake/src/transaction/mod.rs1121// self.app_transaction.push(txn);COMMENT
LOWcrates/sail-delta-lake/src/transaction/mod.rs1201 // pub fn with_max_retries(mut self, max_retries: usize) -> Self {COMMENT
LOW…es/sail-delta-lake/src/transaction/conflict_checker.rs1// https://github.com/delta-io/delta-rs/blob/5575ad16bf641420404611d65f4ad7626e9acb16/LICENSE.txtCOMMENT
LOW…es/sail-delta-lake/src/transaction/conflict_checker.rs81 }COMMENT
LOW…es/sail-delta-lake/src/transaction/conflict_checker.rs421 };COMMENT
LOW…es/sail-delta-lake/src/transaction/conflict_checker.rs541 Ok(())COMMENT
LOWcrates/sail-delta-lake/src/snapshot/config.rs1// https://github.com/delta-io/delta-rs/blob/5575ad16bf641420404611d65f4ad7626e9acb16/LICENSE.txtCOMMENT
LOWcrates/sail-delta-lake/src/snapshot/mod.rs1// https://github.com/delta-io/delta-rs/blob/5575ad16bf641420404611d65f4ad7626e9acb16/LICENSE.txtCOMMENT
259 more matches not shown…
Hallucination Indicators11 hits · 110 pts
SeverityFileLineSnippetContext
CRITICALcrates/sail-spark-connect/data/config/spark-3.5.json1081 "doc": "When set to true, user is allowed to use org.apache.spark.sql.functions.udf(f: AnyRef, dataType: DataType)CODE
CRITICALcrates/sail-session/src/runtime.rs86 let paths = self.config.runtime.temporary_files.paths.as_slice();CODE
CRITICALcrates/sail-session/src/session_factory/server.rs120 self.config.execution.checkpoint.path.clone(),CODE
CRITICAL…spark/catalog/hms/test_spark_to_sail_dsv2_roundtrip.py145 hive_conf = jvm.org.apache.hadoop.hive.conf.HiveConf()CODE
CRITICAL…spark/catalog/hms/test_spark_to_sail_dsv2_roundtrip.py147 client = jvm.org.apache.hadoop.hive.metastore.HiveMetaStoreClient(hive_conf)CODE
CRITICAL…tests/spark/catalog/hms/test_iceberg_catalog_commit.py39 hive_conf = jvm.org.apache.hadoop.hive.conf.HiveConf()CODE
CRITICAL…tests/spark/catalog/hms/test_iceberg_catalog_commit.py41 client = jvm.org.apache.hadoop.hive.metastore.HiveMetaStoreClient(hive_conf)CODE
CRITICALscripts/spark-config/generate.py58 clazz = spark._jvm.java.lang.Class.forName("org.apache.spark.sql.internal.SQLConf$")CODE
CRITICALscripts/spark-config/generate.py64 spark._jvm.org.apache.spark.util.Utils.classForName("org.apache.spark.sql.connect.config.Connect$", True, False)CODE
CRITICAL.github/actions/commit-workflow/action.yml35 const workflows = await github.paginate(github.rest.actions.listWorkflowRunsForRepo.endpoint.merge({CODE
CRITICAL.github/actions/commit-workflow/action.yml43 const artifacts = await github.paginate(github.rest.actions.listWorkflowRunArtifacts.endpoint.merge({CODE
Unused Imports85 hits · 82 pts
SeverityFileLineSnippetContext
LOWcrates/sail-python-udf/src/python/spark.py1CODE
LOWpython/pysail/flight/__init__.py1CODE
LOWpython/pysail/tests/catalog/unity/conftest.py3CODE
LOWpython/pysail/tests/catalog/unity/test_catalog.py3CODE
LOWpython/pysail/tests/catalog/glue/conftest.py3CODE
LOWpython/pysail/tests/catalog/glue/test_catalog.py3CODE
LOWpython/pysail/tests/catalog/iceberg_rest/conftest.py3CODE
LOW…thon/pysail/tests/catalog/iceberg_rest/test_catalog.py3CODE
LOWpython/pysail/tests/catalog/hms/conftest.py3CODE
LOWpython/pysail/tests/catalog/hms/test_catalog.py3CODE
LOWpython/pysail/tests/catalog/hms/test_kerberos.py3CODE
LOWpython/pysail/tests/utils/test_proxy.py3CODE
LOWpython/pysail/tests/celeborn/test_lifecycle.py3CODE
LOWpython/pysail/tests/celeborn/test_shuffle.py3CODE
LOWpython/pysail/tests/spark/conftest.py1CODE
LOWpython/pysail/tests/spark/delta/conftest.py1CODE
LOW…k/delta/test_delta_multipart_checkpoint_delta_spark.py1CODE
LOW…n/pysail/tests/spark/delta/test_delta_metadata_only.py1CODE
LOW…s/spark/delta/test_delta_column_mapping_rename_drop.py1CODE
LOWpython/pysail/tests/spark/delta/test_delta_is_empty.py1CODE
LOW…thon/pysail/tests/spark/delta/test_delta_inspection.py1CODE
LOW…hon/pysail/tests/spark/delta/test_delta_maintenance.py1CODE
LOW…s/spark/delta/test_delta_column_mapping_delta_spark.py3CODE
LOW…ail/tests/spark/delta/test_delta_metadata_aggregate.py1CODE
LOW…ts/spark/delta/test_delta_column_mapping_operations.py10CODE
LOWpython/pysail/tests/spark/delta/test_delta_variant.py1CODE
LOW…n/pysail/tests/spark/delta/test_delta_user_metadata.py1CODE
LOW…/pysail/tests/spark/delta/test_delta_column_mapping.py1CODE
LOW…ta/test_delta_column_mapping_operations_delta_spark.py10CODE
LOW…thon/pysail/tests/spark/delta/test_delta_checkpoint.py1CODE
LOWpython/pysail/tests/spark/datasource/test_jdbc_query.py1CODE
LOWpython/pysail/tests/spark/datasource/test_jdbc.py7CODE
LOWpython/pysail/tests/spark/datasource/test_vortex.py7CODE
LOWpython/pysail/tests/spark/datasource/test_vortex.py13CODE
LOWpython/pysail/tests/spark/optimizer/conftest.py1CODE
LOWpython/pysail/tests/spark/optimizer/test_features.py1CODE
LOW…ail/tests/spark/optimizer/test_semi_join_build_side.py1CODE
LOW…ts/spark/catalog/unity/test_managed_delta_dataframe.py4CODE
LOWpython/pysail/tests/spark/catalog/unity/conftest.py6CODE
LOW…/tests/spark/catalog/unity/test_column_mapped_delta.py8CODE
LOWpython/pysail/tests/spark/catalog/glue/conftest.py3CODE
LOW…pysail/tests/spark/catalog/glue/test_iceberg_commit.py4CODE
LOW…n/pysail/tests/spark/catalog/glue/test_delta_commit.py4CODE
LOW…on/pysail/tests/spark/catalog/iceberg_rest/conftest.py7CODE
LOW…log/iceberg_rest/test_namespace_separator_incorrect.py1CODE
LOW…tests/spark/catalog/iceberg_rest/test_view_metadata.py1CODE
LOW…il/tests/spark/catalog/iceberg_rest/test_sort_order.py1CODE
LOW…pysail/tests/spark/catalog/iceberg_rest/test_nessie.py3CODE
LOW…atalog/iceberg_rest/test_namespace_separator_custom.py1CODE
LOW…il/tests/spark/catalog/iceberg_rest/test_lakekeeper.py1CODE
LOW…pysail/tests/spark/catalog/iceberg_rest/test_commit.py1CODE
LOWpython/pysail/tests/spark/catalog/hms/conftest.py4CODE
LOW…ests/spark/catalog/hms/test_spark_to_sail_roundtrip.py8CODE
LOW…spark/catalog/hms/test_spark_to_sail_dsv2_roundtrip.py12CODE
LOWpython/pysail/tests/spark/catalog/hms/test_hms_smoke.py4CODE
LOW…ysail/tests/spark/catalog/hms/test_hms_s3_roundtrip.py4CODE
LOW…ests/spark/catalog/hms/test_sail_to_spark_roundtrip.py8CODE
LOW…tests/spark/catalog/hms/test_iceberg_catalog_commit.py4CODE
LOW…/pysail/tests/spark/execution/test_shuffle_celeborn.py1CODE
LOW…n/pysail/tests/spark/execution/test_shuffle_storage.py1CODE
25 more matches not shown…
Cross-Language Confusion10 hits · 55 pts
SeverityFileLineSnippetContext
HIGHcrates/sail-python-udf/src/python/spark.py256 """Converts data to string where the behavior is similar to the Java `Object.toString()` method."""STRING
HIGHpython/pysail/tests/spark/datasource/test_csv.py785 # A BOM, records with and without quotes, CRLF and blank lines, empty fields (null),COMMENT
HIGH⚡python/pysail/tests/spark/dataframe/test_to_arrow.py94 "Spark emits struct<a: int32 not null, b: int32>, Sail emits struct<a: int32, b: int32>. "CODE
HIGH⚡python/pysail/tests/spark/dataframe/test_to_arrow.py101 assert str(table.schema.field(0).type) == "struct<a: int32 not null, b: int32>"CODE
HIGHpython/pysail/tests/spark/dataframe/test_dataframe.py217 spark.createDataFrame([(1, "x", None)], "a int not null, b string, c double")CODE
HIGH…n/pysail/tests/spark/catalog/iceberg_rest/test_ctas.py110 assert actual.equals(pa.Table.from_pylist(expected_rows, schema=actual.schema))CODE
HIGHpython/pysail/tests/spark/catalog/hms/conftest.py554 return value.toString() if hasattr(value, "toString") else str(value)CODE
HIGHpython/pysail/tests/spark/function/test_jev.py537 ("jev_score('text', 'rate', parse_json('[null]'))", "(?i)(criteria|level|null)"),CODE
HIGH…ail/tests/spark/iceberg/test_iceberg_read_evolution.py76 (1, "[alpha, null, 中文]"),CODE
HIGH…ail/tests/spark/iceberg/test_iceberg_read_evolution.py79 (4, "[null]"),CODE
Deep Nesting57 hits · 48 pts
SeverityFileLineSnippetContext
LOWcrates/sail-python-udf/src/python/spark.py817CODE
LOWcrates/sail-python-udf/src/python/spark.py1003CODE
LOWcrates/sail-python-udf/src/python/spark.py1335CODE
LOWpython/pysail/tests/spark/conftest.py195CODE
LOW…k/delta/test_delta_multipart_checkpoint_delta_spark.py49CODE
LOW…s/spark/delta/test_delta_column_mapping_delta_spark.py25CODE
LOW…s/spark/delta/test_delta_column_mapping_delta_spark.py42CODE
LOWpython/pysail/tests/spark/delta/test_delta_variant.py131CODE
LOW…n/pysail/tests/spark/delta/test_delta_user_metadata.py204CODE
LOW…sail/tests/spark/delta/test_delta_partition_pruning.py206CODE
LOW…sail/tests/spark/delta/test_delta_partition_pruning.py379CODE
LOW…sail/tests/spark/delta/test_delta_partition_pruning.py484CODE
LOW…/pysail/tests/spark/delta/test_delta_column_mapping.py20CODE
LOW…/pysail/tests/spark/delta/test_delta_column_mapping.py40CODE
LOW…/pysail/tests/spark/delta/test_delta_column_mapping.py53CODE
LOW…/pysail/tests/spark/delta/test_delta_column_mapping.py677CODE
LOW…pysail/tests/spark/delta/test_delta_schema_handling.py40CODE
LOW…thon/pysail/tests/spark/delta/test_delta_concurrent.py10CODE
LOWpython/pysail/tests/spark/datasource/test_python.py643CODE
LOWpython/pysail/tests/spark/datasource/test_python.py118CODE
LOWpython/pysail/tests/spark/datasource/test_python.py687CODE
LOWpython/pysail/tests/spark/datasource/test_socket.py51CODE
LOWpython/pysail/tests/spark/dataframe/test_filter.py1785CODE
LOW…ests/spark/dataframe/test_scalar_subquery_cast_keys.py30CODE
LOW…tests/spark/catalog/iceberg_rest/test_reference_ddl.py55CODE
LOW…pysail/tests/spark/catalog/iceberg_rest/test_commit.py616CODE
LOW…pysail/tests/spark/catalog/iceberg_rest/test_commit.py877CODE
LOW…on/pysail/tests/spark/function/test_input_file_name.py245CODE
LOW…on/pysail/tests/spark/function/test_input_file_name.py474CODE
LOW…il/tests/spark/iceberg/test_iceberg_equality_delete.py360CODE
LOW…il/tests/spark/iceberg/test_iceberg_metadata_tables.py446CODE
LOW…/pysail/tests/spark/iceberg/test_iceberg_procedures.py478CODE
LOWpython/pysail/tests/spark/iceberg/test_iceberg_reads.py115CODE
LOW…pysail/tests/spark/iceberg/test_iceberg_dml_metrics.py324CODE
LOW…hon/pysail/tests/spark/iceberg/test_iceberg_pruning.py164CODE
LOW…hon/pysail/tests/spark/iceberg/test_iceberg_pruning.py201CODE
LOW…/pysail/tests/spark/udf/test_pandas_scalar_batching.py129CODE
LOWpython/pysail/testing/snapshot/yaml.py171CODE
LOWpython/pysail/testing/utils/proxy.py469CODE
LOWpython/pysail/testing/spark/utils/files.py33CODE
LOWpython/pysail/testing/spark/utils/files.py37CODE
LOWpython/pysail/testing/spark/steps/plan.py13CODE
LOWpython/pysail/testing/spark/steps/plan.py164CODE
LOWpython/pysail/testing/spark/steps/iceberg.py542CODE
LOWpython/pysail/testing/spark/steps/iceberg.py923CODE
LOWpython/pysail/testing/spark/steps/iceberg.py973CODE
LOWpython/pysail/testing/spark/steps/delta.py234CODE
LOWpython/pysail/testing/spark/steps/delta.py531CODE
LOWpython/pysail/testing/spark/steps/delta.py571CODE
LOWpython/pysail/testing/spark/steps/delta.py683CODE
LOWpython/pysail/examples/spark/tpch.py106CODE
LOWpython/pysail/examples/spark/tpch.py29CODE
LOWpython/pysail/examples/spark/tpch.py64CODE
LOWpython/pysail/examples/spark/tpch.py86CODE
LOWpython/pysail/spark/datasource/jdbc.py497CODE
LOWpython/pysail/spark/utils/_function_scanner.py72CODE
LOWscripts/common-gold-data/count_missing_functions.py8CODE
Empty Error Handlers4 hits · 20 pts
SeverityFileLineSnippetContext
HIGHpython/pysail/tests/spark/iceberg/utils.py51except Exception: # noqa: S110, BLE001CODE
HIGHpython/pysail/testing/jev.py95except (BrokenPipeError, ConnectionResetError):CODE
HIGHpython/pysail/testing/spark/utils/files.py54except (OSError, PermissionError):CODE
HIGHpython/pysail/testing/spark/steps/delta.py269except json.JSONDecodeError:CODE
Excessive Try-Catch Wrapping19 hits · 19 pts
SeverityFileLineSnippetContext
LOWcrates/sail-data-source/src/formats/python/discovery.py24 except Exception: # noqa: BLE001CODE
LOW…k/delta/test_delta_multipart_checkpoint_delta_spark.py44 except Exception: # noqa: BLE001CODE
LOW…thon/pysail/tests/spark/delta/test_delta_concurrent.py28 except Exception as exc: # noqa: BLE001CODE
LOW…thon/pysail/tests/spark/delta/test_delta_concurrent.py80 except Exception as exc: # noqa: BLE001CODE
LOW…thon/pysail/tests/spark/delta/test_delta_concurrent.py114 except Exception as exc: # noqa: BLE001CODE
LOWpython/pysail/tests/spark/datasource/test_python.py539 except Exception as e: # noqa: BLE001CODE
LOW…on/pysail/tests/spark/catalog/iceberg_rest/conftest.py102 except Exception:CODE
LOWpython/pysail/tests/spark/catalog/hms/conftest.py153 except Exception as exc: # noqa: BLE001CODE
LOW⚡python/pysail/tests/spark/catalog/hms/conftest.py468 except Exception: # noqa: BLE001CODE
LOWpython/pysail/tests/spark/iceberg/utils.py51 except Exception: # noqa: S110, BLE001CODE
LOWpython/pysail/testing/containers/hms_probe.py34 except Exception as error: # noqa: BLE001CODE
LOWpython/pysail/testing/containers/hms_probe.py86 except Exception as error:CODE
LOWpython/pysail/testing/containers/unity.py76 except Exception:CODE
LOWpython/pysail/testing/spark/steps/delta.py219 except Exception as e:CODE
LOWpython/pysail/testing/spark/steps/sql.py109 except Exception: # noqa: BLE001CODE
LOW⚡python/pysail/spark/datasource/vortex.py199 except Exception as e:CODE
LOWpython/pysail/spark/datasource/vortex.py256 except Exception as e:CODE
LOW⚡python/pysail/spark/datasource/jdbc.py245 except Exception as e:CODE
LOWpython/pysail/spark/datasource/jdbc.py447 except Exception as e:CODE
Self-Referential Comments4 hits · 12 pts
SeverityFileLineSnippetContext
MEDIUMpython/pysail/tests/flight/test_flight.py157 # Create a temp viewCOMMENT
MEDIUM…thon/pysail/tests/spark/delta/test_delta_concurrent.py97 # Create the table first with a single write (version 0).COMMENT
MEDIUMscripts/spark-tests/run-tests.sh21 # Define a few environment variables if they are not set.COMMENT
MEDIUMscripts/spark-tests/run-tests.sh40# Define the directory for test logs. The `tmp/` directory is in `.gitignore`.COMMENT
Magic Placeholder Names2 hits · 10 pts
SeverityFileLineSnippetContext
HIGHdocs/guide/integrations/langchain.md120export OPENAI_API_KEY="your-api-key"CODE
HIGHdocs/guide/integrations/jev.md68export TYPESAFE_API_KEY='<your-api-key>'CODE
Modern Structural Boilerplate9 hits · 10 pts
SeverityFileLineSnippetContext
LOWcrates/sail-data-source/src/formats/python/discovery.py6logger = logging.getLogger(__name__)CODE
LOWcrates/sail-cli/src/python/spark_mcp_server.py12logger = logging.getLogger(__name__)CODE
LOWpython/pysail/__init__.py7__all__ = ["__version__"]CODE
LOWpython/pysail/flight/__init__.py5__all__ = [CODE
LOW⚡python/pysail/tests/spark/datasource/test_python.py47def _update_test_state(path: str, **updates: Any) -> None:CODE
LOW…pysail/tests/spark/catalog/glue/test_iceberg_commit.py37def _update_glue_parameters(moto_endpoint: str, database: str, table: str, parameters: dict[str, str]) -> None:CODE
LOWpython/pysail/examples/spark/compatibility_check.py10logger = logging.getLogger(__name__)CODE
LOWpython/pysail/spark/__init__.py5__all__ = [CODE
LOWpython/pysail/spark/utils/_function_scanner.py20logger = logging.getLogger(__name__)CODE
Synthetic Comment Markers1 hit · 5 pts
SeverityFileLineSnippetContext
HIGHdocs/guide/integrations/mcp-server.md58Please note that there is no guardrail right now to prevent Claude from generating SQL statements that will alter your dCODE
Verbosity Indicators3 hits · 4 pts
SeverityFileLineSnippetContext
LOWcrates/sail-delta-lake/src/checkpoint/mod.rs700 // Step 1: Write add/remove actions into a sidecar file using batched writes.COMMENT
LOWcrates/sail-delta-lake/src/checkpoint/mod.rs744 // Step 2: Build the main V2 checkpoint with header actions + sidecar refs.COMMENT
LOWcrates/sail-delta-lake/src/checkpoint/mod.rs811 // Step 3: Write _last_checkpoint hint pointing to the UUID-named checkpoint.COMMENT
Structural Annotation Overuse3 hits · 4 pts
SeverityFileLineSnippetContext
LOWcrates/sail-delta-lake/src/checkpoint/mod.rs700 // Step 1: Write add/remove actions into a sidecar file using batched writes.COMMENT
LOWcrates/sail-delta-lake/src/checkpoint/mod.rs744 // Step 2: Build the main V2 checkpoint with header actions + sidecar refs.COMMENT
LOWcrates/sail-delta-lake/src/checkpoint/mod.rs811 // Step 3: Write _last_checkpoint hint pointing to the UUID-named checkpoint.COMMENT
Fake / Example Data2 hits · 2 pts
SeverityFileLineSnippetContext
LOWcrates/sail-plan/data/functions/scalar/misc.yaml284 > SELECT from_protobuf(s, 'Person', '/path/to/descriptor.desc', map()) IS NULL AS result FROM (SELECT NAMED_STCODE
LOW…l-spark-connect/tests/gold_data/function/protobuf.json5 "query": "SELECT from_protobuf(s, 'Person', '/path/to/descriptor.desc', map()) IS NULL AS result FROM (SELECT NACODE
TODO Padding1 hit · 2 pts
SeverityFileLineSnippetContext
LOWcrates/sail-python/src/globals.rs22 // TODO: implement a systematic way to manage static configCOMMENT
AI Structural Patterns1 hit · 1 pts
SeverityFileLineSnippetContext
LOW…pysail/tests/spark/iceberg/test_iceberg_dml_metrics.py42CODE