deltacat 1.1.25__tar.gz → 1.1.27__tar.gz

Sign up to get free protection for your applications and to get access to all the features.
Files changed (223) hide show
  1. {deltacat-1.1.25/deltacat.egg-info → deltacat-1.1.27}/PKG-INFO +1 -1
  2. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/__init__.py +1 -1
  3. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/compactor_v2/private/compaction_utils.py +6 -6
  4. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/resource_estimation/delta.py +1 -1
  5. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/io/memcached_object_store.py +6 -1
  6. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/io/redis_object_store.py +15 -0
  7. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/tests/compute/resource_estimation/test_delta.py +37 -0
  8. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/tests/compute/test_compact_partition_incremental.py +10 -0
  9. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/tests/compute/test_compact_partition_multiple_rounds.py +12 -5
  10. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/tests/compute/test_compact_partition_rebase.py +11 -0
  11. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/tests/compute/test_compact_partition_rebase_then_incremental.py +10 -0
  12. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/tests/io/test_redis_object_store.py +12 -0
  13. {deltacat-1.1.25 → deltacat-1.1.27/deltacat.egg-info}/PKG-INFO +1 -1
  14. {deltacat-1.1.25 → deltacat-1.1.27}/LICENSE +0 -0
  15. {deltacat-1.1.25 → deltacat-1.1.27}/MANIFEST.in +0 -0
  16. {deltacat-1.1.25 → deltacat-1.1.27}/README.md +0 -0
  17. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/aws/__init__.py +0 -0
  18. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/aws/clients.py +0 -0
  19. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/aws/constants.py +0 -0
  20. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/aws/redshift/__init__.py +0 -0
  21. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/aws/redshift/model/__init__.py +0 -0
  22. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/aws/redshift/model/manifest.py +0 -0
  23. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/aws/s3u.py +0 -0
  24. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/benchmarking/__init__.py +0 -0
  25. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/benchmarking/benchmark_parquet_reads.py +0 -0
  26. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/benchmarking/conftest.py +0 -0
  27. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/catalog/__init__.py +0 -0
  28. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/catalog/default_catalog_impl/__init__.py +0 -0
  29. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/catalog/delegate.py +0 -0
  30. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/catalog/interface.py +0 -0
  31. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/catalog/model/__init__.py +0 -0
  32. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/catalog/model/catalog.py +0 -0
  33. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/catalog/model/table_definition.py +0 -0
  34. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/__init__.py +0 -0
  35. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/compactor/__init__.py +0 -0
  36. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/compactor/compaction_session.py +0 -0
  37. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/compactor/model/__init__.py +0 -0
  38. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/compactor/model/compact_partition_params.py +0 -0
  39. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/compactor/model/compaction_session_audit_info.py +0 -0
  40. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/compactor/model/compactor_version.py +0 -0
  41. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/compactor/model/dedupe_result.py +0 -0
  42. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/compactor/model/delta_annotated.py +0 -0
  43. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/compactor/model/delta_file_envelope.py +0 -0
  44. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/compactor/model/delta_file_locator.py +0 -0
  45. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/compactor/model/hash_bucket_result.py +0 -0
  46. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/compactor/model/materialize_result.py +0 -0
  47. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/compactor/model/primary_key_index.py +0 -0
  48. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/compactor/model/pyarrow_write_result.py +0 -0
  49. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/compactor/model/repartition_result.py +0 -0
  50. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/compactor/model/round_completion_info.py +0 -0
  51. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/compactor/model/table_object_store.py +0 -0
  52. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/compactor/repartition_session.py +0 -0
  53. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/compactor/steps/__init__.py +0 -0
  54. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/compactor/steps/dedupe.py +0 -0
  55. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/compactor/steps/hash_bucket.py +0 -0
  56. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/compactor/steps/materialize.py +0 -0
  57. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/compactor/steps/repartition.py +0 -0
  58. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/compactor/utils/__init__.py +0 -0
  59. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/compactor/utils/io.py +0 -0
  60. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/compactor/utils/primary_key_index.py +0 -0
  61. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/compactor/utils/round_completion_file.py +0 -0
  62. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/compactor/utils/sort_key.py +0 -0
  63. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/compactor/utils/system_columns.py +0 -0
  64. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/compactor_v2/__init__.py +0 -0
  65. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/compactor_v2/compaction_session.py +0 -0
  66. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/compactor_v2/constants.py +0 -0
  67. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/compactor_v2/deletes/__init__.py +0 -0
  68. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/compactor_v2/deletes/delete_file_envelope.py +0 -0
  69. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/compactor_v2/deletes/delete_strategy.py +0 -0
  70. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/compactor_v2/deletes/delete_strategy_equality_delete.py +0 -0
  71. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/compactor_v2/deletes/model.py +0 -0
  72. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/compactor_v2/deletes/utils.py +0 -0
  73. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/compactor_v2/model/__init__.py +0 -0
  74. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/compactor_v2/model/evaluate_compaction_result.py +0 -0
  75. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/compactor_v2/model/hash_bucket_input.py +0 -0
  76. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/compactor_v2/model/hash_bucket_result.py +0 -0
  77. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/compactor_v2/model/merge_file_group.py +0 -0
  78. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/compactor_v2/model/merge_input.py +0 -0
  79. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/compactor_v2/model/merge_result.py +0 -0
  80. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/compactor_v2/private/__init__.py +0 -0
  81. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/compactor_v2/steps/__init__.py +0 -0
  82. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/compactor_v2/steps/hash_bucket.py +0 -0
  83. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/compactor_v2/steps/merge.py +0 -0
  84. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/compactor_v2/utils/__init__.py +0 -0
  85. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/compactor_v2/utils/content_type_params.py +0 -0
  86. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/compactor_v2/utils/dedupe.py +0 -0
  87. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/compactor_v2/utils/delta.py +0 -0
  88. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/compactor_v2/utils/io.py +0 -0
  89. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/compactor_v2/utils/merge.py +0 -0
  90. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/compactor_v2/utils/primary_key_index.py +0 -0
  91. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/compactor_v2/utils/task_options.py +0 -0
  92. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/merge_on_read/__init__.py +0 -0
  93. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/merge_on_read/daft.py +0 -0
  94. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/merge_on_read/model/__init__.py +0 -0
  95. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/merge_on_read/model/merge_on_read_params.py +0 -0
  96. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/merge_on_read/utils/__init__.py +0 -0
  97. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/merge_on_read/utils/delta.py +0 -0
  98. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/resource_estimation/__init__.py +0 -0
  99. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/resource_estimation/manifest.py +0 -0
  100. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/resource_estimation/model.py +0 -0
  101. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/resource_estimation/parquet.py +0 -0
  102. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/stats/__init__.py +0 -0
  103. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/stats/models/__init__.py +0 -0
  104. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/stats/models/delta_column_stats.py +0 -0
  105. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/stats/models/delta_stats.py +0 -0
  106. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/stats/models/delta_stats_cache_result.py +0 -0
  107. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/stats/models/manifest_entry_stats.py +0 -0
  108. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/stats/models/stats_result.py +0 -0
  109. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/compute/stats/types.py +0 -0
  110. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/constants.py +0 -0
  111. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/exceptions.py +0 -0
  112. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/io/__init__.py +0 -0
  113. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/io/aws/__init__.py +0 -0
  114. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/io/aws/redshift/__init__.py +0 -0
  115. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/io/dataset.py +0 -0
  116. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/io/file_object_store.py +0 -0
  117. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/io/object_store.py +0 -0
  118. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/io/ray_plasma_object_store.py +0 -0
  119. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/io/read_api.py +0 -0
  120. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/io/s3_object_store.py +0 -0
  121. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/logs.py +0 -0
  122. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/storage/__init__.py +0 -0
  123. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/storage/interface.py +0 -0
  124. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/storage/model/__init__.py +0 -0
  125. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/storage/model/delete_parameters.py +0 -0
  126. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/storage/model/delta.py +0 -0
  127. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/storage/model/list_result.py +0 -0
  128. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/storage/model/locator.py +0 -0
  129. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/storage/model/namespace.py +0 -0
  130. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/storage/model/partition.py +0 -0
  131. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/storage/model/partition_spec.py +0 -0
  132. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/storage/model/sort_key.py +0 -0
  133. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/storage/model/stream.py +0 -0
  134. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/storage/model/table.py +0 -0
  135. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/storage/model/table_version.py +0 -0
  136. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/storage/model/transform.py +0 -0
  137. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/storage/model/types.py +0 -0
  138. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/tests/__init__.py +0 -0
  139. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/tests/aws/__init__.py +0 -0
  140. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/tests/aws/test_clients.py +0 -0
  141. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/tests/aws/test_s3u.py +0 -0
  142. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/tests/catalog/__init__.py +0 -0
  143. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/tests/catalog/test_default_catalog_impl.py +0 -0
  144. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/tests/compute/__init__.py +0 -0
  145. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/tests/compute/compact_partition_multiple_rounds_test_cases.py +0 -0
  146. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/tests/compute/compact_partition_rebase_test_cases.py +0 -0
  147. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/tests/compute/compact_partition_rebase_then_incremental_test_cases.py +0 -0
  148. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/tests/compute/compact_partition_test_cases.py +0 -0
  149. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/tests/compute/compactor/__init__.py +0 -0
  150. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/tests/compute/compactor/steps/__init__.py +0 -0
  151. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/tests/compute/compactor/steps/test_repartition.py +0 -0
  152. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/tests/compute/compactor/utils/__init__.py +0 -0
  153. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/tests/compute/compactor/utils/test_io.py +0 -0
  154. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/tests/compute/compactor/utils/test_round_completion_file.py +0 -0
  155. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/tests/compute/compactor_v2/__init__.py +0 -0
  156. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/tests/compute/compactor_v2/test_compaction_session.py +0 -0
  157. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/tests/compute/compactor_v2/test_hashlib.py +0 -0
  158. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/tests/compute/compactor_v2/utils/__init__.py +0 -0
  159. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/tests/compute/compactor_v2/utils/test_task_options.py +0 -0
  160. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/tests/compute/resource_estimation/__init__.py +0 -0
  161. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/tests/compute/resource_estimation/data/__init__.py +0 -0
  162. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/tests/compute/resource_estimation/test_manifest.py +0 -0
  163. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/tests/compute/test_compact_partition_params.py +0 -0
  164. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/tests/compute/test_util_common.py +0 -0
  165. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/tests/compute/test_util_constant.py +0 -0
  166. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/tests/compute/test_util_create_table_deltas_repo.py +0 -0
  167. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/tests/io/__init__.py +0 -0
  168. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/tests/io/test_cloudpickle_bug_fix.py +0 -0
  169. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/tests/io/test_file_object_store.py +0 -0
  170. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/tests/io/test_memcached_object_store.py +0 -0
  171. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/tests/io/test_ray_plasma_object_store.py +0 -0
  172. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/tests/io/test_s3_object_store.py +0 -0
  173. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/tests/local_deltacat_storage/__init__.py +0 -0
  174. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/tests/local_deltacat_storage/exceptions.py +0 -0
  175. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/tests/test_exceptions.py +0 -0
  176. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/tests/test_logs.py +0 -0
  177. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/tests/test_utils/__init__.py +0 -0
  178. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/tests/test_utils/constants.py +0 -0
  179. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/tests/test_utils/pyarrow.py +0 -0
  180. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/tests/test_utils/storage.py +0 -0
  181. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/tests/test_utils/utils.py +0 -0
  182. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/tests/utils/__init__.py +0 -0
  183. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/tests/utils/data/__init__.py +0 -0
  184. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/tests/utils/ray_utils/__init__.py +0 -0
  185. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/tests/utils/ray_utils/test_concurrency.py +0 -0
  186. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/tests/utils/ray_utils/test_dataset.py +0 -0
  187. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/tests/utils/test_cloudpickle.py +0 -0
  188. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/tests/utils/test_daft.py +0 -0
  189. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/tests/utils/test_metrics.py +0 -0
  190. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/tests/utils/test_placement.py +0 -0
  191. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/tests/utils/test_pyarrow.py +0 -0
  192. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/tests/utils/test_record_batch_tables.py +0 -0
  193. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/tests/utils/test_resources.py +0 -0
  194. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/types/__init__.py +0 -0
  195. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/types/media.py +0 -0
  196. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/types/partial_download.py +0 -0
  197. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/types/tables.py +0 -0
  198. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/utils/__init__.py +0 -0
  199. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/utils/arguments.py +0 -0
  200. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/utils/cloudpickle.py +0 -0
  201. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/utils/common.py +0 -0
  202. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/utils/daft.py +0 -0
  203. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/utils/metrics.py +0 -0
  204. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/utils/numpy.py +0 -0
  205. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/utils/pandas.py +0 -0
  206. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/utils/performance.py +0 -0
  207. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/utils/placement.py +0 -0
  208. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/utils/pyarrow.py +0 -0
  209. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/utils/ray_utils/__init__.py +0 -0
  210. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/utils/ray_utils/collections.py +0 -0
  211. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/utils/ray_utils/concurrency.py +0 -0
  212. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/utils/ray_utils/dataset.py +0 -0
  213. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/utils/ray_utils/performance.py +0 -0
  214. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/utils/ray_utils/runtime.py +0 -0
  215. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/utils/resources.py +0 -0
  216. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/utils/s3fs.py +0 -0
  217. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat/utils/schema.py +0 -0
  218. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat.egg-info/SOURCES.txt +0 -0
  219. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat.egg-info/dependency_links.txt +0 -0
  220. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat.egg-info/requires.txt +0 -0
  221. {deltacat-1.1.25 → deltacat-1.1.27}/deltacat.egg-info/top_level.txt +0 -0
  222. {deltacat-1.1.25 → deltacat-1.1.27}/setup.cfg +0 -0
  223. {deltacat-1.1.25 → deltacat-1.1.27}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: deltacat
