icechunk 1.1.17__tar.gz → 1.1.18__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 (284) hide show
  1. {icechunk-1.1.17 → icechunk-1.1.18}/PKG-INFO +1 -1
  2. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk/Cargo.toml +1 -1
  3. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk/src/config.rs +88 -5
  4. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk/src/session.rs +3 -2
  5. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/Cargo.toml +2 -2
  6. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/test_config.py +33 -0
  7. {icechunk-1.1.17 → icechunk-1.1.18}/LICENSE +0 -0
  8. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk/examples/low_level_dataset.rs +0 -0
  9. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk/examples/multithreaded_get_chunk_refs.rs +0 -0
  10. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk/examples/multithreaded_store.rs +0 -0
  11. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk/flatbuffers/all.fbs +0 -0
  12. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk/flatbuffers/manifest.fbs +0 -0
  13. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk/flatbuffers/object_ids.fbs +0 -0
  14. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk/flatbuffers/snapshot.fbs +0 -0
  15. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk/flatbuffers/transaction_log.fbs +0 -0
  16. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk/proptest-regressions/dataset.txt +0 -0
  17. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk/proptest-regressions/format/manifest.txt +0 -0
  18. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk/proptest-regressions/manifest.txt +0 -0
  19. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk/proptest-regressions/session.txt +0 -0
  20. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk/proptest-regressions/storage/mod.txt +0 -0
  21. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk/proptest-regressions/storage/s3.txt +0 -0
  22. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk/proptest-regressions/storage/virtual_ref.txt +0 -0
  23. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk/src/asset_manager.rs +0 -0
  24. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk/src/bin/icechunk/main.rs +0 -0
  25. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk/src/change_set.rs +0 -0
  26. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk/src/cli/config.rs +0 -0
  27. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk/src/cli/interface.rs +0 -0
  28. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk/src/cli/mod.rs +0 -0
  29. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk/src/conflicts/basic_solver.rs +0 -0
  30. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk/src/conflicts/detector.rs +0 -0
  31. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk/src/conflicts/mod.rs +0 -0
  32. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk/src/error.rs +0 -0
  33. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk/src/format/attributes.rs +0 -0
  34. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk/src/format/flatbuffers/all_generated.rs +0 -0
  35. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk/src/format/manifest.rs +0 -0
  36. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk/src/format/mod.rs +0 -0
  37. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk/src/format/serializers/mod.rs +0 -0
  38. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk/src/format/snapshot.rs +0 -0
  39. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk/src/format/transaction_log.rs +0 -0
  40. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk/src/inspect.rs +0 -0
  41. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk/src/lib.rs +0 -0
  42. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk/src/ops/gc.rs +0 -0
  43. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk/src/ops/manifests.rs +0 -0
  44. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk/src/ops/mod.rs +0 -0
  45. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk/src/ops/stats.rs +0 -0
  46. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk/src/refs.rs +0 -0
  47. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk/src/repository.rs +0 -0
  48. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk/src/storage/logging.rs +0 -0
  49. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk/src/storage/mod.rs +0 -0
  50. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk/src/storage/object_store.rs +0 -0
  51. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk/src/storage/s3.rs +0 -0
  52. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk/src/store.rs +0 -0
  53. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk/src/strategies.rs +0 -0
  54. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk/src/stream_utils.rs +0 -0
  55. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk/src/virtual_chunks.rs +0 -0
  56. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk/tests/common/mod.rs +0 -0
  57. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk/tests/test_concurrency.rs +0 -0
  58. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk/tests/test_distributed_writes.rs +0 -0
  59. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk/tests/test_gc.rs +0 -0
  60. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk/tests/test_large_manifests.rs +0 -0
  61. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk/tests/test_stats.rs +0 -0
  62. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk/tests/test_storage.rs +0 -0
  63. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk/tests/test_virtual_refs.rs +0 -0
  64. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-macros/Cargo.toml +0 -0
  65. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-macros/src/lib.rs +0 -0
  66. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/.gitignore +0 -0
  67. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/Cargo.lock +0 -0
  68. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/LICENSE +0 -0
  69. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/benchmarks/__init__.py +0 -0
  70. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/benchmarks/coiled_runner.py +0 -0
  71. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/benchmarks/conftest.py +0 -0
  72. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/benchmarks/create_era5.py +0 -0
  73. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/benchmarks/datasets.py +0 -0
  74. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/benchmarks/envs/icechunk-alpha-12.txt +0 -0
  75. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/benchmarks/envs/icechunk-alpha-release.txt +0 -0
  76. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/benchmarks/helpers.py +0 -0
  77. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/benchmarks/lib.py +0 -0
  78. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/benchmarks/most_recent.sh +0 -0
  79. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/benchmarks/pytest.ini +0 -0
  80. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/benchmarks/runner.py +0 -0
  81. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/benchmarks/tasks.py +0 -0
  82. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/benchmarks/test_benchmark_reads.py +0 -0
  83. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/benchmarks/test_benchmark_writes.py +0 -0
  84. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/examples/bank_accounts.py +0 -0
  85. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/examples/dask_write.py +0 -0
  86. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/examples/high_concurrency.py +0 -0
  87. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/examples/mpwrite.py +0 -0
  88. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/examples/run_in_ci.sh +0 -0
  89. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/integration_tests/test_r2.py +0 -0
  90. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/python/icechunk/__init__.py +0 -0
  91. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/python/icechunk/_icechunk_python.pyi +0 -0
  92. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/python/icechunk/credentials.py +0 -0
  93. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/python/icechunk/dask.py +0 -0
  94. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/python/icechunk/distributed.py +0 -0
  95. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/python/icechunk/py.typed +0 -0
  96. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/python/icechunk/repository.py +0 -0
  97. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/python/icechunk/session.py +0 -0
  98. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/python/icechunk/storage.py +0 -0
  99. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/python/icechunk/store.py +0 -0
  100. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/python/icechunk/testing/strategies.py +0 -0
  101. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/python/icechunk/vendor/__init__.py +0 -0
  102. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/python/icechunk/vendor/xarray.py +0 -0
  103. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/python/icechunk/xarray.py +0 -0
  104. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/scripts/check_xarray_docs_sync.py +0 -0
  105. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/scripts/known-xarray-doc-diffs.json +0 -0
  106. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/src/config.rs +0 -0
  107. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/src/conflicts.rs +0 -0
  108. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/src/errors.rs +0 -0
  109. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/src/lib.rs +0 -0
  110. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/src/pickle.rs +0 -0
  111. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/src/repository.rs +0 -0
  112. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/src/session.rs +0 -0
  113. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/src/stats.rs +0 -0
  114. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/src/store.rs +0 -0
  115. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/src/streams.rs +0 -0
  116. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/__init__.py +0 -0
  117. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/conftest.py +0 -0
  118. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/chunks/28H289BT7JSZKZ6W5F70 +0 -0
  119. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/chunks/29CS30CK3D3CFVFBEZ80 +0 -0
  120. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/chunks/39KTEACWZDMQ42C0TK5G +0 -0
  121. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/chunks/3CQH7MY9P8QFNE5TWMZ0 +0 -0
  122. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/chunks/3JWEBSQZ1AQT9RK46JHG +0 -0
  123. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/chunks/4DCZD8GC46090M65S46G +0 -0
  124. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/chunks/4KXQX71CPA8ASE25X02G +0 -0
  125. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/chunks/5M551EG8VHX6GK2RVYEG +0 -0
  126. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/chunks/8Y59PE3EQ1NHY32W80PG +0 -0
  127. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/chunks/9JSXG2S6R7JW530266FG +0 -0
  128. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/chunks/9Q4DF3ZK93B35EW1Q0W0 +0 -0
  129. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/chunks/A14DFW1AMR9GJY82B480 +0 -0
  130. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/chunks/C43XA0532YJN8FFJQSV0 +0 -0
  131. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/chunks/DB0FK4TGE2CYP5N5H5MG +0 -0
  132. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/chunks/DN7QKGTXF72JRSP1R59G +0 -0
  133. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/chunks/E06NN106F0RD1DKC57B0 +0 -0
  134. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/chunks/E88W8NWPPQ0DDP6MAQE0 +0 -0
  135. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/chunks/EDKREXA5PA5KMVMYT1T0 +0 -0
  136. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/chunks/EMXV4G2NH651YQHCN5SG +0 -0
  137. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/chunks/F2FF589RGM5TQPJ4XS30 +0 -0
  138. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/chunks/FX2THCNDEF1TPJVVW6CG +0 -0
  139. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/chunks/GD7FA0K8HRGV0XK609W0 +0 -0
  140. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/chunks/HNW4TH4RRN5ECR7PH4Z0 +0 -0
  141. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/chunks/JH2K5GX77HJWDR3BRHN0 +0 -0
  142. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/chunks/KYA9AWYNRNH4KDN3YS1G +0 -0
  143. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/chunks/MHYQZGW0T34H7566ND30 +0 -0
  144. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/chunks/MJC2EWJ8DTBA7P46REFG +0 -0
  145. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/chunks/N4EXVBQKBGCMTXX6PEJ0 +0 -0
  146. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/chunks/P6C9986C6R2P9EP30XCG +0 -0
  147. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/chunks/P9JDEJ02DTDBGJDASRB0 +0 -0
  148. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/chunks/PAMW4ZQ7FVP7E1AZR2W0 +0 -0
  149. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/chunks/PZ5F8FQKKA144F08ANG0 +0 -0
  150. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/chunks/QDZDYMBSPJ4M0T34BEPG +0 -0
  151. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/chunks/QEDGZDXTPJEX179WCT6G +0 -0
  152. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/chunks/RQM2HG8XAD9KP8S2TRKG +0 -0
  153. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/chunks/T394Y31WDT1VCVFY3A80 +0 -0
  154. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/chunks/TXZ35HQMB7RHFJKRNXZG +0 -0
  155. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/chunks/V66JMMKW77DCFEGRVSK0 +0 -0
  156. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/chunks/VGFD4TNTAETR77B9RK8G +0 -0
  157. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/chunks/VJM5MNFQ7KQ7ERCWFNT0 +0 -0
  158. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/chunks/W4G0HS519TZDQBDAD01G +0 -0
  159. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/chunks/XZAFNSMV272D9X70HC50 +0 -0
  160. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/chunks/YFGVD91WZJM9FKAB4PQG +0 -0
  161. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/chunks/YGWDY7HYDBVBPKSJYK40 +0 -0
  162. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/chunks/YQ0KA7YQ737KNCT5F0BG +0 -0
  163. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/chunks/YRS4NW2FJM8P66MCF8E0 +0 -0
  164. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/chunks/YWQDK4GG3H7JF189CN6G +0 -0
  165. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/chunks/Z50RSERZRJZNTFRPDW80 +0 -0
  166. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/config.yaml +0 -0
  167. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/manifests/15KJFGXKPM1KRGFZ52D0 +0 -0
  168. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/manifests/19KPV7V2275XRM01YAWG +0 -0
  169. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/manifests/2PQ1EA39NB2VK7QK688G +0 -0
  170. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/manifests/3QYVB4AX7J2XF0QAEX1G +0 -0
  171. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/manifests/62CS3ENEZP4MJHPAW12G +0 -0
  172. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/manifests/7V2NE5Q4H7SN9QF0ZHJ0 +0 -0
  173. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/manifests/7WT30WPG1HF0P2QXGV6G +0 -0
  174. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/manifests/88Z1G93EH4VF9X28BBHG +0 -0
  175. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/manifests/AAJX4KKQQH72RK949AA0 +0 -0
  176. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/manifests/B81H9ZEGPV7E15CWXA10 +0 -0
  177. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/manifests/CZMYYDSX2SX36J47WN9G +0 -0
  178. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/manifests/D5CVGKP2G5DP6C277YAG +0 -0
  179. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/manifests/D6QG80A0HJW564ZXRBRG +0 -0
  180. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/manifests/DDPY0EEPKZXW1ACW41HG +0 -0
  181. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/manifests/DNTQPT8BPWQJ1N2K3KN0 +0 -0
  182. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/manifests/EN0XHAX4APG96CNX1PF0 +0 -0
  183. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/manifests/F22E2GTDKW73XFV884JG +0 -0
  184. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/manifests/FM7YJ4BBE12X6CE0T4AG +0 -0
  185. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/manifests/HB9W7VCB4QA786S2XJBG +0 -0
  186. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/manifests/J3ZNDGTGA4AY29S8SJVG +0 -0
  187. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/manifests/KCR2FSZ5WFVV39SRQWB0 +0 -0
  188. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/manifests/MZG15YADGEG849HP3DPG +0 -0
  189. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/manifests/NGW2FB9H515MEMPRJCNG +0 -0
  190. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/manifests/NYEQXA5QV0780CE19HFG +0 -0
  191. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/manifests/PZCTNRCT17DDAH1Q8B00 +0 -0
  192. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/manifests/Q8WDWGQ0T78AEXKHRV40 +0 -0
  193. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/manifests/QDR73V4TZ4M6CW1PNPSG +0 -0
  194. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/manifests/QYDWRAXGKCFNV0645F80 +0 -0
  195. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/manifests/RF0DB8QD7R68HNHPAXVG +0 -0
  196. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/manifests/RNXAWAZHFV0CDV8JJVBG +0 -0
  197. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/manifests/RVXQ0DMYANQPV6X32690 +0 -0
  198. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/manifests/TTSZ8VYDX0Y7PB6A13H0 +0 -0
  199. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/manifests/WS2BZ61Q1V564ZG6GSJG +0 -0
  200. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/manifests/XXCGBC5VMRPB89PFMFGG +0 -0
  201. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/manifests/ZEQVP57D4FWAZJ0BJV6G +0 -0
  202. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/refs/branch.main/ref.json +0 -0
  203. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/snapshots/BYJMXJ1CHYE86YSHESR0 +0 -0
  204. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/snapshots/EH9VY081CEHEFY5Y11E0 +0 -0
  205. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/snapshots/QYX6FZ0NZAKSV5XMDSGG +0 -0
  206. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/snapshots/W1ZXYGWWEXKXS2J6TQGG +0 -0
  207. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/snapshots/X8NA4KMB3XYEDM2FAJEG +0 -0
  208. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/transactions/BYJMXJ1CHYE86YSHESR0 +0 -0
  209. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/transactions/QYX6FZ0NZAKSV5XMDSGG +0 -0
  210. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/transactions/W1ZXYGWWEXKXS2J6TQGG +0 -0
  211. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/split-repo/transactions/X8NA4KMB3XYEDM2FAJEG +0 -0
  212. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/test-repo/chunks/09HEW2P03CSMHFAZY7DG +0 -0
  213. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/test-repo/chunks/52H0E4NSPN8SVRK9EVGG +0 -0
  214. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/test-repo/chunks/DWQ75SDC624XF9H326RG +0 -0
  215. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/test-repo/chunks/RW938N1KP2R4BHMW62QG +0 -0
  216. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/test-repo/config.yaml +0 -0
  217. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/test-repo/manifests/CMYVHDWMSTG9R25780YG +0 -0
  218. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/test-repo/manifests/G3W2W8V6ZG09J6C21WE0 +0 -0
  219. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/test-repo/manifests/Q04J7QW5RQ8D17TPA10G +0 -0
  220. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/test-repo/manifests/SHTEAP8C784YMZSJKBM0 +0 -0
  221. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/test-repo/refs/branch.main/ref.json +0 -0
  222. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/test-repo/refs/branch.my-branch/ref.json +0 -0
  223. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/test-repo/refs/tag.deleted/ref.json +0 -0
  224. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/test-repo/refs/tag.deleted/ref.json.deleted +0 -0
  225. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/test-repo/refs/tag.it also works!/ref.json +0 -0
  226. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/test-repo/refs/tag.it works!/ref.json +0 -0
  227. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/test-repo/snapshots/4QF8JA0YPDN51MHSSYVG +0 -0
  228. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/test-repo/snapshots/7XAF0Q905SH4938DN9CG +0 -0
  229. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/test-repo/snapshots/GC4YVH5SKBPEZCENYQE0 +0 -0
  230. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/test-repo/snapshots/NXH3M0HJ7EEJ0699DPP0 +0 -0
  231. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/test-repo/snapshots/P874YS3J196959RDHX7G +0 -0
  232. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/test-repo/snapshots/XDZ162T1TYBEJMK99NPG +0 -0
  233. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/test-repo/transactions/4QF8JA0YPDN51MHSSYVG +0 -0
  234. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/test-repo/transactions/7XAF0Q905SH4938DN9CG +0 -0
  235. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/test-repo/transactions/GC4YVH5SKBPEZCENYQE0 +0 -0
  236. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/test-repo/transactions/NXH3M0HJ7EEJ0699DPP0 +0 -0
  237. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/data/test-repo/transactions/XDZ162T1TYBEJMK99NPG +0 -0
  238. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/run_xarray_backends_tests.py +0 -0
  239. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/test_can_read_old.py +0 -0
  240. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/test_commit_properties.py +0 -0
  241. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/test_concurrency.py +0 -0
  242. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/test_conflicts.py +0 -0
  243. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/test_credentials.py +0 -0
  244. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/test_dask.py +0 -0
  245. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/test_debuginfo.py +0 -0
  246. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/test_distributed_append.py +0 -0
  247. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/test_distributed_writers.py +0 -0
  248. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/test_error.py +0 -0
  249. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/test_gc.py +0 -0
  250. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/test_inspect.py +0 -0
  251. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/test_logs.py +0 -0
  252. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/test_manifest_splitting.py +0 -0
  253. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/test_pickle.py +0 -0
  254. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/test_regressions.py +0 -0
  255. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/test_session.py +0 -0
  256. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/test_stateful_repo_ops.py +0 -0
  257. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/test_stats.py +0 -0
  258. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/test_store.py +0 -0
  259. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/test_timetravel.py +0 -0
  260. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/test_virtual_ref.py +0 -0
  261. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/test_xarray.py +0 -0
  262. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/test_zarr/__init__.py +0 -0
  263. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/test_zarr/test_array.py +0 -0
  264. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/test_zarr/test_group.py +0 -0
  265. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/test_zarr/test_properties.py +0 -0
  266. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/test_zarr/test_stateful.py +0 -0
  267. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/test_zarr/test_store/__init__.py +0 -0
  268. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/test_zarr/test_store/test_core.py +0 -0
  269. {icechunk-1.1.17 → icechunk-1.1.18}/icechunk-python/tests/test_zarr/test_store/test_icechunk_store.py +0 -0
  270. {icechunk-1.1.17 → icechunk-1.1.18}/pyproject.toml +0 -0
  271. {icechunk-1.1.17 → icechunk-1.1.18}/python/icechunk/__init__.py +0 -0
  272. {icechunk-1.1.17 → icechunk-1.1.18}/python/icechunk/_icechunk_python.pyi +0 -0
  273. {icechunk-1.1.17 → icechunk-1.1.18}/python/icechunk/credentials.py +0 -0
  274. {icechunk-1.1.17 → icechunk-1.1.18}/python/icechunk/dask.py +0 -0
  275. {icechunk-1.1.17 → icechunk-1.1.18}/python/icechunk/distributed.py +0 -0
  276. {icechunk-1.1.17 → icechunk-1.1.18}/python/icechunk/py.typed +0 -0
  277. {icechunk-1.1.17 → icechunk-1.1.18}/python/icechunk/repository.py +0 -0
  278. {icechunk-1.1.17 → icechunk-1.1.18}/python/icechunk/session.py +0 -0
  279. {icechunk-1.1.17 → icechunk-1.1.18}/python/icechunk/storage.py +0 -0
  280. {icechunk-1.1.17 → icechunk-1.1.18}/python/icechunk/store.py +0 -0
  281. {icechunk-1.1.17 → icechunk-1.1.18}/python/icechunk/testing/strategies.py +0 -0
  282. {icechunk-1.1.17 → icechunk-1.1.18}/python/icechunk/vendor/__init__.py +0 -0
  283. {icechunk-1.1.17 → icechunk-1.1.18}/python/icechunk/vendor/xarray.py +0 -0
  284. {icechunk-1.1.17 → icechunk-1.1.18}/python/icechunk/xarray.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: icechunk
3
- Version: 1.1.17
3
+ Version: 1.1.18
4
4
  Classifier: Programming Language :: Rust
5
5
  Classifier: Programming Language :: Python :: Implementation :: CPython
6
6
  Classifier: Programming Language :: Python :: Implementation :: PyPy
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "icechunk"
3
- version = "0.3.20"
3
+ version = "0.3.21"
4
4
  description = "Transactional storage engine for Zarr designed for use on cloud object storage"
5
5
  readme = "README.md"
6
6
  repository = "https://github.com/earth-mover/icechunk"
@@ -450,6 +450,8 @@ impl RepositoryConfig {
450
450
  (Some(s), None) => Some(s.clone()),
451
451
  (Some(mine), Some(theirs)) => Some(mine.merge(theirs)),
452
452
  },
453
+ // For virtual_chunk_containers, replace rather than extend.
454
+ // This is consistent with other fields: if specified, it replaces.
453
455
  virtual_chunk_containers: match (
454
456
  &self.virtual_chunk_containers,
455
457
  other.virtual_chunk_containers,
@@ -457,11 +459,7 @@ impl RepositoryConfig {
457
459
  (None, None) => None,
458
460
  (None, Some(c)) => Some(c),
459
461
  (Some(c), None) => Some(c.clone()),
460
- (Some(mine), Some(theirs)) => {
461
- let mut merged = mine.clone();
462
- merged.extend(theirs);
463
- Some(merged)
464
- }
462
+ (Some(_), Some(theirs)) => Some(theirs),
465
463
  },
466
464
  manifest: match (&self.manifest, other.manifest) {
467
465
  (None, None) => None,
@@ -678,4 +676,89 @@ mod tests {
678
676
  assert_eq!(config, roundtrip);
679
677
  }
680
678
  }
679
+
680
+ #[icechunk_macros::test]
681
+ fn test_merge_replaces_virtual_chunk_containers() {
682
+ // Create a config with a VCC
683
+ let mut config1 = RepositoryConfig::default();
684
+ config1.set_virtual_chunk_container(
685
+ VirtualChunkContainer::new(
686
+ "s3://bucket1/".to_string(),
687
+ ObjectStoreConfig::S3(S3Options {
688
+ region: Some("us-east-1".to_string()),
689
+ endpoint_url: None,
690
+ anonymous: false,
691
+ allow_http: false,
692
+ force_path_style: false,
693
+ network_stream_timeout_seconds: None,
694
+ requester_pays: false,
695
+ }),
696
+ )
697
+ .unwrap(),
698
+ );
699
+
700
+ // Create a config with no VCCs (cleared)
701
+ let mut config2 = RepositoryConfig::default();
702
+ config2.clear_virtual_chunk_containers();
703
+
704
+ // Merge: config2 (empty VCCs) should replace config1's VCCs
705
+ let merged = config1.merge(config2);
706
+
707
+ // VCCs should be empty after merge
708
+ assert_eq!(
709
+ merged.virtual_chunk_containers,
710
+ Some(std::collections::HashMap::new()),
711
+ "Merging with cleared VCCs should result in empty VCCs"
712
+ );
713
+ }
714
+
715
+ #[icechunk_macros::test]
716
+ fn test_merge_replaces_virtual_chunk_containers_with_new_ones() {
717
+ // Create a config with VCC1
718
+ let mut config1 = RepositoryConfig::default();
719
+ config1.set_virtual_chunk_container(
720
+ VirtualChunkContainer::new(
721
+ "s3://bucket1/".to_string(),
722
+ ObjectStoreConfig::S3(S3Options {
723
+ region: Some("us-east-1".to_string()),
724
+ endpoint_url: None,
725
+ anonymous: false,
726
+ allow_http: false,
727
+ force_path_style: false,
728
+ network_stream_timeout_seconds: None,
729
+ requester_pays: false,
730
+ }),
731
+ )
732
+ .unwrap(),
733
+ );
734
+
735
+ // Create a config with VCC2
736
+ let mut config2 = RepositoryConfig::default();
737
+ config2.set_virtual_chunk_container(
738
+ VirtualChunkContainer::new(
739
+ "s3://bucket2/".to_string(),
740
+ ObjectStoreConfig::S3(S3Options {
741
+ region: Some("us-west-2".to_string()),
742
+ endpoint_url: None,
743
+ anonymous: false,
744
+ allow_http: false,
745
+ force_path_style: false,
746
+ network_stream_timeout_seconds: None,
747
+ requester_pays: false,
748
+ }),
749
+ )
750
+ .unwrap(),
751
+ );
752
+
753
+ // Merge: config2's VCCs should replace config1's VCCs
754
+ let merged = config1.merge(config2);
755
+
756
+ let vccs = merged.virtual_chunk_containers.unwrap();
757
+ assert_eq!(vccs.len(), 1, "Should have exactly one VCC after merge");
758
+ assert!(
759
+ vccs.contains_key("s3://bucket2/"),
760
+ "Should contain bucket2, not bucket1"
761
+ );
762
+ assert!(!vccs.contains_key("s3://bucket1/"), "Should not contain bucket1");
763
+ }
681
764
  }
@@ -945,7 +945,8 @@ impl Session {
945
945
  if self.read_only() {
946
946
  return Err(SessionErrorKind::ReadOnlySession.into());
947
947
  }
948
- let Session { splits: other_splits, change_set, .. } = other;
948
+ let Session { splits: other_splits, change_set, config: other_config, .. } =
949
+ other;
949
950
 
950
951
  if self.splits.iter().any(|(node, our_splits)| {
951
952
  other_splits
@@ -953,7 +954,7 @@ impl Session {
953
954
  .is_some_and(|their_splits| !our_splits.compatible_with(their_splits))
954
955
  }) {
955
956
  let ours = self.config().manifest().splitting().clone();
956
- let theirs = self.config().manifest().splitting().clone();
957
+ let theirs = other_config.manifest().splitting().clone();
957
958
  return Err(
958
959
  SessionErrorKind::IncompatibleSplittingConfig { ours, theirs }.into()
959
960
  );
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "icechunk-python"
3
- version = "1.1.17"
3
+ version = "1.1.18"
4
4
  description = "Transactional storage engine for Zarr designed for use on cloud object storage"
5
5
  readme = "README.md"
6
6
  repository = "https://github.com/earth-mover/icechunk"
@@ -21,7 +21,7 @@ crate-type = ["cdylib"]
21
21
  bytes = "1.11.0"
22
22
  chrono = { version = "0.4.42" }
23
23
  futures = "0.3.31"
24
- icechunk = { path = "../icechunk", version = "0.3.20", features = ["logs"] }
24
+ icechunk = { path = "../icechunk", version = "0.3.21", features = ["logs"] }
25
25
  itertools = "0.14.0"
26
26
  pyo3 = { version = "0.27.2", features = [
27
27
  "chrono",
@@ -142,6 +142,39 @@ def test_virtual_chunk_containers() -> None:
142
142
  assert config.virtual_chunk_containers["s3://testbucket/"] == container
143
143
 
144
144
 
145
+ def test_clear_virtual_chunk_containers_persists_through_reopen() -> None:
146
+ """Test that clearing VCCs is respected by reopen().
147
+
148
+ Regression test for: https://github.com/earth-mover/icechunk/issues/XXX
149
+ """
150
+ storage = icechunk.in_memory_storage()
151
+
152
+ # Create repo and add a VCC
153
+ repo = icechunk.Repository.create(storage=storage)
154
+ config = repo.config
155
+ store_config = icechunk.s3_store(region="us-east-1")
156
+ container = icechunk.VirtualChunkContainer("s3://testbucket/", store_config)
157
+ config.set_virtual_chunk_container(container)
158
+ repo = repo.reopen(config=config)
159
+ repo.save_config()
160
+
161
+ vccs = repo.config.virtual_chunk_containers or {}
162
+ assert "s3://testbucket/" in vccs
163
+
164
+ # Clear VCCs and reopen
165
+ config = repo.config
166
+ config.clear_virtual_chunk_containers()
167
+ assert config.virtual_chunk_containers == {}
168
+
169
+ repo = repo.reopen(config=config)
170
+
171
+ # VCCs should be cleared after reopen
172
+ reopened_vccs = repo.config.virtual_chunk_containers or {}
173
+ assert (
174
+ reopened_vccs == {}
175
+ ), f"Expected no VCCs after reopen, got: {list(reopened_vccs.keys())}"
176
+
177
+
145
178
  def test_can_change_deep_config_values() -> None:
146
179
  storage = icechunk.in_memory_storage()
147
180
  repo = icechunk.Repository.create(
File without changes
File without changes