deltacat 1.1.35__tar.gz → 1.1.36__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.
Files changed (225) hide show
  1. {deltacat-1.1.35/deltacat.egg-info → deltacat-1.1.36}/PKG-INFO +1 -1
  2. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/__init__.py +1 -1
  3. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/compactor_v2/compaction_session.py +6 -3
  4. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/compactor_v2/model/merge_input.py +6 -0
  5. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/compactor_v2/private/compaction_utils.py +1 -0
  6. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/compactor_v2/steps/merge.py +53 -13
  7. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/compactor_v2/utils/merge.py +1 -0
  8. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/tests/compute/compactor_v2/test_compaction_session.py +1 -1
  9. {deltacat-1.1.35 → deltacat-1.1.36/deltacat.egg-info}/PKG-INFO +1 -1
  10. {deltacat-1.1.35 → deltacat-1.1.36}/LICENSE +0 -0
  11. {deltacat-1.1.35 → deltacat-1.1.36}/MANIFEST.in +0 -0
  12. {deltacat-1.1.35 → deltacat-1.1.36}/README.md +0 -0
  13. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/aws/__init__.py +0 -0
  14. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/aws/clients.py +0 -0
  15. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/aws/constants.py +0 -0
  16. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/aws/redshift/__init__.py +0 -0
  17. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/aws/redshift/model/__init__.py +0 -0
  18. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/aws/redshift/model/manifest.py +0 -0
  19. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/aws/s3u.py +0 -0
  20. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/benchmarking/__init__.py +0 -0
  21. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/benchmarking/benchmark_parquet_reads.py +0 -0
  22. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/benchmarking/conftest.py +0 -0
  23. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/catalog/__init__.py +0 -0
  24. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/catalog/default_catalog_impl/__init__.py +0 -0
  25. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/catalog/delegate.py +0 -0
  26. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/catalog/interface.py +0 -0
  27. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/catalog/model/__init__.py +0 -0
  28. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/catalog/model/catalog.py +0 -0
  29. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/catalog/model/table_definition.py +0 -0
  30. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/__init__.py +0 -0
  31. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/compactor/__init__.py +0 -0
  32. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/compactor/compaction_session.py +0 -0
  33. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/compactor/model/__init__.py +0 -0
  34. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/compactor/model/compact_partition_params.py +0 -0
  35. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/compactor/model/compaction_session_audit_info.py +0 -0
  36. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/compactor/model/compactor_version.py +0 -0
  37. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/compactor/model/dedupe_result.py +0 -0
  38. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/compactor/model/delta_annotated.py +0 -0
  39. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/compactor/model/delta_file_envelope.py +0 -0
  40. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/compactor/model/delta_file_locator.py +0 -0
  41. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/compactor/model/hash_bucket_result.py +0 -0
  42. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/compactor/model/materialize_result.py +0 -0
  43. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/compactor/model/primary_key_index.py +0 -0
  44. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/compactor/model/pyarrow_write_result.py +0 -0
  45. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/compactor/model/repartition_result.py +0 -0
  46. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/compactor/model/round_completion_info.py +0 -0
  47. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/compactor/model/table_object_store.py +0 -0
  48. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/compactor/repartition_session.py +0 -0
  49. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/compactor/steps/__init__.py +0 -0
  50. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/compactor/steps/dedupe.py +0 -0
  51. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/compactor/steps/hash_bucket.py +0 -0
  52. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/compactor/steps/materialize.py +0 -0
  53. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/compactor/steps/repartition.py +0 -0
  54. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/compactor/utils/__init__.py +0 -0
  55. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/compactor/utils/io.py +0 -0
  56. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/compactor/utils/primary_key_index.py +0 -0
  57. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/compactor/utils/round_completion_file.py +0 -0
  58. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/compactor/utils/sort_key.py +0 -0
  59. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/compactor/utils/system_columns.py +0 -0
  60. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/compactor_v2/__init__.py +0 -0
  61. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/compactor_v2/constants.py +0 -0
  62. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/compactor_v2/deletes/__init__.py +0 -0
  63. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/compactor_v2/deletes/delete_file_envelope.py +0 -0
  64. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/compactor_v2/deletes/delete_strategy.py +0 -0
  65. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/compactor_v2/deletes/delete_strategy_equality_delete.py +0 -0
  66. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/compactor_v2/deletes/model.py +0 -0
  67. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/compactor_v2/deletes/utils.py +0 -0
  68. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/compactor_v2/model/__init__.py +0 -0
  69. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/compactor_v2/model/evaluate_compaction_result.py +0 -0
  70. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/compactor_v2/model/hash_bucket_input.py +0 -0
  71. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/compactor_v2/model/hash_bucket_result.py +0 -0
  72. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/compactor_v2/model/merge_file_group.py +0 -0
  73. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/compactor_v2/model/merge_result.py +0 -0
  74. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/compactor_v2/private/__init__.py +0 -0
  75. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/compactor_v2/steps/__init__.py +0 -0
  76. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/compactor_v2/steps/hash_bucket.py +0 -0
  77. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/compactor_v2/utils/__init__.py +0 -0
  78. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/compactor_v2/utils/content_type_params.py +0 -0
  79. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/compactor_v2/utils/dedupe.py +0 -0
  80. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/compactor_v2/utils/delta.py +0 -0
  81. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/compactor_v2/utils/io.py +0 -0
  82. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/compactor_v2/utils/primary_key_index.py +0 -0
  83. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/compactor_v2/utils/task_options.py +0 -0
  84. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/merge_on_read/__init__.py +0 -0
  85. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/merge_on_read/daft.py +0 -0
  86. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/merge_on_read/model/__init__.py +0 -0
  87. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/merge_on_read/model/merge_on_read_params.py +0 -0
  88. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/merge_on_read/utils/__init__.py +0 -0
  89. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/merge_on_read/utils/delta.py +0 -0
  90. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/resource_estimation/__init__.py +0 -0
  91. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/resource_estimation/delta.py +0 -0
  92. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/resource_estimation/manifest.py +0 -0
  93. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/resource_estimation/model.py +0 -0
  94. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/resource_estimation/parquet.py +0 -0
  95. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/stats/__init__.py +0 -0
  96. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/stats/models/__init__.py +0 -0
  97. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/stats/models/delta_column_stats.py +0 -0
  98. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/stats/models/delta_stats.py +0 -0
  99. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/stats/models/delta_stats_cache_result.py +0 -0
  100. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/stats/models/manifest_entry_stats.py +0 -0
  101. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/stats/models/stats_result.py +0 -0
  102. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/compute/stats/types.py +0 -0
  103. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/constants.py +0 -0
  104. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/exceptions.py +0 -0
  105. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/io/__init__.py +0 -0
  106. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/io/aws/__init__.py +0 -0
  107. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/io/aws/redshift/__init__.py +0 -0
  108. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/io/dataset.py +0 -0
  109. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/io/file_object_store.py +0 -0
  110. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/io/memcached_object_store.py +0 -0
  111. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/io/object_store.py +0 -0
  112. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/io/ray_plasma_object_store.py +0 -0
  113. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/io/read_api.py +0 -0
  114. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/io/redis_object_store.py +0 -0
  115. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/io/s3_object_store.py +0 -0
  116. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/logs.py +0 -0
  117. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/storage/__init__.py +0 -0
  118. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/storage/interface.py +0 -0
  119. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/storage/model/__init__.py +0 -0
  120. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/storage/model/delete_parameters.py +0 -0
  121. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/storage/model/delta.py +0 -0
  122. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/storage/model/list_result.py +0 -0
  123. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/storage/model/locator.py +0 -0
  124. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/storage/model/namespace.py +0 -0
  125. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/storage/model/partition.py +0 -0
  126. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/storage/model/partition_spec.py +0 -0
  127. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/storage/model/sort_key.py +0 -0
  128. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/storage/model/stream.py +0 -0
  129. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/storage/model/table.py +0 -0
  130. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/storage/model/table_version.py +0 -0
  131. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/storage/model/transform.py +0 -0
  132. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/storage/model/types.py +0 -0
  133. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/tests/__init__.py +0 -0
  134. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/tests/aws/__init__.py +0 -0
  135. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/tests/aws/test_clients.py +0 -0
  136. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/tests/aws/test_s3u.py +0 -0
  137. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/tests/catalog/__init__.py +0 -0
  138. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/tests/catalog/test_default_catalog_impl.py +0 -0
  139. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/tests/compute/__init__.py +0 -0
  140. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/tests/compute/compact_partition_multiple_rounds_test_cases.py +0 -0
  141. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/tests/compute/compact_partition_rebase_test_cases.py +0 -0
  142. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/tests/compute/compact_partition_rebase_then_incremental_test_cases.py +0 -0
  143. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/tests/compute/compact_partition_test_cases.py +0 -0
  144. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/tests/compute/compactor/__init__.py +0 -0
  145. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/tests/compute/compactor/steps/__init__.py +0 -0
  146. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/tests/compute/compactor/steps/test_repartition.py +0 -0
  147. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/tests/compute/compactor/utils/__init__.py +0 -0
  148. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/tests/compute/compactor/utils/test_io.py +0 -0
  149. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/tests/compute/compactor/utils/test_round_completion_file.py +0 -0
  150. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/tests/compute/compactor_v2/__init__.py +0 -0
  151. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/tests/compute/compactor_v2/test_hashlib.py +0 -0
  152. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/tests/compute/compactor_v2/utils/__init__.py +0 -0
  153. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/tests/compute/compactor_v2/utils/test_content_type_params.py +0 -0
  154. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/tests/compute/compactor_v2/utils/test_primary_key_index.py +0 -0
  155. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/tests/compute/compactor_v2/utils/test_task_options.py +0 -0
  156. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/tests/compute/resource_estimation/__init__.py +0 -0
  157. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/tests/compute/resource_estimation/data/__init__.py +0 -0
  158. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/tests/compute/resource_estimation/test_delta.py +0 -0
  159. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/tests/compute/resource_estimation/test_manifest.py +0 -0
  160. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/tests/compute/test_compact_partition_incremental.py +0 -0
  161. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/tests/compute/test_compact_partition_multiple_rounds.py +0 -0
  162. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/tests/compute/test_compact_partition_params.py +0 -0
  163. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/tests/compute/test_compact_partition_rebase.py +0 -0
  164. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/tests/compute/test_compact_partition_rebase_then_incremental.py +0 -0
  165. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/tests/compute/test_util_common.py +0 -0
  166. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/tests/compute/test_util_constant.py +0 -0
  167. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/tests/compute/test_util_create_table_deltas_repo.py +0 -0
  168. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/tests/io/__init__.py +0 -0
  169. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/tests/io/test_cloudpickle_bug_fix.py +0 -0
  170. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/tests/io/test_file_object_store.py +0 -0
  171. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/tests/io/test_memcached_object_store.py +0 -0
  172. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/tests/io/test_ray_plasma_object_store.py +0 -0
  173. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/tests/io/test_redis_object_store.py +0 -0
  174. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/tests/io/test_s3_object_store.py +0 -0
  175. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/tests/local_deltacat_storage/__init__.py +0 -0
  176. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/tests/local_deltacat_storage/exceptions.py +0 -0
  177. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/tests/test_exceptions.py +0 -0
  178. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/tests/test_logs.py +0 -0
  179. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/tests/test_utils/__init__.py +0 -0
  180. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/tests/test_utils/constants.py +0 -0
  181. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/tests/test_utils/pyarrow.py +0 -0
  182. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/tests/test_utils/storage.py +0 -0
  183. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/tests/test_utils/utils.py +0 -0
  184. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/tests/utils/__init__.py +0 -0
  185. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/tests/utils/data/__init__.py +0 -0
  186. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/tests/utils/ray_utils/__init__.py +0 -0
  187. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/tests/utils/ray_utils/test_concurrency.py +0 -0
  188. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/tests/utils/ray_utils/test_dataset.py +0 -0
  189. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/tests/utils/test_cloudpickle.py +0 -0
  190. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/tests/utils/test_daft.py +0 -0
  191. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/tests/utils/test_metrics.py +0 -0
  192. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/tests/utils/test_placement.py +0 -0
  193. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/tests/utils/test_pyarrow.py +0 -0
  194. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/tests/utils/test_record_batch_tables.py +0 -0
  195. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/tests/utils/test_resources.py +0 -0
  196. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/types/__init__.py +0 -0
  197. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/types/media.py +0 -0
  198. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/types/partial_download.py +0 -0
  199. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/types/tables.py +0 -0
  200. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/utils/__init__.py +0 -0
  201. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/utils/arguments.py +0 -0
  202. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/utils/cloudpickle.py +0 -0
  203. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/utils/common.py +0 -0
  204. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/utils/daft.py +0 -0
  205. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/utils/metrics.py +0 -0
  206. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/utils/numpy.py +0 -0
  207. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/utils/pandas.py +0 -0
  208. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/utils/performance.py +0 -0
  209. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/utils/placement.py +0 -0
  210. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/utils/pyarrow.py +0 -0
  211. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/utils/ray_utils/__init__.py +0 -0
  212. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/utils/ray_utils/collections.py +0 -0
  213. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/utils/ray_utils/concurrency.py +0 -0
  214. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/utils/ray_utils/dataset.py +0 -0
  215. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/utils/ray_utils/performance.py +0 -0
  216. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/utils/ray_utils/runtime.py +0 -0
  217. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/utils/resources.py +0 -0
  218. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/utils/s3fs.py +0 -0
  219. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat/utils/schema.py +0 -0
  220. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat.egg-info/SOURCES.txt +0 -0
  221. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat.egg-info/dependency_links.txt +0 -0
  222. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat.egg-info/requires.txt +0 -0
  223. {deltacat-1.1.35 → deltacat-1.1.36}/deltacat.egg-info/top_level.txt +0 -0
  224. {deltacat-1.1.35 → deltacat-1.1.36}/setup.cfg +0 -0
  225. {deltacat-1.1.35 → deltacat-1.1.36}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: deltacat
