A native Rust library for Delta Lake, with bindings into Python
This report summarizes scanner evidence for delta-io/delta-rs, a Rust project with 3,330 GitHub stars. SynthScan examined 192,536 lines of code across 911 source files, recording 906 pattern matches distributed across 21 syntactic categories. The legacy adjusted pattern signal is 6.0 (Moderate 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.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 690 finding(s).
Are imports declared and package/API names verified? 136 finding(s).
Are wrappers, guards, and repeated structures necessary? 542 finding(s).
Which changes need focused human review? 906 finding(s).
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.
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.
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.
The scanner identified 906 distinct pattern matches across 21 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.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | python/deltalake/transaction.py | 80 | def create_table_with_add_actions( | CODE |
| LOW | python/deltalake/__init__.py | 88 | def enable_nanosecond_timestamps() -> None: | CODE |
| LOW | python/deltalake/__init__.py | 116 | def _disable_nanosecond_timestamps() -> None: | CODE |
| LOW | python/deltalake/__init__.py | 133 | def _nanosecond_timestamps_enabled() -> bool: | CODE |
| LOW | python/deltalake/_util.py | 24 | def deprecate_positional_commit_args( | CODE |
| LOW | python/deltalake/table.py | 83 | def _merge_deprecated_filters( | CODE |
| LOW | python/deltalake/table.py | 103 | def _encode_filter_conjunction( | CODE |
| LOW | python/deltalake/table.py | 1420 | def _encode_file_pruning_predicate( | CODE |
| LOW | python/deltalake/table.py | 1428 | def _stringify_partition_values( | CODE |
| LOW | python/deltalake/table.py | 1665 | def __datafusion_table_provider__(self, session: Any | None = None) -> Any: | CODE |
| LOW | python/deltalake/table.py | 1976 | def when_not_matched_insert_all( | CODE |
| LOW | python/deltalake/table.py | 2074 | def when_not_matched_by_source_update( | CODE |
| LOW | python/deltalake/table.py | 2124 | def when_not_matched_by_source_delete( | CODE |
| LOW | python/deltalake/writer/_utils.py | 12 | def try_get_table_and_table_uri( | CODE |
| LOW | python/tests/test_datafusion.py | 10 | def _datafusion_major_version() -> int | None: | CODE |
| LOW | python/tests/test_datafusion.py | 18 | def test_datafusion_table_provider_incompatible_version_errors( | CODE |
| LOW | python/tests/test_datafusion.py | 36 | def __datafusion_task_context_provider__(self): | CODE |
| LOW | python/tests/test_datafusion.py | 46 | def test_datafusion_table_provider_not_installed_errors(tmp_path, monkeypatch): | CODE |
| LOW | python/tests/test_datafusion.py | 67 | def test_datafusion_table_provider_accepts_session_keyword_argument( | CODE |
| LOW | python/tests/test_datafusion.py | 87 | def test_datafusion_table_provider_invalid_task_ctx_capsule_name_errors( | CODE |
| LOW | python/tests/test_datafusion.py | 103 | def __datafusion_task_context_provider__(self): | CODE |
| LOW | python/tests/test_datafusion.py | 119 | def test_datafusion_table_provider(tmp_path): | CODE |
| LOW | python/tests/conftest.py | 30 | def pytest_collection_modifyitems( | CODE |
| LOW | python/tests/conftest.py | 44 | def wait_till_host_is_available(host: str, timeout_sec: int = 0.5): | CODE |
| LOW | python/tests/conftest.py | 344 | def sample_table_with_spaces_numbers() -> Table: | CODE |
| LOW | python/tests/conftest.py | 411 | def nanosecond_timestamps_enabled(): | CODE |
| LOW | python/tests/test_stats.py | 79 | def test_microsecond_truncation_parquet_stats( | CODE |
| LOW⚡ | python/tests/test_alter.py | 62 | def test_add_constraint_roundtrip_metadata(tmp_path: pathlib.Path, sample_table: Table): | CODE |
| LOW⚡ | python/tests/test_alter.py | 133 | def test_set_table_properties_min_writer_version( | CODE |
| LOW⚡ | python/tests/test_alter.py | 412 | def test_add_timestamp_ntz_column(tmp_path: pathlib.Path, sample_table: Table): | CODE |
| LOW⚡ | python/tests/test_alter.py | 417 | def test_add_timestamp_nanos_column(tmp_path: pathlib.Path, sample_table: Table): | CODE |
| LOW⚡ | python/tests/test_alter.py | 424 | def test_add_timestamp_nanos_ntz_column(tmp_path: pathlib.Path, sample_table: Table): | CODE |
| LOW⚡ | python/tests/test_alter.py | 577 | def test_drop_column_not_null_roundtrip_metadata(tmp_path: pathlib.Path): | CODE |
| LOW⚡ | python/tests/test_alter.py | 588 | def test_drop_column_not_null_unknown_column(tmp_path: pathlib.Path): | CODE |
| LOW⚡ | python/tests/test_alter.py | 597 | def test_drop_column_not_null_already_nullable(tmp_path: pathlib.Path): | CODE |
| LOW | python/tests/test_alter.py | 90 | def test_drop_constraint_invalid(tmp_path: pathlib.Path, sample_table: Table): | CODE |
| LOW | python/tests/test_alter.py | 105 | def test_drop_constraint_invalid_ignore(tmp_path: pathlib.Path, sample_table: Table): | CODE |
| LOW | python/tests/test_alter.py | 114 | def test_drop_constraint_roundtrip_metadata( | CODE |
| LOW | python/tests/test_alter.py | 159 | def test_set_table_properties_invalid_min_writer_version( | CODE |
| LOW | python/tests/test_alter.py | 178 | def test_set_table_properties_min_reader_version( | CODE |
| LOW | python/tests/test_alter.py | 202 | def test_set_table_properties_invalid_min_reader_version( | CODE |
| LOW | python/tests/test_alter.py | 220 | def test_set_table_properties_enable_cdf(tmp_path: pathlib.Path, sample_table: Table): | CODE |
| LOW | python/tests/test_alter.py | 235 | def test_set_table_properties_enable_cdf_invalid( | CODE |
| LOW | python/tests/test_alter.py | 253 | def test_set_table_properties_enable_cdf_value_false( | CODE |
| LOW | python/tests/test_alter.py | 270 | def test_set_table_properties_enable_cdf_with_writer_version_bumped( | CODE |
| LOW | python/tests/test_alter.py | 293 | def test_set_table_properties_enable_cdf_and_deletion_vectors( | CODE |
| LOW | python/tests/test_alter.py | 349 | def test_set_table_properties_enable_dv(tmp_path: pathlib.Path, sample_table: Table): | CODE |
| LOW | python/tests/test_alter.py | 370 | def test_add_column_primitive(existing_sample_table: DeltaTable): | CODE |
| LOW | python/tests/test_alter.py | 387 | def test_add_field_in_struct_column(existing_table: DeltaTable): | CODE |
| LOW | python/tests/test_alter.py | 486 | def test_add_feature_variations(existing_table: DeltaTable, feature): | CODE |
| LOW | python/tests/test_alter.py | 497 | def test_add_features_disallowed_protocol_increase(existing_sample_table: DeltaTable): | CODE |
| LOW | python/tests/test_alter.py | 560 | def test_drop_column_not_null(tmp_path: pathlib.Path): | CODE |
| LOW | python/tests/test_alter.py | 640 | def test_set_table_description(tmp_path: pathlib.Path, sample_table: Table): | CODE |
| LOW | python/tests/test_alter.py | 658 | def test_set_table_metadata_with_post_commithook_properties( | CODE |
| LOW | python/tests/test_alter.py | 684 | def test_set_table_name_overwrite(tmp_path: pathlib.Path, sample_table: Table): | CODE |
| LOW | python/tests/test_alter.py | 696 | def test_set_table_description_overwrite(tmp_path: pathlib.Path, sample_table: Table): | CODE |
| LOW | python/tests/test_alter.py | 710 | def test_set_table_name_character_limit(tmp_path: pathlib.Path, sample_table: Table): | CODE |
| LOW | python/tests/test_alter.py | 726 | def test_set_table_description_character_limit( | CODE |
| LOW | python/tests/test_alter.py | 744 | def test_set_table_metadata_name_none_should_raise_error( | CODE |
| LOW | python/tests/test_generated_columns.py | 88 | def test_create_table_with_generated_columns(tmp_path, gc_schema: DeltaSchema): | CODE |
| 388 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | Cargo.toml | 102 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | Cargo.toml | 104 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | Cargo.toml | 113 | # ============================================================================ | COMMENT |
| MEDIUM | …tes/core/tests/it_datafusion/integration_checkpoint.rs | 364 | // ── Step 1: open at version 0 (pre-checkpointProtection) ────────────────────────── | COMMENT |
| MEDIUM | …tes/core/tests/it_datafusion/integration_checkpoint.rs | 386 | // ── Step 2: create_checkpoint via the old-version handle ────────────────────────── | COMMENT |
| MEDIUM | …tes/core/tests/it_datafusion/integration_checkpoint.rs | 421 | // ── Step 3: latest table state must be undisturbed ──────────────────────────────── | COMMENT |
| MEDIUM | …tes/core/tests/it_datafusion/integration_checkpoint.rs | 449 | // ── Step 4: current-version checkpoint path must also work ──────────────────────── | COMMENT |
| MEDIUM⚡ | crates/core/src/operations/merge/source_stats.rs | 22 | //! ┌─────────────────────┐ | COMMENT |
| MEDIUM⚡ | crates/core/src/operations/merge/source_stats.rs | 24 | //! └──────────▲──────────┘ | COMMENT |
| MEDIUM⚡ | crates/core/src/operations/merge/source_stats.rs | 26 | //! ┌──────────┴──────────┐ | COMMENT |
| MEDIUM⚡ | crates/core/src/operations/merge/source_stats.rs | 28 | //! └──────────▲──────────┘ | COMMENT |
| MEDIUM⚡ | crates/core/src/operations/merge/source_stats.rs | 30 | //! ┌──────────┴──────────┐ | COMMENT |
| MEDIUM⚡ | crates/core/src/operations/merge/source_stats.rs | 33 | //! └────▲───────────▲────┘ | COMMENT |
| MEDIUM⚡ | crates/core/src/operations/merge/source_stats.rs | 34 | //! ┌──────────────────┘ └────────────────────┐ | COMMENT |
| MEDIUM⚡ | crates/core/src/operations/merge/source_stats.rs | 36 | //! ┌─────────┴─────────┐ ┌───────────┴──────────┐ | COMMENT |
| MEDIUM⚡ | crates/core/src/operations/merge/source_stats.rs | 41 | //! └─────────▲─────────┘ │ the kept files ╞═══╗ | COMMENT |
| MEDIUM⚡ | crates/core/src/operations/merge/source_stats.rs | 42 | //! │ └───────────▲──────────┘ ║ | COMMENT |
| MEDIUM⚡ | crates/core/src/operations/merge/source_stats.rs | 44 | //! ┌─────────┴─────────┐ ┌───────────┴──────────┐ ║ file id in the | COMMENT |
| MEDIUM⚡ | crates/core/src/operations/merge/source_stats.rs | 46 | //! │ read once │ └───────────▲──────────┘ ║ [T F F F] | COMMENT |
| MEDIUM⚡ | crates/core/src/operations/merge/source_stats.rs | 47 | //! └───────────────────┘ │ ║ | COMMENT |
| MEDIUM⚡ | crates/core/src/operations/merge/source_stats.rs | 48 | //! ┌───────────┴──────────┐ ║ | COMMENT |
| MEDIUM⚡ | crates/core/src/operations/merge/source_stats.rs | 53 | //! └──────────────────────┘ | COMMENT |
| MEDIUM⚡ | crates/core/src/datafile/writer/mod.rs | 10 | //! ┌─────────────────────────────┐ | COMMENT |
| MEDIUM⚡ | crates/core/src/datafile/writer/mod.rs | 15 | //! └──────────────┬──────────────┘ | COMMENT |
| MEDIUM⚡ | crates/core/src/datafile/writer/mod.rs | 16 | //! ┌──────────────────────────────┼──────────────────────────────┐ | COMMENT |
| MEDIUM⚡ | crates/core/src/datafile/writer/mod.rs | 19 | //! ┌───────────────────┐ ┌───────────────────┐ ┌───────────────────┐ | COMMENT |
| MEDIUM⚡ | crates/core/src/datafile/writer/mod.rs | 21 | //! └─────────┬─────┬───┘ └───────────────────┘ └───────────────────┘ | COMMENT |
| MEDIUM⚡ | crates/core/src/datafile/writer/mod.rs | 24 | //! │ │ ┌───────────────────────────────┐ | COMMENT |
| MEDIUM⚡ | crates/core/src/datafile/writer/mod.rs | 25 | //! │ └────────────────────────────────►│ finish tasks │ | COMMENT |
| MEDIUM⚡ | crates/core/src/datafile/writer/mod.rs | 28 | //! ┌───────────────────┐ │ last part, complete upload, │ | COMMENT |
| MEDIUM⚡ | crates/core/src/datafile/writer/mod.rs | 30 | //! │ open: part-00002 │ └───────────────────────────────┘ | COMMENT |
| MEDIUM⚡ | crates/core/src/datafile/writer/mod.rs | 34 | //! └─────────┬─────────┘ | COMMENT |
| MEDIUM⚡ | crates/core/src/datafile/writer/mod.rs | 37 | //! ┌─────────────────────┐ | COMMENT |
| MEDIUM⚡ | crates/core/src/datafile/writer/mod.rs | 39 | //! └─────────┬───────────┘ leaf columns and sends each one to that column's worker task | COMMENT |
| MEDIUM⚡ | crates/core/src/datafile/writer/mod.rs | 40 | //! ┌───────────┼───────────┐ | COMMENT |
| MEDIUM⚡ | crates/core/src/datafile/writer/mod.rs | 44 | //! └───────────┼───────────┘ arrive, and returns its column chunk when the row | COMMENT |
| MEDIUM⚡ | crates/core/src/datafile/writer/mod.rs | 47 | //! ┌──────────────────────┐ | COMMENT |
| MEDIUM⚡ | crates/core/src/datafile/writer/mod.rs | 49 | //! └─────────┬────────────┘ group's bytes to ParquetObjectWriter | COMMENT |
| MEDIUM⚡ | crates/core/src/datafile/writer/mod.rs | 52 | //! ┌───────────────────┐ | COMMENT |
| MEDIUM⚡ | crates/core/src/datafile/writer/mod.rs | 54 | //! └─────────┬─────────┘ one starts a multipart upload once its row groups reach that size | COMMENT |
| MEDIUM⚡ | crates/core/src/datafile/writer/mod.rs | 55 | //! ┌───────────┼───────────┐ | COMMENT |
| MEDIUM⚡ | crates/core/src/kernel/transaction/mod.rs | 17 | //! ┌─────────────────────────────┐ | COMMENT |
| MEDIUM⚡ | crates/core/src/kernel/transaction/mod.rs | 23 | //! └─────────────┬───────────────┘ | COMMENT |
| MEDIUM⚡ | crates/core/src/kernel/transaction/mod.rs | 25 | //! ─────────────────────┼──────────────────────────────────── | COMMENT |
| MEDIUM⚡ | crates/core/src/kernel/transaction/mod.rs | 28 | //! ┌─────────────────────────────┐ | COMMENT |
| MEDIUM⚡ | crates/core/src/kernel/transaction/mod.rs | 33 | //! └─────────────┬───────────────┘ | COMMENT |
| MEDIUM⚡ | crates/core/src/kernel/transaction/mod.rs | 36 | //! ┌───────────────────────────────────┐ | COMMENT |
| MEDIUM⚡ | crates/core/src/kernel/transaction/mod.rs | 38 | //! │ ┌───────────────────────────────┐ │ | COMMENT |
| MEDIUM⚡ | crates/core/src/kernel/transaction/mod.rs | 44 | //! │ └──────────────┬────────────────┘ │ | COMMENT |
| MEDIUM⚡ | crates/core/src/kernel/transaction/mod.rs | 47 | //! │ ┌───────────────────────────────┐ │ | COMMENT |
| MEDIUM⚡ | crates/core/src/kernel/transaction/mod.rs | 54 | //! │ └───────────────────────────────┘ │ | COMMENT |
| MEDIUM⚡ | crates/core/src/kernel/transaction/mod.rs | 56 | //! └────────────────┬──────────────────┘ | COMMENT |
| MEDIUM⚡ | crates/core/src/kernel/transaction/mod.rs | 59 | //! ┌───────────────────────────────┐ | COMMENT |
| MEDIUM⚡ | crates/core/src/kernel/transaction/mod.rs | 65 | //! └──────────────┬────────────────┘ | COMMENT |
| MEDIUM⚡ | crates/core/src/kernel/transaction/mod.rs | 68 | //! ┌───────────────────────────────┐ | COMMENT |
| MEDIUM⚡ | crates/core/src/kernel/transaction/mod.rs | 74 | //! └───────────────────────────────┘ | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | Cargo.toml | 101 | COMMENT | |
| LOW | rust-toolchain.toml | 1 | # Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| LOW | crates/opendal/tests/integration_s3.rs | 1 | //! End-to-end test of the generic OpenDAL backend over the `s3` service. | COMMENT |
| LOW | crates/opendal/src/lib.rs | 41 | /// | COMMENT |
| LOW | …tes/core/tests/it_datafusion/integration_datafusion.rs | 761 | ]; | COMMENT |
| LOW | …tes/core/tests/it_datafusion/integration_datafusion.rs | 781 | // .column_statistics | COMMENT |
| LOW | …tes/core/tests/it_datafusion/integration_datafusion.rs | 801 | // Precision::Exact(ScalarValue::Date32(Some(19289))) | COMMENT |
| LOW | …tes/core/tests/it_datafusion/integration_datafusion.rs | 821 | // Precision::Exact(ScalarValue::TimestampMicrosecond( | COMMENT |
| LOW | …tes/core/tests/it_datafusion/integration_datafusion.rs | 1141 | let metrics = get_scan_metrics(&table, &state, &[e]).await?; | COMMENT |
| LOW | …tes/core/tests/it_datafusion/integration_checkpoint.rs | 241 | COMMENT | |
| LOW | …tes/core/tests/it_datafusion/integration_checkpoint.rs | 341 | /// historical protocol level. | COMMENT |
| LOW | crates/core/src/lib.rs | 1 | //! Native Delta Lake implementation in Rust | COMMENT |
| LOW | crates/core/src/lib.rs | 21 | //! let table_url = Url::from_directory_path("/abs/test/tests/data/simple_table").unwrap(); | COMMENT |
| LOW | crates/core/src/lib.rs | 41 | //! ).await.unwrap(); | COMMENT |
| LOW | crates/core/src/lib.rs | 61 | //! | COMMENT |
| LOW | crates/core/src/lib.rs | 181 | COMMENT | |
| LOW | crates/core/src/lib.rs | 241 | .snapshot() | COMMENT |
| LOW | crates/core/src/errors.rs | 101 | /// Error returned when attempting to write bad data to the table | COMMENT |
| LOW | crates/core/src/data_catalog/storage/mod.rs | 21 | /// A `SchemaProvider` that scans an `ObjectStore` to automatically discover delta tables. | COMMENT |
| LOW | crates/core/src/logstore/factories.rs | 101 | /// Trait for generating [LogStore] implementations | COMMENT |
| LOW | crates/core/src/logstore/config.rs | 1 | //! Configuration for the Delta Log Store. | COMMENT |
| LOW | crates/core/src/logstore/config.rs | 21 | /// input or the environment can be applied generically by key name. | COMMENT |
| LOW | crates/core/src/logstore/config.rs | 101 | /// Runtime configuration. | COMMENT |
| LOW | crates/core/src/logstore/config.rs | 121 | pub certificate: Option<CertificateConfig>, | COMMENT |
| LOW | crates/core/src/logstore/config.rs | 321 | /// Parse a configuration value as a plain string (an infallible identity conversion). | COMMENT |
| LOW | crates/core/src/logstore/scope.rs | 1 | //! Operation-scoped write isolation for [`LogStore`] backends. | COMMENT |
| LOW | crates/core/src/logstore/scope.rs | 41 | /// Write-side handles for one in-flight operation. Produced by [`LogStore::begin_operation`]. | COMMENT |
| LOW | crates/core/src/logstore/mod.rs | 1 | //! # DeltaLake storage system | COMMENT |
| LOW | crates/core/src/logstore/mod.rs | 21 | //! on the atomicity and durability guarantees of the implementation of this interface. | COMMENT |
| LOW | crates/core/src/logstore/mod.rs | 181 | /// # use url::Url; | COMMENT |
| LOW | crates/core/src/logstore/mod.rs | 221 | } | COMMENT |
| LOW | crates/core/src/logstore/mod.rs | 361 | COMMENT | |
| LOW | crates/core/src/logstore/mod.rs | 481 | COMMENT | |
| LOW | crates/core/src/logstore/parquet_reader.rs | 21 | /// Reads Parquet files in object storage using [`ObjectStore`]. | COMMENT |
| LOW | crates/core/src/logstore/storage/retry_ext.rs | 1 | //! Retry extension for [`ObjectStore`] | COMMENT |
| LOW | crates/core/src/logstore/storage/retry_ext.rs | 21 | /// This trait provides additional methods for working with [`ObjectStore`] that automatically retry | COMMENT |
| LOW | crates/core/src/protocol/checkpoints.rs | 101 | }) | COMMENT |
| LOW | crates/core/src/protocol/mod.rs | 221 | pub action_type: String, | COMMENT |
| LOW | crates/core/src/protocol/mod.rs | 241 | /// Would usually only create the table, if also data is written, | COMMENT |
| LOW | crates/core/src/protocol/mod.rs | 821 | // let actions = table.snapshot().unwrap().add_actions_table(false).unwrap(); | COMMENT |
| LOW | crates/core/src/operations/vacuum.rs | 1 | //! Vacuum a Delta table | COMMENT |
| LOW | crates/core/src/operations/vacuum.rs | 161 | #[derive(Debug, Default, Clone, PartialEq)] | COMMENT |
| LOW | crates/core/src/operations/vacuum.rs | 181 | /// Period of stale files allowed. | COMMENT |
| LOW | crates/core/src/operations/vacuum.rs | 261 | /// orphan listing). | COMMENT |
| LOW | crates/core/src/operations/generate.rs | 1 | //! | COMMENT |
| LOW | crates/core/src/operations/generate.rs | 21 | //! ├── part-00006-d0ec7722-b30c-4e1c-92cd-b4fe8d3bb954-c000.snappy.parquet | COMMENT |
| LOW | crates/core/src/operations/generate.rs | 41 | //! │ │ │ └── manifest | COMMENT |
| LOW | crates/core/src/operations/generate.rs | 61 | //! │ └── part-00000-89cdd4c8-2af7-4add-8ea3-3990b2f027b5.c000.snappy.parquet | COMMENT |
| LOW | crates/core/src/operations/optimize.rs | 1 | //! Optimize a Delta Table | COMMENT |
| LOW | crates/core/src/operations/optimize.rs | 381 | self | COMMENT |
| LOW | crates/core/src/operations/delete.rs | 1 | //! Delete records from a Delta Table that satisfy a predicate | COMMENT |
| LOW | crates/core/src/operations/delete.rs | 21 | //! # let schema = StructType::try_new(vec![ | COMMENT |
| LOW | crates/core/src/operations/delete.rs | 121 | .field("commit_properties", &self.commit_properties) | COMMENT |
| LOW | crates/core/src/operations/delete.rs | 241 | /// | COMMENT |
| LOW | crates/core/src/operations/update.rs | 1 | //! Update records from a Delta Table for records satisfy a predicate | COMMENT |
| LOW | crates/core/src/operations/filesystem_check.rs | 1 | //! Audit the Delta Table for active files that do not exist in the underlying filesystem and remove them. | COMMENT |
| LOW | crates/core/src/operations/cdc.rs | 61 | /// | COMMENT |
| LOW | crates/core/src/operations/restore.rs | 1 | //! Perform restore of delta table to a specified version or datetime | COMMENT |
| LOW | crates/core/src/operations/mod.rs | 1 | //! High level operations API to interact with Delta tables | COMMENT |
| LOW | crates/core/src/operations/mod.rs | 101 | }) | COMMENT |
| 138 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | crates/core/src/operations/write/mod.rs | 2630 | Arc::new(StringArray::from(vec![Some("555-4242")])), | CODE |
| LOW | crates/core/src/kernel/transaction/mod.rs | 1294 | ("userName".to_owned(), json!("Jane Doe")), | CODE |
| LOW | crates/core/src/kernel/transaction/mod.rs | 1309 | assert_eq!(info.user_name.as_deref(), Some("Jane Doe")); | CODE |
| LOW⚡ | python/tests/test_alter.py | 67 | commit_properties = CommitProperties(custom_metadata={"userName": "John Doe"}) | CODE |
| LOW⚡ | python/tests/test_alter.py | 72 | assert next(dt.history(1))["userName"] == "John Doe" | CODE |
| LOW⚡ | python/tests/test_alter.py | 126 | commit_properties = CommitProperties(custom_metadata={"userName": "John Doe"}) | CODE |
| LOW⚡ | python/tests/test_alter.py | 129 | assert next(dt.history(1))["userName"] == "John Doe" | CODE |
| LOW⚡ | python/tests/test_alter.py | 582 | commit_properties = CommitProperties(custom_metadata={"userName": "John Doe"}) | CODE |
| LOW⚡ | python/tests/test_alter.py | 585 | assert next(dt.history(1))["userName"] == "John Doe" | CODE |
| LOW | python/tests/test_writer.py | 2779 | "details": {"address": "123 Main St", "email": "charlie@example.com"}, | CODE |
| LOW | python/tests/test_optimize.py | 134 | commit_properties = CommitProperties(custom_metadata={"userName": "John Doe"}) | CODE |
| LOW | python/tests/test_optimize.py | 145 | assert last_action["userName"] == "John Doe" | CODE |
| LOW⚡ | python/tests/test_optimize.py | 173 | commit_properties = CommitProperties(custom_metadata={"userName": "John Doe"}) | CODE |
| LOW⚡ | python/tests/test_optimize.py | 177 | assert last_action["userName"] == "John Doe" | CODE |
| LOW | python/tests/test_optimize.py | 445 | "details": {"address": "123 Main St", "email": "charlie@example.com"}, | CODE |
| LOW⚡ | python/tests/test_delete.py | 31 | commit_properties = CommitProperties(custom_metadata={"userName": "John Doe"}) | CODE |
| LOW⚡ | python/tests/test_delete.py | 37 | assert last_action["userName"] == "John Doe" | CODE |
| LOW | python/tests/test_update.py | 70 | commit_properties = CommitProperties(custom_metadata={"userName": "John Doe"}) | CODE |
| LOW | python/tests/test_update.py | 81 | assert last_action["userName"] == "John Doe" | CODE |
| LOW | python/tests/test_repair.py | 26 | commit_properties = CommitProperties(custom_metadata={"userName": "John Doe"}) | CODE |
| LOW | python/tests/test_repair.py | 33 | assert last_action["userName"] == "John Doe" | CODE |
| LOW | python/tests/test_merge.py | 31 | commit_properties = CommitProperties(custom_metadata={"userName": "John Doe"}) | CODE |
| LOW | python/tests/test_merge.py | 73 | assert last_action["userName"] == "John Doe" | CODE |
| LOW | python/tests/test_merge.py | 2642 | {"street": "123 Main St", "city": "Anytown", "state": "CA"}, | CODE |
| LOW | python/tests/test_create.py | 36 | commit_properties=CommitProperties(custom_metadata={"userName": "John Doe"}), | CODE |
| LOW | python/tests/test_create.py | 47 | assert next(dt.history())["userName"] == "John Doe" | CODE |
| LOW | python/tests/test_create.py | 112 | commit_properties=CommitProperties(custom_metadata={"userName": "John Doe"}), | CODE |
| LOW | python/tests/test_create.py | 127 | assert next(dt.history())["userName"] == "John Doe" | CODE |
| LOW | python/tests/test_create.py | 149 | commit_properties=CommitProperties(custom_metadata={"userName": "John Doe"}), | CODE |
| LOW | python/tests/test_create.py | 163 | assert next(dt.history())["userName"] == "John Doe" | CODE |
| LOW⚡ | python/tests/test_create.py | 189 | commit = CommitProperties(custom_metadata={"userName": "John Doe"}) | CODE |
| LOW | python/tests/test_create.py | 212 | commit = CommitProperties(custom_metadata={"userName": "John Doe"}) | CODE |
| LOW | python/tests/test_create.py | 227 | commit = CommitProperties(custom_metadata={"userName": "John Doe"}) | CODE |
| LOW | python/tests/test_create.py | 258 | commit = CommitProperties(custom_metadata={"userName": "John Doe"}) | CODE |
| LOW⚡ | python/tests/test_restore.py | 37 | commit_properties = CommitProperties(custom_metadata={"userName": "John Doe"}) | CODE |
| LOW⚡ | python/tests/test_restore.py | 41 | assert last_action["userName"] == "John Doe" | CODE |
| LOW | python/tests/test_convert_to_delta.py | 35 | commit_properties=CommitProperties(custom_metadata={"userName": "John Doe"}), | CODE |
| LOW | python/tests/test_convert_to_delta.py | 48 | assert commit["userName"] == "John Doe" | CODE |
| LOW⚡ | python/tests/test_lakefs.py | 115 | commit_properties = CommitProperties(custom_metadata={"userName": "John Doe"}) | CODE |
| LOW⚡ | python/tests/test_lakefs.py | 123 | assert last_action["userName"] == "John Doe" | CODE |
| LOW | python/tests/test_lakefs.py | 238 | commit_properties = CommitProperties(custom_metadata={"userName": "John Doe"}) | CODE |
| LOW | python/tests/test_lakefs.py | 245 | assert last_action["userName"] == "John Doe" | CODE |
| LOW | python/tests/test_lakefs.py | 374 | commit_properties = CommitProperties(custom_metadata={"userName": "John Doe"}) | CODE |
| LOW | python/tests/test_lakefs.py | 415 | assert last_action["userName"] == "John Doe" | CODE |
| LOW | python/tests/test_lakefs.py | 447 | commit_properties = CommitProperties(custom_metadata={"userName": "John Doe"}) | CODE |
| LOW | python/tests/test_lakefs.py | 451 | assert last_action["userName"] == "John Doe" | CODE |
| LOW | python/tests/test_lakefs.py | 547 | commit_properties = CommitProperties(custom_metadata={"userName": "John Doe"}) | CODE |
| LOW | python/tests/test_lakefs.py | 558 | assert last_action["userName"] == "John Doe" | CODE |
| LOW⚡ | python/tests/test_commit_properties.py | 219 | custom_metadata={"userName": "Jane Doe", "userId": "jane"} | CODE |
| LOW⚡ | python/tests/test_commit_properties.py | 224 | assert history["userName"] == "Jane Doe" | CODE |
| LOW⚡ | python/tests/test_commit_properties.py | 228 | assert raw_commit_info["userName"] == "Jane Doe" | CODE |
| LOW⚡ | python/tests/test_vacuum.py | 103 | assert history[0]["userName"] == "John Doe" | CODE |
| LOW⚡ | python/tests/test_vacuum.py | 104 | assert history[1]["userName"] == "John Doe" | CODE |
| LOW⚡ | python/tests/test_vacuum.py | 362 | commit = CommitProperties(custom_metadata={"userName": "John Doe"}) | CODE |
| LOW⚡ | python/tests/test_vacuum.py | 378 | commit = CommitProperties(custom_metadata={"userName": "John Doe"}) | CODE |
| LOW⚡ | python/tests/test_vacuum.py | 387 | commit = CommitProperties(custom_metadata={"userName": "John Doe"}) | CODE |
| LOW⚡ | python/tests/test_vacuum.py | 399 | commit = CommitProperties(custom_metadata={"userName": "John Doe"}) | CODE |
| LOW⚡ | python/tests/test_vacuum.py | 411 | commit = CommitProperties(custom_metadata={"userName": "John Doe"}) | CODE |
| LOW | python/tests/test_vacuum.py | 82 | commit_properties = CommitProperties(custom_metadata={"userName": "John Doe"}) | CODE |
| LOW | …hon/tests/pyspark_integration/test_write_to_pyspark.py | 222 | "details": {"address": "123 Main St", "email": "charlie@example.com"}, | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | python/bench/streamed_merge/run.py | 12 | CODE | |
| LOW | python/bench/streamed_merge/generate.py | 9 | CODE | |
| LOW | python/bench/streamed_merge/report.py | 8 | CODE | |
| LOW | python/bench/streamed_merge/merge_once.py | 7 | CODE | |
| LOW | python/bench/streamed_merge/merge_once.py | 22 | CODE | |
| LOW | python/deltalake/query.py | 1 | CODE | |
| LOW | python/deltalake/transaction.py | 1 | CODE | |
| LOW | python/deltalake/transaction.py | 8 | CODE | |
| LOW | python/deltalake/__init__.py | 8 | CODE | |
| LOW | python/deltalake/__init__.py | 8 | CODE | |
| LOW | python/deltalake/__init__.py | 8 | CODE | |
| LOW | python/deltalake/__init__.py | 8 | CODE | |
| LOW | python/deltalake/__init__.py | 20 | CODE | |
| LOW | python/deltalake/__init__.py | 21 | CODE | |
| LOW | python/deltalake/__init__.py | 21 | CODE | |
| LOW | python/deltalake/__init__.py | 21 | CODE | |
| LOW | python/deltalake/__init__.py | 21 | CODE | |
| LOW | python/deltalake/__init__.py | 22 | CODE | |
| LOW | python/deltalake/__init__.py | 22 | CODE | |
| LOW | python/deltalake/__init__.py | 22 | CODE | |
| LOW | python/deltalake/__init__.py | 23 | CODE | |
| LOW | python/deltalake/__init__.py | 23 | CODE | |
| LOW | python/deltalake/__init__.py | 24 | CODE | |
| LOW | python/deltalake/__init__.py | 24 | CODE | |
| LOW | python/deltalake/__init__.py | 24 | CODE | |
| LOW | python/deltalake/__init__.py | 24 | CODE | |
| LOW | python/deltalake/__init__.py | 24 | CODE | |
| LOW | python/deltalake/exceptions.py | 1 | CODE | |
| LOW | python/deltalake/exceptions.py | 1 | CODE | |
| LOW | python/deltalake/exceptions.py | 1 | CODE | |
| LOW | python/deltalake/exceptions.py | 1 | CODE | |
| LOW | python/deltalake/exceptions.py | 1 | CODE | |
| LOW | python/deltalake/table.py | 1 | CODE | |
| LOW | python/deltalake/table.py | 42 | CODE | |
| LOW | python/deltalake/schema.py | 3 | CODE | |
| LOW | python/deltalake/schema.py | 3 | CODE | |
| LOW | python/deltalake/schema.py | 3 | CODE | |
| LOW | python/deltalake/schema.py | 3 | CODE | |
| LOW | python/deltalake/schema.py | 3 | CODE | |
| LOW | python/deltalake/schema.py | 3 | CODE | |
| LOW | python/deltalake/schema.py | 3 | CODE | |
| LOW | python/deltalake/writer/_conversion.py | 1 | CODE | |
| LOW | python/deltalake/writer/properties.py | 1 | CODE | |
| LOW | python/deltalake/writer/__init__.py | 1 | CODE | |
| LOW | python/deltalake/writer/__init__.py | 2 | CODE | |
| LOW | python/deltalake/writer/__init__.py | 2 | CODE | |
| LOW | python/deltalake/writer/__init__.py | 2 | CODE | |
| LOW | python/deltalake/writer/__init__.py | 7 | CODE | |
| LOW | python/deltalake/writer/writer.py | 1 | CODE | |
| LOW | python/deltalake/writer/_utils.py | 1 | CODE | |
| LOW | python/deltalake/writer/convert_to.py | 1 | CODE | |
| LOW | python/deltalake/fs/_base_handler.py | 1 | CODE | |
| LOW | python/deltalake/fs/_base_handler.py | 10 | CODE | |
| LOW | python/deltalake/fs/_base_handler.py | 11 | CODE | |
| LOW | python/deltalake/fs/_base_handler.py | 11 | CODE | |
| LOW | python/deltalake/fs/fs_handler.py | 1 | CODE | |
| LOW | python/deltalake/fs/__init__.py | 1 | CODE | |
| LOW | python/tests/conftest.py | 1 | CODE | |
| LOW | python/tests/test_threaded.py | 20 | CODE | |
| LOW | python/tests/test_benchmark.py | 1 | CODE | |
| 6 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | python/deltalake/writer/_conversion.py | 30 | # (an existing null therefore falls through and stays null). | COMMENT |
| HIGH | python/deltalake/fs/_base_handler.py | 66 | return self._handler.equals(other) | CODE |
| HIGH | python/tests/test_delete.py | 67 | assert table.equals(expected_table) | CODE |
| HIGH | python/tests/test_delete.py | 140 | assert table.equals(expected_table) | CODE |
| HIGH | python/tests/test_merge.py | 3426 | assert result.equals(expected) | CODE |
| HIGH | python/tests/test_file_system_handler.py | 166 | assert table.equals(arrow_table) | CODE |
| HIGH | python/tests/test_file_system_handler.py | 185 | assert table.equals(ds_table) | CODE |
| HIGH | python/tests/test_file_system_handler.py | 204 | assert table.equals(ds_table) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | python/tests/conftest.py | 53 | except Exception: | CODE |
| HIGH | python/tests/test_fs.py | 20 | except ImportError: | CODE |
| HIGH | python/tests/test_benchmark.py | 134 | except FileNotFoundError: | CODE |
| HIGH | python/tests/test_benchmark.py | 200 | except Exception: | CODE |
| HIGH | …thon/tests/pyspark_integration/test_writer_readable.py | 22 | except ModuleNotFoundError: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | CONTRIBUTING.md | 11 | ## Using AI-generated code | COMMENT |
| HIGH | CONTRIBUTING.md | 17 | generated by AI with little to no engagement from the author may be closed | CODE |
| HIGH | CONTRIBUTING.md | 44 | Foundation's](https://apache.org) [guidance on AI-generated | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | python/deltalake/transaction.py | 80 | CODE | |
| LOW | python/deltalake/table.py | 332 | CODE | |
| LOW | python/deltalake/table.py | 1024 | CODE | |
| LOW | python/deltalake/table.py | 2521 | CODE | |
| LOW | python/deltalake/table.py | 2610 | CODE | |
| LOW | python/deltalake/writer/properties.py | 160 | CODE | |
| LOW | python/deltalake/writer/writer.py | 27 | CODE | |
| LOW | python/deltalake/writer/writer.py | 46 | CODE | |
| LOW | python/deltalake/writer/writer.py | 65 | CODE | |
| LOW | python/deltalake/writer/convert_to.py | 23 | CODE | |
| LOW | python/tests/test_generated_columns.py | 57 | CODE | |
| LOW | python/tests/test_generated_columns.py | 64 | CODE | |
| LOW | python/tests/test_generated_columns.py | 76 | CODE | |
| LOW | python/tests/test_cleanup.py | 39 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | python/tests/conftest.py | 53 | except Exception: | CODE |
| LOW | python/tests/test_tracing.py | 130 | except Exception as e: | CODE |
| LOW | python/tests/test_threaded.py | 38 | except Exception as e: | CODE |
| LOW | python/tests/test_threaded.py | 155 | except Exception as err: | CODE |
| LOW | python/tests/test_threaded.py | 171 | except Exception as err: | CODE |
| MEDIUM | python/tests/test_threaded.py | 146 | def run_update(): | CODE |
| LOW | python/tests/test_cleanup.py | 18 | except Exception as e: | CODE |
| MEDIUM | python/tests/test_cleanup.py | 19 | print(f"Error deleting directory {data_path}: {e}") | CODE |
| LOW | python/tests/test_benchmark.py | 200 | except Exception: | CODE |
| LOW | python/tests/test_delete_writer_properties.py | 111 | except Exception as e: | CODE |
| LOW | …/tests/pyspark_integration/test_s3_conflict_checker.py | 158 | except Exception as e: | CODE |
| LOW | …/tests/pyspark_integration/test_s3_conflict_checker.py | 272 | except Exception as e: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | python/tests/test_optimize.py | 432 | # Define the data for the first write | COMMENT |
| MEDIUM | python/tests/test_delete_writer_properties.py | 41 | # Create a Delta table - use write_deltalake like other tests | COMMENT |
| MEDIUM | python/tests/test_delete_writer_properties.py | 137 | # Create a Delta table | COMMENT |
| MEDIUM | .github/labeler.yml | 2 | # This file contains the defined labels for <https://github.com/actions/labeler> | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | python/README.md | 56 | # For authentication, set OTEL_EXPORTER_OTLP_HEADERS="x-honeycomb-team=your-api-key" | COMMENT |
| HIGH | python/deltalake/__init__.py | 75 | os.environ["OTEL_EXPORTER_OTLP_HEADERS"] = "x-honeycomb-team=your-api-key" | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | crates/core/src/protocol/checkpoints.rs | 145 | // Step 1: Find min_retention_version among DELTA_LOG files with ts >= cutoff_timestamp | COMMENT |
| LOW⚡ | crates/core/src/protocol/checkpoints.rs | 163 | // Step 2: Move keep_version down to the minimum version inside the retention period to make sure | COMMENT |
| LOW⚡ | crates/core/src/protocol/checkpoints.rs | 167 | // Step 3: Find safe checkpoint with checkpoint_version <= keep_version (no ts restriction) | COMMENT |
| LOW | crates/core/src/protocol/checkpoints.rs | 192 | // Step 4: Delete DELTA_LOG files where log_ver < safe_checkpoint_version && ts <= cutoff_timestamp | COMMENT |
| LOW | crates/core/src/kernel/transaction/conflict_checker.rs | 521 | // Here we need to check if the current transaction would have read the | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | crates/core/src/protocol/checkpoints.rs | 145 | // Step 1: Find min_retention_version among DELTA_LOG files with ts >= cutoff_timestamp | COMMENT |
| LOW⚡ | crates/core/src/protocol/checkpoints.rs | 163 | // Step 2: Move keep_version down to the minimum version inside the retention period to make sure | COMMENT |
| LOW⚡ | crates/core/src/protocol/checkpoints.rs | 167 | // Step 3: Find safe checkpoint with checkpoint_version <= keep_version (no ts restriction) | COMMENT |
| LOW | crates/core/src/protocol/checkpoints.rs | 192 | // Step 4: Delete DELTA_LOG files where log_ver < safe_checkpoint_version && ts <= cutoff_timestamp | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | python/bench/streamed_merge/generate.py | 279 | CODE | |
| LOW | python/deltalake/_util.py | 6 | CODE | |
| LOW | python/deltalake/table.py | 888 | CODE | |
| LOW | python/deltalake/writer/_conversion.py | 7 | CODE | |
| LOW | python/deltalake/writer/_conversion.py | 26 | CODE | |
| LOW | python/deltalake/writer/_conversion.py | 68 | CODE | |
| LOW | python/deltalake/writer/properties.py | 160 | CODE | |
| LOW | python/tests/test_writer.py | 1191 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | python/deltalake/query.py | 10 | logger = logging.getLogger(__name__) | CODE |
| LOW | python/deltalake/__init__.py | 140 | __all__ = [ | CODE |
| LOW | python/deltalake/exceptions.py | 9 | __all__ = [ | CODE |
| LOW | python/deltalake/table.py | 1394 | def update_incremental(self) -> None: | CODE |
| LOW | python/deltalake/schema.py | 13 | __all__ = [ | CODE |
| LOW | python/deltalake/writer/__init__.py | 9 | __all__ = [ | CODE |
| LOW | python/deltalake/fs/__init__.py | 3 | __all__ = ["DeltaStorageHandler"] | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | python/deltalake/table.py | 610 | Load the Change Data Feed (CDF) from the Delta table as a stream of record batches. Parameters: | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …/src/delta_datafusion/table_provider/next/scan/plan.rs | 8 | //! leverage predicates as best as possible both when integrating with | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | python/tests/test_writer.py | 2196 | # Check if it properly takes skippingNumIndexCols from the config in the table | COMMENT |
| LOW | python/tests/test_writer.py | 2296 | # Check if it properly takes skippingNumIndexCols from the config in the table | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | python/tests/test_benchmark.py | 17 | # NOTE: make sure to run these in release mode with | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | dev/release/update_change_log.sh | 9 | # Usage: | COMMENT |