deltacat 2.0.0.post3__tar.gz → 2.0.0.post4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {deltacat-2.0.0.post3/deltacat.egg-info → deltacat-2.0.0.post4}/PKG-INFO +4 -2
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/README.md +3 -1
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/__init__.py +1 -1
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/catalog/main/impl.py +12 -6
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/catalog/test_default_catalog_impl.py +306 -5
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4/deltacat.egg-info}/PKG-INFO +4 -2
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/LICENSE +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/MANIFEST.in +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/annotations.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/api.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/aws/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/aws/clients.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/aws/constants.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/aws/s3u.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/benchmarking/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/benchmarking/benchmark_engine.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/benchmarking/benchmark_parquet_reads.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/benchmarking/benchmark_report.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/benchmarking/benchmark_suite.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/benchmarking/conftest.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/benchmarking/data/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/benchmarking/data/random_row_generator.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/benchmarking/data/row_generator.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/benchmarking/test_benchmark_pipeline.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/catalog/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/catalog/delegate.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/catalog/interface.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/catalog/main/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/catalog/model/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/catalog/model/catalog.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/catalog/model/properties.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/catalog/model/table_definition.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/compactor/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/compactor/compaction_session.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/compactor/model/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/compactor/model/compact_partition_params.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/compactor/model/compaction_session_audit_info.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/compactor/model/compactor_version.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/compactor/model/dedupe_result.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/compactor/model/delta_annotated.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/compactor/model/delta_file_envelope.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/compactor/model/delta_file_locator.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/compactor/model/hash_bucket_result.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/compactor/model/materialize_result.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/compactor/model/primary_key_index.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/compactor/model/pyarrow_write_result.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/compactor/model/repartition_result.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/compactor/model/round_completion_info.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/compactor/model/table_object_store.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/compactor/repartition_session.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/compactor/steps/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/compactor/steps/dedupe.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/compactor/steps/hash_bucket.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/compactor/steps/materialize.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/compactor/steps/repartition.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/compactor/utils/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/compactor/utils/io.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/compactor/utils/primary_key_index.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/compactor/utils/round_completion_reader.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/compactor/utils/sort_key.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/compactor/utils/system_columns.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/compactor_v2/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/compactor_v2/compaction_session.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/compactor_v2/constants.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/compactor_v2/deletes/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/compactor_v2/deletes/delete_file_envelope.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/compactor_v2/deletes/delete_strategy.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/compactor_v2/deletes/delete_strategy_equality_delete.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/compactor_v2/deletes/model.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/compactor_v2/deletes/utils.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/compactor_v2/model/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/compactor_v2/model/evaluate_compaction_result.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/compactor_v2/model/hash_bucket_input.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/compactor_v2/model/hash_bucket_result.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/compactor_v2/model/merge_file_group.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/compactor_v2/model/merge_input.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/compactor_v2/model/merge_result.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/compactor_v2/private/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/compactor_v2/private/compaction_utils.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/compactor_v2/steps/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/compactor_v2/steps/hash_bucket.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/compactor_v2/steps/merge.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/compactor_v2/utils/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/compactor_v2/utils/content_type_params.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/compactor_v2/utils/dedupe.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/compactor_v2/utils/delta.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/compactor_v2/utils/io.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/compactor_v2/utils/merge.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/compactor_v2/utils/primary_key_index.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/compactor_v2/utils/task_options.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/converter/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/converter/constants.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/converter/converter_session.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/converter/model/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/converter/model/convert_input.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/converter/model/convert_input_files.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/converter/model/convert_result.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/converter/model/converter_session_params.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/converter/pyiceberg/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/converter/pyiceberg/catalog.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/converter/pyiceberg/overrides.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/converter/pyiceberg/update_snapshot_overrides.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/converter/steps/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/converter/steps/convert.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/converter/steps/dedupe.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/converter/utils/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/converter/utils/convert_task_options.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/converter/utils/converter_session_utils.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/converter/utils/iceberg_columns.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/converter/utils/io.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/converter/utils/s3u.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/janitor.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/jobs/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/jobs/client.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/resource_estimation/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/resource_estimation/delta.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/resource_estimation/manifest.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/resource_estimation/model.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/resource_estimation/parquet.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/stats/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/stats/models/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/stats/models/delta_column_stats.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/stats/models/delta_stats.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/stats/models/delta_stats_cache_result.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/stats/models/manifest_entry_stats.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/stats/models/stats_result.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/stats/types.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/constants.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/docs/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/docs/autogen/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/docs/autogen/schema/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/docs/autogen/schema/inference/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/docs/autogen/schema/inference/generate_type_mappings.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/docs/autogen/schema/inference/parse_json_type_mappings.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/env.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/examples/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/examples/basic_logging.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/examples/compactor/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/examples/compactor/aws/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/examples/compactor/bootstrap.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/examples/compactor/compactor.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/examples/compactor/explorer.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/examples/compactor/gcp/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/examples/compactor/job_runner.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/examples/compactor/utils/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/examples/compactor/utils/common.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/examples/experimental/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/examples/experimental/iceberg/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/examples/experimental/iceberg/converter/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/examples/experimental/iceberg/converter/beam/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/examples/experimental/iceberg/converter/beam/app.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/examples/experimental/iceberg/converter/beam/main.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/examples/experimental/iceberg/converter/beam/test_workflow.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/examples/experimental/iceberg/converter/beam/utils/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/examples/experimental/iceberg/converter/beam/utils/common.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/examples/experimental/iceberg/converter/beam/utils/spark.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/examples/experimental/iceberg/iceberg_bucket_writer.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/examples/experimental/iceberg/iceberg_reader.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/examples/hello_world.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/examples/indexer/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/examples/indexer/aws/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/examples/indexer/gcp/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/examples/indexer/indexer.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/examples/indexer/job_runner.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/exceptions.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/experimental/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/experimental/catalog/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/experimental/catalog/iceberg/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/experimental/catalog/iceberg/iceberg_catalog_config.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/experimental/catalog/iceberg/impl.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/experimental/catalog/iceberg/overrides.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/experimental/compatibility/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/experimental/compatibility/backfill_transaction_partitions.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/experimental/converter_agent/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/experimental/converter_agent/beam/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/experimental/converter_agent/beam/managed.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/experimental/converter_agent/table_monitor.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/experimental/daft/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/experimental/daft/daft_catalog.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/experimental/storage/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/experimental/storage/iceberg/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/experimental/storage/iceberg/iceberg_scan_planner.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/experimental/storage/iceberg/impl.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/experimental/storage/iceberg/model.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/experimental/storage/iceberg/visitor.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/experimental/storage/rivulet/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/experimental/storage/rivulet/arrow/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/experimental/storage/rivulet/arrow/serializer.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/experimental/storage/rivulet/dataset.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/experimental/storage/rivulet/dataset_executor.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/experimental/storage/rivulet/feather/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/experimental/storage/rivulet/feather/file_reader.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/experimental/storage/rivulet/feather/serializer.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/experimental/storage/rivulet/fs/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/experimental/storage/rivulet/fs/file_provider.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/experimental/storage/rivulet/fs/file_store.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/experimental/storage/rivulet/fs/input_file.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/experimental/storage/rivulet/fs/output_file.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/experimental/storage/rivulet/logical_plan.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/experimental/storage/rivulet/metastore/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/experimental/storage/rivulet/metastore/delta.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/experimental/storage/rivulet/metastore/json_sst.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/experimental/storage/rivulet/metastore/sst.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/experimental/storage/rivulet/metastore/sst_interval_tree.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/experimental/storage/rivulet/mvp/Table.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/experimental/storage/rivulet/mvp/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/experimental/storage/rivulet/parquet/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/experimental/storage/rivulet/parquet/data_reader.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/experimental/storage/rivulet/parquet/file_reader.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/experimental/storage/rivulet/parquet/serializer.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/experimental/storage/rivulet/reader/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/experimental/storage/rivulet/reader/block_scanner.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/experimental/storage/rivulet/reader/data_reader.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/experimental/storage/rivulet/reader/data_scan.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/experimental/storage/rivulet/reader/dataset_metastore.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/experimental/storage/rivulet/reader/dataset_reader.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/experimental/storage/rivulet/reader/pyarrow_data_reader.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/experimental/storage/rivulet/reader/query_expression.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/experimental/storage/rivulet/reader/reader_type_registrar.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/experimental/storage/rivulet/schema/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/experimental/storage/rivulet/schema/datatype.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/experimental/storage/rivulet/schema/schema.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/experimental/storage/rivulet/serializer.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/experimental/storage/rivulet/serializer_factory.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/experimental/storage/rivulet/shard/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/experimental/storage/rivulet/shard/range_shard.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/experimental/storage/rivulet/writer/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/experimental/storage/rivulet/writer/dataset_writer.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/experimental/storage/rivulet/writer/memtable_dataset_writer.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/io/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/io/dataset/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/io/dataset/deltacat_dataset.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/io/datasink/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/io/datasink/deltacat_datasink.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/io/datasource/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/io/datasource/deltacat_datasource.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/io/file_object_store.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/io/memcached_object_store.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/io/object_store.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/io/ray_plasma_object_store.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/io/reader/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/io/reader/deltacat_read_api.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/io/redis_object_store.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/io/s3_object_store.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/logs.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/storage/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/storage/interface.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/storage/main/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/storage/main/impl.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/storage/model/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/storage/model/delta.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/storage/model/expression/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/storage/model/expression/expression.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/storage/model/expression/visitor.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/storage/model/interop.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/storage/model/list_result.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/storage/model/locator.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/storage/model/manifest.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/storage/model/metafile.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/storage/model/namespace.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/storage/model/partition.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/storage/model/scan/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/storage/model/scan/push_down.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/storage/model/scan/scan_plan.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/storage/model/scan/scan_task.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/storage/model/schema.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/storage/model/shard.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/storage/model/sort_key.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/storage/model/stream.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/storage/model/table.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/storage/model/table_version.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/storage/model/transaction.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/storage/model/transform.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/storage/model/types.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/storage/util/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/storage/util/scan_planner.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/_io/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/_io/reader/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/_io/reader/test_deltacat_read_api.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/_io/test_cloudpickle_bug_fix.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/_io/test_file_object_store.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/_io/test_memcached_object_store.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/_io/test_ray_plasma_object_store.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/_io/test_redis_object_store.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/_io/test_s3_object_store.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/aws/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/aws/test_clients.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/aws/test_s3u.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/catalog/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/catalog/data/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/catalog/main/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/catalog/main/test_catalog_impl_namespace_operations.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/catalog/main/test_catalog_impl_table_operations.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/catalog/model/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/catalog/model/test_properties_transaction_migration.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/catalog/model/test_table_definition.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/catalog/test_catalogs.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/compute/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/compute/compact_partition_multiple_rounds_test_cases.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/compute/compact_partition_rebase_test_cases.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/compute/compact_partition_rebase_then_incremental_test_cases.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/compute/compact_partition_test_cases.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/compute/compactor/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/compute/compactor/steps/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/compute/compactor/steps/test_repartition.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/compute/compactor/utils/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/compute/compactor/utils/test_io.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/compute/compactor/utils/test_round_completion_reader.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/compute/compactor_v2/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/compute/compactor_v2/test_compaction_session.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/compute/compactor_v2/test_hashlib.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/compute/compactor_v2/utils/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/compute/compactor_v2/utils/test_content_type_params.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/compute/compactor_v2/utils/test_primary_key_index.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/compute/compactor_v2/utils/test_task_options.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/compute/conftest.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/compute/converter/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/compute/converter/conftest.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/compute/converter/test_convert_session.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/compute/converter/test_converter_commit_conflict_resolution.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/compute/converter/utils.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/compute/resource_estimation/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/compute/resource_estimation/data/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/compute/resource_estimation/test_delta.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/compute/resource_estimation/test_manifest.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/compute/test_compact_partition_incremental.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/compute/test_compact_partition_multiple_rounds.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/compute/test_compact_partition_params.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/compute/test_compact_partition_rebase.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/compute/test_compact_partition_rebase_then_incremental.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/compute/test_janitor.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/compute/test_util_common.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/compute/test_util_constant.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/conftest.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/daft/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/daft/test_model.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/experimental/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/experimental/catalog/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/experimental/catalog/iceberg/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/experimental/catalog/iceberg/test_iceberg_catalog.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/experimental/compatibility/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/experimental/compatibility/test_backfill_transaction_partitions.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/experimental/daft/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/experimental/daft/test_deltacat_daft_integration.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/experimental/storage/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/experimental/storage/rivulet/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/experimental/storage/rivulet/conftest.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/experimental/storage/rivulet/fs/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/experimental/storage/rivulet/fs/test_file_location_provider.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/experimental/storage/rivulet/reader/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/experimental/storage/rivulet/reader/query_expression.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/experimental/storage/rivulet/reader/test_data_scan.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/experimental/storage/rivulet/reader/test_dataset_metastore.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/experimental/storage/rivulet/schema/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/experimental/storage/rivulet/schema/test_schema.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/experimental/storage/rivulet/shard/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/experimental/storage/rivulet/shard/test_range_shard.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/experimental/storage/rivulet/test_dataset.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/experimental/storage/rivulet/test_manifest.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/experimental/storage/rivulet/test_sst_interval_tree.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/experimental/storage/rivulet/test_utils.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/experimental/storage/rivulet/writer/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/experimental/storage/rivulet/writer/test_dataset_write_then_read.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/experimental/storage/rivulet/writer/test_dataset_writer.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/experimental/storage/rivulet/writer/test_memtable_dataset_writer.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/storage/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/storage/main/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/storage/main/test_main_storage.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/storage/model/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/storage/model/test_delete_parameters.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/storage/model/test_expression.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/storage/model/test_manifest.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/storage/model/test_metafile_io.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/storage/model/test_partition_scheme.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/storage/model/test_schema.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/storage/model/test_schema_update.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/storage/model/test_shard.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/storage/model/test_sort_scheme.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/storage/model/test_table_version.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/storage/model/test_transaction.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/storage/model/test_transaction_history.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/test_deltacat_api.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/test_exceptions.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/test_logs.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/test_utils/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/test_utils/constants.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/test_utils/filesystem.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/test_utils/message_pack_utils.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/test_utils/pyarrow.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/test_utils/storage.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/test_utils/utils.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/types/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/types/test_tables.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/utils/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/utils/data/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/utils/exceptions.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/utils/main_deltacat_storage_mock.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/utils/ray_utils/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/utils/ray_utils/test_concurrency.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/utils/ray_utils/test_dataset.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/utils/test_cloudpickle.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/utils/test_daft.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/utils/test_filesystem.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/utils/test_metrics.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/utils/test_numpy.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/utils/test_pandas.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/utils/test_placement.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/utils/test_polars.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/utils/test_pyarrow.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/utils/test_record_batch_tables.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/utils/test_resources.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/types/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/types/media.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/types/partial_download.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/types/tables.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/utils/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/utils/arguments.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/utils/cloudpickle.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/utils/common.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/utils/daft.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/utils/export.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/utils/filesystem.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/utils/metafile_locator.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/utils/metrics.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/utils/numpy.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/utils/pandas.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/utils/performance.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/utils/placement.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/utils/polars.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/utils/pyarrow.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/utils/ray_utils/__init__.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/utils/ray_utils/collections.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/utils/ray_utils/concurrency.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/utils/ray_utils/dataset.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/utils/ray_utils/performance.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/utils/ray_utils/runtime.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/utils/reader_compatibility_mapping.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/utils/resources.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/utils/schema.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/utils/url.py +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat.egg-info/SOURCES.txt +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat.egg-info/dependency_links.txt +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat.egg-info/requires.txt +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat.egg-info/top_level.txt +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/setup.cfg +0 -0
- {deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/setup.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: deltacat
|
3
|
-
Version: 2.0.0.
|
3
|
+
Version: 2.0.0.post4
|
4
4
|
Summary: DeltaCAT is a portable Pythonic Data Lakehouse powered by Ray.
|
5
5
|
Home-page: https://github.com/ray-project/deltacat
|
6
6
|
Author: Ray Team
|
@@ -53,7 +53,7 @@ Dynamic: summary
|
|
53
53
|
<img src="https://github.com/ray-project/deltacat/raw/2.0/media/deltacat-logo-alpha-750.png" alt="deltacat logo" style="width:55%; height:auto; text-align: center;">
|
54
54
|
</p>
|
55
55
|
|
56
|
-
DeltaCAT is a portable Multimodal Lakehouse powered by [Ray](https://github.com/ray-project/ray), [Apache Arrow](https://github.com/apache/arrow), and [Daft](https://github.com/Eventual-Inc/Daft). It lets you create ACID-compliant multimodal data lakes [that efficiently scale to
|
56
|
+
DeltaCAT is a portable Multimodal Lakehouse powered by [Ray](https://github.com/ray-project/ray), [Apache Arrow](https://github.com/apache/arrow), and [Daft](https://github.com/Eventual-Inc/Daft). It lets you create ACID-compliant multimodal data lakes [that efficiently scale to exabytes of production data](https://aws.amazon.com/blogs/opensource/amazons-exabyte-scale-migration-from-apache-spark-to-ray-on-amazon-ec2/).
|
57
57
|
|
58
58
|
It provides data lake level transactions & time travel, zero-copy schema evolution, zero-copy multimodal file processing (image, audio, video, text, etc.), and transparent dataset optimization. It runs locally for rapid development or in the cloud for production workloads. It runs on any filesystem for easy setup and sharing - no external catalog services, lock managers, or key value stores required.
|
59
59
|
|
@@ -244,6 +244,7 @@ assert dc.dataset_length(daft_df) == 6
|
|
244
244
|
<details>
|
245
245
|
|
246
246
|
<summary><span style="font-size: 1.25em; font-weight: bold;">Ordered Writes</span></summary>
|
247
|
+
|
247
248
|
DeltaCAT writes are unordered by default, which means that the order of data written to the table isn't guaranteed to match the order that it is read back. While this is useful for preventing conflicts between concurrent writers, you can also use the **APPEND** write mode to preserve write order and raise explicit concurrency conflicts between parallel writers:
|
248
249
|
|
249
250
|
```python
|
@@ -301,6 +302,7 @@ print(pandas_df)
|
|
301
302
|
<details>
|
302
303
|
|
303
304
|
<summary><span style="font-size: 1.25em; font-weight: bold;">Schemaless Tables</span></summary>
|
305
|
+
|
304
306
|
Tables created automatically via `dc.write` have a schema inferred from the data written by default. However, if you create an empty table without providing a schema, it defaults to schemaless. Writes to schemaless tables are more efficient and flexible, since they simply track the location and basic metadata associated with the data files written to the table. However, if you know that a unified schema can be derived for your schemaless data, then you can you can still read it back as a structured dataset:
|
305
307
|
|
306
308
|
```python
|
@@ -2,7 +2,7 @@
|
|
2
2
|
<img src="https://github.com/ray-project/deltacat/raw/2.0/media/deltacat-logo-alpha-750.png" alt="deltacat logo" style="width:55%; height:auto; text-align: center;">
|
3
3
|
</p>
|
4
4
|
|
5
|
-
DeltaCAT is a portable Multimodal Lakehouse powered by [Ray](https://github.com/ray-project/ray), [Apache Arrow](https://github.com/apache/arrow), and [Daft](https://github.com/Eventual-Inc/Daft). It lets you create ACID-compliant multimodal data lakes [that efficiently scale to
|
5
|
+
DeltaCAT is a portable Multimodal Lakehouse powered by [Ray](https://github.com/ray-project/ray), [Apache Arrow](https://github.com/apache/arrow), and [Daft](https://github.com/Eventual-Inc/Daft). It lets you create ACID-compliant multimodal data lakes [that efficiently scale to exabytes of production data](https://aws.amazon.com/blogs/opensource/amazons-exabyte-scale-migration-from-apache-spark-to-ray-on-amazon-ec2/).
|
6
6
|
|
7
7
|
It provides data lake level transactions & time travel, zero-copy schema evolution, zero-copy multimodal file processing (image, audio, video, text, etc.), and transparent dataset optimization. It runs locally for rapid development or in the cloud for production workloads. It runs on any filesystem for easy setup and sharing - no external catalog services, lock managers, or key value stores required.
|
8
8
|
|
@@ -193,6 +193,7 @@ assert dc.dataset_length(daft_df) == 6
|
|
193
193
|
<details>
|
194
194
|
|
195
195
|
<summary><span style="font-size: 1.25em; font-weight: bold;">Ordered Writes</span></summary>
|
196
|
+
|
196
197
|
DeltaCAT writes are unordered by default, which means that the order of data written to the table isn't guaranteed to match the order that it is read back. While this is useful for preventing conflicts between concurrent writers, you can also use the **APPEND** write mode to preserve write order and raise explicit concurrency conflicts between parallel writers:
|
197
198
|
|
198
199
|
```python
|
@@ -250,6 +251,7 @@ print(pandas_df)
|
|
250
251
|
<details>
|
251
252
|
|
252
253
|
<summary><span style="font-size: 1.25em; font-weight: bold;">Schemaless Tables</span></summary>
|
254
|
+
|
253
255
|
Tables created automatically via `dc.write` have a schema inferred from the data written by default. However, if you create an empty table without providing a schema, it defaults to schemaless. Writes to schemaless tables are more efficient and flexible, since they simply track the location and basic metadata associated with the data files written to the table. However, if you know that a unified schema can be derived for your schemaless data, then you can you can still read it back as a structured dataset:
|
254
256
|
|
255
257
|
```python
|
@@ -1735,7 +1735,6 @@ def alter_table(
|
|
1735
1735
|
resolved_table_properties = None
|
1736
1736
|
if table_properties is not None:
|
1737
1737
|
resolved_table_properties = _add_default_table_properties(table_properties)
|
1738
|
-
_validate_table_properties(resolved_table_properties)
|
1739
1738
|
|
1740
1739
|
namespace = namespace or default_namespace()
|
1741
1740
|
|
@@ -1784,7 +1783,6 @@ def alter_table(
|
|
1784
1783
|
raise TableValidationError(
|
1785
1784
|
"Schema evolution is disabled for this table. Please enable schema evolution or remove schema updates."
|
1786
1785
|
)
|
1787
|
-
|
1788
1786
|
# Only update table version properties if they are explicitly provided
|
1789
1787
|
resolved_tv_properties = None
|
1790
1788
|
if table_version_properties is not None:
|
@@ -1797,7 +1795,10 @@ def alter_table(
|
|
1797
1795
|
table_version_properties,
|
1798
1796
|
default_tv_properties,
|
1799
1797
|
)
|
1800
|
-
|
1798
|
+
# Ensure all existing or new table version properties are valid
|
1799
|
+
_validate_table_properties(
|
1800
|
+
resolved_tv_properties or table_version.properties, table_version.schema
|
1801
|
+
)
|
1801
1802
|
|
1802
1803
|
# Apply schema updates if provided
|
1803
1804
|
updated_schema = None
|
@@ -1849,14 +1850,19 @@ def _add_default_table_properties(
|
|
1849
1850
|
|
1850
1851
|
def _validate_table_properties(
|
1851
1852
|
table_properties: TableProperties,
|
1853
|
+
table_schema: Optional[Schema],
|
1852
1854
|
) -> None:
|
1853
1855
|
read_optimization_level = table_properties.get(
|
1854
1856
|
TableProperty.READ_OPTIMIZATION_LEVEL,
|
1855
1857
|
TablePropertyDefaultValues[TableProperty.READ_OPTIMIZATION_LEVEL],
|
1856
1858
|
)
|
1857
|
-
|
1859
|
+
allowed_read_optimization_levels = [TableReadOptimizationLevel.MAX]
|
1860
|
+
if not table_schema or not table_schema.merge_keys:
|
1861
|
+
# schemaless tables and tables without merge keys don't require copy-on-write compaction
|
1862
|
+
allowed_read_optimization_levels.append(TableReadOptimizationLevel.NONE)
|
1863
|
+
if read_optimization_level not in allowed_read_optimization_levels:
|
1858
1864
|
raise NotImplementedError(
|
1859
|
-
f"Table read optimization level `{read_optimization_level} is not yet supported. Please use {
|
1865
|
+
f"Table read optimization level `{read_optimization_level}` is not yet supported. Please use {allowed_read_optimization_levels}"
|
1860
1866
|
)
|
1861
1867
|
|
1862
1868
|
|
@@ -1982,7 +1988,7 @@ def create_table(
|
|
1982
1988
|
table_version_properties, default_tv_properties
|
1983
1989
|
)
|
1984
1990
|
|
1985
|
-
_validate_table_properties(resolved_tv_properties)
|
1991
|
+
_validate_table_properties(resolved_tv_properties, schema)
|
1986
1992
|
|
1987
1993
|
(table, table_version, stream) = _get_storage(**kwargs).create_table_version(
|
1988
1994
|
namespace=namespace,
|
{deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/tests/catalog/test_default_catalog_impl.py
RENAMED
@@ -2041,6 +2041,283 @@ class TestCopyOnWrite:
|
|
2041
2041
|
actual_names == expected_names
|
2042
2042
|
), f"Expected names {expected_names}, but found {actual_names}"
|
2043
2043
|
|
2044
|
+
def test_append_delta_count_compaction_with_optimization_none(self):
|
2045
|
+
"""Test that compaction is NOT triggered when READ_OPTIMIZATION_LEVEL is NONE, even with delta count trigger."""
|
2046
|
+
table_name = "test_append_delta_compaction_none"
|
2047
|
+
|
2048
|
+
# Create table with READ_OPTIMIZATION_LEVEL=NONE and delta count trigger=2
|
2049
|
+
table_properties = {
|
2050
|
+
TableProperty.READ_OPTIMIZATION_LEVEL: TableReadOptimizationLevel.NONE,
|
2051
|
+
TableProperty.APPENDED_DELTA_COUNT_COMPACTION_TRIGGER: 2,
|
2052
|
+
# Set other triggers high so only delta count would trigger compaction (if enabled)
|
2053
|
+
TableProperty.APPENDED_RECORD_COUNT_COMPACTION_TRIGGER: 1000,
|
2054
|
+
TableProperty.APPENDED_FILE_COUNT_COMPACTION_TRIGGER: 1000,
|
2055
|
+
# Set hash bucket count to 1 to get a single compacted file (if compaction occurred)
|
2056
|
+
TableProperty.DEFAULT_COMPACTION_HASH_BUCKET_COUNT: 1,
|
2057
|
+
}
|
2058
|
+
|
2059
|
+
# Create table without merge keys (required for APPEND mode)
|
2060
|
+
dc.create_table(
|
2061
|
+
table=table_name,
|
2062
|
+
namespace=self.test_namespace,
|
2063
|
+
schema=create_basic_schema(), # No merge keys
|
2064
|
+
catalog=self.catalog_name,
|
2065
|
+
table_properties=table_properties,
|
2066
|
+
auto_create_namespace=True,
|
2067
|
+
)
|
2068
|
+
|
2069
|
+
# First APPEND write - should not trigger compaction yet
|
2070
|
+
first_data = pd.DataFrame(
|
2071
|
+
{
|
2072
|
+
"id": [1, 2],
|
2073
|
+
"name": ["Alice", "Bob"],
|
2074
|
+
"age": [25, 30],
|
2075
|
+
"city": ["NYC", "LA"],
|
2076
|
+
}
|
2077
|
+
)
|
2078
|
+
|
2079
|
+
dc.write_to_table(
|
2080
|
+
data=first_data,
|
2081
|
+
table=table_name,
|
2082
|
+
namespace=self.test_namespace,
|
2083
|
+
mode=TableWriteMode.APPEND,
|
2084
|
+
content_type=ContentType.PARQUET,
|
2085
|
+
catalog=self.catalog_name,
|
2086
|
+
auto_create_namespace=True,
|
2087
|
+
)
|
2088
|
+
|
2089
|
+
# Verify we have 1 delta after first write (no compaction yet)
|
2090
|
+
table_url = dc.DeltaCatUrl(
|
2091
|
+
f"dc://{self.catalog_name}/{self.test_namespace}/{table_name}"
|
2092
|
+
)
|
2093
|
+
objects_after_first = dc.list(table_url, recursive=True)
|
2094
|
+
|
2095
|
+
from deltacat.storage import Metafile, Delta
|
2096
|
+
|
2097
|
+
first_deltas = [
|
2098
|
+
obj for obj in objects_after_first if Metafile.get_class(obj) == Delta
|
2099
|
+
]
|
2100
|
+
assert (
|
2101
|
+
len(first_deltas) == 1
|
2102
|
+
), f"Expected 1 delta after first write, but found {len(first_deltas)}"
|
2103
|
+
|
2104
|
+
# Second APPEND write - should NOT trigger compaction due to READ_OPTIMIZATION_LEVEL=NONE
|
2105
|
+
second_data = pd.DataFrame(
|
2106
|
+
{
|
2107
|
+
"id": [3, 4],
|
2108
|
+
"name": ["Charlie", "Dave"],
|
2109
|
+
"age": [35, 40],
|
2110
|
+
"city": ["Chicago", "Houston"],
|
2111
|
+
}
|
2112
|
+
)
|
2113
|
+
|
2114
|
+
dc.write_to_table(
|
2115
|
+
data=second_data,
|
2116
|
+
table=table_name,
|
2117
|
+
namespace=self.test_namespace,
|
2118
|
+
mode=TableWriteMode.APPEND,
|
2119
|
+
content_type=ContentType.PARQUET,
|
2120
|
+
catalog=self.catalog_name,
|
2121
|
+
auto_create_namespace=True,
|
2122
|
+
)
|
2123
|
+
|
2124
|
+
# Use dc.list() to verify compaction did NOT occur
|
2125
|
+
# Key difference from the regular compaction test: we should have 2 deltas, not 1
|
2126
|
+
all_objects = dc.list(table_url, recursive=True)
|
2127
|
+
|
2128
|
+
# Filter for Delta objects
|
2129
|
+
final_deltas = [obj for obj in all_objects if Metafile.get_class(obj) == Delta]
|
2130
|
+
|
2131
|
+
# Key assertion: Should have 2 deltas since compaction was NOT triggered
|
2132
|
+
# This proves that READ_OPTIMIZATION_LEVEL=NONE prevents compaction
|
2133
|
+
assert (
|
2134
|
+
len(final_deltas) == 2
|
2135
|
+
), f"Expected 2 deltas (no compaction due to optimization level NONE), but found {len(final_deltas)}"
|
2136
|
+
|
2137
|
+
# Verify both deltas have sequential stream positions (APPEND mode)
|
2138
|
+
stream_positions = sorted([delta.stream_position for delta in final_deltas])
|
2139
|
+
assert stream_positions == [
|
2140
|
+
1,
|
2141
|
+
2,
|
2142
|
+
], f"Expected stream positions [1, 2], but found {stream_positions}"
|
2143
|
+
|
2144
|
+
# Verify both deltas are APPEND type
|
2145
|
+
for delta in final_deltas:
|
2146
|
+
assert (
|
2147
|
+
"append" in str(delta.type).lower()
|
2148
|
+
), f"Expected APPEND delta type, but found {delta.type}"
|
2149
|
+
|
2150
|
+
# Verify data integrity - should have all 4 records from both writes
|
2151
|
+
result = dc.read_table(
|
2152
|
+
table=table_name,
|
2153
|
+
namespace=self.test_namespace,
|
2154
|
+
catalog=self.catalog_name,
|
2155
|
+
)
|
2156
|
+
|
2157
|
+
# Should have all 4 records from both writes
|
2158
|
+
result_count = get_table_length(result)
|
2159
|
+
assert result_count == 4, f"Expected 4 records, but found {result_count}"
|
2160
|
+
|
2161
|
+
# Verify all records are present
|
2162
|
+
result_df = result.to_pandas() if hasattr(result, "to_pandas") else result
|
2163
|
+
expected_ids = {1, 2, 3, 4}
|
2164
|
+
actual_ids = set(result_df["id"].tolist())
|
2165
|
+
assert (
|
2166
|
+
actual_ids == expected_ids
|
2167
|
+
), f"Expected IDs {expected_ids}, but found {actual_ids}"
|
2168
|
+
|
2169
|
+
def test_add_delta_count_compaction_with_optimization_none(self):
|
2170
|
+
"""Test that compaction is NOT triggered when READ_OPTIMIZATION_LEVEL is NONE, even with delta count trigger."""
|
2171
|
+
table_name = "test_add_delta_compaction_none"
|
2172
|
+
|
2173
|
+
# Create table with READ_OPTIMIZATION_LEVEL=NONE and delta count trigger=2
|
2174
|
+
table_properties = {
|
2175
|
+
TableProperty.READ_OPTIMIZATION_LEVEL: TableReadOptimizationLevel.NONE,
|
2176
|
+
TableProperty.APPENDED_DELTA_COUNT_COMPACTION_TRIGGER: 2,
|
2177
|
+
# Set other triggers high so only delta count would trigger compaction (if enabled)
|
2178
|
+
TableProperty.APPENDED_RECORD_COUNT_COMPACTION_TRIGGER: 1000,
|
2179
|
+
TableProperty.APPENDED_FILE_COUNT_COMPACTION_TRIGGER: 1000,
|
2180
|
+
# Set hash bucket count to 1 to get a single compacted file (if compaction occurred)
|
2181
|
+
TableProperty.DEFAULT_COMPACTION_HASH_BUCKET_COUNT: 1,
|
2182
|
+
}
|
2183
|
+
|
2184
|
+
# Create table without merge keys (required for ADD mode)
|
2185
|
+
dc.create_table(
|
2186
|
+
table=table_name,
|
2187
|
+
namespace=self.test_namespace,
|
2188
|
+
schema=create_basic_schema(), # No merge keys
|
2189
|
+
catalog=self.catalog_name,
|
2190
|
+
table_properties=table_properties,
|
2191
|
+
auto_create_namespace=True,
|
2192
|
+
)
|
2193
|
+
|
2194
|
+
# First ADD write - should not trigger compaction yet
|
2195
|
+
first_data = pd.DataFrame(
|
2196
|
+
{
|
2197
|
+
"id": [1, 2],
|
2198
|
+
"name": ["Alice", "Bob"],
|
2199
|
+
"age": [25, 30],
|
2200
|
+
"city": ["NYC", "LA"],
|
2201
|
+
}
|
2202
|
+
)
|
2203
|
+
|
2204
|
+
dc.write_to_table(
|
2205
|
+
data=first_data,
|
2206
|
+
table=table_name,
|
2207
|
+
namespace=self.test_namespace,
|
2208
|
+
mode=TableWriteMode.ADD,
|
2209
|
+
content_type=ContentType.PARQUET,
|
2210
|
+
catalog=self.catalog_name,
|
2211
|
+
auto_create_namespace=True,
|
2212
|
+
)
|
2213
|
+
|
2214
|
+
# Verify we have 1 delta after first write (no compaction yet)
|
2215
|
+
table_url = dc.DeltaCatUrl(
|
2216
|
+
f"dc://{self.catalog_name}/{self.test_namespace}/{table_name}"
|
2217
|
+
)
|
2218
|
+
objects_after_first = dc.list(table_url, recursive=True)
|
2219
|
+
|
2220
|
+
from deltacat.storage import Metafile, Delta
|
2221
|
+
|
2222
|
+
first_deltas = [
|
2223
|
+
obj for obj in objects_after_first if Metafile.get_class(obj) == Delta
|
2224
|
+
]
|
2225
|
+
assert (
|
2226
|
+
len(first_deltas) == 1
|
2227
|
+
), f"Expected 1 delta after first write, but found {len(first_deltas)}"
|
2228
|
+
|
2229
|
+
# Verify that the first delta is ADD type
|
2230
|
+
first_delta = first_deltas[0]
|
2231
|
+
assert (
|
2232
|
+
"add" in str(first_delta.type).lower()
|
2233
|
+
), f"Expected ADD delta type, but found {first_delta.type}"
|
2234
|
+
|
2235
|
+
# Verify that ADD deltas have random stream positions (not sequential)
|
2236
|
+
first_stream_position = first_delta.stream_position
|
2237
|
+
assert (
|
2238
|
+
first_stream_position > 10000
|
2239
|
+
), f"Expected large random stream position for ADD delta, but found {first_stream_position}"
|
2240
|
+
|
2241
|
+
# Second ADD write - should NOT trigger compaction due to READ_OPTIMIZATION_LEVEL=NONE
|
2242
|
+
second_data = pd.DataFrame(
|
2243
|
+
{
|
2244
|
+
"id": [3, 4],
|
2245
|
+
"name": ["Charlie", "Dave"],
|
2246
|
+
"age": [35, 40],
|
2247
|
+
"city": ["Chicago", "Houston"],
|
2248
|
+
}
|
2249
|
+
)
|
2250
|
+
|
2251
|
+
dc.write_to_table(
|
2252
|
+
data=second_data,
|
2253
|
+
table=table_name,
|
2254
|
+
namespace=self.test_namespace,
|
2255
|
+
mode=TableWriteMode.ADD,
|
2256
|
+
content_type=ContentType.PARQUET,
|
2257
|
+
catalog=self.catalog_name,
|
2258
|
+
auto_create_namespace=True,
|
2259
|
+
)
|
2260
|
+
|
2261
|
+
# Use dc.list() to verify compaction did NOT occur
|
2262
|
+
# Key difference from the regular compaction test: we should have 2 deltas, not 1
|
2263
|
+
all_objects = dc.list(table_url, recursive=True)
|
2264
|
+
|
2265
|
+
# Filter for Delta objects
|
2266
|
+
final_deltas = [obj for obj in all_objects if Metafile.get_class(obj) == Delta]
|
2267
|
+
|
2268
|
+
# Key assertion: Should have 2 deltas since compaction was NOT triggered
|
2269
|
+
# This proves that READ_OPTIMIZATION_LEVEL=NONE prevents compaction
|
2270
|
+
assert (
|
2271
|
+
len(final_deltas) == 2
|
2272
|
+
), f"Expected 2 deltas (no compaction due to optimization level NONE), but found {len(final_deltas)}"
|
2273
|
+
|
2274
|
+
# Sort deltas by stream position for consistent verification
|
2275
|
+
sorted_deltas = sorted(final_deltas, key=lambda d: d.stream_position)
|
2276
|
+
|
2277
|
+
# Verify both deltas are ADD type
|
2278
|
+
for delta in sorted_deltas:
|
2279
|
+
assert (
|
2280
|
+
"add" in str(delta.type).lower()
|
2281
|
+
), f"Expected ADD delta type, but found {delta.type}"
|
2282
|
+
|
2283
|
+
# Verify both deltas have random stream positions (large numbers)
|
2284
|
+
for delta in sorted_deltas:
|
2285
|
+
assert (
|
2286
|
+
delta.stream_position > 10000
|
2287
|
+
), f"Expected large random stream position for ADD delta, but found {delta.stream_position}"
|
2288
|
+
|
2289
|
+
# Verify stream positions are unique (no duplicates)
|
2290
|
+
stream_positions = [delta.stream_position for delta in sorted_deltas]
|
2291
|
+
assert len(set(stream_positions)) == len(
|
2292
|
+
stream_positions
|
2293
|
+
), f"Expected unique random stream positions, but found duplicates: {stream_positions}"
|
2294
|
+
|
2295
|
+
# Verify data integrity - should have all 4 records from both writes
|
2296
|
+
result = dc.read_table(
|
2297
|
+
table=table_name,
|
2298
|
+
namespace=self.test_namespace,
|
2299
|
+
catalog=self.catalog_name,
|
2300
|
+
)
|
2301
|
+
|
2302
|
+
# Should have all 4 records from both writes
|
2303
|
+
result_count = get_table_length(result)
|
2304
|
+
assert result_count == 4, f"Expected 4 records, but found {result_count}"
|
2305
|
+
|
2306
|
+
# Verify all records are present (ADD mode preserves all records)
|
2307
|
+
result_df = result.to_pandas() if hasattr(result, "to_pandas") else result
|
2308
|
+
expected_ids = {1, 2, 3, 4}
|
2309
|
+
actual_ids = set(result_df["id"].tolist())
|
2310
|
+
assert (
|
2311
|
+
actual_ids == expected_ids
|
2312
|
+
), f"Expected IDs {expected_ids}, but found {actual_ids}"
|
2313
|
+
|
2314
|
+
# Verify records can be read in any order (ADD mode doesn't guarantee order)
|
2315
|
+
expected_names = {"Alice", "Bob", "Charlie", "Dave"}
|
2316
|
+
actual_names = set(result_df["name"].tolist())
|
2317
|
+
assert (
|
2318
|
+
actual_names == expected_names
|
2319
|
+
), f"Expected names {expected_names}, but found {actual_names}"
|
2320
|
+
|
2044
2321
|
def test_add_compaction_with_schema_evolution(self):
|
2045
2322
|
"""Test that ADD compaction handles schema evolution correctly with past_default values."""
|
2046
2323
|
table_name = "test_add_schema_evolution"
|
@@ -2456,6 +2733,30 @@ class TestCopyOnWrite:
|
|
2456
2733
|
), "Both tables should have same number of records"
|
2457
2734
|
assert get_table_length(add_result) == 2, "Both tables should have 2 records"
|
2458
2735
|
|
2736
|
+
def test_verify_merge_keys_require_read_optimization(self):
|
2737
|
+
"""Create a table with merge keys using the standard test schema."""
|
2738
|
+
table_name = "test_merge_keys_require_read_optimization"
|
2739
|
+
schema = create_schema_with_merge_keys()
|
2740
|
+
|
2741
|
+
# Create table properties with compaction disabled (currently required to merge updates/deletes)
|
2742
|
+
table_properties = {
|
2743
|
+
TableProperty.READ_OPTIMIZATION_LEVEL: TableReadOptimizationLevel.NONE,
|
2744
|
+
}
|
2745
|
+
|
2746
|
+
# Ensure that a NotImplementedError is raised since we can't currently merge updates w/o compaction
|
2747
|
+
with pytest.raises(NotImplementedError) as exc_info:
|
2748
|
+
dc.create_table(
|
2749
|
+
table=table_name,
|
2750
|
+
namespace=self.test_namespace,
|
2751
|
+
schema=schema,
|
2752
|
+
content_types=DEFAULT_CONTENT_TYPES,
|
2753
|
+
table_properties=table_properties,
|
2754
|
+
catalog=self.catalog_name,
|
2755
|
+
auto_create_namespace=True,
|
2756
|
+
)
|
2757
|
+
error_message = str(exc_info.value)
|
2758
|
+
assert "read optimization level `none` is not yet supported" in error_message
|
2759
|
+
|
2459
2760
|
def test_verify_delta_types_created(self):
|
2460
2761
|
"""
|
2461
2762
|
Verify that MERGE operations create UPSERT deltas as expected.
|
@@ -11082,7 +11383,7 @@ class TestTablePropertyInheritance:
|
|
11082
11383
|
|
11083
11384
|
# Define initial table properties
|
11084
11385
|
initial_table_properties: TableProperties = {
|
11085
|
-
TableProperty.READ_OPTIMIZATION_LEVEL: TableReadOptimizationLevel.
|
11386
|
+
TableProperty.READ_OPTIMIZATION_LEVEL: TableReadOptimizationLevel.NONE,
|
11086
11387
|
TableProperty.APPENDED_RECORD_COUNT_COMPACTION_TRIGGER: 1000,
|
11087
11388
|
TableProperty.APPENDED_FILE_COUNT_COMPACTION_TRIGGER: 100,
|
11088
11389
|
TableProperty.DEFAULT_COMPACTION_HASH_BUCKET_COUNT: 8,
|
@@ -11178,7 +11479,7 @@ class TestTablePropertyInheritance:
|
|
11178
11479
|
table_version_2.table_version.properties[
|
11179
11480
|
TableProperty.READ_OPTIMIZATION_LEVEL
|
11180
11481
|
]
|
11181
|
-
== TableReadOptimizationLevel.
|
11482
|
+
== TableReadOptimizationLevel.NONE
|
11182
11483
|
)
|
11183
11484
|
assert (
|
11184
11485
|
table_version_2.table_version.properties[
|
@@ -11197,7 +11498,7 @@ class TestTablePropertyInheritance:
|
|
11197
11498
|
|
11198
11499
|
# Define initial table properties
|
11199
11500
|
initial_table_properties: TableProperties = {
|
11200
|
-
TableProperty.READ_OPTIMIZATION_LEVEL: TableReadOptimizationLevel.MAX,
|
11501
|
+
TableProperty.READ_OPTIMIZATION_LEVEL: TableReadOptimizationLevel.MAX,
|
11201
11502
|
TableProperty.APPENDED_RECORD_COUNT_COMPACTION_TRIGGER: 500,
|
11202
11503
|
TableProperty.DEFAULT_COMPACTION_HASH_BUCKET_COUNT: 4, # Different from default 8
|
11203
11504
|
}
|
@@ -11245,7 +11546,7 @@ class TestTablePropertyInheritance:
|
|
11245
11546
|
|
11246
11547
|
# Update table properties
|
11247
11548
|
updated_table_properties: TableProperties = {
|
11248
|
-
TableProperty.READ_OPTIMIZATION_LEVEL: TableReadOptimizationLevel.
|
11549
|
+
TableProperty.READ_OPTIMIZATION_LEVEL: TableReadOptimizationLevel.NONE, # Changed from MAX
|
11249
11550
|
TableProperty.APPENDED_RECORD_COUNT_COMPACTION_TRIGGER: 1000, # Changed from 500
|
11250
11551
|
TableProperty.APPENDED_FILE_COUNT_COMPACTION_TRIGGER: 200, # New property
|
11251
11552
|
TableProperty.DEFAULT_COMPACTION_HASH_BUCKET_COUNT: 16, # Changed from 4
|
@@ -11375,7 +11676,7 @@ class TestTablePropertyInheritance:
|
|
11375
11676
|
|
11376
11677
|
# Define different table version properties
|
11377
11678
|
explicit_table_version_properties: TableVersionProperties = {
|
11378
|
-
TableProperty.READ_OPTIMIZATION_LEVEL: TableReadOptimizationLevel.
|
11679
|
+
TableProperty.READ_OPTIMIZATION_LEVEL: TableReadOptimizationLevel.NONE,
|
11379
11680
|
TableProperty.APPENDED_RECORD_COUNT_COMPACTION_TRIGGER: 500, # Different from table (1000)
|
11380
11681
|
TableProperty.DEFAULT_COMPACTION_HASH_BUCKET_COUNT: 16, # Different from table default
|
11381
11682
|
}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: deltacat
|
3
|
-
Version: 2.0.0.
|
3
|
+
Version: 2.0.0.post4
|
4
4
|
Summary: DeltaCAT is a portable Pythonic Data Lakehouse powered by Ray.
|
5
5
|
Home-page: https://github.com/ray-project/deltacat
|
6
6
|
Author: Ray Team
|
@@ -53,7 +53,7 @@ Dynamic: summary
|
|
53
53
|
<img src="https://github.com/ray-project/deltacat/raw/2.0/media/deltacat-logo-alpha-750.png" alt="deltacat logo" style="width:55%; height:auto; text-align: center;">
|
54
54
|
</p>
|
55
55
|
|
56
|
-
DeltaCAT is a portable Multimodal Lakehouse powered by [Ray](https://github.com/ray-project/ray), [Apache Arrow](https://github.com/apache/arrow), and [Daft](https://github.com/Eventual-Inc/Daft). It lets you create ACID-compliant multimodal data lakes [that efficiently scale to
|
56
|
+
DeltaCAT is a portable Multimodal Lakehouse powered by [Ray](https://github.com/ray-project/ray), [Apache Arrow](https://github.com/apache/arrow), and [Daft](https://github.com/Eventual-Inc/Daft). It lets you create ACID-compliant multimodal data lakes [that efficiently scale to exabytes of production data](https://aws.amazon.com/blogs/opensource/amazons-exabyte-scale-migration-from-apache-spark-to-ray-on-amazon-ec2/).
|
57
57
|
|
58
58
|
It provides data lake level transactions & time travel, zero-copy schema evolution, zero-copy multimodal file processing (image, audio, video, text, etc.), and transparent dataset optimization. It runs locally for rapid development or in the cloud for production workloads. It runs on any filesystem for easy setup and sharing - no external catalog services, lock managers, or key value stores required.
|
59
59
|
|
@@ -244,6 +244,7 @@ assert dc.dataset_length(daft_df) == 6
|
|
244
244
|
<details>
|
245
245
|
|
246
246
|
<summary><span style="font-size: 1.25em; font-weight: bold;">Ordered Writes</span></summary>
|
247
|
+
|
247
248
|
DeltaCAT writes are unordered by default, which means that the order of data written to the table isn't guaranteed to match the order that it is read back. While this is useful for preventing conflicts between concurrent writers, you can also use the **APPEND** write mode to preserve write order and raise explicit concurrency conflicts between parallel writers:
|
248
249
|
|
249
250
|
```python
|
@@ -301,6 +302,7 @@ print(pandas_df)
|
|
301
302
|
<details>
|
302
303
|
|
303
304
|
<summary><span style="font-size: 1.25em; font-weight: bold;">Schemaless Tables</span></summary>
|
305
|
+
|
304
306
|
Tables created automatically via `dc.write` have a schema inferred from the data written by default. However, if you create an empty table without providing a schema, it defaults to schemaless. Writes to schemaless tables are more efficient and flexible, since they simply track the location and basic metadata associated with the data files written to the table. However, if you know that a unified schema can be derived for your schemaless data, then you can you can still read it back as a structured dataset:
|
305
307
|
|
306
308
|
```python
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/benchmarking/benchmark_parquet_reads.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/benchmarking/data/random_row_generator.py
RENAMED
File without changes
|
File without changes
|
{deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/benchmarking/test_benchmark_pipeline.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/compactor/compaction_session.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/compactor/model/compactor_version.py
RENAMED
File without changes
|
{deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/compactor/model/dedupe_result.py
RENAMED
File without changes
|
{deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/compactor/model/delta_annotated.py
RENAMED
File without changes
|
File without changes
|
{deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/compactor/model/delta_file_locator.py
RENAMED
File without changes
|
{deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/compactor/model/hash_bucket_result.py
RENAMED
File without changes
|
{deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/compactor/model/materialize_result.py
RENAMED
File without changes
|
{deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/compactor/model/primary_key_index.py
RENAMED
File without changes
|
File without changes
|
{deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/compactor/model/repartition_result.py
RENAMED
File without changes
|
File without changes
|
{deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/compactor/model/table_object_store.py
RENAMED
File without changes
|
{deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/compactor/repartition_session.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/compactor/steps/hash_bucket.py
RENAMED
File without changes
|
{deltacat-2.0.0.post3 → deltacat-2.0.0.post4}/deltacat/compute/compactor/steps/materialize.py
RENAMED
File without changes
|