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.
- {floe_python-0.6.7 → floe_python-0.6.8}/Cargo.lock +5 -5
- {floe_python-0.6.7 → floe_python-0.6.8}/PKG-INFO +1 -1
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/Cargo.toml +1 -1
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/storage/providers/s3.rs +22 -1
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/io/storage/s3.rs +22 -1
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-python/Cargo.toml +2 -2
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-python/pyproject.duckdb.toml +2 -2
- {floe_python-0.6.7 → floe_python-0.6.8}/pyproject.toml +1 -1
- {floe_python-0.6.7 → floe_python-0.6.8}/Cargo.toml +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/README.md +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/README.md +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/add_entity.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/checks/cast.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/checks/mismatch.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/checks/mod.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/checks/normalize.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/checks/not_null.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/checks/unique.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/config/catalog.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/config/location.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/config/mod.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/config/parse.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/config/storage.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/config/template.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/config/types.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/config/validate.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/config/yaml_decode.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/errors.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/format.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/mod.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/read/avro.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/read/csv.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/read/fixed_width.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/read/json.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/read/json_selector.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/read/mod.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/read/orc.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/read/parquet.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/read/xlsx.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/read/xml.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/read/xml_selector.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/storage/core/extensions.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/storage/core/mod.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/storage/core/paths.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/storage/core/placement.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/storage/core/planner.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/storage/core/uri.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/storage/core/validation.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/storage/mod.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/storage/object_store.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/storage/ops/archive.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/storage/ops/inputs.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/storage/ops/mod.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/storage/ops/output.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/storage/providers/adls.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/storage/providers/gcs.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/storage/providers/local.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/storage/providers/mod.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/storage/target.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/unique_seed/mod.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/write/accepted.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/write/arrow_convert.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/write/csv.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/write/delta/commit_metrics.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/write/delta/options.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/write/delta/record_batch.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/write/delta/unity.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/write/delta/unity_tests.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/write/delta.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/write/duckdb/conn.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/write/duckdb/merge.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/write/duckdb.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/write/iceberg/context.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/write/iceberg/data_files.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/write/iceberg/glue.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/write/iceberg/metadata.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/write/iceberg/rest.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/write/iceberg/schema.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/write/iceberg.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/write/metrics.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/write/mod.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/write/parquet.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/write/parts.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/write/sink_format.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/write/strategy/append.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/write/strategy/merge/keys.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/write/strategy/merge/mod.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/write/strategy/merge/scd1.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/write/strategy/merge/scd2.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/write/strategy/merge/shared.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/write/strategy/mod.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/write/strategy/overwrite.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/lib.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/lineage/mod.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/log.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/manifest/builder.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/manifest/mod.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/manifest/model.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/manifest/reconstruct.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/manifest/runtime.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/profile/mod.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/profile/parse.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/profile/types.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/profile/validate.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/report/build.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/report/entity.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/report/mod.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/report/output.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/run/context.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/run/entity/accepted_buffer.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/run/entity/accepted_write.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/run/entity/incremental.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/run/entity/mod.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/run/entity/pii.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/run/entity/precheck.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/run/entity/process.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/run/entity/resolve.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/run/entity/validate_split.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/run/events.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/run/file.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/run/mod.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/run/output.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/run/perf.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/runner/mod.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/runner/outcome.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/runtime.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/secret.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/state/mod.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/vars/mod.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/vars/resolve.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/warnings.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/integration/archive_run.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/integration/composite_unique.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/integration/delta_run.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/integration/dry_run.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/integration/duckdb_run.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/integration/fixed_width.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/integration/iceberg_gcs_run.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/integration/iceberg_glue_run.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/integration/iceberg_run.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/integration/iceberg_s3_run.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/integration/json_selectors.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/integration/local_run.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/integration/mod.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/integration/path_normalization.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/integration/run_entities_filter.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/integration.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/common.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/config/add_entity.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/config/adls_storage.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/config/adls_validation.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/config/catalogs.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/config/config_validation.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/config/duckdb_validation.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/config/gcs_storage.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/config/gcs_validation.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/config/lineage_validation.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/config/local_storage.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/config/location.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/config/mod.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/config/parse.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/config/pii_validation.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/config/remote_base.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/config/storage_resolver_uri.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/config/templating.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/io/format.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/io/mod.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/io/read/avro_input.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/io/read/csv_nulls.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/io/read/json_array.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/io/read/json_ndjson.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/io/read/json_selector.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/io/read/mod.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/io/read/orc_input.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/io/read/parquet_input.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/io/read/tsv.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/io/read/xlsx_input.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/io/read/xml.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/io/read/xml_selector.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/io/storage/adls.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/io/storage/adls_integration.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/io/storage/gcs.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/io/storage/inputs.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/io/storage/local.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/io/storage/mod.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/io/storage/paths.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/io/storage/planner.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/io/storage/target.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/io/write/delta_merge.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/io/write/delta_write.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/io/write/iceberg_write.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/io/write/metrics.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/io/write/mod.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/io/write/object_store.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/io/write/parquet_write.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/io/write/parts.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/io/write/rejected_csv.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/manifest/mod.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/manifest/runtime.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/mod.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/profile/mod.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/profile/parse.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/profile/validate.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/report/accepted_output.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/report/mod.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/report/storage.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/run/check_order.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/run/checks.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/run/entity/accepted_output.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/run/entity/incremental.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/run/entity/mod.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/run/lineage.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/run/mod.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/run/normalize.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/run/pii.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/run/replay_base.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/run/report.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/run/schema_mismatch.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/runner/adapter.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/runner/mod.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/state/mod.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/vars/mod.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/vars/resolve.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-python/.gitignore +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-python/README.md +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-python/src/functions.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-python/src/lib.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-python/src/observer.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-python/src/types/config.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-python/src/types/errors.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-python/src/types/mod.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-python/src/types/outcome.rs +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-python/tests/fixtures/config.yml +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-python/tests/fixtures/in/customer/customers_valid.csv +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-python/tests/fixtures/invalid_config.yml +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-python/tests/fixtures/profile.yml +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-python/tests/test_floe.py +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/python/floe/__init__.py +0 -0
- {floe_python-0.6.7 → floe_python-0.6.8}/python/floe/_floe.pyi +0 -0
- {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.
|
|
1850
|
+
version = "0.9.20"
|
|
1851
1851
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1852
|
-
checksum = "
|
|
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.
|
|
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.
|
|
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.
|
|
3402
|
+
version = "0.6.8"
|
|
3403
3403
|
dependencies = [
|
|
3404
3404
|
"floe-core",
|
|
3405
3405
|
"pyo3",
|
|
@@ -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
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
49
|
+
dependencies = ["floe-python==0.6.8"]
|
|
50
50
|
|
|
51
51
|
[project.urls]
|
|
52
52
|
Homepage = "https://github.com/malon64/floe"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/write/delta/commit_metrics.rs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/write/strategy/merge/keys.rs
RENAMED
|
File without changes
|
|
File without changes
|
{floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/write/strategy/merge/scd1.rs
RENAMED
|
File without changes
|
{floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/write/strategy/merge/scd2.rs
RENAMED
|
File without changes
|
{floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/src/io/write/strategy/merge/shared.rs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/integration/composite_unique.rs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/integration/iceberg_gcs_run.rs
RENAMED
|
File without changes
|
{floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/integration/iceberg_glue_run.rs
RENAMED
|
File without changes
|
|
File without changes
|
{floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/integration/iceberg_s3_run.rs
RENAMED
|
File without changes
|
{floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/integration/json_selectors.rs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/integration/path_normalization.rs
RENAMED
|
File without changes
|
{floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/integration/run_entities_filter.rs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/config/adls_validation.rs
RENAMED
|
File without changes
|
|
File without changes
|
{floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/config/config_validation.rs
RENAMED
|
File without changes
|
{floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/config/duckdb_validation.rs
RENAMED
|
File without changes
|
|
File without changes
|
{floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/config/gcs_validation.rs
RENAMED
|
File without changes
|
{floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/config/lineage_validation.rs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/config/pii_validation.rs
RENAMED
|
File without changes
|
|
File without changes
|
{floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/config/storage_resolver_uri.rs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/io/read/json_selector.rs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/io/read/parquet_input.rs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/io/storage/adls_integration.rs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/io/write/iceberg_write.rs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/io/write/object_store.rs
RENAMED
|
File without changes
|
{floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/io/write/parquet_write.rs
RENAMED
|
File without changes
|
|
File without changes
|
{floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/io/write/rejected_csv.rs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/report/accepted_output.rs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/run/entity/accepted_output.rs
RENAMED
|
File without changes
|
{floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-core/tests/unit/run/entity/incremental.rs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{floe_python-0.6.7 → floe_python-0.6.8}/crates/floe-python/tests/fixtures/invalid_config.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|