3
- Version: 1.1.35
3
+ Version: 1.1.36
4
4
  Summary: A scalable, fast, ACID-compliant Data Catalog powered by Ray.
5
5
  Home-page: https://github.com/ray-project/deltacat
6
6
  Author: Ray Team
@@ -44,7 +44,7 @@ from deltacat.types.tables import TableWriteMode
44
44
 
45
45
  deltacat.logs.configure_deltacat_logger(logging.getLogger(__name__))
46
46
 
47
- __version__ = "1.1.35"
47
+ __version__ = "1.1.36"
48
48
 
49
49
 
50
50
  __all__ = [
@@ -69,14 +69,17 @@ def compact_partition(params: CompactPartitionParams, **kwargs) -> Optional[str]
69
69
  assert (
70
70
  params.hash_bucket_count is not None and params.hash_bucket_count >= 1
71
71
  ), "hash_bucket_count is a required arg for compactor v2"
72
+ assert type(params.hash_bucket_count) is int, "Hash bucket count must be an integer"
72
73
  if params.num_rounds > 1:
73
74
  assert (
74
75
  not params.drop_duplicates
75
76
  ), "num_rounds > 1, drop_duplicates must be False but is True"
76
77
 
77
- with memray.Tracker(
78
- "compaction_partition.bin"
79
- ) if params.enable_profiler else nullcontext():
78
+ with (
79
+ memray.Tracker("compaction_partition.bin")
80
+ if params.enable_profiler
81
+ else nullcontext()
82
+ ):
80
83
  execute_compaction_result: ExecutionCompactionResult = _execute_compaction(
81
84
  params,
82
85
  **kwargs,
@@ -48,6 +48,7 @@ class MergeInput(Dict):
48
48
  deltacat_storage_kwargs: Optional[Dict[str, Any]] = None,
49
49
  memory_logs_enabled: Optional[bool] = None,
50
50
  disable_copy_by_reference: Optional[bool] = None,
51
+ hash_bucket_count: Optional[int] = None,
51
52
  ) -> MergeInput:
52
53
 
53
54
  result = MergeInput()
@@ -71,6 +72,7 @@ class MergeInput(Dict):
71
72
  result["deltacat_storage_kwargs"] = deltacat_storage_kwargs or {}
72
73
  result["memory_logs_enabled"] = memory_logs_enabled
73
74
  result["disable_copy_by_reference"] = disable_copy_by_reference
75
+ result["hash_bucket_count"] = hash_bucket_count
74
76
  return result
75
77
 
76
78
  @property
@@ -154,3 +156,7 @@ class MergeInput(Dict):
154
156
  @property
155
157
  def disable_copy_by_reference(self) -> bool:
156
158
  return self["disable_copy_by_reference"]
159
+
160
+ @property
161
+ def hash_bucket_count(self) -> int:
162
+ return self["hash_bucket_count"]
@@ -438,6 +438,7 @@ def _merge(
438
438
  delete_file_envelopes=delete_file_envelopes,
439
439
  memory_logs_enabled=params.memory_logs_enabled,
440
440
  disable_copy_by_reference=params.disable_copy_by_reference,
441
+ hash_bucket_count=params.hash_bucket_count,
441
442
  )
442
443
  }
