supertable 2.2.3__tar.gz → 2.2.4__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 (177) hide show
  1. {supertable-2.2.3/supertable.egg-info → supertable-2.2.4}/PKG-INFO +1 -1
  2. {supertable-2.2.3 → supertable-2.2.4}/pyproject.toml +1 -1
  3. {supertable-2.2.3 → supertable-2.2.4}/setup.py +1 -1
  4. {supertable-2.2.3 → supertable-2.2.4}/supertable/__init__.py +1 -1
  5. {supertable-2.2.3 → supertable-2.2.4}/supertable/data_writer.py +6 -1
  6. {supertable-2.2.3 → supertable-2.2.4}/supertable/simple_table.py +50 -0
  7. {supertable-2.2.3 → supertable-2.2.4/supertable.egg-info}/PKG-INFO +1 -1
  8. {supertable-2.2.3 → supertable-2.2.4}/LICENSE +0 -0
  9. {supertable-2.2.3 → supertable-2.2.4}/README.md +0 -0
  10. {supertable-2.2.3 → supertable-2.2.4}/requirements.txt +0 -0
  11. {supertable-2.2.3 → supertable-2.2.4}/setup.cfg +0 -0
  12. {supertable-2.2.3 → supertable-2.2.4}/supertable/audit/__init__.py +0 -0
  13. {supertable-2.2.3 → supertable-2.2.4}/supertable/audit/admin.py +0 -0
  14. {supertable-2.2.3 → supertable-2.2.4}/supertable/audit/chain.py +0 -0
  15. {supertable-2.2.3 → supertable-2.2.4}/supertable/audit/consumers.py +0 -0
  16. {supertable-2.2.3 → supertable-2.2.4}/supertable/audit/crypto.py +0 -0
  17. {supertable-2.2.3 → supertable-2.2.4}/supertable/audit/events.py +0 -0
  18. {supertable-2.2.3 → supertable-2.2.4}/supertable/audit/export.py +0 -0
  19. {supertable-2.2.3 → supertable-2.2.4}/supertable/audit/logger.py +0 -0
  20. {supertable-2.2.3 → supertable-2.2.4}/supertable/audit/middleware.py +0 -0
  21. {supertable-2.2.3 → supertable-2.2.4}/supertable/audit/reader.py +0 -0
  22. {supertable-2.2.3 → supertable-2.2.4}/supertable/audit/retention.py +0 -0
  23. {supertable-2.2.3 → supertable-2.2.4}/supertable/audit/tests/__init__.py +0 -0
  24. {supertable-2.2.3 → supertable-2.2.4}/supertable/audit/tests/test_chain.py +0 -0
  25. {supertable-2.2.3 → supertable-2.2.4}/supertable/audit/tests/test_crypto.py +0 -0
  26. {supertable-2.2.3 → supertable-2.2.4}/supertable/audit/tests/test_emit.py +0 -0
  27. {supertable-2.2.3 → supertable-2.2.4}/supertable/audit/tests/test_events.py +0 -0
  28. {supertable-2.2.3 → supertable-2.2.4}/supertable/audit/tests/test_retention.py +0 -0
  29. {supertable-2.2.3 → supertable-2.2.4}/supertable/audit/writer_parquet.py +0 -0
  30. {supertable-2.2.3 → supertable-2.2.4}/supertable/audit/writer_redis.py +0 -0
  31. {supertable-2.2.3 → supertable-2.2.4}/supertable/config/__init__.py +0 -0
  32. {supertable-2.2.3 → supertable-2.2.4}/supertable/config/defaults.py +0 -0
  33. {supertable-2.2.3 → supertable-2.2.4}/supertable/config/homedir.py +0 -0
  34. {supertable-2.2.3 → supertable-2.2.4}/supertable/config/settings.py +0 -0
  35. {supertable-2.2.3 → supertable-2.2.4}/supertable/config/tests/__init__.py +0 -0
  36. {supertable-2.2.3 → supertable-2.2.4}/supertable/config/tests/test_defaults.py +0 -0
  37. {supertable-2.2.3 → supertable-2.2.4}/supertable/config/tests/test_homedir.py +0 -0
  38. {supertable-2.2.3 → supertable-2.2.4}/supertable/config/tests/test_settings.py +0 -0
  39. {supertable-2.2.3 → supertable-2.2.4}/supertable/data_classes.py +0 -0
  40. {supertable-2.2.3 → supertable-2.2.4}/supertable/data_reader.py +0 -0
  41. {supertable-2.2.3 → supertable-2.2.4}/supertable/demo/__init__.py +0 -0
  42. {supertable-2.2.3 → supertable-2.2.4}/supertable/demo/quickstart/__init__.py +0 -0
  43. {supertable-2.2.3 → supertable-2.2.4}/supertable/demo/quickstart/__main__.py +0 -0
  44. {supertable-2.2.3 → supertable-2.2.4}/supertable/demo/quickstart/check_filter_builder.py +0 -0
  45. {supertable-2.2.3 → supertable-2.2.4}/supertable/demo/quickstart/controller.py +0 -0
  46. {supertable-2.2.3 → supertable-2.2.4}/supertable/demo/quickstart/data_writer_helpers.py +0 -0
  47. {supertable-2.2.3 → supertable-2.2.4}/supertable/demo/quickstart/defaults.py +0 -0
  48. {supertable-2.2.3 → supertable-2.2.4}/supertable/demo/quickstart/dummy_data.py +0 -0
  49. {supertable-2.2.3 → supertable-2.2.4}/supertable/demo/quickstart/read_parquet_header.py +0 -0
  50. {supertable-2.2.3 → supertable-2.2.4}/supertable/demo/quickstart/s01_01_01_create_super_table.py +0 -0
  51. {supertable-2.2.3 → supertable-2.2.4}/supertable/demo/quickstart/s01_01_02_enable_mirroring_formats.py +0 -0
  52. {supertable-2.2.3 → supertable-2.2.4}/supertable/demo/quickstart/s01_02_create_roles.py +0 -0
  53. {supertable-2.2.3 → supertable-2.2.4}/supertable/demo/quickstart/s01_03_create_users.py +0 -0
  54. {supertable-2.2.3 → supertable-2.2.4}/supertable/demo/quickstart/s02_01_write_dummy_data.py +0 -0
  55. {supertable-2.2.3 → supertable-2.2.4}/supertable/demo/quickstart/s02_02_write_single_data.py +0 -0
  56. {supertable-2.2.3 → supertable-2.2.4}/supertable/demo/quickstart/s02_03_01_write_staging.py +0 -0
  57. {supertable-2.2.3 → supertable-2.2.4}/supertable/demo/quickstart/s02_03_02_create_pipe.py +0 -0
  58. {supertable-2.2.3 → supertable-2.2.4}/supertable/demo/quickstart/s02_04_01_write_monitoring_simple.py +0 -0
  59. {supertable-2.2.3 → supertable-2.2.4}/supertable/demo/quickstart/s02_04_02_write_monitoring_parallel.py +0 -0
  60. {supertable-2.2.3 → supertable-2.2.4}/supertable/demo/quickstart/s02_05_write_tombstone.py +0 -0
  61. {supertable-2.2.3 → supertable-2.2.4}/supertable/demo/quickstart/s03_01_read_data_error.py +0 -0
  62. {supertable-2.2.3 → supertable-2.2.4}/supertable/demo/quickstart/s03_02_01_read_super_data_ok.py +0 -0
  63. {supertable-2.2.3 → supertable-2.2.4}/supertable/demo/quickstart/s03_02_02_read_table_data_ok.py +0 -0
  64. {supertable-2.2.3 → supertable-2.2.4}/supertable/demo/quickstart/s03_03_read_meta.py +0 -0
  65. {supertable-2.2.3 → supertable-2.2.4}/supertable/demo/quickstart/s03_04_read_staging.py +0 -0
  66. {supertable-2.2.3 → supertable-2.2.4}/supertable/demo/quickstart/s03_06_01_read_roles.py +0 -0
  67. {supertable-2.2.3 → supertable-2.2.4}/supertable/demo/quickstart/s03_06_02_read_user.py +0 -0
  68. {supertable-2.2.3 → supertable-2.2.4}/supertable/demo/quickstart/s03_07_01_estimate_read.py +0 -0
  69. {supertable-2.2.3 → supertable-2.2.4}/supertable/demo/quickstart/s03_07_02_estimate_files.py +0 -0
  70. {supertable-2.2.3 → supertable-2.2.4}/supertable/demo/quickstart/s03_08_read_snapshot_history.py +0 -0
  71. {supertable-2.2.3 → supertable-2.2.4}/supertable/demo/quickstart/s04_01_03_delete_pipe.py +0 -0
  72. {supertable-2.2.3 → supertable-2.2.4}/supertable/demo/quickstart/s05_01_delete_table.py +0 -0
  73. {supertable-2.2.3 → supertable-2.2.4}/supertable/demo/quickstart/s05_02_delete_super_table.py +0 -0
  74. {supertable-2.2.3 → supertable-2.2.4}/supertable/demo/webshop/__init__.py +0 -0
  75. {supertable-2.2.3 → supertable-2.2.4}/supertable/demo/webshop/core.py +0 -0
  76. {supertable-2.2.3 → supertable-2.2.4}/supertable/demo/webshop/defaults.py +0 -0
  77. {supertable-2.2.3 → supertable-2.2.4}/supertable/demo/webshop/generate.py +0 -0
  78. {supertable-2.2.3 → supertable-2.2.4}/supertable/demo/webshop/load.py +0 -0
  79. {supertable-2.2.3 → supertable-2.2.4}/supertable/demo/webshop/topup.py +0 -0
  80. {supertable-2.2.3 → supertable-2.2.4}/supertable/engine/__init__.py +0 -0
  81. {supertable-2.2.3 → supertable-2.2.4}/supertable/engine/data_estimator.py +0 -0
  82. {supertable-2.2.3 → supertable-2.2.4}/supertable/engine/duckdb_lite.py +0 -0
  83. {supertable-2.2.3 → supertable-2.2.4}/supertable/engine/duckdb_pro.py +0 -0
  84. {supertable-2.2.3 → supertable-2.2.4}/supertable/engine/engine_common.py +0 -0
  85. {supertable-2.2.3 → supertable-2.2.4}/supertable/engine/engine_enum.py +0 -0
  86. {supertable-2.2.3 → supertable-2.2.4}/supertable/engine/executor.py +0 -0
  87. {supertable-2.2.3 → supertable-2.2.4}/supertable/engine/plan_stats.py +0 -0
  88. {supertable-2.2.3 → supertable-2.2.4}/supertable/engine/spark_thrift.py +0 -0
  89. {supertable-2.2.3 → supertable-2.2.4}/supertable/engine/tests/__init__.py +0 -0
  90. {supertable-2.2.3 → supertable-2.2.4}/supertable/engine/tests/conftest.py +0 -0
  91. {supertable-2.2.3 → supertable-2.2.4}/supertable/engine/tests/test_dedup_read.py +0 -0
  92. {supertable-2.2.3 → supertable-2.2.4}/supertable/engine/tests/test_engine.py +0 -0
  93. {supertable-2.2.3 → supertable-2.2.4}/supertable/errors.py +0 -0
  94. {supertable-2.2.3 → supertable-2.2.4}/supertable/locking/__init__.py +0 -0
  95. {supertable-2.2.3 → supertable-2.2.4}/supertable/locking/benchmarks/__init__.py +0 -0
  96. {supertable-2.2.3 → supertable-2.2.4}/supertable/locking/benchmarks/benchmark_locking.py +0 -0
  97. {supertable-2.2.3 → supertable-2.2.4}/supertable/locking/benchmarks/measure_lock_speed.py +0 -0
  98. {supertable-2.2.3 → supertable-2.2.4}/supertable/locking/benchmarks/measure_lock_time.py +0 -0
  99. {supertable-2.2.3 → supertable-2.2.4}/supertable/locking/file_lock.py +0 -0
  100. {supertable-2.2.3 → supertable-2.2.4}/supertable/locking/redis_lock.py +0 -0
  101. {supertable-2.2.3 → supertable-2.2.4}/supertable/locking/tests/__init__.py +0 -0
  102. {supertable-2.2.3 → supertable-2.2.4}/supertable/locking/tests/test_file_lock.py +0 -0
  103. {supertable-2.2.3 → supertable-2.2.4}/supertable/locking/tests/test_redis_lock.py +0 -0
  104. {supertable-2.2.3 → supertable-2.2.4}/supertable/logging.py +0 -0
  105. {supertable-2.2.3 → supertable-2.2.4}/supertable/meta_reader.py +0 -0
  106. {supertable-2.2.3 → supertable-2.2.4}/supertable/mirroring/__init__.py +0 -0
  107. {supertable-2.2.3 → supertable-2.2.4}/supertable/mirroring/mirror_delta.py +0 -0
  108. {supertable-2.2.3 → supertable-2.2.4}/supertable/mirroring/mirror_formats.py +0 -0
  109. {supertable-2.2.3 → supertable-2.2.4}/supertable/mirroring/mirror_iceberg.py +0 -0
  110. {supertable-2.2.3 → supertable-2.2.4}/supertable/mirroring/mirror_parquet.py +0 -0
  111. {supertable-2.2.3 → supertable-2.2.4}/supertable/monitoring/__init__.py +0 -0
  112. {supertable-2.2.3 → supertable-2.2.4}/supertable/monitoring/partitions.py +0 -0
  113. {supertable-2.2.3 → supertable-2.2.4}/supertable/monitoring_writer.py +0 -0
  114. {supertable-2.2.3 → supertable-2.2.4}/supertable/plan_extender.py +0 -0
  115. {supertable-2.2.3 → supertable-2.2.4}/supertable/processing.py +0 -0
  116. {supertable-2.2.3 → supertable-2.2.4}/supertable/query_plan_manager.py +0 -0
  117. {supertable-2.2.3 → supertable-2.2.4}/supertable/rbac/__init__.py +0 -0
  118. {supertable-2.2.3 → supertable-2.2.4}/supertable/rbac/access_control.py +0 -0
  119. {supertable-2.2.3 → supertable-2.2.4}/supertable/rbac/filter_builder.py +0 -0
  120. {supertable-2.2.3 → supertable-2.2.4}/supertable/rbac/permissions.py +0 -0
  121. {supertable-2.2.3 → supertable-2.2.4}/supertable/rbac/role_manager.py +0 -0
  122. {supertable-2.2.3 → supertable-2.2.4}/supertable/rbac/row_column_security.py +0 -0
  123. {supertable-2.2.3 → supertable-2.2.4}/supertable/rbac/tests/test_filter_builder.py +0 -0
  124. {supertable-2.2.3 → supertable-2.2.4}/supertable/rbac/tests/test_rbac.py +0 -0
  125. {supertable-2.2.3 → supertable-2.2.4}/supertable/rbac/tests/test_rbac_per_table.py +0 -0
  126. {supertable-2.2.3 → supertable-2.2.4}/supertable/rbac/user_manager.py +0 -0
  127. {supertable-2.2.3 → supertable-2.2.4}/supertable/redis_catalog.py +0 -0
  128. {supertable-2.2.3 → supertable-2.2.4}/supertable/redis_connector.py +0 -0
  129. {supertable-2.2.3 → supertable-2.2.4}/supertable/redis_infra.py +0 -0
  130. {supertable-2.2.3 → supertable-2.2.4}/supertable/redis_keys.py +0 -0
  131. {supertable-2.2.3 → supertable-2.2.4}/supertable/staging_area.py +0 -0
  132. {supertable-2.2.3 → supertable-2.2.4}/supertable/storage/__init__.py +0 -0
  133. {supertable-2.2.3 → supertable-2.2.4}/supertable/storage/azure_storage.py +0 -0
  134. {supertable-2.2.3 → supertable-2.2.4}/supertable/storage/gcp_storage.py +0 -0
  135. {supertable-2.2.3 → supertable-2.2.4}/supertable/storage/local_storage.py +0 -0
  136. {supertable-2.2.3 → supertable-2.2.4}/supertable/storage/minio_storage.py +0 -0
  137. {supertable-2.2.3 → supertable-2.2.4}/supertable/storage/s3_storage.py +0 -0
  138. {supertable-2.2.3 → supertable-2.2.4}/supertable/storage/storage_factory.py +0 -0
  139. {supertable-2.2.3 → supertable-2.2.4}/supertable/storage/storage_interface.py +0 -0
  140. {supertable-2.2.3 → supertable-2.2.4}/supertable/storage/tests/test_storage.py +0 -0
  141. {supertable-2.2.3 → supertable-2.2.4}/supertable/super_pipe.py +0 -0
  142. {supertable-2.2.3 → supertable-2.2.4}/supertable/super_table.py +0 -0
  143. {supertable-2.2.3 → supertable-2.2.4}/supertable/tests/__init__.py +0 -0
  144. {supertable-2.2.3 → supertable-2.2.4}/supertable/tests/test_align_to_schema_fix.py +0 -0
  145. {supertable-2.2.3 → supertable-2.2.4}/supertable/tests/test_create_if_missing.py +0 -0
  146. {supertable-2.2.3 → supertable-2.2.4}/supertable/tests/test_data_reader.py +0 -0
  147. {supertable-2.2.3 → supertable-2.2.4}/supertable/tests/test_data_reader_preflight.py +0 -0
  148. {supertable-2.2.3 → supertable-2.2.4}/supertable/tests/test_data_writer.py +0 -0
  149. {supertable-2.2.3 → supertable-2.2.4}/supertable/tests/test_data_writer_compact.py +0 -0
  150. {supertable-2.2.3 → supertable-2.2.4}/supertable/tests/test_data_writer_comprehensive.py +0 -0
  151. {supertable-2.2.3 → supertable-2.2.4}/supertable/tests/test_data_writer_tombstones.py +0 -0
  152. {supertable-2.2.3 → supertable-2.2.4}/supertable/tests/test_dedup_on_read_write.py +0 -0
  153. {supertable-2.2.3 → supertable-2.2.4}/supertable/tests/test_errors.py +0 -0
  154. {supertable-2.2.3 → supertable-2.2.4}/supertable/tests/test_meta_reader.py +0 -0
  155. {supertable-2.2.3 → supertable-2.2.4}/supertable/tests/test_monitoring_partitions.py +0 -0
  156. {supertable-2.2.3 → supertable-2.2.4}/supertable/tests/test_monitoring_sink_guard.py +0 -0
  157. {supertable-2.2.3 → supertable-2.2.4}/supertable/tests/test_newer_than.py +0 -0
  158. {supertable-2.2.3 → supertable-2.2.4}/supertable/tests/test_process_delete_only.py +0 -0
  159. {supertable-2.2.3 → supertable-2.2.4}/supertable/tests/test_processing.py +0 -0
  160. {supertable-2.2.3 → supertable-2.2.4}/supertable/tests/test_processing_compact_resources.py +0 -0
  161. {supertable-2.2.3 → supertable-2.2.4}/supertable/tests/test_query_sql.py +0 -0
  162. {supertable-2.2.3 → supertable-2.2.4}/supertable/tests/test_redis_key_prefix.py +0 -0
  163. {supertable-2.2.3 → supertable-2.2.4}/supertable/tests/test_simple_table.py +0 -0
  164. {supertable-2.2.3 → supertable-2.2.4}/supertable/tests/test_small_file_compaction.py +0 -0
  165. {supertable-2.2.3 → supertable-2.2.4}/supertable/tests/test_super_table.py +0 -0
  166. {supertable-2.2.3 → supertable-2.2.4}/supertable/tests/test_supertable_all.py +0 -0
  167. {supertable-2.2.3 → supertable-2.2.4}/supertable/utils/__init__.py +0 -0
  168. {supertable-2.2.3 → supertable-2.2.4}/supertable/utils/helper.py +0 -0
  169. {supertable-2.2.3 → supertable-2.2.4}/supertable/utils/profiler.py +0 -0
  170. {supertable-2.2.3 → supertable-2.2.4}/supertable/utils/sql_parser.py +0 -0
  171. {supertable-2.2.3 → supertable-2.2.4}/supertable/utils/tests/test_sql_parser_columns.py +0 -0
  172. {supertable-2.2.3 → supertable-2.2.4}/supertable/utils/timer.py +0 -0
  173. {supertable-2.2.3 → supertable-2.2.4}/supertable.egg-info/SOURCES.txt +0 -0
  174. {supertable-2.2.3 → supertable-2.2.4}/supertable.egg-info/dependency_links.txt +0 -0
  175. {supertable-2.2.3 → supertable-2.2.4}/supertable.egg-info/entry_points.txt +0 -0
  176. {supertable-2.2.3 → supertable-2.2.4}/supertable.egg-info/requires.txt +0 -0
  177. {supertable-2.2.3 → supertable-2.2.4}/supertable.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: supertable
3
- Version: 2.2.3
3
+ Version: 2.2.4
4
4
  Summary: SuperTable — versioned data lake library for SQL analytics on Parquet + Redis.
5
5
  Author: Levente Kupas
6
6
  Author-email: Levente Kupas <lkupas@kladnasoft.com>
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "supertable"
7
- version = "2.2.3"
7
+ version = "2.2.4"
8
8
  description = "SuperTable — versioned data lake library for SQL analytics on Parquet + Redis."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -19,7 +19,7 @@ long_description = readme.read_text(encoding="utf-8") if readme.exists() else ""
19
19
 
20
20
  setup(
21
21
  name="supertable",
22
- version="2.2.3",
22
+ version="2.2.4",
23
23
  description="SuperTable — versioned data lake library for SQL analytics on Parquet + Redis.",
24
24
  long_description=long_description,
25
25
  long_description_content_type="text/markdown",
@@ -25,7 +25,7 @@ See the ``supertable.demo`` package for runnable end-to-end demos and the
25
25
  project documentation for the full API surface.
26
26
  """
27
27
 
28
- __version__ = "2.2.3"
28
+ __version__ = "2.2.4"
29
29
 
30
30
  # Re-export the core public surface so users can do ``from supertable import …``
31
31
  # instead of remembering submodule paths.
@@ -754,9 +754,14 @@ class DataWriter:
754
754
  qualify — large files are left untouched. ``small_only=False``
755
755
  rewrites every resource regardless of size.
756
756
  5. Commit the new snapshot via ``simple_table.update``,
757
- leaf-CAS, ``bump_root``, and the same GC enqueue +
757
+ leaf-CAS, ``bump_root``, optional mirroring, and the same
758
758
  monitoring + audit pipeline as ``write``.
759
759
 
760
+ Compaction does **not** garbage-collect: the small files it
761
+ merges away are left in storage (still referenced by older
762
+ snapshot versions for time-travel) for an external GC to
763
+ reclaim later.
764
+
760
765
  Concurrency: compaction is serialised against writes through
761
766
  the same per-simple lock. A concurrent ``write()`` either
762
767
  runs first (compaction sees the updated snapshot) or waits.
@@ -260,6 +260,56 @@ class SimpleTable:
260
260
  data = self.storage.read_json(path)
261
261
  return data, path
262
262
 
263
+ def export_to(self, target_dir: str, compression_level: int = 3, small_only: bool = False):
264
+ """Write a standalone copy of the current data into ``target_dir``.
265
+
266
+ Reads the current snapshot's parquet resources and re-writes them
267
+ as memory-bounded parquet chunks (each ~``max_memory_chunk_size``,
268
+ from the per-table config or the global default) under
269
+ ``target_dir``. This is a pure copy: it does NOT create a new
270
+ snapshot, advance the Redis leaf, or touch ``data/``/``snapshots/``.
271
+
272
+ Args:
273
+ target_dir: destination directory for the exported parquet
274
+ files (created if missing). Typically an
275
+ ``export/<timestamp>/`` folder next to ``data/``.
276
+ compression_level: zstd level for the exported parquet.
277
+ small_only: when False (default) every resource is read and
278
+ re-chunked; when True only files smaller than
279
+ ``max_memory_chunk_size`` are included.
280
+
281
+ Returns:
282
+ ``dict`` with ``files`` (list of written paths),
283
+ ``files_written``, ``total_rows`` and ``total_bytes``.
284
+ """
285
+ from supertable.processing import compact_resources
286
+
287
+ snapshot, _path = self.get_simple_table_snapshot()
288
+ table_config = self.catalog.get_table_config(
289
+ self.super_table.organization,
290
+ self.super_table.super_name,
291
+ self.simple_name,
292
+ ) or {}
293
+
294
+ _considered, total_rows, new_resources, _sunset = compact_resources(
295
+ snapshot=snapshot,
296
+ data_dir=target_dir,
297
+ compression_level=compression_level,
298
+ table_config=table_config,
299
+ small_only=small_only,
300
+ )
301
+
302
+ files = [r.get("file") for r in new_resources if isinstance(r, dict) and r.get("file")]
303
+ total_bytes = sum(
304
+ int(r.get("file_size") or 0) for r in new_resources if isinstance(r, dict)
305
+ )
306
+ return {
307
+ "files": files,
308
+ "files_written": len(files),
309
+ "total_rows": int(total_rows),
310
+ "total_bytes": int(total_bytes),
311
+ }
312
+
263
313
  def update(self, new_resources, sunset_files, model_df, last_snapshot=None, last_snapshot_path=None, lineage=None, profiler: Optional[Profiler] = None):
264
314
  """
265
315
  Build and write a new heavy snapshot on storage.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: supertable
3
- Version: 2.2.3
3
+ Version: 2.2.4
4
4
  Summary: SuperTable — versioned data lake library for SQL analytics on Parquet + Redis.
5
5
  Author: Levente Kupas
6
6
  Author-email: Levente Kupas <lkupas@kladnasoft.com>
File without changes
File without changes
File without changes
File without changes