deltacat 1.1.1__tar.gz → 1.1.3__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 (216) hide show
  1. {deltacat-1.1.1 → deltacat-1.1.3}/PKG-INFO +1 -1
  2. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/__init__.py +1 -1
  3. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/aws/clients.py +12 -2
  4. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/aws/constants.py +5 -1
  5. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/aws/s3u.py +8 -1
  6. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/compactor_v2/constants.py +28 -0
  7. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/compactor_v2/deletes/utils.py +3 -0
  8. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/compactor_v2/steps/hash_bucket.py +9 -2
  9. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/compactor_v2/steps/merge.py +9 -2
  10. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/compactor_v2/utils/io.py +3 -0
  11. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/compactor_v2/utils/merge.py +3 -0
  12. deltacat-1.1.3/deltacat/tests/utils/test_metrics.py +502 -0
  13. deltacat-1.1.3/deltacat/utils/metrics.py +353 -0
  14. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat.egg-info/PKG-INFO +1 -1
  15. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat.egg-info/SOURCES.txt +1 -0
  16. deltacat-1.1.1/deltacat/utils/metrics.py +0 -201
  17. {deltacat-1.1.1 → deltacat-1.1.3}/MANIFEST.in +0 -0
  18. {deltacat-1.1.1 → deltacat-1.1.3}/README.md +0 -0
  19. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/aws/__init__.py +0 -0
  20. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/aws/redshift/__init__.py +0 -0
  21. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/aws/redshift/model/__init__.py +0 -0
  22. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/aws/redshift/model/manifest.py +0 -0
  23. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/benchmarking/__init__.py +0 -0
  24. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/benchmarking/benchmark_parquet_reads.py +0 -0
  25. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/benchmarking/conftest.py +0 -0
  26. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/catalog/__init__.py +0 -0
  27. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/catalog/default_catalog_impl/__init__.py +0 -0
  28. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/catalog/delegate.py +0 -0
  29. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/catalog/interface.py +0 -0
  30. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/catalog/model/__init__.py +0 -0
  31. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/catalog/model/catalog.py +0 -0
  32. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/catalog/model/table_definition.py +0 -0
  33. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/__init__.py +0 -0
  34. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/compactor/__init__.py +0 -0
  35. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/compactor/compaction_session.py +0 -0
  36. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/compactor/model/__init__.py +0 -0
  37. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/compactor/model/compact_partition_params.py +0 -0
  38. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/compactor/model/compaction_session_audit_info.py +0 -0
  39. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/compactor/model/compactor_version.py +0 -0
  40. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/compactor/model/dedupe_result.py +0 -0
  41. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/compactor/model/delta_annotated.py +0 -0
  42. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/compactor/model/delta_file_envelope.py +0 -0
  43. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/compactor/model/delta_file_locator.py +0 -0
  44. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/compactor/model/hash_bucket_result.py +0 -0
  45. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/compactor/model/materialize_result.py +0 -0
  46. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/compactor/model/primary_key_index.py +0 -0
  47. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/compactor/model/pyarrow_write_result.py +0 -0
  48. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/compactor/model/repartition_result.py +0 -0
  49. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/compactor/model/round_completion_info.py +0 -0
  50. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/compactor/model/table_object_store.py +0 -0
  51. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/compactor/repartition_session.py +0 -0
  52. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/compactor/steps/__init__.py +0 -0
  53. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/compactor/steps/dedupe.py +0 -0
  54. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/compactor/steps/hash_bucket.py +0 -0
  55. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/compactor/steps/materialize.py +0 -0
  56. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/compactor/steps/repartition.py +0 -0
  57. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/compactor/utils/__init__.py +0 -0
  58. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/compactor/utils/io.py +0 -0
  59. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/compactor/utils/primary_key_index.py +0 -0
  60. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/compactor/utils/round_completion_file.py +0 -0
  61. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/compactor/utils/sort_key.py +0 -0
  62. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/compactor/utils/system_columns.py +0 -0
  63. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/compactor_v2/__init__.py +0 -0
  64. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/compactor_v2/compaction_session.py +0 -0
  65. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/compactor_v2/deletes/__init__.py +0 -0
  66. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/compactor_v2/deletes/delete_file_envelope.py +0 -0
  67. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/compactor_v2/deletes/delete_strategy.py +0 -0
  68. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/compactor_v2/deletes/delete_strategy_equality_delete.py +0 -0
  69. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/compactor_v2/deletes/model.py +0 -0
  70. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/compactor_v2/model/__init__.py +0 -0
  71. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/compactor_v2/model/hash_bucket_input.py +0 -0
  72. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/compactor_v2/model/hash_bucket_result.py +0 -0
  73. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/compactor_v2/model/merge_file_group.py +0 -0
  74. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/compactor_v2/model/merge_input.py +0 -0
  75. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/compactor_v2/model/merge_result.py +0 -0
  76. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/compactor_v2/steps/__init__.py +0 -0
  77. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/compactor_v2/utils/__init__.py +0 -0
  78. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/compactor_v2/utils/content_type_params.py +0 -0
  79. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/compactor_v2/utils/dedupe.py +0 -0
  80. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/compactor_v2/utils/delta.py +0 -0
  81. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/compactor_v2/utils/primary_key_index.py +0 -0
  82. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/compactor_v2/utils/task_options.py +0 -0
  83. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/merge_on_read/__init__.py +0 -0
  84. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/merge_on_read/daft.py +0 -0
  85. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/merge_on_read/model/__init__.py +0 -0
  86. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/merge_on_read/model/merge_on_read_params.py +0 -0
  87. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/merge_on_read/utils/__init__.py +0 -0
  88. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/merge_on_read/utils/delta.py +0 -0
  89. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/metastats/__init__.py +0 -0
  90. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/metastats/config/__init__.py +0 -0
  91. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/metastats/meta_stats.py +0 -0
  92. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/metastats/model/__init__.py +0 -0
  93. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/metastats/model/partition_stats_dict.py +0 -0
  94. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/metastats/model/stats_cluster_size_estimator.py +0 -0
  95. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/metastats/stats.py +0 -0
  96. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/metastats/utils/__init__.py +0 -0
  97. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/metastats/utils/constants.py +0 -0
  98. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/metastats/utils/io.py +0 -0
  99. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/metastats/utils/pyarrow_memory_estimation_function.py +0 -0
  100. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/metastats/utils/ray_utils.py +0 -0
  101. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/stats/__init__.py +0 -0
  102. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/stats/basic.py +0 -0
  103. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/stats/models/__init__.py +0 -0
  104. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/stats/models/delta_column_stats.py +0 -0
  105. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/stats/models/delta_stats.py +0 -0
  106. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/stats/models/delta_stats_cache_result.py +0 -0
  107. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/stats/models/manifest_entry_stats.py +0 -0
  108. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/stats/models/stats_result.py +0 -0
  109. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/stats/types.py +0 -0
  110. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/stats/utils/__init__.py +0 -0
  111. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/stats/utils/intervals.py +0 -0
  112. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/stats/utils/io.py +0 -0
  113. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/compute/stats/utils/manifest_stats_file.py +0 -0
  114. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/constants.py +0 -0
  115. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/exceptions.py +0 -0
  116. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/io/__init__.py +0 -0
  117. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/io/aws/__init__.py +0 -0
  118. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/io/aws/redshift/__init__.py +0 -0
  119. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/io/aws/redshift/redshift_datasource.py +0 -0
  120. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/io/dataset.py +0 -0
  121. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/io/file_object_store.py +0 -0
  122. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/io/memcached_object_store.py +0 -0
  123. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/io/object_store.py +0 -0
  124. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/io/ray_plasma_object_store.py +0 -0
  125. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/io/read_api.py +0 -0
  126. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/io/redis_object_store.py +0 -0
  127. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/io/s3_object_store.py +0 -0
  128. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/logs.py +0 -0
  129. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/storage/__init__.py +0 -0
  130. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/storage/interface.py +0 -0
  131. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/storage/model/__init__.py +0 -0
  132. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/storage/model/delete_parameters.py +0 -0
  133. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/storage/model/delta.py +0 -0
  134. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/storage/model/list_result.py +0 -0
  135. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/storage/model/locator.py +0 -0
  136. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/storage/model/namespace.py +0 -0
  137. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/storage/model/partition.py +0 -0
  138. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/storage/model/sort_key.py +0 -0
  139. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/storage/model/stream.py +0 -0
  140. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/storage/model/table.py +0 -0
  141. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/storage/model/table_version.py +0 -0
  142. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/storage/model/types.py +0 -0
  143. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/tests/__init__.py +0 -0
  144. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/tests/aws/__init__.py +0 -0
  145. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/tests/aws/test_clients.py +0 -0
  146. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/tests/catalog/__init__.py +0 -0
  147. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/tests/catalog/test_default_catalog_impl.py +0 -0
  148. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/tests/compute/__init__.py +0 -0
  149. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/tests/compute/compact_partition_rebase_then_incremental_test_cases.py +0 -0
  150. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/tests/compute/compact_partition_test_cases.py +0 -0
  151. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/tests/compute/compactor/__init__.py +0 -0
  152. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/tests/compute/compactor/steps/__init__.py +0 -0
  153. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/tests/compute/compactor/steps/test_repartition.py +0 -0
  154. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/tests/compute/compactor/utils/__init__.py +0 -0
  155. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/tests/compute/compactor/utils/test_io.py +0 -0
  156. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/tests/compute/compactor_v2/__init__.py +0 -0
  157. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/tests/compute/compactor_v2/test_compaction_session.py +0 -0
  158. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/tests/compute/compactor_v2/test_hashlib.py +0 -0
  159. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/tests/compute/compactor_v2/utils/__init__.py +0 -0
  160. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/tests/compute/compactor_v2/utils/test_task_options.py +0 -0
  161. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/tests/compute/test_compact_partition_incremental.py +0 -0
  162. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/tests/compute/test_compact_partition_params.py +0 -0
  163. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/tests/compute/test_compact_partition_rebase_then_incremental.py +0 -0
  164. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/tests/compute/test_util_common.py +0 -0
  165. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/tests/compute/test_util_constant.py +0 -0
  166. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/tests/compute/test_util_create_table_deltas_repo.py +0 -0
  167. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/tests/io/__init__.py +0 -0
  168. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/tests/io/test_cloudpickle_bug_fix.py +0 -0
  169. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/tests/io/test_file_object_store.py +0 -0
  170. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/tests/io/test_memcached_object_store.py +0 -0
  171. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/tests/io/test_ray_plasma_object_store.py +0 -0
  172. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/tests/io/test_redis_object_store.py +0 -0
  173. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/tests/io/test_s3_object_store.py +0 -0
  174. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/tests/local_deltacat_storage/__init__.py +0 -0
  175. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/tests/stats/__init__.py +0 -0
  176. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/tests/stats/test_intervals.py +0 -0
  177. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/tests/test_utils/__init__.py +0 -0
  178. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/tests/test_utils/constants.py +0 -0
  179. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/tests/test_utils/pyarrow.py +0 -0
  180. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/tests/test_utils/storage.py +0 -0
  181. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/tests/test_utils/utils.py +0 -0
  182. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/tests/utils/__init__.py +0 -0
  183. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/tests/utils/data/__init__.py +0 -0
  184. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/tests/utils/test_cloudpickle.py +0 -0
  185. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/tests/utils/test_daft.py +0 -0
  186. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/tests/utils/test_pyarrow.py +0 -0
  187. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/tests/utils/test_record_batch_tables.py +0 -0
  188. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/tests/utils/test_resources.py +0 -0
  189. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/types/__init__.py +0 -0
  190. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/types/media.py +0 -0
  191. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/types/partial_download.py +0 -0
  192. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/types/tables.py +0 -0
  193. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/utils/__init__.py +0 -0
  194. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/utils/arguments.py +0 -0
  195. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/utils/cloudpickle.py +0 -0
  196. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/utils/common.py +0 -0
  197. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/utils/daft.py +0 -0
  198. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/utils/numpy.py +0 -0
  199. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/utils/pandas.py +0 -0
  200. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/utils/performance.py +0 -0
  201. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/utils/placement.py +0 -0
  202. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/utils/pyarrow.py +0 -0
  203. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/utils/ray_utils/__init__.py +0 -0
  204. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/utils/ray_utils/collections.py +0 -0
  205. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/utils/ray_utils/concurrency.py +0 -0
  206. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/utils/ray_utils/dataset.py +0 -0
  207. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/utils/ray_utils/performance.py +0 -0
  208. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/utils/ray_utils/runtime.py +0 -0
  209. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/utils/resources.py +0 -0
  210. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/utils/s3fs.py +0 -0
  211. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat/utils/schema.py +0 -0
  212. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat.egg-info/dependency_links.txt +0 -0
  213. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat.egg-info/requires.txt +0 -0
  214. {deltacat-1.1.1 → deltacat-1.1.3}/deltacat.egg-info/top_level.txt +0 -0
  215. {deltacat-1.1.1 → deltacat-1.1.3}/setup.cfg +0 -0
  216. {deltacat-1.1.1 → deltacat-1.1.3}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: deltacat
3
- Version: 1.1.1
3
+ Version: 1.1.3
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.1"
47
+ __version__ = "1.1.3"
48
48
 
49
49
 
50
50
  __all__ = [
@@ -4,6 +4,7 @@ from typing import Optional
4
4
  from http import HTTPStatus
5
5
 
6
6
  import boto3
7
+ from botocore.exceptions import CredentialRetrievalError
7
8
  from boto3.exceptions import ResourceNotExistsError
8
9
  from boto3.resources.base import ServiceResource
9
10
  from botocore.client import BaseClient
@@ -15,6 +16,8 @@ from tenacity import (
15
16
  wait_fixed,
16
17
  retry_if_exception,
17
18
  stop_after_delay,
19
+ retry_if_exception_type,
20
+ wait_random_exponential,
18
21
  )
19
22
 
20
23
  from deltacat import logs
@@ -37,6 +40,13 @@ RETRYABLE_HTTP_STATUS_CODES = [
37
40
  HTTPStatus.GATEWAY_TIMEOUT,
38
41
  ]
39
42
 
43
+ boto_retry_wrapper = Retrying(
44
+ wait=wait_random_exponential(multiplier=1, max=10),
45
+ stop=stop_after_delay(60 * 5),
46
+ # CredentialRetrievalError can still be thrown due to throttling, even if IMDS health checks succeed.
47
+ retry=retry_if_exception_type(CredentialRetrievalError),
48
+ )
49
+
40
50
 
41
51
  class RetryIfRetryableHTTPStatusCode(retry_if_exception):
42
52
  """
@@ -183,10 +193,10 @@ def _client(name: str, region: Optional[str], **kwargs) -> BaseClient:
183
193
  def resource_cache(name: str, region: Optional[str], **kwargs) -> ServiceResource:
184
194
  # we don't use the @lru_cache decorator because Ray can't pickle it
185
195
  cached_function = lru_cache()(_resource)
186
- return cached_function(name, region, **kwargs)
196
+ return boto_retry_wrapper(cached_function, name, region, **kwargs)
187
197
 
188
198
 
189
199
  def client_cache(name: str, region: Optional[str], **kwargs) -> BaseClient:
190
200
  # we don't use the @lru_cache decorator because Ray can't pickle it
191
201
  cached_function = lru_cache()(_client)
192
- return cached_function(name, region, **kwargs)
202
+ return boto_retry_wrapper(cached_function, name, region, **kwargs)
@@ -3,6 +3,10 @@ from typing import List
3
3
  from deltacat.utils.common import env_integer, env_string
4
4
 
5
5
  DAFT_MAX_S3_CONNECTIONS_PER_FILE = env_integer("DAFT_MAX_S3_CONNECTIONS_PER_FILE", 8)
6
- BOTO_MAX_RETRIES = env_integer("BOTO_MAX_RETRIES", 15)
6
+ BOTO_MAX_RETRIES = env_integer("BOTO_MAX_RETRIES", 5)
7
7
  TIMEOUT_ERROR_CODES: List[str] = ["ReadTimeoutError", "ConnectTimeoutError"]
8
8
  AWS_REGION = env_string("AWS_REGION", "us-east-1")
9
+
10
+ # Metric Names
11
+ DOWNLOAD_MANIFEST_ENTRY_METRIC_PREFIX = "download_manifest_entry"
12
+ UPLOAD_SLICED_TABLE_METRIC_PREFIX = "upload_sliced_table"
@@ -25,7 +25,11 @@ from tenacity import (
25
25
  from deltacat.utils.ray_utils.concurrency import invoke_parallel
26
26
  import deltacat.aws.clients as aws_utils
27
27
  from deltacat import logs
28
- from deltacat.aws.constants import TIMEOUT_ERROR_CODES
28
+ from deltacat.aws.constants import (
29
+ TIMEOUT_ERROR_CODES,
30
+ DOWNLOAD_MANIFEST_ENTRY_METRIC_PREFIX,
31
+ UPLOAD_SLICED_TABLE_METRIC_PREFIX,
32
+ )
29
33
  from deltacat.exceptions import NonRetryableError, RetryableError
30
34
  from deltacat.storage import (
31
35
  DistributedDataset,
@@ -50,6 +54,7 @@ from deltacat.types.tables import (
50
54
  )
51
55
  from deltacat.types.partial_download import PartialFileDownloadParams
52
56
  from deltacat.utils.common import ReadKwargsProvider
57
+ from deltacat.utils.metrics import metrics
53
58
 
54
59
  logger = logs.configure_deltacat_logger(logging.getLogger(__name__))
55
60
 
@@ -238,6 +243,7 @@ def read_file(
238
243
  raise e
239
244
 
240
245
 
246
+ @metrics(prefix=UPLOAD_SLICED_TABLE_METRIC_PREFIX)
241
247
  def upload_sliced_table(
242
248
  table: Union[LocalTable, DistributedDataset],
243
249
  s3_url_prefix: str,
@@ -346,6 +352,7 @@ def upload_table(
346
352
  return manifest_entries
347
353
 
348
354
 
355
+ @metrics(prefix=DOWNLOAD_MANIFEST_ENTRY_METRIC_PREFIX)
349
356
  def download_manifest_entry(
350
357
  manifest_entry: ManifestEntry,
351
358
  token_holder: Optional[Dict[str, Any]] = None,
@@ -40,3 +40,31 @@ DROP_DUPLICATES = True
40
40
  # This is the observed upper bound inflation for parquet
41
41
  # size in metadata to pyarrow table size.
42
42
  PARQUET_TO_PYARROW_INFLATION = 4
43
+
44
+ # Metric Names
45
+ # Time taken for a hash bucket task
46
+ HASH_BUCKET_TIME_IN_SECONDS = "hash_bucket_time"
47
+
48
+ # Hash bucket success count
49
+ HASH_BUCKET_SUCCESS_COUNT = "hash_bucket_success_count"
50
+
51
+ # Hash bucket failure count
52
+ HASH_BUCKET_FAILURE_COUNT = "hash_bucket_failure_count"
53
+
54
+ # Time taken for a merge task
55
+ MERGE_TIME_IN_SECONDS = "merge_time"
56
+
57
+ # Merge success count
58
+ MERGE_SUCCESS_COUNT = "merge_success_count"
59
+
60
+ # Merge failure count
61
+ MERGE_FAILURE_COUNT = "merge_failure_count"
62
+
63
+ # Metric prefix for discover deltas
64
+ DISCOVER_DELTAS_METRIC_PREFIX = "discover_deltas"
65
+
66
+ # Metric prefix for prepare deletes
67
+ PREPARE_DELETES_METRIC_PREFIX = "prepare_deletes"
68
+
69
+ # Metric prefix for materialize
70
+ MATERIALIZE_METRIC_PREFIX = "delta_materialize"
@@ -23,6 +23,8 @@ from deltacat.storage import (
23
23
  Delta,
24
24
  )
25
25
  from deltacat import logs
26
+ from deltacat.utils.metrics import metrics
27
+ from deltacat.compute.compactor_v2.constants import PREPARE_DELETES_METRIC_PREFIX
26
28
 
27
29
 
28
30
  logger = logs.configure_deltacat_logger(logging.getLogger(__name__))
@@ -115,6 +117,7 @@ def _get_delete_file_envelopes(
115
117
  return delete_file_envelopes
116
118
 
117
119
 
120
+ @metrics(prefix=PREPARE_DELETES_METRIC_PREFIX)
118
121
  def prepare_deletes(
119
122
  params: CompactPartitionParams,
120
123
  input_deltas: List[Delta],
@@ -25,12 +25,17 @@ from deltacat.utils.ray_utils.runtime import (
25
25
  )
26
26
  from deltacat.utils.common import ReadKwargsProvider
27
27
  from deltacat.utils.performance import timed_invocation
28
- from deltacat.utils.metrics import emit_timer_metrics
28
+ from deltacat.utils.metrics import emit_timer_metrics, failure_metric, success_metric
29
29
  from deltacat.utils.resources import (
30
30
  get_current_process_peak_memory_usage_in_bytes,
31
31
  ProcessUtilizationOverTimeRange,
32
32
  )
33
33
  from deltacat.constants import BYTES_PER_GIBIBYTE
34
+ from deltacat.compute.compactor_v2.constants import (
35
+ HASH_BUCKET_TIME_IN_SECONDS,
36
+ HASH_BUCKET_FAILURE_COUNT,
37
+ HASH_BUCKET_SUCCESS_COUNT,
38
+ )
34
39
 
35
40
  if importlib.util.find_spec("memray"):
36
41
  import memray
@@ -91,6 +96,8 @@ def _group_file_records_by_pk_hash_bucket(
91
96
  return hb_to_delta_file_envelopes, total_record_count, total_size_bytes
92
97
 
93
98
 
99
+ @success_metric(name=HASH_BUCKET_SUCCESS_COUNT)
100
+ @failure_metric(name=HASH_BUCKET_FAILURE_COUNT)
94
101
  def _timed_hash_bucket(input: HashBucketInput):
95
102
  task_id = get_current_ray_task_id()
96
103
  worker_id = get_current_ray_worker_id()
@@ -153,7 +160,7 @@ def hash_bucket(input: HashBucketInput) -> HashBucketResult:
153
160
  if input.metrics_config:
154
161
  emit_result, latency = timed_invocation(
155
162
  func=emit_timer_metrics,
156
- metrics_name="hash_bucket",
163
+ metrics_name=HASH_BUCKET_TIME_IN_SECONDS,
157
164
  value=duration,
158
165
  metrics_config=input.metrics_config,
159
166
  )
@@ -24,7 +24,7 @@ from deltacat.utils.ray_utils.runtime import (
24
24
  )
25
25
  from deltacat.compute.compactor.utils import system_columns as sc
26
26
  from deltacat.utils.performance import timed_invocation
27
- from deltacat.utils.metrics import emit_timer_metrics
27
+ from deltacat.utils.metrics import emit_timer_metrics, failure_metric, success_metric
28
28
  from deltacat.utils.resources import (
29
29
  get_current_process_peak_memory_usage_in_bytes,
30
30
  ProcessUtilizationOverTimeRange,
@@ -42,6 +42,11 @@ from deltacat.storage import (
42
42
  )
43
43
  from deltacat.compute.compactor_v2.utils.dedupe import drop_duplicates
44
44
  from deltacat.constants import BYTES_PER_GIBIBYTE
45
+ from deltacat.compute.compactor_v2.constants import (
46
+ MERGE_TIME_IN_SECONDS,
47
+ MERGE_SUCCESS_COUNT,
48
+ MERGE_FAILURE_COUNT,
49
+ )
45
50
 
46
51
 
47
52
  if importlib.util.find_spec("memray"):
@@ -479,6 +484,8 @@ def _copy_manifests_from_hash_bucketing(
479
484
  return materialized_results
480
485
 
481
486
 
487
+ @success_metric(name=MERGE_SUCCESS_COUNT)
488
+ @failure_metric(name=MERGE_FAILURE_COUNT)
482
489
  def _timed_merge(input: MergeInput) -> MergeResult:
483
490
  task_id = get_current_ray_task_id()
484
491
  worker_id = get_current_ray_worker_id()
@@ -578,7 +585,7 @@ def merge(input: MergeInput) -> MergeResult:
578
585
  if input.metrics_config:
579
586
  emit_result, latency = timed_invocation(
580
587
  func=emit_timer_metrics,
581
- metrics_name="merge",
588
+ metrics_name=MERGE_TIME_IN_SECONDS,
582
589
  value=duration,
583
590
  metrics_config=input.metrics_config,
584
591
  )
@@ -23,10 +23,13 @@ from deltacat.compute.compactor_v2.utils.task_options import (
23
23
  from deltacat.compute.compactor_v2.utils.content_type_params import (
24
24
  append_content_type_params,
25
25
  )
26
+ from deltacat.utils.metrics import metrics
27
+ from deltacat.compute.compactor_v2.constants import DISCOVER_DELTAS_METRIC_PREFIX
26
28
 
27
29
  logger = logs.configure_deltacat_logger(logging.getLogger(__name__))
28
30
 
29
31
 
32
+ @metrics(prefix=DISCOVER_DELTAS_METRIC_PREFIX)
30
33
  def discover_deltas(
31
34
  source_partition_locator: PartitionLocator,
32
35
  last_stream_position_to_compact: int,
@@ -31,11 +31,14 @@ from deltacat.compute.compactor_v2.deletes.delete_strategy import (
31
31
  from deltacat.compute.compactor_v2.deletes.delete_file_envelope import (
32
32
  DeleteFileEnvelope,
33
33
  )
34
+ from deltacat.utils.metrics import metrics
35
+ from deltacat.compute.compactor_v2.constants import MATERIALIZE_METRIC_PREFIX
34
36
 
35
37
 
36
38
  logger = logs.configure_deltacat_logger(logging.getLogger(__name__))
37
39
 
38
40
 
41
+ @metrics(prefix=MATERIALIZE_METRIC_PREFIX)
39
42
  def materialize(
40
43
  input: MergeInput,
41
44
  task_index: int,