443
444
 
@@ -62,6 +62,10 @@ if importlib.util.find_spec("memray"):
62
62
  logger = logs.configure_deltacat_logger(logging.getLogger(__name__))
63
63
 
64
64
 
65
+ _EXISTING_VARIANT_LOG_PREFIX = "Existing variant "
66
+ _INCREMENTAL_TABLE_LOG_PREFIX = "Incremental table "
67
+
68
+
65
69
  def _append_delta_type_column(table: pa.Table, value: np.bool_):
66
70
  return table.append_column(
67
71
  sc._DELTA_TYPE_COLUMN_FIELD,
@@ -112,6 +116,8 @@ def _merge_tables(
112
116
  table: pa.Table,
113
117
  primary_keys: List[str],
114
118
  can_drop_duplicates: bool,
119
+ hb_index: int,
120
+ num_buckets: int,
115
121
  compacted_table: Optional[pa.Table] = None,
116
122
  ) -> pa.Table:
117
123
  """
@@ -130,6 +136,20 @@ def _merge_tables(
130
136
 
131
137
  all_tables.append(table)
132
138
 
139
+ check_bucketing_spec = BUCKETING_SPEC_COMPLIANCE_PROFILE in [
140
+ BUCKETING_SPEC_COMPLIANCE_PRINT_LOG,
141
+ BUCKETING_SPEC_COMPLIANCE_ASSERT,
142
+ ]
143
+
144
+ if primary_keys and check_bucketing_spec:
145
+ _validate_bucketing_spec_compliance(
146
+ table=all_tables[incremental_idx],
147
+ num_buckets=num_buckets,
148
+ primary_keys=primary_keys,
149
+ hb_index=hb_index,
150
+ log_prefix=_INCREMENTAL_TABLE_LOG_PREFIX,
151
+ )
152
+
133
153
  if not primary_keys or not can_drop_duplicates:
134
154
  logger.info(
135
155
  f"Not dropping duplicates for primary keys={primary_keys} "
@@ -193,27 +213,40 @@ def _merge_tables(
193
213
 
194
214
 
195
215
  def _validate_bucketing_spec_compliance(
196
- table: pa.Table, rcf: RoundCompletionInfo, hb_index: int, primary_keys: List[str]
216
+ table: pa.Table,
217
+ num_buckets: int,
218
+ hb_index: int,
219
+ primary_keys: List[str],
220
+ rcf: RoundCompletionInfo = None,
221
+ log_prefix=None,
197
222
  ) -> None:
223
+ if rcf is not None:
224
+ message_prefix = f"{log_prefix}{rcf.compacted_delta_locator.namespace}.{rcf.compacted_delta_locator.table_name}.{rcf.compacted_delta_locator.table_version}.{rcf.compacted_delta_locator.partition_id}.{rcf.compacted_delta_locator.partition_values}"
225
+ else:
226
+ message_prefix = f"{log_prefix}"
198
227
  pki_table = generate_pk_hash_column(
199
228
  [table], primary_keys=primary_keys, requires_hash=True
200
229
  )[0]
230
+ is_not_compliant: bool = False
201
231
  for index, hash_value in enumerate(sc.pk_hash_string_column_np(pki_table)):
202
- hash_bucket = pk_digest_to_hash_bucket_index(hash_value, rcf.hash_bucket_count)
232
+ hash_bucket: int = pk_digest_to_hash_bucket_index(hash_value, num_buckets)
203
233
  if hash_bucket != hb_index:
234
+ is_not_compliant = True
204
235
  logger.info(
205
- f"{rcf.compacted_delta_locator.namespace}.{rcf.compacted_delta_locator.table_name}"
206
- f".{rcf.compacted_delta_locator.table_version}.{rcf.compacted_delta_locator.partition_id}"
207
- f".{rcf.compacted_delta_locator.partition_values} has non-compliant bucketing spec. "
236
+ f"{message_prefix} has non-compliant bucketing spec at index: {index} "
208
237
  f"Expected hash bucket is {hb_index} but found {hash_bucket}."
209
238
  )
210
239
  if BUCKETING_SPEC_COMPLIANCE_PROFILE == BUCKETING_SPEC_COMPLIANCE_ASSERT:
211
240
  raise AssertionError(
212
- "Hash bucket drift detected. Expected hash bucket index"
241
+ f"Hash bucket drift detected at index: {index}. Expected hash bucket index"
213
242
  f" to be {hb_index} but found {hash_bucket}"
214
243
  )
215
244
  # No further checks necessary
216
245
  break
246
+ if not is_not_compliant:
247
+ logger.debug(
248
+ f"{message_prefix} has compliant bucketing spec for hb_index: {hb_index}"
249
+ )
217
250
 
218
251
 
219
252
  def _download_compacted_table(
@@ -257,7 +290,12 @@ def _download_compacted_table(
257
290
  # Bucketing spec compliance isn't required without primary keys
258
291
  if primary_keys and check_bucketing_spec:
259
292
  _validate_bucketing_spec_compliance(
260
- compacted_table, rcf, hb_index, primary_keys
293
+ compacted_table,
294
+ rcf.hash_bucket_count,
295
+ hb_index,
296
+ primary_keys,
297
+ rcf=rcf,
298
+ log_prefix=_EXISTING_VARIANT_LOG_PREFIX,
261
299
  )
262
300
  return compacted_table
263
301
 
@@ -462,12 +500,12 @@ def _compact_tables(
462
500
  _group_sequence_by_delta_type(reordered_all_dfes)
463
501
  ):
464
502
  if delta_type is DeltaType.UPSERT:
465
- (
466
- table,
467
- incremental_len,
468
- deduped_records,
469
- merge_time,
470
- ) = _apply_upserts(input, delta_type_sequence, hb_idx, table)
503
+ (table, incremental_len, deduped_records, merge_time,) = _apply_upserts(
504
+ input=input,
505
+ dfe_list=delta_type_sequence,
506
+ hb_idx=hb_idx,
507
+ prev_table=table,
508
+ )
471
509
  logger.info(
472
510
  f" [Merge task index {input.merge_task_index}] Merged"
473
511
  f" record count: {len(table)}, size={table.nbytes} took: {merge_time}s"
@@ -526,6 +564,8 @@ def _apply_upserts(
526
564
  primary_keys=input.primary_keys,
527
565
  can_drop_duplicates=input.drop_duplicates,
528
566
  compacted_table=prev_table,
567
+ hb_index=hb_idx,
568
+ num_buckets=input.hash_bucket_count,
529
569
  )
530
570
  deduped_records = hb_table_record_count - len(table)
531
571
  return table, incremental_len, deduped_records, merge_time
@@ -133,4 +133,5 @@ def generate_local_merge_input(
133
133
  delete_strategy=delete_strategy,
134
134
  delete_file_envelopes=delete_file_envelopes,
135
135
  disable_copy_by_reference=params.disable_copy_by_reference,
136
+ hash_bucket_count=params.hash_bucket_count,
136
137
  )
@@ -804,7 +804,7 @@ class TestCompactionSession:
804
804
  )
805
805
 
806
806
  assert (
807
- "Hash bucket drift detected. Expected hash bucket index to be 1 but found 0"
807
+ "Hash bucket drift detected at index: 0. Expected hash bucket index to be 1 but found 0"
808
808
  in str(excinfo.value)
809
809
  )
810
810
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: deltacat
3
- Version: 1.1.35
3
+ Version: 1.1.36
4
4
  Summary: A scalable, fast, ACID-compliant Data Catalog powered by Ray.
5
5
  Home-page: https://github.com/ray-project/deltacat
6
6
  Author: Ray Team
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes