floe-python 0.6.7__tar.gz → 0.6.8__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 (241) hide show
  1. {floe_python-0.6.7 → floe_python-0.6.8}/Cargo.lock +5 -5
  2. {floe_python-0.6.7 → floe_python-0.6.8}/PKG-INFO +1 -1
  3. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/Cargo.toml +1 -1
  4. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/storage/providers/s3.rs +22 -1
  5. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/io/storage/s3.rs +22 -1
  6. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-python/Cargo.toml +2 -2
  7. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-python/pyproject.duckdb.toml +2 -2
  8. {floe_python-0.6.7 → floe_python-0.6.8}/pyproject.toml +1 -1
  9. {floe_python-0.6.7 → floe_python-0.6.8}/Cargo.toml +0 -0
  10. {floe_python-0.6.7 → floe_python-0.6.8}/README.md +0 -0
  11. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/README.md +0 -0
  12. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/add_entity.rs +0 -0
  13. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/checks/cast.rs +0 -0
  14. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/checks/mismatch.rs +0 -0
  15. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/checks/mod.rs +0 -0
  16. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/checks/normalize.rs +0 -0
  17. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/checks/not_null.rs +0 -0
  18. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/checks/unique.rs +0 -0
  19. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/config/catalog.rs +0 -0
  20. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/config/location.rs +0 -0
  21. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/config/mod.rs +0 -0
  22. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/config/parse.rs +0 -0
  23. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/config/storage.rs +0 -0
  24. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/config/template.rs +0 -0
  25. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/config/types.rs +0 -0
  26. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/config/validate.rs +0 -0
  27. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/config/yaml_decode.rs +0 -0
  28. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/errors.rs +0 -0
  29. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/format.rs +0 -0
  30. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/mod.rs +0 -0
  31. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/read/avro.rs +0 -0
  32. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/read/csv.rs +0 -0
  33. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/read/fixed_width.rs +0 -0
  34. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/read/json.rs +0 -0
  35. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/read/json_selector.rs +0 -0
  36. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/read/mod.rs +0 -0
  37. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/read/orc.rs +0 -0
  38. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/read/parquet.rs +0 -0
  39. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/read/xlsx.rs +0 -0
  40. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/read/xml.rs +0 -0
  41. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/read/xml_selector.rs +0 -0
  42. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/storage/core/extensions.rs +0 -0
  43. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/storage/core/mod.rs +0 -0
  44. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/storage/core/paths.rs +0 -0
  45. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/storage/core/placement.rs +0 -0
  46. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/storage/core/planner.rs +0 -0
  47. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/storage/core/uri.rs +0 -0
  48. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/storage/core/validation.rs +0 -0
  49. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/storage/mod.rs +0 -0
  50. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/storage/object_store.rs +0 -0
  51. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/storage/ops/archive.rs +0 -0
  52. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/storage/ops/inputs.rs +0 -0
  53. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/storage/ops/mod.rs +0 -0
  54. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/storage/ops/output.rs +0 -0
  55. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/storage/providers/adls.rs +0 -0
  56. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/storage/providers/gcs.rs +0 -0
  57. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/storage/providers/local.rs +0 -0
  58. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/storage/providers/mod.rs +0 -0
  59. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/storage/target.rs +0 -0
  60. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/unique_seed/mod.rs +0 -0
  61. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/write/accepted.rs +0 -0
  62. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/write/arrow_convert.rs +0 -0
  63. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/write/csv.rs +0 -0
  64. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/write/delta/commit_metrics.rs +0 -0
  65. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/write/delta/options.rs +0 -0
  66. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/write/delta/record_batch.rs +0 -0
  67. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/write/delta/unity.rs +0 -0
  68. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/write/delta/unity_tests.rs +0 -0
  69. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/write/delta.rs +0 -0
  70. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/write/duckdb/conn.rs +0 -0
  71. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/write/duckdb/merge.rs +0 -0
  72. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/write/duckdb.rs +0 -0
  73. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/write/iceberg/context.rs +0 -0
  74. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/write/iceberg/data_files.rs +0 -0
  75. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/write/iceberg/glue.rs +0 -0
  76. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/write/iceberg/metadata.rs +0 -0
  77. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/write/iceberg/rest.rs +0 -0
  78. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/write/iceberg/schema.rs +0 -0
  79. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/write/iceberg.rs +0 -0
  80. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/write/metrics.rs +0 -0
  81. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/write/mod.rs +0 -0
  82. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/write/parquet.rs +0 -0
  83. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/write/parts.rs +0 -0
  84. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/write/sink_format.rs +0 -0
  85. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/write/strategy/append.rs +0 -0
  86. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/write/strategy/merge/keys.rs +0 -0
  87. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/write/strategy/merge/mod.rs +0 -0
  88. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/write/strategy/merge/scd1.rs +0 -0
  89. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/write/strategy/merge/scd2.rs +0 -0
  90. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/write/strategy/merge/shared.rs +0 -0
  91. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/write/strategy/mod.rs +0 -0
  92. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/write/strategy/overwrite.rs +0 -0
  93. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/lib.rs +0 -0
  94. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/lineage/mod.rs +0 -0
  95. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/log.rs +0 -0
  96. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/manifest/builder.rs +0 -0
  97. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/manifest/mod.rs +0 -0
  98. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/manifest/model.rs +0 -0
  99. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/manifest/reconstruct.rs +0 -0
  100. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/manifest/runtime.rs +0 -0
  101. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/profile/mod.rs +0 -0
  102. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/profile/parse.rs +0 -0
  103. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/profile/types.rs +0 -0
  104. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/profile/validate.rs +0 -0
  105. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/report/build.rs +0 -0
  106. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/report/entity.rs +0 -0
  107. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/report/mod.rs +0 -0
  108. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/report/output.rs +0 -0
  109. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/run/context.rs +0 -0
  110. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/run/entity/accepted_buffer.rs +0 -0
  111. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/run/entity/accepted_write.rs +0 -0
  112. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/run/entity/incremental.rs +0 -0
  113. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/run/entity/mod.rs +0 -0
  114. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/run/entity/pii.rs +0 -0
  115. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/run/entity/precheck.rs +0 -0
  116. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/run/entity/process.rs +0 -0
  117. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/run/entity/resolve.rs +0 -0
  118. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/run/entity/validate_split.rs +0 -0
  119. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/run/events.rs +0 -0
  120. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/run/file.rs +0 -0
  121. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/run/mod.rs +0 -0
  122. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/run/output.rs +0 -0
  123. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/run/perf.rs +0 -0
  124. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/runner/mod.rs +0 -0
  125. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/runner/outcome.rs +0 -0
  126. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/runtime.rs +0 -0
  127. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/secret.rs +0 -0
  128. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/state/mod.rs +0 -0
  129. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/vars/mod.rs +0 -0
  130. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/vars/resolve.rs +0 -0
  131. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/warnings.rs +0 -0
  132. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/integration/archive_run.rs +0 -0
  133. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/integration/composite_unique.rs +0 -0
  134. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/integration/delta_run.rs +0 -0
  135. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/integration/dry_run.rs +0 -0
  136. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/integration/duckdb_run.rs +0 -0
  137. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/integration/fixed_width.rs +0 -0
  138. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/integration/iceberg_gcs_run.rs +0 -0
  139. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/integration/iceberg_glue_run.rs +0 -0
  140. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/integration/iceberg_run.rs +0 -0
  141. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/integration/iceberg_s3_run.rs +0 -0
  142. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/integration/json_selectors.rs +0 -0
  143. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/integration/local_run.rs +0 -0
  144. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/integration/mod.rs +0 -0
  145. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/integration/path_normalization.rs +0 -0
  146. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/integration/run_entities_filter.rs +0 -0
  147. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/integration.rs +0 -0
  148. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/common.rs +0 -0
  149. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/config/add_entity.rs +0 -0
  150. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/config/adls_storage.rs +0 -0
  151. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/config/adls_validation.rs +0 -0
  152. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/config/catalogs.rs +0 -0
  153. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/config/config_validation.rs +0 -0
  154. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/config/duckdb_validation.rs +0 -0
  155. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/config/gcs_storage.rs +0 -0
  156. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/config/gcs_validation.rs +0 -0
  157. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/config/lineage_validation.rs +0 -0
  158. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/config/local_storage.rs +0 -0
  159. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/config/location.rs +0 -0
  160. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/config/mod.rs +0 -0
  161. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/config/parse.rs +0 -0
  162. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/config/pii_validation.rs +0 -0
  163. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/config/remote_base.rs +0 -0
  164. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/config/storage_resolver_uri.rs +0 -0
  165. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/config/templating.rs +0 -0
  166. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/io/format.rs +0 -0
  167. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/io/mod.rs +0 -0
  168. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/io/read/avro_input.rs +0 -0
  169. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/io/read/csv_nulls.rs +0 -0
  170. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/io/read/json_array.rs +0 -0
  171. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/io/read/json_ndjson.rs +0 -0
  172. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/io/read/json_selector.rs +0 -0
  173. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/io/read/mod.rs +0 -0
  174. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/io/read/orc_input.rs +0 -0
  175. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/io/read/parquet_input.rs +0 -0
  176. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/io/read/tsv.rs +0 -0
  177. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/io/read/xlsx_input.rs +0 -0
  178. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/io/read/xml.rs +0 -0
  179. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/io/read/xml_selector.rs +0 -0
  180. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/io/storage/adls.rs +0 -0
  181. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/io/storage/adls_integration.rs +0 -0
  182. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/io/storage/gcs.rs +0 -0
  183. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/io/storage/inputs.rs +0 -0
  184. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/io/storage/local.rs +0 -0
  185. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/io/storage/mod.rs +0 -0
  186. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/io/storage/paths.rs +0 -0
  187. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/io/storage/planner.rs +0 -0
  188. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/io/storage/target.rs +0 -0
  189. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/io/write/delta_merge.rs +0 -0
  190. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/io/write/delta_write.rs +0 -0
  191. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/io/write/iceberg_write.rs +0 -0
  192. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/io/write/metrics.rs +0 -0
  193. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/io/write/mod.rs +0 -0
  194. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/io/write/object_store.rs +0 -0
  195. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/io/write/parquet_write.rs +0 -0
  196. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/io/write/parts.rs +0 -0
  197. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/io/write/rejected_csv.rs +0 -0
  198. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/manifest/mod.rs +0 -0
  199. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/manifest/runtime.rs +0 -0
  200. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/mod.rs +0 -0
  201. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/profile/mod.rs +0 -0
  202. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/profile/parse.rs +0 -0
  203. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/profile/validate.rs +0 -0
  204. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/report/accepted_output.rs +0 -0
  205. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/report/mod.rs +0 -0
  206. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/report/storage.rs +0 -0
  207. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/run/check_order.rs +0 -0
  208. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/run/checks.rs +0 -0
  209. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/run/entity/accepted_output.rs +0 -0
  210. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/run/entity/incremental.rs +0 -0
  211. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/run/entity/mod.rs +0 -0
  212. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/run/lineage.rs +0 -0
  213. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/run/mod.rs +0 -0
  214. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/run/normalize.rs +0 -0
  215. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/run/pii.rs +0 -0
  216. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/run/replay_base.rs +0 -0
  217. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/run/report.rs +0 -0
  218. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/run/schema_mismatch.rs +0 -0
  219. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/runner/adapter.rs +0 -0
  220. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/runner/mod.rs +0 -0
  221. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/state/mod.rs +0 -0
  222. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/vars/mod.rs +0 -0
  223. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/vars/resolve.rs +0 -0
  224. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit.rs +0 -0
  225. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-python/.gitignore +0 -0
  226. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-python/README.md +0 -0
  227. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-python/src/functions.rs +0 -0
  228. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-python/src/lib.rs +0 -0
  229. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-python/src/observer.rs +0 -0
  230. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-python/src/types/config.rs +0 -0
  231. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-python/src/types/errors.rs +0 -0
  232. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-python/src/types/mod.rs +0 -0
  233. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-python/src/types/outcome.rs +0 -0
  234. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-python/tests/fixtures/config.yml +0 -0
  235. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-python/tests/fixtures/in/customer/customers_valid.csv +0 -0
  236. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-python/tests/fixtures/invalid_config.yml +0 -0
  237. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-python/tests/fixtures/profile.yml +0 -0
  238. {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-python/tests/test_floe.py +0 -0
  239. {floe_python-0.6.7 → floe_python-0.6.8}/python/floe/__init__.py +0 -0
  240. {floe_python-0.6.7 → floe_python-0.6.8}/python/floe/_floe.pyi +0 -0
  241. {floe_python-0.6.7 → floe_python-0.6.8}/python/floe/py.typed +0 -0
@@ -1847,9 +1847,9 @@ dependencies = [
1847
1847
 
1848
1848
  [[package]]
1849
1849
  name = "crossbeam-epoch"
1850
- version = "0.9.18"
1850
+ version = "0.9.20"
1851
1851
  source = "registry+https://github.com/rust-lang/crates.io-index"
1852
- checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e"
1852
+ checksum = "2d6914041f254d6e9176c01941b21115dcfb7089e55135a35411081bd106ef3f"
1853
1853
  dependencies = [
1854
1854
  "crossbeam-utils",
1855
1855
  ]
@@ -3340,7 +3340,7 @@ dependencies = [
3340
3340
 
3341
3341
  [[package]]
3342
3342
  name = "floe-cli"
3343
- version = "0.6.7"
3343
+ version = "0.6.8"
3344
3344
  dependencies = [
3345
3345
  "assert_cmd",
3346
3346
  "clap",
@@ -3353,7 +3353,7 @@ dependencies = [
3353
3353
 
3354
3354
  [[package]]
3355
3355
  name = "floe-core"
3356
- version = "0.6.7"
3356
+ version = "0.6.8"
3357
3357
  dependencies = [
3358
3358
  "apache-avro",
3359
3359
  "arrow",
@@ -3399,7 +3399,7 @@ dependencies = [
3399
3399
 
3400
3400
  [[package]]
3401
3401
  name = "floe-python"
3402
- version = "0.6.7"
3402
+ version = "0.6.8"
3403
3403
  dependencies = [
3404
3404
  "floe-core",
3405
3405
  "pyo3",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: floe-python
3
- Version: 0.6.7
3
+ Version: 0.6.8
4
4
  Classifier: Development Status :: 4 - Beta
5
5
  Classifier: Intended Audience :: Developers
6
6
  Classifier: Intended Audience :: Science/Research
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "floe-core"
3
- version = "0.6.7"
3
+ version = "0.6.8"
4
4
  edition = "2021"
5
5
  description = "Core library for Floe, a YAML-driven technical ingestion tool."
6
6
  license = "MIT"
@@ -12,6 +12,8 @@ use crate::io::storage::uri::{format_bucket_uri, parse_bucket_uri, BucketLocatio
12
12
  use crate::io::storage::{planner, ConditionalWrite, ObjectRef, StorageClient, StoredObject};
13
13
  use crate::FloeResult;
14
14
 
15
+ const AWS_S3_FORCE_PATH_STYLE: &str = "AWS_S3_FORCE_PATH_STYLE";
16
+
15
17
  pub struct S3Client {
16
18
  bucket: String,
17
19
  client: Client,
@@ -44,7 +46,7 @@ impl S3Client {
44
46
  builder.load().await
45
47
  });
46
48
  let mut s3_builder = aws_sdk_s3::config::Builder::from(&config);
47
- if path_style_access.unwrap_or(false) {
49
+ if resolve_path_style_access(path_style_access) {
48
50
  s3_builder = s3_builder.force_path_style(true);
49
51
  }
50
52
  let client = Client::from_conf(s3_builder.build());
@@ -290,6 +292,25 @@ impl StorageClient for S3Client {
290
292
  }
291
293
  }
292
294
 
295
+ #[doc(hidden)]
296
+ pub fn resolve_path_style_access(configured: Option<bool>) -> bool {
297
+ let env_value = std::env::var(AWS_S3_FORCE_PATH_STYLE).ok();
298
+ resolve_path_style_access_from_env(configured, env_value.as_deref())
299
+ }
300
+
301
+ #[doc(hidden)]
302
+ pub fn resolve_path_style_access_from_env(
303
+ configured: Option<bool>,
304
+ env_value: Option<&str>,
305
+ ) -> bool {
306
+ configured.unwrap_or_else(|| {
307
+ env_value.is_some_and(|value| {
308
+ let value = value.trim();
309
+ value == "1" || value.eq_ignore_ascii_case("true")
310
+ })
311
+ })
312
+ }
313
+
293
314
  fn is_not_found<E: std::fmt::Display>(err: &E) -> bool {
294
315
  let text = err.to_string();
295
316
  text.contains("NoSuchKey") || text.contains("NotFound") || text.contains("404")
@@ -1,6 +1,6 @@
1
1
  use std::path::Path;
2
2
 
3
- use floe_core::io::storage::s3::parse_s3_uri;
3
+ use floe_core::io::storage::s3::{parse_s3_uri, resolve_path_style_access_from_env};
4
4
  use floe_core::io::storage::{filter_by_suffixes, stable_sort_refs, temp_path_for_key, ObjectRef};
5
5
 
6
6
  #[test]
@@ -17,6 +17,27 @@ fn parse_s3_uri_allows_bucket_only() {
17
17
  assert_eq!(loc.key, "");
18
18
  }
19
19
 
20
+ #[test]
21
+ fn path_style_access_prefers_explicit_config() {
22
+ let resolve = resolve_path_style_access_from_env;
23
+
24
+ assert!(resolve(Some(true), None));
25
+ assert!(resolve(Some(true), Some("false")));
26
+ assert!(!resolve(Some(false), Some("true")));
27
+ }
28
+
29
+ #[test]
30
+ fn path_style_access_falls_back_to_aws_env_convention() {
31
+ let resolve = resolve_path_style_access_from_env;
32
+
33
+ assert!(!resolve(None, None));
34
+ assert!(resolve(None, Some("true")));
35
+ assert!(resolve(None, Some("1")));
36
+ assert!(resolve(None, Some(" TRUE ")));
37
+ assert!(!resolve(None, Some("false")));
38
+ assert!(!resolve(None, Some("garbage")));
39
+ }
40
+
20
41
  #[test]
21
42
  fn filter_keys_by_suffix_sorts_and_filters() {
22
43
  let refs = vec![
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "floe-python"
3
- version = "0.6.7"
3
+ version = "0.6.8"
4
4
  edition = "2021"
5
5
  description = "Python bindings for floe-core (PyO3-based)"
6
6
  license = "Apache-2.0"
@@ -14,7 +14,7 @@ name = "_floe"
14
14
  crate-type = ["cdylib"]
15
15
 
16
16
  [dependencies]
17
- floe-core = { path = "../floe-core", version = "0.6.7", default-features = false }
17
+ floe-core = { path = "../floe-core", version = "0.6.8", default-features = false }
18
18
  pyo3 = { version = "0.29", features = ["extension-module", "abi3-py310"] }
19
19
  serde_json = "1"
20
20
 
@@ -22,7 +22,7 @@ build-backend = "maturin"
22
22
 
23
23
  [project]
24
24
  name = "floe-duckdb"
25
- version = "0.6.7"
25
+ version = "0.6.8"
26
26
  description = "DuckDB companion extension for floe — adds the native DuckDB sink to the floe Python package"
27
27
  readme = "README.md"
28
28
  requires-python = ">=3.10"
@@ -46,7 +46,7 @@ classifiers = [
46
46
  # only contributes the compiled DuckDB extension module into that package. Pin to
47
47
  # the exact lean version so the companion's `_floe_duckdb` ABI always matches the
48
48
  # `floe` package it plugs into.
49
- dependencies = ["floe-python==0.6.7"]
49
+ dependencies = ["floe-python==0.6.8"]
50
50
 
51
51
  [project.urls]
52
52
  Homepage = "https://github.com/malon64/floe"
@@ -4,7 +4,7 @@ build-backend = "maturin"
4
4
 
5
5
  [project]
6
6
  name = "floe-python"
7
- version = "0.6.7"
7
+ version = "0.6.8"
8
8
  description = "Python bindings for floe-core — run floe pipelines at Rust speed from Python and notebooks"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
File without changes
File without changes