3
- Version: 1.1.25
3
+ Version: 1.1.27
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.25"
47
+ __version__ = "1.1.27"
48
48
 
49
49
 
50
50
  __all__ = [
@@ -227,7 +227,6 @@ def _run_hash_and_merge(
227
227
  previous_compacted_delta_manifest: Optional[Manifest],
228
228
  compacted_partition: Partition,
229
229
  ) -> List[MergeResult]:
230
- created_obj_ids = set()
231
230
  telemetry_time_hb = 0
232
231
  total_input_records_count = np.int64(0)
233
232
  total_hb_record_count = np.int64(0)
@@ -289,7 +288,6 @@ def _run_hash_and_merge(
289
288
  hb_result.hash_bucket_group_to_obj_id_tuple
290
289
  ):
291
290
  if object_id_size_tuple:
292
- created_obj_ids.add(object_id_size_tuple[0])
293
291
  all_hash_group_idx_to_obj_id[hash_group_index].append(
294
292
  object_id_size_tuple[0],
295
293
  )
@@ -369,10 +367,9 @@ def _run_hash_and_merge(
369
367
  )
370
368
  if params.num_rounds > 1:
371
369
  logger.info(
372
- f"Detected number of rounds to be {params.num_rounds}, "
373
- f"preparing to delete {len(created_obj_ids)} objects from object store..."
370
+ f"Detected number of rounds to be {params.num_rounds}, preparing to clear object store..."
374
371
  )
375
- params.object_store.delete_many(list(created_obj_ids))
372
+ params.object_store.clear()
376
373
  else:
377
374
  logger.info(
378
375
  f"Detected number of rounds to be {params.num_rounds}, not cleaning up object store..."
@@ -587,8 +584,11 @@ def _process_merge_results(
587
584
  f"Duplicate record count ({duplicate_hash_bucket_mat_results}) is as large "
588
585
  f"as or greater than params.num_rounds, which is {params.num_rounds}"
589
586
  )
587
+ # ensure start index is the first file index if task index is same
590
588
  hb_id_to_entry_indices_range[str(mat_result.task_index)] = (
591
- file_index,
589
+ hb_id_to_entry_indices_range.get(str(mat_result.task_index), [file_index])[
590
+ 0
591
+ ],
592
592
  file_index + mat_result.pyarrow_write_result.files,
593
593
  )
594
594
 
@@ -188,7 +188,7 @@ def _estimate_resources_required_to_process_delta_using_file_sampling(
188
188
  sampled_on_disk_size += delta.manifest.entries[entry_index].meta.content_length
189
189
  sampled_num_rows += len(tbl)
190
190
 
191
- if not sampled_on_disk_size:
191
+ if not sampled_on_disk_size or not sampled_in_memory_size:
192
192
  return EstimatedResources.of(
193
193
  memory_bytes=0,
194
194
  statistics=Statistics.of(
@@ -205,7 +205,8 @@ class MemcachedObjectStore(IObjectStore):
205
205
  except BaseException:
206
206
  # if an exception is raised then all, some, or none of the keys may have been deleted
207
207
  logger.warning(
208
- f"Failed to fully delete refs: {current_refs}", exc_info=True
208
+ f"Failed to fully delete {len(current_refs)} refs for ip: {ip}",
209
+ exc_info=True,
209
210
  )
210
211
  all_deleted = False
211
212
 
@@ -224,6 +225,7 @@ class MemcachedObjectStore(IObjectStore):
224
225
  return all_deleted
225
226
 
226
227
  def clear(self) -> bool:
228
+ start = time.monotonic()
227
229
  flushed = all(
228
230
  [
229
231
  self._get_client_by_ip(ip).flush_all(noreply=False)
@@ -231,10 +233,13 @@ class MemcachedObjectStore(IObjectStore):
231
233
  ]
232
234
  )
233
235
  self.client_cache.clear()
236
+ end = time.monotonic()
234
237
 
235
238
  if flushed:
236
239
  logger.info("Successfully cleared cache contents.")
237
240
 
241
+ logger.info(f"The total time taken to clear the cache is: {end - start}")
242
+
238
243
  return flushed
239
244
 
240
245
  def close(self) -> None:
@@ -115,6 +115,21 @@ class RedisObjectStore(IObjectStore):
115
115
 
116
116
  return num_deleted == len(refs)
117
117
 
118
+ def clear(self) -> bool:
119
+ start = time.monotonic()
120
+ current_ip = self._get_current_ip()
121
+ client = self._get_client_by_ip(current_ip)
122
+ flushed = client.flushall()
123
+ self.client_cache.clear()
124
+ end = time.monotonic()
125
+
126
+ if flushed:
127
+ logger.info("Successfully cleared cache contents.")
128
+
129
+ logger.info(f"The total time taken to clear the cache is: {end - start}")
130
+
131
+ return flushed
132
+
118
133
  def _get_client_by_ip(self, ip_address: str):
119
134
  if ip_address in self.client_cache:
120
135
  return self.client_cache[ip_address]
@@ -437,6 +437,43 @@ class TestEstimateResourcesRequiredToProcessDelta:
437
437
  == parquet_delta_with_manifest.meta.content_length
438
438
  )
439
439
 
440
+ def test_parquet_delta_when_file_sampling_and_arrow_size_zero(
441
+ self,
442
+ local_deltacat_storage_kwargs,
443
+ parquet_delta_with_manifest: Delta,
444
+ monkeypatch,
445
+ ):
446
+ params = EstimateResourcesParams.of(
447
+ resource_estimation_method=ResourceEstimationMethod.FILE_SAMPLING,
448
+ max_files_to_sample=2,
449
+ )
450
+
451
+ def mock_func(*args, **kwargs):
452
+ class MockedValue:
453
+ nbytes = 0
454
+
455
+ def __len__(self):
456
+ return 0
457
+
458
+ return MockedValue()
459
+
460
+ monkeypatch.setattr(ds, "download_delta_manifest_entry", mock_func)
461
+
462
+ result = estimate_resources_required_to_process_delta(
463
+ delta=parquet_delta_with_manifest,
464
+ operation_type=OperationType.PYARROW_DOWNLOAD,
465
+ deltacat_storage=ds,
466
+ deltacat_storage_kwargs=local_deltacat_storage_kwargs,
467
+ estimate_resources_params=params,
468
+ )
469
+
470
+ assert parquet_delta_with_manifest.manifest is not None
471
+ assert result.memory_bytes == 0
472
+ assert (
473
+ result.statistics.on_disk_size_bytes
474
+ == parquet_delta_with_manifest.meta.content_length
475
+ )
476
+
440
477
  def test_delta_manifest_utsv_when_file_sampling(
441
478
  self, local_deltacat_storage_kwargs, utsv_delta_with_manifest: Delta
442
479
  ):
@@ -328,6 +328,16 @@ def test_compact_partition_incremental(
328
328
  **compaction_audit_obj
329
329
  )
330
330
 
331
+ # assert if RCF covers all files
332
+ if compactor_version != CompactorVersion.V1.value:
333
+ previous_end = None
334
+ for start, end in round_completion_info.hb_index_to_entry_range.values():
335
+ assert (previous_end is None and start == 0) or start == previous_end
336
+ previous_end = end
337
+ assert (
338
+ previous_end == round_completion_info.compacted_pyarrow_write_result.files
339
+ )
340
+
331
341
  tables = ds.download_delta(
332
342
  compacted_delta_locator, storage_type=StorageType.LOCAL, **ds_mock_kwargs
333
343
  )
@@ -290,7 +290,7 @@ def test_compact_partition_rebase_multiple_rounds_same_source_and_destination(
290
290
  execute_compaction_result_spy = mocker.spy(
291
291
  ExecutionCompactionResult, "__init__"
292
292
  )
293
- object_store_delete_many_spy = mocker.spy(FileObjectStore, "delete_many")
293
+ object_store_clear_spy = mocker.spy(FileObjectStore, "clear")
294
294
 
295
295
  # execute
296
296
  rcf_file_s3_uri = benchmark(compact_partition_func, compact_partition_params)
@@ -309,6 +309,16 @@ def test_compact_partition_rebase_multiple_rounds_same_source_and_destination(
309
309
  **compaction_audit_obj
310
310
  )
311
311
 
312
+ # assert if RCF covers all files
313
+ # multiple rounds feature is only supported in V2 compactor
314
+ previous_end = None
315
+ for start, end in round_completion_info.hb_index_to_entry_range.values():
316
+ assert (previous_end is None and start == 0) or start == previous_end
317
+ previous_end = end
318
+ assert (
319
+ previous_end == round_completion_info.compacted_pyarrow_write_result.files
320
+ )
321
+
312
322
  # Assert not in-place compacted
313
323
  assert (
314
324
  execute_compaction_result_spy.call_args.args[-1] is False
@@ -339,8 +349,5 @@ def test_compact_partition_rebase_multiple_rounds_same_source_and_destination(
339
349
  if assert_compaction_audit:
340
350
  if not assert_compaction_audit(compactor_version, compaction_audit):
341
351
  assert False, "Compaction audit assertion failed"
342
- assert os.listdir(test_dir) == []
343
- assert (
344
- object_store_delete_many_spy.call_count
345
- ), "Object store was never cleaned up!"
352
+ assert object_store_clear_spy.call_count, "Object store was never cleaned up!"
346
353
  return
@@ -299,6 +299,17 @@ def test_compact_partition_rebase_same_source_and_destination(
299
299
  round_completion_info.compaction_audit_url
300
300
  )
301
301
 
302
+ # assert if RCF covers all files
303
+ if compactor_version != CompactorVersion.V1.value:
304
+ previous_end = None
305
+ for start, end in round_completion_info.hb_index_to_entry_range.values():
306
+ assert (previous_end is None and start == 0) or start == previous_end
307
+ previous_end = end
308
+ assert (
309
+ previous_end
310
+ == round_completion_info.compacted_pyarrow_write_result.files
311
+ )
312
+
302
313
  compaction_audit_obj: Dict[str, Any] = read_s3_contents(
303
314
  s3_resource, audit_bucket, audit_key
304
315
  )
@@ -355,6 +355,16 @@ def test_compact_partition_rebase_then_incremental(
355
355
  compacted_delta_locator_incremental: DeltaLocator = (
356
356
  round_completion_info.compacted_delta_locator
357
357
  )
358
+ # assert if RCF covers all files
359
+ if compactor_version != CompactorVersion.V1.value:
360
+ previous_end = None
361
+ for start, end in round_completion_info.hb_index_to_entry_range.values():
362
+ assert (previous_end is None and start == 0) or start == previous_end
363
+ previous_end = end
364
+ assert (
365
+ previous_end == round_completion_info.compacted_pyarrow_write_result.files
366
+ )
367
+
358
368
  audit_bucket, audit_key = round_completion_info.compaction_audit_url.replace(
359
369
  "s3://", ""
360
370
  ).split("/", 1)
@@ -121,3 +121,15 @@ class TestRedisObjectStore(unittest.TestCase):
121
121
 
122
122
  self.assertTrue(delete_success)
123
123
  self.assertEqual(2, mock_client.Redis.return_value.delete.call_count)
124
+
125
+ @mock.patch("deltacat.io.redis_object_store.redis")
126
+ def test_clear_sanity(self, mock_client):
127
+ # setup
128
+ mock_client.Redis.return_value.flushall.side_effect = [True]
129
+
130
+ # action
131
+ clear_success = self.object_store.clear()
132
+
133
+ # assert
134
+ self.assertTrue(clear_success)
135
+ self.assertEqual(1, mock_client.Redis.return_value.flushall.call_count)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: deltacat
3
- Version: 1.1.25
3
+ Version: 1.1.27
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