floe-python 0.6.3__tar.gz → 0.6.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {floe_python-0.6.3 → floe_python-0.6.4}/Cargo.lock +25 -143
- {floe_python-0.6.3 → floe_python-0.6.4}/PKG-INFO +1 -1
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/Cargo.toml +5 -4
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/config/parse.rs +4 -3
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/config/types.rs +9 -5
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/io/storage/object_store.rs +21 -7
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/io/write/delta/unity.rs +8 -7
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/io/write/delta/unity_tests.rs +1 -1
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/io/write/duckdb/conn.rs +10 -8
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/io/write/iceberg/context.rs +48 -6
- floe_python-0.6.4/crates/floe-core/src/io/write/iceberg/metadata.rs +202 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/io/write/iceberg/rest.rs +13 -2
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/io/write/iceberg.rs +37 -3
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/lib.rs +2 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/manifest/builder.rs +1 -1
- floe_python-0.6.4/crates/floe-core/src/secret.rs +129 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/unit/config/catalogs.rs +2 -2
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/unit/config/config_validation.rs +2 -10
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/unit/config/parse.rs +1 -1
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/unit/io/write/object_store.rs +23 -3
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-python/Cargo.toml +2 -2
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-python/pyproject.duckdb.toml +2 -2
- {floe_python-0.6.3 → floe_python-0.6.4}/pyproject.toml +1 -1
- floe_python-0.6.3/crates/floe-core/src/io/write/iceberg/metadata.rs +0 -105
- {floe_python-0.6.3 → floe_python-0.6.4}/Cargo.toml +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/README.md +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/README.md +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/add_entity.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/checks/cast.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/checks/mismatch.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/checks/mod.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/checks/normalize.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/checks/not_null.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/checks/unique.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/config/catalog.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/config/location.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/config/mod.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/config/storage.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/config/template.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/config/validate.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/config/yaml_decode.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/errors.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/io/format.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/io/mod.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/io/read/avro.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/io/read/csv.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/io/read/fixed_width.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/io/read/json.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/io/read/json_selector.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/io/read/mod.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/io/read/orc.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/io/read/parquet.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/io/read/xlsx.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/io/read/xml.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/io/read/xml_selector.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/io/storage/core/extensions.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/io/storage/core/mod.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/io/storage/core/paths.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/io/storage/core/placement.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/io/storage/core/planner.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/io/storage/core/uri.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/io/storage/core/validation.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/io/storage/mod.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/io/storage/ops/archive.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/io/storage/ops/inputs.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/io/storage/ops/mod.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/io/storage/ops/output.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/io/storage/providers/adls.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/io/storage/providers/gcs.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/io/storage/providers/local.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/io/storage/providers/mod.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/io/storage/providers/s3.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/io/storage/target.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/io/unique_seed/mod.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/io/write/accepted.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/io/write/arrow_convert.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/io/write/csv.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/io/write/delta/commit_metrics.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/io/write/delta/options.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/io/write/delta/record_batch.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/io/write/delta.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/io/write/duckdb/merge.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/io/write/duckdb.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/io/write/iceberg/data_files.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/io/write/iceberg/glue.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/io/write/iceberg/schema.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/io/write/metrics.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/io/write/mod.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/io/write/parquet.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/io/write/parts.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/io/write/sink_format.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/io/write/strategy/append.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/io/write/strategy/merge/keys.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/io/write/strategy/merge/mod.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/io/write/strategy/merge/scd1.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/io/write/strategy/merge/scd2.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/io/write/strategy/merge/shared.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/io/write/strategy/mod.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/io/write/strategy/overwrite.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/lineage/mod.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/log.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/manifest/mod.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/manifest/model.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/manifest/reconstruct.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/profile/mod.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/profile/parse.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/profile/types.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/profile/validate.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/report/build.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/report/entity.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/report/mod.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/report/output.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/run/context.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/run/entity/accepted_buffer.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/run/entity/accepted_write.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/run/entity/incremental.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/run/entity/mod.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/run/entity/pii.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/run/entity/precheck.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/run/entity/process.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/run/entity/resolve.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/run/entity/validate_split.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/run/events.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/run/file.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/run/mod.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/run/output.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/run/perf.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/runner/mod.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/runner/outcome.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/runtime.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/state/mod.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/vars/mod.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/vars/resolve.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/src/warnings.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/integration/archive_run.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/integration/composite_unique.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/integration/delta_run.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/integration/dry_run.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/integration/duckdb_run.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/integration/fixed_width.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/integration/iceberg_gcs_run.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/integration/iceberg_glue_run.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/integration/iceberg_run.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/integration/iceberg_s3_run.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/integration/json_selectors.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/integration/local_run.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/integration/mod.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/integration/path_normalization.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/integration/run_entities_filter.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/integration.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/unit/common.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/unit/config/add_entity.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/unit/config/adls_storage.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/unit/config/adls_validation.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/unit/config/duckdb_validation.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/unit/config/gcs_storage.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/unit/config/gcs_validation.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/unit/config/lineage_validation.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/unit/config/local_storage.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/unit/config/mod.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/unit/config/pii_validation.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/unit/config/remote_base.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/unit/config/storage_resolver_uri.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/unit/config/templating.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/unit/io/format.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/unit/io/mod.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/unit/io/read/avro_input.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/unit/io/read/csv_nulls.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/unit/io/read/json_array.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/unit/io/read/json_ndjson.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/unit/io/read/json_selector.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/unit/io/read/mod.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/unit/io/read/orc_input.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/unit/io/read/parquet_input.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/unit/io/read/tsv.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/unit/io/read/xlsx_input.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/unit/io/read/xml.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/unit/io/read/xml_selector.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/unit/io/storage/adls.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/unit/io/storage/adls_integration.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/unit/io/storage/gcs.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/unit/io/storage/inputs.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/unit/io/storage/local.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/unit/io/storage/mod.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/unit/io/storage/paths.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/unit/io/storage/planner.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/unit/io/storage/s3.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/unit/io/storage/target.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/unit/io/write/delta_merge.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/unit/io/write/delta_write.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/unit/io/write/iceberg_write.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/unit/io/write/metrics.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/unit/io/write/mod.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/unit/io/write/parquet_write.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/unit/io/write/parts.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/unit/io/write/rejected_csv.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/unit/manifest/mod.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/unit/mod.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/unit/profile/mod.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/unit/profile/parse.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/unit/profile/validate.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/unit/report/accepted_output.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/unit/report/mod.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/unit/report/storage.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/unit/run/check_order.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/unit/run/checks.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/unit/run/entity/accepted_output.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/unit/run/entity/incremental.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/unit/run/entity/mod.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/unit/run/lineage.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/unit/run/mod.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/unit/run/normalize.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/unit/run/pii.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/unit/run/report.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/unit/run/schema_mismatch.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/unit/runner/adapter.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/unit/runner/mod.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/unit/state/mod.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/unit/vars/mod.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/unit/vars/resolve.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-core/tests/unit.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-python/.gitignore +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-python/README.md +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-python/src/functions.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-python/src/lib.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-python/src/observer.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-python/src/types/config.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-python/src/types/errors.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-python/src/types/mod.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-python/src/types/outcome.rs +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-python/tests/fixtures/config.yml +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-python/tests/fixtures/in/customer/customers_valid.csv +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-python/tests/fixtures/invalid_config.yml +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-python/tests/fixtures/profile.yml +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/crates/floe-python/tests/test_floe.py +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/python/floe/__init__.py +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/python/floe/_floe.pyi +0 -0
- {floe_python-0.6.3 → floe_python-0.6.4}/python/floe/py.typed +0 -0
|
@@ -8,12 +8,6 @@ version = "2.0.1"
|
|
|
8
8
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
9
9
|
checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa"
|
|
10
10
|
|
|
11
|
-
[[package]]
|
|
12
|
-
name = "adler32"
|
|
13
|
-
version = "1.2.0"
|
|
14
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
15
|
-
checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234"
|
|
16
|
-
|
|
17
11
|
[[package]]
|
|
18
12
|
name = "aes"
|
|
19
13
|
version = "0.8.4"
|
|
@@ -145,29 +139,6 @@ version = "1.0.100"
|
|
|
145
139
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
146
140
|
checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61"
|
|
147
141
|
|
|
148
|
-
[[package]]
|
|
149
|
-
name = "apache-avro"
|
|
150
|
-
version = "0.16.0"
|
|
151
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
152
|
-
checksum = "ceb7c683b2f8f40970b70e39ff8be514c95b96fcb9c4af87e1ed2cb2e10801a0"
|
|
153
|
-
dependencies = [
|
|
154
|
-
"digest",
|
|
155
|
-
"lazy_static",
|
|
156
|
-
"libflate",
|
|
157
|
-
"log",
|
|
158
|
-
"num-bigint",
|
|
159
|
-
"quad-rand",
|
|
160
|
-
"rand 0.8.5",
|
|
161
|
-
"regex-lite",
|
|
162
|
-
"serde",
|
|
163
|
-
"serde_json",
|
|
164
|
-
"strum 0.25.0",
|
|
165
|
-
"strum_macros 0.25.3",
|
|
166
|
-
"thiserror 1.0.69",
|
|
167
|
-
"typed-builder 0.16.2",
|
|
168
|
-
"uuid",
|
|
169
|
-
]
|
|
170
|
-
|
|
171
142
|
[[package]]
|
|
172
143
|
name = "apache-avro"
|
|
173
144
|
version = "0.21.0"
|
|
@@ -186,8 +157,8 @@ dependencies = [
|
|
|
186
157
|
"serde",
|
|
187
158
|
"serde_bytes",
|
|
188
159
|
"serde_json",
|
|
189
|
-
"strum
|
|
190
|
-
"strum_macros
|
|
160
|
+
"strum",
|
|
161
|
+
"strum_macros",
|
|
191
162
|
"thiserror 2.0.18",
|
|
192
163
|
"uuid",
|
|
193
164
|
"zstd",
|
|
@@ -1635,7 +1606,7 @@ version = "4.5.49"
|
|
|
1635
1606
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1636
1607
|
checksum = "2a0b5487afeab2deb2ff4e03a807ad1a03ac532ff5a2cee5d86884440c7f7671"
|
|
1637
1608
|
dependencies = [
|
|
1638
|
-
"heck
|
|
1609
|
+
"heck",
|
|
1639
1610
|
"proc-macro2",
|
|
1640
1611
|
"quote",
|
|
1641
1612
|
"syn 2.0.117",
|
|
@@ -1792,15 +1763,6 @@ version = "0.8.7"
|
|
|
1792
1763
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1793
1764
|
checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
|
|
1794
1765
|
|
|
1795
|
-
[[package]]
|
|
1796
|
-
name = "core2"
|
|
1797
|
-
version = "0.4.0"
|
|
1798
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1799
|
-
checksum = "b49ba7ef1ad6107f8824dbe97de947cbaac53c44e7f9756a1fba0d37c1eec505"
|
|
1800
|
-
dependencies = [
|
|
1801
|
-
"memchr",
|
|
1802
|
-
]
|
|
1803
|
-
|
|
1804
1766
|
[[package]]
|
|
1805
1767
|
name = "cpufeatures"
|
|
1806
1768
|
version = "0.2.17"
|
|
@@ -2075,12 +2037,6 @@ dependencies = [
|
|
|
2075
2037
|
"syn 2.0.117",
|
|
2076
2038
|
]
|
|
2077
2039
|
|
|
2078
|
-
[[package]]
|
|
2079
|
-
name = "dary_heap"
|
|
2080
|
-
version = "0.3.8"
|
|
2081
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2082
|
-
checksum = "06d2e3287df1c007e74221c49ca10a95d557349e54b3a75dc2fb14712c751f04"
|
|
2083
|
-
|
|
2084
2040
|
[[package]]
|
|
2085
2041
|
name = "dashmap"
|
|
2086
2042
|
version = "6.1.0"
|
|
@@ -2809,7 +2765,7 @@ dependencies = [
|
|
|
2809
2765
|
"rustc_version",
|
|
2810
2766
|
"serde",
|
|
2811
2767
|
"serde_json",
|
|
2812
|
-
"strum
|
|
2768
|
+
"strum",
|
|
2813
2769
|
"thiserror 2.0.18",
|
|
2814
2770
|
"tokio",
|
|
2815
2771
|
"tracing",
|
|
@@ -2929,7 +2885,7 @@ dependencies = [
|
|
|
2929
2885
|
"serde",
|
|
2930
2886
|
"serde_json",
|
|
2931
2887
|
"sqlparser 0.59.0",
|
|
2932
|
-
"strum
|
|
2888
|
+
"strum",
|
|
2933
2889
|
"thiserror 2.0.18",
|
|
2934
2890
|
"tokio",
|
|
2935
2891
|
"tracing",
|
|
@@ -3158,7 +3114,7 @@ dependencies = [
|
|
|
3158
3114
|
"num",
|
|
3159
3115
|
"num-integer",
|
|
3160
3116
|
"rust_decimal",
|
|
3161
|
-
"strum
|
|
3117
|
+
"strum",
|
|
3162
3118
|
]
|
|
3163
3119
|
|
|
3164
3120
|
[[package]]
|
|
@@ -3384,7 +3340,7 @@ dependencies = [
|
|
|
3384
3340
|
|
|
3385
3341
|
[[package]]
|
|
3386
3342
|
name = "floe-cli"
|
|
3387
|
-
version = "0.6.
|
|
3343
|
+
version = "0.6.4"
|
|
3388
3344
|
dependencies = [
|
|
3389
3345
|
"assert_cmd",
|
|
3390
3346
|
"clap",
|
|
@@ -3397,9 +3353,9 @@ dependencies = [
|
|
|
3397
3353
|
|
|
3398
3354
|
[[package]]
|
|
3399
3355
|
name = "floe-core"
|
|
3400
|
-
version = "0.6.
|
|
3356
|
+
version = "0.6.4"
|
|
3401
3357
|
dependencies = [
|
|
3402
|
-
"apache-avro
|
|
3358
|
+
"apache-avro",
|
|
3403
3359
|
"arrow",
|
|
3404
3360
|
"async-trait",
|
|
3405
3361
|
"aws-config",
|
|
@@ -3422,6 +3378,7 @@ dependencies = [
|
|
|
3422
3378
|
"iceberg-catalog-rest",
|
|
3423
3379
|
"iceberg-storage-opendal",
|
|
3424
3380
|
"mockito",
|
|
3381
|
+
"opendal",
|
|
3425
3382
|
"orc-rust",
|
|
3426
3383
|
"polars",
|
|
3427
3384
|
"rayon",
|
|
@@ -3442,7 +3399,7 @@ dependencies = [
|
|
|
3442
3399
|
|
|
3443
3400
|
[[package]]
|
|
3444
3401
|
name = "floe-python"
|
|
3445
|
-
version = "0.6.
|
|
3402
|
+
version = "0.6.4"
|
|
3446
3403
|
dependencies = [
|
|
3447
3404
|
"floe-core",
|
|
3448
3405
|
"pyo3",
|
|
@@ -3873,12 +3830,6 @@ dependencies = [
|
|
|
3873
3830
|
"hashbrown 0.16.1",
|
|
3874
3831
|
]
|
|
3875
3832
|
|
|
3876
|
-
[[package]]
|
|
3877
|
-
name = "heck"
|
|
3878
|
-
version = "0.4.1"
|
|
3879
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
3880
|
-
checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
|
|
3881
|
-
|
|
3882
3833
|
[[package]]
|
|
3883
3834
|
name = "heck"
|
|
3884
3835
|
version = "0.5.0"
|
|
@@ -4141,7 +4092,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
4141
4092
|
checksum = "4d9c3fc1f55c84ff64645c0d2ee35159f5574d33f729fc0860783bc247c8b8c5"
|
|
4142
4093
|
dependencies = [
|
|
4143
4094
|
"anyhow",
|
|
4144
|
-
"apache-avro
|
|
4095
|
+
"apache-avro",
|
|
4145
4096
|
"array-init",
|
|
4146
4097
|
"arrow-arith",
|
|
4147
4098
|
"arrow-array",
|
|
@@ -4179,7 +4130,7 @@ dependencies = [
|
|
|
4179
4130
|
"serde_json",
|
|
4180
4131
|
"serde_repr",
|
|
4181
4132
|
"serde_with",
|
|
4182
|
-
"strum
|
|
4133
|
+
"strum",
|
|
4183
4134
|
"tokio",
|
|
4184
4135
|
"typed-builder 0.20.1",
|
|
4185
4136
|
"typetag",
|
|
@@ -4679,30 +4630,6 @@ dependencies = [
|
|
|
4679
4630
|
"zip 6.0.0",
|
|
4680
4631
|
]
|
|
4681
4632
|
|
|
4682
|
-
[[package]]
|
|
4683
|
-
name = "libflate"
|
|
4684
|
-
version = "2.2.1"
|
|
4685
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
4686
|
-
checksum = "e3248b8d211bd23a104a42d81b4fa8bb8ac4a3b75e7a43d85d2c9ccb6179cd74"
|
|
4687
|
-
dependencies = [
|
|
4688
|
-
"adler32",
|
|
4689
|
-
"core2",
|
|
4690
|
-
"crc32fast",
|
|
4691
|
-
"dary_heap",
|
|
4692
|
-
"libflate_lz77",
|
|
4693
|
-
]
|
|
4694
|
-
|
|
4695
|
-
[[package]]
|
|
4696
|
-
name = "libflate_lz77"
|
|
4697
|
-
version = "2.2.0"
|
|
4698
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
4699
|
-
checksum = "a599cb10a9cd92b1300debcef28da8f70b935ec937f44fcd1b70a7c986a11c5c"
|
|
4700
|
-
dependencies = [
|
|
4701
|
-
"core2",
|
|
4702
|
-
"hashbrown 0.16.1",
|
|
4703
|
-
"rle-decode-fast",
|
|
4704
|
-
]
|
|
4705
|
-
|
|
4706
4633
|
[[package]]
|
|
4707
4634
|
name = "libm"
|
|
4708
4635
|
version = "0.2.15"
|
|
@@ -5584,7 +5511,7 @@ dependencies = [
|
|
|
5584
5511
|
"serde",
|
|
5585
5512
|
"simdutf8",
|
|
5586
5513
|
"streaming-iterator",
|
|
5587
|
-
"strum_macros
|
|
5514
|
+
"strum_macros",
|
|
5588
5515
|
"version_check",
|
|
5589
5516
|
"zstd",
|
|
5590
5517
|
]
|
|
@@ -5620,7 +5547,7 @@ dependencies = [
|
|
|
5620
5547
|
"ryu",
|
|
5621
5548
|
"serde",
|
|
5622
5549
|
"strength_reduce",
|
|
5623
|
-
"strum_macros
|
|
5550
|
+
"strum_macros",
|
|
5624
5551
|
"version_check",
|
|
5625
5552
|
]
|
|
5626
5553
|
|
|
@@ -5654,7 +5581,7 @@ dependencies = [
|
|
|
5654
5581
|
"regex",
|
|
5655
5582
|
"serde",
|
|
5656
5583
|
"serde_json",
|
|
5657
|
-
"strum_macros
|
|
5584
|
+
"strum_macros",
|
|
5658
5585
|
"uuid",
|
|
5659
5586
|
"version_check",
|
|
5660
5587
|
"xxhash-rust",
|
|
@@ -5853,7 +5780,7 @@ dependencies = [
|
|
|
5853
5780
|
"rayon",
|
|
5854
5781
|
"regex",
|
|
5855
5782
|
"regex-syntax",
|
|
5856
|
-
"strum_macros
|
|
5783
|
+
"strum_macros",
|
|
5857
5784
|
"unicode-normalization",
|
|
5858
5785
|
"unicode-reverse",
|
|
5859
5786
|
"version_check",
|
|
@@ -5928,7 +5855,7 @@ dependencies = [
|
|
|
5928
5855
|
"regex",
|
|
5929
5856
|
"sha2",
|
|
5930
5857
|
"slotmap",
|
|
5931
|
-
"strum_macros
|
|
5858
|
+
"strum_macros",
|
|
5932
5859
|
"version_check",
|
|
5933
5860
|
]
|
|
5934
5861
|
|
|
@@ -6041,7 +5968,7 @@ dependencies = [
|
|
|
6041
5968
|
"polars-utils",
|
|
6042
5969
|
"rayon",
|
|
6043
5970
|
"regex",
|
|
6044
|
-
"strum_macros
|
|
5971
|
+
"strum_macros",
|
|
6045
5972
|
]
|
|
6046
5973
|
|
|
6047
5974
|
[[package]]
|
|
@@ -6323,7 +6250,7 @@ version = "0.29.0"
|
|
|
6323
6250
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
6324
6251
|
checksum = "4ca3a1557399783172dc5bf39cfca835157732532cba56b71d2292161e53b362"
|
|
6325
6252
|
dependencies = [
|
|
6326
|
-
"heck
|
|
6253
|
+
"heck",
|
|
6327
6254
|
"proc-macro2",
|
|
6328
6255
|
"quote",
|
|
6329
6256
|
"syn 2.0.117",
|
|
@@ -6880,12 +6807,6 @@ dependencies = [
|
|
|
6880
6807
|
"syn 1.0.109",
|
|
6881
6808
|
]
|
|
6882
6809
|
|
|
6883
|
-
[[package]]
|
|
6884
|
-
name = "rle-decode-fast"
|
|
6885
|
-
version = "1.0.3"
|
|
6886
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
6887
|
-
checksum = "3582f63211428f83597b51b2ddb88e2a91a9d52d12831f9d08f5e624e8977422"
|
|
6888
|
-
|
|
6889
6810
|
[[package]]
|
|
6890
6811
|
name = "rmp"
|
|
6891
6812
|
version = "0.8.15"
|
|
@@ -7580,7 +7501,7 @@ version = "0.8.9"
|
|
|
7580
7501
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
7581
7502
|
checksum = "c1c97747dbf44bb1ca44a561ece23508e99cb592e862f22222dcf42f51d1e451"
|
|
7582
7503
|
dependencies = [
|
|
7583
|
-
"heck
|
|
7504
|
+
"heck",
|
|
7584
7505
|
"proc-macro2",
|
|
7585
7506
|
"quote",
|
|
7586
7507
|
"syn 2.0.117",
|
|
@@ -7727,32 +7648,13 @@ version = "0.11.1"
|
|
|
7727
7648
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
7728
7649
|
checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
|
|
7729
7650
|
|
|
7730
|
-
[[package]]
|
|
7731
|
-
name = "strum"
|
|
7732
|
-
version = "0.25.0"
|
|
7733
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
7734
|
-
checksum = "290d54ea6f91c969195bdbcd7442c8c2a2ba87da8bf60a7ee86a235d4bc1e125"
|
|
7735
|
-
|
|
7736
7651
|
[[package]]
|
|
7737
7652
|
name = "strum"
|
|
7738
7653
|
version = "0.27.2"
|
|
7739
7654
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
7740
7655
|
checksum = "af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf"
|
|
7741
7656
|
dependencies = [
|
|
7742
|
-
"strum_macros
|
|
7743
|
-
]
|
|
7744
|
-
|
|
7745
|
-
[[package]]
|
|
7746
|
-
name = "strum_macros"
|
|
7747
|
-
version = "0.25.3"
|
|
7748
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
7749
|
-
checksum = "23dc1fa9ac9c169a78ba62f0b841814b7abae11bdd047b9c58f893439e309ea0"
|
|
7750
|
-
dependencies = [
|
|
7751
|
-
"heck 0.4.1",
|
|
7752
|
-
"proc-macro2",
|
|
7753
|
-
"quote",
|
|
7754
|
-
"rustversion",
|
|
7755
|
-
"syn 2.0.117",
|
|
7657
|
+
"strum_macros",
|
|
7756
7658
|
]
|
|
7757
7659
|
|
|
7758
7660
|
[[package]]
|
|
@@ -7761,7 +7663,7 @@ version = "0.27.2"
|
|
|
7761
7663
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
7762
7664
|
checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7"
|
|
7763
7665
|
dependencies = [
|
|
7764
|
-
"heck
|
|
7666
|
+
"heck",
|
|
7765
7667
|
"proc-macro2",
|
|
7766
7668
|
"quote",
|
|
7767
7669
|
"syn 2.0.117",
|
|
@@ -8204,15 +8106,6 @@ version = "2.1.2"
|
|
|
8204
8106
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
8205
8107
|
checksum = "9ea3136b675547379c4bd395ca6b938e5ad3c3d20fad76e7fe85f9e0d011419c"
|
|
8206
8108
|
|
|
8207
|
-
[[package]]
|
|
8208
|
-
name = "typed-builder"
|
|
8209
|
-
version = "0.16.2"
|
|
8210
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
8211
|
-
checksum = "34085c17941e36627a879208083e25d357243812c30e7d7387c3b954f30ade16"
|
|
8212
|
-
dependencies = [
|
|
8213
|
-
"typed-builder-macro 0.16.2",
|
|
8214
|
-
]
|
|
8215
|
-
|
|
8216
8109
|
[[package]]
|
|
8217
8110
|
name = "typed-builder"
|
|
8218
8111
|
version = "0.20.1"
|
|
@@ -8231,17 +8124,6 @@ dependencies = [
|
|
|
8231
8124
|
"typed-builder-macro 0.23.0",
|
|
8232
8125
|
]
|
|
8233
8126
|
|
|
8234
|
-
[[package]]
|
|
8235
|
-
name = "typed-builder-macro"
|
|
8236
|
-
version = "0.16.2"
|
|
8237
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
8238
|
-
checksum = "f03ca4cb38206e2bef0700092660bb74d696f808514dae47fa1467cbfe26e96e"
|
|
8239
|
-
dependencies = [
|
|
8240
|
-
"proc-macro2",
|
|
8241
|
-
"quote",
|
|
8242
|
-
"syn 2.0.117",
|
|
8243
|
-
]
|
|
8244
|
-
|
|
8245
8127
|
[[package]]
|
|
8246
8128
|
name = "typed-builder-macro"
|
|
8247
8129
|
version = "0.20.1"
|
|
@@ -9035,7 +8917,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
9035
8917
|
checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc"
|
|
9036
8918
|
dependencies = [
|
|
9037
8919
|
"anyhow",
|
|
9038
|
-
"heck
|
|
8920
|
+
"heck",
|
|
9039
8921
|
"wit-parser",
|
|
9040
8922
|
]
|
|
9041
8923
|
|
|
@@ -9046,7 +8928,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
9046
8928
|
checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21"
|
|
9047
8929
|
dependencies = [
|
|
9048
8930
|
"anyhow",
|
|
9049
|
-
"heck
|
|
8931
|
+
"heck",
|
|
9050
8932
|
"indexmap 2.13.0",
|
|
9051
8933
|
"prettyplease",
|
|
9052
8934
|
"syn 2.0.117",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[package]
|
|
2
2
|
name = "floe-core"
|
|
3
|
-
version = "0.6.
|
|
3
|
+
version = "0.6.4"
|
|
4
4
|
edition = "2021"
|
|
5
5
|
description = "Core library for Floe, a YAML-driven technical ingestion tool."
|
|
6
6
|
license = "MIT"
|
|
@@ -31,7 +31,7 @@ aws-sdk-s3 = "1"
|
|
|
31
31
|
aws-credential-types = "1"
|
|
32
32
|
# Only used by the Iceberg Glue catalog path; gated under the `iceberg` feature.
|
|
33
33
|
aws-sdk-glue = { version = "1", optional = true }
|
|
34
|
-
apache-avro = "0.
|
|
34
|
+
apache-avro = "0.21"
|
|
35
35
|
google-cloud-storage = { package = "gcloud-storage", version = "1.2.0" }
|
|
36
36
|
tempfile = "3"
|
|
37
37
|
tokio = { version = "1", features = ["rt", "rt-multi-thread", "fs", "io-util"] }
|
|
@@ -46,7 +46,8 @@ uuid = "1"
|
|
|
46
46
|
arrow = "57"
|
|
47
47
|
iceberg = { version = "0.9.0", optional = true }
|
|
48
48
|
iceberg-catalog-rest = { version = "0.9.0", optional = true }
|
|
49
|
-
iceberg-storage-opendal = { version = "0.9.1", features = ["opendal-s3", "opendal-gcs"], optional = true }
|
|
49
|
+
iceberg-storage-opendal = { version = "0.9.1", features = ["opendal-s3", "opendal-gcs", "opendal-azdls"], optional = true }
|
|
50
|
+
opendal = { version = "0.55", features = ["services-azdls"], optional = true }
|
|
50
51
|
df-interchange = { version = "0.3.2", features = ["arrow_57", "polars_0_52"] }
|
|
51
52
|
orc-rust = "0.7.1"
|
|
52
53
|
# Pinned exactly: 1.10500.0 bundles DuckDB 1.5.0 (native MERGE INTO) and depends on
|
|
@@ -77,6 +78,6 @@ mockito = "1"
|
|
|
77
78
|
# enables both the writer and its tests.
|
|
78
79
|
default = ["delta", "iceberg"]
|
|
79
80
|
delta = ["dep:deltalake"]
|
|
80
|
-
iceberg = ["dep:iceberg", "dep:iceberg-catalog-rest", "dep:iceberg-storage-opendal", "dep:aws-sdk-glue"]
|
|
81
|
+
iceberg = ["dep:iceberg", "dep:iceberg-catalog-rest", "dep:iceberg-storage-opendal", "dep:aws-sdk-glue", "dep:opendal"]
|
|
81
82
|
duckdb = ["dep:duckdb"]
|
|
82
83
|
vendored-openssl = []
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
use crate::errors::FloeError;
|
|
2
|
+
use crate::secret::Secret;
|
|
2
3
|
use std::collections::HashMap;
|
|
3
4
|
use std::path::Path;
|
|
4
5
|
|
|
@@ -707,7 +708,7 @@ fn parse_sink_duckdb_options(value: &Yaml, ctx: &str) -> FloeResult<DuckDbSinkTa
|
|
|
707
708
|
table: get_string(hash, "table", ctx)?,
|
|
708
709
|
schema: opt_string(hash, "schema", ctx)?,
|
|
709
710
|
connection: blank_to_none(opt_string(hash, "connection", ctx)?),
|
|
710
|
-
token: blank_to_none(opt_string(hash, "token", ctx)?),
|
|
711
|
+
token: blank_to_none(opt_string(hash, "token", ctx)?).map(Secret::from),
|
|
711
712
|
})
|
|
712
713
|
}
|
|
713
714
|
|
|
@@ -852,7 +853,7 @@ fn parse_catalog_type_config(
|
|
|
852
853
|
}),
|
|
853
854
|
"rest" => Ok(CatalogTypeConfig::Rest {
|
|
854
855
|
uri: get_string(hash, "uri", context)?,
|
|
855
|
-
credential: opt_string(hash, "credential", context)
|
|
856
|
+
credential: opt_string(hash, "credential", context)?.map(Secret::from),
|
|
856
857
|
warehouse: opt_string(hash, "warehouse", context)?,
|
|
857
858
|
oauth2_server_uri: opt_string(hash, "oauth2_server_uri", context)?,
|
|
858
859
|
scope: opt_string(hash, "scope", context)?,
|
|
@@ -861,7 +862,7 @@ fn parse_catalog_type_config(
|
|
|
861
862
|
host: get_string(hash, "host", context)?,
|
|
862
863
|
catalog: get_string(hash, "catalog", context)?,
|
|
863
864
|
schema: get_string(hash, "schema", context)?,
|
|
864
|
-
token: get_string(hash, "token", context)
|
|
865
|
+
token: Secret::from(get_string(hash, "token", context)?),
|
|
865
866
|
create_schema_if_missing: opt_bool(hash, "create_schema_if_missing", context)?
|
|
866
867
|
.unwrap_or(false),
|
|
867
868
|
}),
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
use crate::errors::FloeError;
|
|
2
|
+
use crate::secret::Secret;
|
|
2
3
|
use std::collections::HashMap;
|
|
3
4
|
use std::path::Path;
|
|
4
5
|
|
|
@@ -375,8 +376,9 @@ pub struct DuckDbSinkTargetConfig {
|
|
|
375
376
|
/// MotherDuck instead of a local file and `SinkTarget.path` is ignored.
|
|
376
377
|
pub connection: Option<String>,
|
|
377
378
|
/// MotherDuck access token. Supports `${ENV}` substitution. Required for MotherDuck unless
|
|
378
|
-
/// the `motherduck_token` environment variable is set in the process.
|
|
379
|
-
|
|
379
|
+
/// the `motherduck_token` environment variable is set in the process. Redacted in
|
|
380
|
+
/// `Debug`/`Display`; the manifest builder additionally drops literal tokens.
|
|
381
|
+
pub token: Option<Secret>,
|
|
380
382
|
}
|
|
381
383
|
|
|
382
384
|
/// True if `connection` is a MotherDuck connection string (`md:` scheme).
|
|
@@ -431,7 +433,8 @@ pub enum CatalogTypeConfig {
|
|
|
431
433
|
/// REST catalog endpoint URI (e.g. `https://<host>/api/catalog`).
|
|
432
434
|
uri: String,
|
|
433
435
|
/// Credential string: `"token:<token>"` or `"client_credentials:<id>:<secret>"`.
|
|
434
|
-
|
|
436
|
+
/// Redacted in `Debug`/`Display`.
|
|
437
|
+
credential: Option<Secret>,
|
|
435
438
|
/// Warehouse / catalog identifier (e.g. `"my_catalog"` or `"my_catalog.my_schema"`).
|
|
436
439
|
warehouse: Option<String>,
|
|
437
440
|
/// OAuth2 token endpoint URI (required for Snowflake Polaris).
|
|
@@ -448,8 +451,9 @@ pub enum CatalogTypeConfig {
|
|
|
448
451
|
catalog: String,
|
|
449
452
|
/// Unity schema (database) name (e.g. "my_schema").
|
|
450
453
|
schema: String,
|
|
451
|
-
/// Personal Access Token or value from env-var substitution.
|
|
452
|
-
|
|
454
|
+
/// Personal Access Token or value from env-var substitution. Redacted in
|
|
455
|
+
/// `Debug`/`Display`.
|
|
456
|
+
token: Secret,
|
|
453
457
|
/// Create the Unity schema if it does not already exist (default: false).
|
|
454
458
|
create_schema_if_missing: bool,
|
|
455
459
|
},
|
|
@@ -4,7 +4,8 @@ use std::collections::HashMap;
|
|
|
4
4
|
|
|
5
5
|
#[cfg(feature = "iceberg")]
|
|
6
6
|
use iceberg::io::{
|
|
7
|
-
|
|
7
|
+
ADLS_ACCOUNT_KEY, ADLS_ACCOUNT_NAME, ADLS_SAS_TOKEN, CLIENT_REGION, S3_ACCESS_KEY_ID,
|
|
8
|
+
S3_REGION, S3_SECRET_ACCESS_KEY, S3_SESSION_TOKEN,
|
|
8
9
|
};
|
|
9
10
|
#[cfg(feature = "delta")]
|
|
10
11
|
use url::Url;
|
|
@@ -113,7 +114,7 @@ pub fn delta_store_config(
|
|
|
113
114
|
pub fn iceberg_store_config(
|
|
114
115
|
target: &Target,
|
|
115
116
|
resolver: &config::StorageResolver,
|
|
116
|
-
|
|
117
|
+
_entity: &config::EntityConfig,
|
|
117
118
|
) -> FloeResult<IcebergStoreConfig> {
|
|
118
119
|
match target {
|
|
119
120
|
Target::Local { base_path, .. } => Ok(IcebergStoreConfig {
|
|
@@ -144,11 +145,24 @@ pub fn iceberg_store_config(
|
|
|
144
145
|
warehouse_location: uri.to_string(),
|
|
145
146
|
file_io_props: HashMap::new(),
|
|
146
147
|
}),
|
|
147
|
-
Target::Adls { .. } =>
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
148
|
+
Target::Adls { uri, account, .. } => {
|
|
149
|
+
let mut file_io_props = HashMap::new();
|
|
150
|
+
let warehouse_location = uri
|
|
151
|
+
.strip_prefix("abfs://")
|
|
152
|
+
.map(|rest| format!("abfss://{rest}"))
|
|
153
|
+
.unwrap_or_else(|| uri.to_string());
|
|
154
|
+
file_io_props.insert(ADLS_ACCOUNT_NAME.to_string(), account.to_string());
|
|
155
|
+
if let Ok(key) = std::env::var("AZURE_STORAGE_ACCOUNT_KEY") {
|
|
156
|
+
file_io_props.insert(ADLS_ACCOUNT_KEY.to_string(), key);
|
|
157
|
+
}
|
|
158
|
+
if let Ok(sas) = std::env::var("AZURE_STORAGE_SAS_TOKEN") {
|
|
159
|
+
file_io_props.insert(ADLS_SAS_TOKEN.to_string(), sas);
|
|
160
|
+
}
|
|
161
|
+
Ok(IcebergStoreConfig {
|
|
162
|
+
warehouse_location,
|
|
163
|
+
file_io_props,
|
|
164
|
+
})
|
|
165
|
+
}
|
|
152
166
|
}
|
|
153
167
|
}
|
|
154
168
|
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
use crate::errors::FloeError;
|
|
2
|
+
use crate::secret::Secret;
|
|
2
3
|
use std::time::Duration;
|
|
3
4
|
|
|
4
5
|
use serde::{Deserialize, Serialize};
|
|
@@ -24,8 +25,8 @@ pub(crate) struct UnityCatalogConfig {
|
|
|
24
25
|
pub(crate) schema: String,
|
|
25
26
|
/// Table name.
|
|
26
27
|
pub(crate) table: String,
|
|
27
|
-
/// Personal Access Token.
|
|
28
|
-
pub(crate) token:
|
|
28
|
+
/// Personal Access Token (redacted in `Debug`/`Display`).
|
|
29
|
+
pub(crate) token: Secret,
|
|
29
30
|
/// Create the schema if it does not exist.
|
|
30
31
|
pub(crate) create_schema_if_missing: bool,
|
|
31
32
|
}
|
|
@@ -45,7 +46,7 @@ impl UnityCatalogConfig {
|
|
|
45
46
|
unity_catalog: catalog.clone(),
|
|
46
47
|
schema: resolved.schema.clone(),
|
|
47
48
|
table: resolved.table.clone(),
|
|
48
|
-
token: expand_env_token(token, &resolved.catalog_name)
|
|
49
|
+
token: Secret::new(expand_env_token(token.expose(), &resolved.catalog_name)?),
|
|
49
50
|
create_schema_if_missing: *create_schema_if_missing,
|
|
50
51
|
}),
|
|
51
52
|
// The resolved target is guaranteed to be Unity by validate_delta_catalog_binding.
|
|
@@ -147,7 +148,7 @@ pub(crate) async fn register_unity_table(
|
|
|
147
148
|
"{}/api/2.1/unity-catalog/tables/{}",
|
|
148
149
|
cfg.host, full_name
|
|
149
150
|
))
|
|
150
|
-
.bearer_auth(
|
|
151
|
+
.bearer_auth(cfg.token.expose())
|
|
151
152
|
.send()
|
|
152
153
|
.await
|
|
153
154
|
.map_err(|err| {
|
|
@@ -200,7 +201,7 @@ pub(crate) async fn register_unity_table(
|
|
|
200
201
|
// 3. Create the table.
|
|
201
202
|
let create_resp = client
|
|
202
203
|
.post(format!("{}/api/2.1/unity-catalog/tables", cfg.host))
|
|
203
|
-
.bearer_auth(
|
|
204
|
+
.bearer_auth(cfg.token.expose())
|
|
204
205
|
.json(&CreateTableRequest {
|
|
205
206
|
name: &cfg.table,
|
|
206
207
|
catalog_name: &cfg.unity_catalog,
|
|
@@ -251,7 +252,7 @@ async fn ensure_schema(cfg: &UnityCatalogConfig, client: &reqwest::Client) -> Fl
|
|
|
251
252
|
"{}/api/2.1/unity-catalog/schemas/{}",
|
|
252
253
|
cfg.host, schema_full
|
|
253
254
|
))
|
|
254
|
-
.bearer_auth(
|
|
255
|
+
.bearer_auth(cfg.token.expose())
|
|
255
256
|
.send()
|
|
256
257
|
.await
|
|
257
258
|
.map_err(|err| {
|
|
@@ -266,7 +267,7 @@ async fn ensure_schema(cfg: &UnityCatalogConfig, client: &reqwest::Client) -> Fl
|
|
|
266
267
|
|
|
267
268
|
let create_resp = client
|
|
268
269
|
.post(format!("{}/api/2.1/unity-catalog/schemas", cfg.host))
|
|
269
|
-
.bearer_auth(
|
|
270
|
+
.bearer_auth(cfg.token.expose())
|
|
270
271
|
.json(&CreateSchemaRequest {
|
|
271
272
|
name: &cfg.schema,
|
|
272
273
|
catalog_name: &cfg.unity_catalog,
|
|
@@ -79,7 +79,7 @@ fn test_cfg(server_url: &str) -> UnityCatalogConfig {
|
|
|
79
79
|
unity_catalog: "main".to_string(),
|
|
80
80
|
schema: "bronze".to_string(),
|
|
81
81
|
table: "orders".to_string(),
|
|
82
|
-
token: "test-token"
|
|
82
|
+
token: crate::secret::Secret::from("test-token"),
|
|
83
83
|
create_schema_if_missing: false,
|
|
84
84
|
}
|
|
85
85
|
}
|
|
@@ -15,6 +15,7 @@ use ::duckdb::{Config, Connection};
|
|
|
15
15
|
|
|
16
16
|
use crate::config::DuckDbSinkTargetConfig;
|
|
17
17
|
use crate::io::storage::Target;
|
|
18
|
+
use crate::secret::Secret;
|
|
18
19
|
use crate::FloeResult;
|
|
19
20
|
|
|
20
21
|
/// MotherDuck connection strings are identified by the `md:` scheme prefix.
|
|
@@ -35,9 +36,10 @@ pub(crate) enum DuckDbTarget {
|
|
|
35
36
|
MotherDuck {
|
|
36
37
|
/// The full `md:<db>` connection string.
|
|
37
38
|
connection: String,
|
|
38
|
-
/// Already `${ENV}`-expanded token (
|
|
39
|
-
/// the ambient `motherduck_token`
|
|
40
|
-
|
|
39
|
+
/// Already `${ENV}`-expanded token (redacted in `Debug`/`Display`, never
|
|
40
|
+
/// logged), or `None` to rely on the ambient `motherduck_token`
|
|
41
|
+
/// environment variable.
|
|
42
|
+
token: Option<Secret>,
|
|
41
43
|
cache_key: String,
|
|
42
44
|
},
|
|
43
45
|
}
|
|
@@ -91,8 +93,8 @@ pub(crate) fn resolve_target(
|
|
|
91
93
|
if let Some(connection) = cfg.connection.as_deref() {
|
|
92
94
|
let connection = connection.trim();
|
|
93
95
|
if is_motherduck_connection(connection) {
|
|
94
|
-
let token = match cfg.token.
|
|
95
|
-
Some(raw) => Some(expand_env_token(raw, entity_name)?),
|
|
96
|
+
let token = match cfg.token.as_ref() {
|
|
97
|
+
Some(raw) => Some(expand_env_token(raw.expose(), entity_name)?),
|
|
96
98
|
None => None,
|
|
97
99
|
};
|
|
98
100
|
// The cache key must distinguish the same `md:` database opened with
|
|
@@ -113,7 +115,7 @@ pub(crate) fn resolve_target(
|
|
|
113
115
|
let cache_key = motherduck_cache_key(connection, fingerprint_token.as_deref());
|
|
114
116
|
return Ok(DuckDbTarget::MotherDuck {
|
|
115
117
|
connection: connection.to_string(),
|
|
116
|
-
token,
|
|
118
|
+
token: token.map(Secret::new),
|
|
117
119
|
cache_key,
|
|
118
120
|
});
|
|
119
121
|
}
|
|
@@ -263,7 +265,7 @@ fn open_connection(target: &DuckDbTarget) -> FloeResult<Connection> {
|
|
|
263
265
|
// Pass the token via the connection Config rather than a `SET`
|
|
264
266
|
// statement so it never appears in any SQL string we build.
|
|
265
267
|
let config = Config::default()
|
|
266
|
-
.with("motherduck_token", token)
|
|
268
|
+
.with("motherduck_token", token.expose())
|
|
267
269
|
.map_err(|err| {
|
|
268
270
|
FloeError::run(format!(
|
|
269
271
|
"duckdb motherduck token configuration failed: {err}"
|
|
@@ -471,7 +473,7 @@ mod tests {
|
|
|
471
473
|
table: "t".to_string(),
|
|
472
474
|
schema: None,
|
|
473
475
|
connection: Some(connection.to_string()),
|
|
474
|
-
token: token.map(
|
|
476
|
+
token: token.map(Secret::from),
|
|
475
477
|
}
|
|
476
478
|
}
|
|
477
479
|
|