floe-python 0.5.6__tar.gz → 0.6.2__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.5.6 → floe_python-0.6.2}/Cargo.lock +51 -87
- {floe_python-0.5.6 → floe_python-0.6.2}/PKG-INFO +1 -1
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/Cargo.toml +7 -3
- floe_python-0.6.2/crates/floe-core/README.md +114 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/add_entity.rs +69 -85
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/checks/cast.rs +14 -31
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/checks/mismatch.rs +11 -28
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/checks/mod.rs +16 -19
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/checks/normalize.rs +20 -22
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/checks/not_null.rs +8 -16
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/checks/unique.rs +7 -13
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/config/catalog.rs +15 -13
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/config/location.rs +5 -1
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/config/parse.rs +62 -64
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/config/storage.rs +64 -50
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/config/template.rs +32 -20
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/config/types.rs +17 -13
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/config/validate.rs +339 -271
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/config/yaml_decode.rs +7 -10
- floe_python-0.6.2/crates/floe-core/src/errors.rs +221 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/io/format.rs +26 -41
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/io/read/csv.rs +13 -16
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/io/read/json_selector.rs +3 -4
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/io/read/orc.rs +19 -25
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/io/read/parquet.rs +9 -11
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/io/read/xlsx.rs +3 -4
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/io/storage/core/extensions.rs +5 -3
- floe_python-0.6.2/crates/floe-core/src/io/storage/core/uri.rs +135 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/io/storage/core/validation.rs +5 -3
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/io/storage/mod.rs +13 -15
- floe_python-0.6.2/crates/floe-core/src/io/storage/object_store.rs +277 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/io/storage/ops/archive.rs +4 -3
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/io/storage/ops/inputs.rs +18 -31
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/io/storage/ops/output.rs +4 -3
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/io/storage/providers/adls.rs +45 -64
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/io/storage/providers/gcs.rs +14 -31
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/io/storage/providers/local.rs +91 -36
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/io/storage/providers/s3.rs +20 -40
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/io/storage/target.rs +3 -5
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/io/unique_seed/mod.rs +2 -4
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/io/write/arrow_convert.rs +11 -14
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/io/write/csv.rs +2 -2
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/io/write/delta/commit_metrics.rs +13 -17
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/io/write/delta/options.rs +3 -3
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/io/write/delta/unity.rs +56 -29
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/io/write/delta/unity_tests.rs +34 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/io/write/delta.rs +9 -11
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/io/write/duckdb/conn.rs +28 -28
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/io/write/duckdb/merge.rs +9 -9
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/io/write/duckdb.rs +15 -26
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/io/write/iceberg/context.rs +8 -9
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/io/write/iceberg/glue.rs +31 -30
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/io/write/iceberg/rest.rs +26 -11
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/io/write/iceberg/schema.rs +24 -24
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/io/write/iceberg.rs +31 -27
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/io/write/parquet.rs +8 -10
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/io/write/sink_format.rs +5 -6
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/io/write/strategy/merge/keys.rs +6 -5
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/io/write/strategy/merge/mod.rs +5 -5
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/io/write/strategy/merge/scd1.rs +5 -7
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/io/write/strategy/merge/scd2.rs +20 -21
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/io/write/strategy/merge/shared.rs +25 -21
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/io/write/strategy/mod.rs +12 -10
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/lib.rs +1 -1
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/lineage/mod.rs +2 -2
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/manifest/builder.rs +29 -11
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/manifest/reconstruct.rs +30 -14
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/profile/parse.rs +34 -34
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/profile/validate.rs +86 -62
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/run/entity/accepted_buffer.rs +5 -8
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/run/entity/mod.rs +6 -5
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/run/entity/pii.rs +185 -22
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/run/entity/precheck.rs +4 -3
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/run/entity/validate_split.rs +15 -18
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/run/mod.rs +9 -9
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/run/output.rs +5 -7
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/state/mod.rs +96 -25
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/vars/resolve.rs +15 -11
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/integration/iceberg_run.rs +11 -16
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/unit/config/adls_storage.rs +34 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/unit/config/pii_validation.rs +35 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/unit/config/templating.rs +59 -1
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/unit/io/storage/local.rs +85 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/unit/io/write/delta_write.rs +4 -13
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/unit/io/write/iceberg_write.rs +7 -20
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/unit/manifest/mod.rs +110 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-python/Cargo.toml +3 -3
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-python/pyproject.duckdb.toml +2 -2
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-python/src/functions.rs +10 -12
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-python/src/lib.rs +8 -14
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-python/src/observer.rs +10 -10
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-python/src/types/config.rs +4 -1
- floe_python-0.6.2/crates/floe-python/src/types/errors.rs +29 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-python/src/types/outcome.rs +15 -15
- {floe_python-0.5.6 → floe_python-0.6.2}/pyproject.toml +1 -1
- floe_python-0.5.6/crates/floe-core/README.md +0 -90
- floe_python-0.5.6/crates/floe-core/src/errors.rs +0 -27
- floe_python-0.5.6/crates/floe-core/src/io/storage/core/uri.rs +0 -75
- floe_python-0.5.6/crates/floe-core/src/io/storage/object_store.rs +0 -149
- floe_python-0.5.6/crates/floe-python/src/types/errors.rs +0 -23
- {floe_python-0.5.6 → floe_python-0.6.2}/Cargo.toml +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/README.md +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/config/mod.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/io/mod.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/io/read/avro.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/io/read/fixed_width.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/io/read/json.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/io/read/mod.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/io/read/xml.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/io/read/xml_selector.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/io/storage/core/mod.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/io/storage/core/paths.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/io/storage/core/placement.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/io/storage/core/planner.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/io/storage/ops/mod.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/io/storage/providers/mod.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/io/write/accepted.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/io/write/delta/record_batch.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/io/write/iceberg/data_files.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/io/write/iceberg/metadata.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/io/write/metrics.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/io/write/mod.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/io/write/parts.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/io/write/strategy/append.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/io/write/strategy/overwrite.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/log.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/manifest/mod.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/manifest/model.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/profile/mod.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/profile/types.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/report/build.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/report/entity.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/report/mod.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/report/output.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/run/context.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/run/entity/accepted_write.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/run/entity/incremental.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/run/entity/process.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/run/entity/resolve.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/run/events.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/run/file.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/run/perf.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/runner/mod.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/runner/outcome.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/runtime.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/vars/mod.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/src/warnings.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/integration/archive_run.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/integration/composite_unique.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/integration/delta_run.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/integration/dry_run.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/integration/duckdb_run.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/integration/fixed_width.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/integration/iceberg_gcs_run.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/integration/iceberg_glue_run.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/integration/iceberg_s3_run.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/integration/json_selectors.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/integration/local_run.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/integration/mod.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/integration/path_normalization.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/integration/run_entities_filter.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/integration.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/unit/common.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/unit/config/add_entity.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/unit/config/adls_validation.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/unit/config/catalogs.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/unit/config/config_validation.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/unit/config/duckdb_validation.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/unit/config/gcs_storage.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/unit/config/gcs_validation.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/unit/config/lineage_validation.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/unit/config/local_storage.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/unit/config/mod.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/unit/config/parse.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/unit/config/remote_base.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/unit/config/storage_resolver_uri.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/unit/io/format.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/unit/io/mod.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/unit/io/read/avro_input.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/unit/io/read/csv_nulls.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/unit/io/read/json_array.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/unit/io/read/json_ndjson.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/unit/io/read/json_selector.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/unit/io/read/mod.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/unit/io/read/orc_input.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/unit/io/read/parquet_input.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/unit/io/read/tsv.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/unit/io/read/xlsx_input.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/unit/io/read/xml.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/unit/io/read/xml_selector.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/unit/io/storage/adls.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/unit/io/storage/adls_integration.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/unit/io/storage/gcs.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/unit/io/storage/inputs.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/unit/io/storage/mod.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/unit/io/storage/paths.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/unit/io/storage/planner.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/unit/io/storage/s3.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/unit/io/storage/target.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/unit/io/write/delta_merge.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/unit/io/write/metrics.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/unit/io/write/mod.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/unit/io/write/object_store.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/unit/io/write/parquet_write.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/unit/io/write/parts.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/unit/io/write/rejected_csv.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/unit/mod.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/unit/profile/mod.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/unit/profile/parse.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/unit/profile/validate.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/unit/report/accepted_output.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/unit/report/mod.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/unit/report/storage.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/unit/run/check_order.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/unit/run/checks.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/unit/run/entity/accepted_output.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/unit/run/entity/incremental.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/unit/run/entity/mod.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/unit/run/lineage.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/unit/run/mod.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/unit/run/normalize.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/unit/run/pii.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/unit/run/report.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/unit/run/schema_mismatch.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/unit/runner/adapter.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/unit/runner/mod.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/unit/state/mod.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/unit/vars/mod.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/unit/vars/resolve.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-core/tests/unit.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-python/.gitignore +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-python/README.md +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-python/src/types/mod.rs +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-python/tests/fixtures/config.yml +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-python/tests/fixtures/in/customer/customers_valid.csv +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-python/tests/fixtures/invalid_config.yml +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-python/tests/fixtures/profile.yml +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/crates/floe-python/tests/test_floe.py +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/python/floe/__init__.py +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/python/floe/_floe.pyi +0 -0
- {floe_python-0.5.6 → floe_python-0.6.2}/python/floe/py.typed +0 -0
|
@@ -3384,7 +3384,7 @@ dependencies = [
|
|
|
3384
3384
|
|
|
3385
3385
|
[[package]]
|
|
3386
3386
|
name = "floe-cli"
|
|
3387
|
-
version = "0.
|
|
3387
|
+
version = "0.6.2"
|
|
3388
3388
|
dependencies = [
|
|
3389
3389
|
"assert_cmd",
|
|
3390
3390
|
"clap",
|
|
@@ -3397,12 +3397,13 @@ dependencies = [
|
|
|
3397
3397
|
|
|
3398
3398
|
[[package]]
|
|
3399
3399
|
name = "floe-core"
|
|
3400
|
-
version = "0.
|
|
3400
|
+
version = "0.6.2"
|
|
3401
3401
|
dependencies = [
|
|
3402
3402
|
"apache-avro 0.16.0",
|
|
3403
3403
|
"arrow",
|
|
3404
3404
|
"async-trait",
|
|
3405
3405
|
"aws-config",
|
|
3406
|
+
"aws-credential-types",
|
|
3406
3407
|
"aws-sdk-glue",
|
|
3407
3408
|
"aws-sdk-s3",
|
|
3408
3409
|
"azure_core",
|
|
@@ -3416,6 +3417,7 @@ dependencies = [
|
|
|
3416
3417
|
"gcloud-storage",
|
|
3417
3418
|
"glob",
|
|
3418
3419
|
"hex",
|
|
3420
|
+
"hmac",
|
|
3419
3421
|
"iceberg",
|
|
3420
3422
|
"iceberg-catalog-rest",
|
|
3421
3423
|
"iceberg-storage-opendal",
|
|
@@ -3423,7 +3425,7 @@ dependencies = [
|
|
|
3423
3425
|
"orc-rust",
|
|
3424
3426
|
"polars",
|
|
3425
3427
|
"rayon",
|
|
3426
|
-
"reqwest 0.
|
|
3428
|
+
"reqwest 0.13.4",
|
|
3427
3429
|
"roxmltree",
|
|
3428
3430
|
"rust_xlsxwriter",
|
|
3429
3431
|
"serde",
|
|
@@ -3440,7 +3442,7 @@ dependencies = [
|
|
|
3440
3442
|
|
|
3441
3443
|
[[package]]
|
|
3442
3444
|
name = "floe-python"
|
|
3443
|
-
version = "0.
|
|
3445
|
+
version = "0.6.2"
|
|
3444
3446
|
dependencies = [
|
|
3445
3447
|
"floe-core",
|
|
3446
3448
|
"pyo3",
|
|
@@ -4363,15 +4365,6 @@ dependencies = [
|
|
|
4363
4365
|
"serde_core",
|
|
4364
4366
|
]
|
|
4365
4367
|
|
|
4366
|
-
[[package]]
|
|
4367
|
-
name = "indoc"
|
|
4368
|
-
version = "2.0.7"
|
|
4369
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
4370
|
-
checksum = "79cf5c93f93228cf8efb3ba362535fb11199ac548a09ce117c9b1adc3030d706"
|
|
4371
|
-
dependencies = [
|
|
4372
|
-
"rustversion",
|
|
4373
|
-
]
|
|
4374
|
-
|
|
4375
4368
|
[[package]]
|
|
4376
4369
|
name = "inout"
|
|
4377
4370
|
version = "0.1.4"
|
|
@@ -4857,15 +4850,6 @@ dependencies = [
|
|
|
4857
4850
|
"libc",
|
|
4858
4851
|
]
|
|
4859
4852
|
|
|
4860
|
-
[[package]]
|
|
4861
|
-
name = "memoffset"
|
|
4862
|
-
version = "0.9.1"
|
|
4863
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
4864
|
-
checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a"
|
|
4865
|
-
dependencies = [
|
|
4866
|
-
"autocfg",
|
|
4867
|
-
]
|
|
4868
|
-
|
|
4869
4853
|
[[package]]
|
|
4870
4854
|
name = "mime"
|
|
4871
4855
|
version = "0.3.17"
|
|
@@ -4956,17 +4940,17 @@ checksum = "9252111cf132ba0929b6f8e030cac2a24b507f3a4d6db6fb2896f27b354c714b"
|
|
|
4956
4940
|
|
|
4957
4941
|
[[package]]
|
|
4958
4942
|
name = "native-tls"
|
|
4959
|
-
version = "0.2.
|
|
4943
|
+
version = "0.2.18"
|
|
4960
4944
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
4961
|
-
checksum = "
|
|
4945
|
+
checksum = "465500e14ea162429d264d44189adc38b199b62b1c21eea9f69e4b73cb03bbf2"
|
|
4962
4946
|
dependencies = [
|
|
4963
4947
|
"libc",
|
|
4964
4948
|
"log",
|
|
4965
4949
|
"openssl",
|
|
4966
|
-
"openssl-probe
|
|
4950
|
+
"openssl-probe",
|
|
4967
4951
|
"openssl-sys",
|
|
4968
4952
|
"schannel",
|
|
4969
|
-
"security-framework
|
|
4953
|
+
"security-framework",
|
|
4970
4954
|
"security-framework-sys",
|
|
4971
4955
|
"tempfile",
|
|
4972
4956
|
]
|
|
@@ -5209,15 +5193,9 @@ dependencies = [
|
|
|
5209
5193
|
|
|
5210
5194
|
[[package]]
|
|
5211
5195
|
name = "openssl-probe"
|
|
5212
|
-
version = "0.1
|
|
5213
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
5214
|
-
checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e"
|
|
5215
|
-
|
|
5216
|
-
[[package]]
|
|
5217
|
-
name = "openssl-probe"
|
|
5218
|
-
version = "0.2.0"
|
|
5196
|
+
version = "0.2.1"
|
|
5219
5197
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
5220
|
-
checksum = "
|
|
5198
|
+
checksum = "7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe"
|
|
5221
5199
|
|
|
5222
5200
|
[[package]]
|
|
5223
5201
|
name = "openssl-src"
|
|
@@ -6296,37 +6274,32 @@ dependencies = [
|
|
|
6296
6274
|
|
|
6297
6275
|
[[package]]
|
|
6298
6276
|
name = "pyo3"
|
|
6299
|
-
version = "0.
|
|
6277
|
+
version = "0.29.0"
|
|
6300
6278
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
6301
|
-
checksum = "
|
|
6279
|
+
checksum = "cd274650b21d4bfc26a0a47587962c1edb425f69287324355cd040c3ea66071c"
|
|
6302
6280
|
dependencies = [
|
|
6303
|
-
"cfg-if",
|
|
6304
|
-
"indoc",
|
|
6305
6281
|
"libc",
|
|
6306
|
-
"memoffset",
|
|
6307
6282
|
"once_cell",
|
|
6308
6283
|
"portable-atomic",
|
|
6309
6284
|
"pyo3-build-config",
|
|
6310
6285
|
"pyo3-ffi",
|
|
6311
6286
|
"pyo3-macros",
|
|
6312
|
-
"unindent",
|
|
6313
6287
|
]
|
|
6314
6288
|
|
|
6315
6289
|
[[package]]
|
|
6316
6290
|
name = "pyo3-build-config"
|
|
6317
|
-
version = "0.
|
|
6291
|
+
version = "0.29.0"
|
|
6318
6292
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
6319
|
-
checksum = "
|
|
6293
|
+
checksum = "c5e2a7d2f0d013342f295c048ad19237add5154a55b1c5a254c0ec93d4109078"
|
|
6320
6294
|
dependencies = [
|
|
6321
|
-
"once_cell",
|
|
6322
6295
|
"target-lexicon",
|
|
6323
6296
|
]
|
|
6324
6297
|
|
|
6325
6298
|
[[package]]
|
|
6326
6299
|
name = "pyo3-ffi"
|
|
6327
|
-
version = "0.
|
|
6300
|
+
version = "0.29.0"
|
|
6328
6301
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
6329
|
-
checksum = "
|
|
6302
|
+
checksum = "ca85c467da1bbc8d866eea5deff9cf29ea5f7785054a17da36e65bda9c05845b"
|
|
6330
6303
|
dependencies = [
|
|
6331
6304
|
"libc",
|
|
6332
6305
|
"pyo3-build-config",
|
|
@@ -6334,9 +6307,9 @@ dependencies = [
|
|
|
6334
6307
|
|
|
6335
6308
|
[[package]]
|
|
6336
6309
|
name = "pyo3-macros"
|
|
6337
|
-
version = "0.
|
|
6310
|
+
version = "0.29.0"
|
|
6338
6311
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
6339
|
-
checksum = "
|
|
6312
|
+
checksum = "9ac53762fd065daa3194dd09337a38bd793a188100fd1a9304c4ab312d901771"
|
|
6340
6313
|
dependencies = [
|
|
6341
6314
|
"proc-macro2",
|
|
6342
6315
|
"pyo3-macros-backend",
|
|
@@ -6346,13 +6319,12 @@ dependencies = [
|
|
|
6346
6319
|
|
|
6347
6320
|
[[package]]
|
|
6348
6321
|
name = "pyo3-macros-backend"
|
|
6349
|
-
version = "0.
|
|
6322
|
+
version = "0.29.0"
|
|
6350
6323
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
6351
|
-
checksum = "
|
|
6324
|
+
checksum = "4ca3a1557399783172dc5bf39cfca835157732532cba56b71d2292161e53b362"
|
|
6352
6325
|
dependencies = [
|
|
6353
6326
|
"heck 0.5.0",
|
|
6354
6327
|
"proc-macro2",
|
|
6355
|
-
"pyo3-build-config",
|
|
6356
6328
|
"quote",
|
|
6357
6329
|
"syn 2.0.117",
|
|
6358
6330
|
]
|
|
@@ -6800,24 +6772,33 @@ checksum = "219c5811de6525e5416c7d5d53bb656d3afdbc6c5af816e0802bcfa42dbdc1c3"
|
|
|
6800
6772
|
dependencies = [
|
|
6801
6773
|
"base64",
|
|
6802
6774
|
"bytes",
|
|
6775
|
+
"encoding_rs",
|
|
6776
|
+
"futures-channel",
|
|
6803
6777
|
"futures-core",
|
|
6804
6778
|
"futures-util",
|
|
6779
|
+
"h2 0.4.13",
|
|
6805
6780
|
"http 1.4.0",
|
|
6806
6781
|
"http-body 1.0.1",
|
|
6807
6782
|
"http-body-util",
|
|
6808
6783
|
"hyper 1.8.1",
|
|
6809
6784
|
"hyper-rustls 0.27.7",
|
|
6785
|
+
"hyper-tls",
|
|
6810
6786
|
"hyper-util",
|
|
6811
6787
|
"js-sys",
|
|
6812
6788
|
"log",
|
|
6789
|
+
"mime",
|
|
6790
|
+
"native-tls",
|
|
6813
6791
|
"percent-encoding",
|
|
6814
6792
|
"pin-project-lite",
|
|
6815
6793
|
"quinn",
|
|
6816
6794
|
"rustls 0.23.36",
|
|
6817
6795
|
"rustls-pki-types",
|
|
6818
6796
|
"rustls-platform-verifier",
|
|
6797
|
+
"serde",
|
|
6798
|
+
"serde_json",
|
|
6819
6799
|
"sync_wrapper",
|
|
6820
6800
|
"tokio",
|
|
6801
|
+
"tokio-native-tls",
|
|
6821
6802
|
"tokio-rustls 0.26.4",
|
|
6822
6803
|
"tokio-util",
|
|
6823
6804
|
"tower",
|
|
@@ -7019,12 +7000,11 @@ dependencies = [
|
|
|
7019
7000
|
|
|
7020
7001
|
[[package]]
|
|
7021
7002
|
name = "rust_xlsxwriter"
|
|
7022
|
-
version = "0.
|
|
7003
|
+
version = "0.95.0"
|
|
7023
7004
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
7024
|
-
checksum = "
|
|
7005
|
+
checksum = "f281b687352597d29efaad39701d1167d5c48aa76fb973e392bc13e9d44e7f36"
|
|
7025
7006
|
dependencies = [
|
|
7026
|
-
"
|
|
7027
|
-
"zip 2.4.2",
|
|
7007
|
+
"zip 7.2.0",
|
|
7028
7008
|
]
|
|
7029
7009
|
|
|
7030
7010
|
[[package]]
|
|
@@ -7088,10 +7068,10 @@ version = "0.8.3"
|
|
|
7088
7068
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
7089
7069
|
checksum = "612460d5f7bea540c490b2b6395d8e34a953e52b491accd6c86c8164c5932a63"
|
|
7090
7070
|
dependencies = [
|
|
7091
|
-
"openssl-probe
|
|
7071
|
+
"openssl-probe",
|
|
7092
7072
|
"rustls-pki-types",
|
|
7093
7073
|
"schannel",
|
|
7094
|
-
"security-framework
|
|
7074
|
+
"security-framework",
|
|
7095
7075
|
]
|
|
7096
7076
|
|
|
7097
7077
|
[[package]]
|
|
@@ -7128,7 +7108,7 @@ dependencies = [
|
|
|
7128
7108
|
"rustls-native-certs",
|
|
7129
7109
|
"rustls-platform-verifier-android",
|
|
7130
7110
|
"rustls-webpki 0.103.13",
|
|
7131
|
-
"security-framework
|
|
7111
|
+
"security-framework",
|
|
7132
7112
|
"security-framework-sys",
|
|
7133
7113
|
"webpki-root-certs",
|
|
7134
7114
|
"windows-sys 0.61.2",
|
|
@@ -7272,19 +7252,6 @@ dependencies = [
|
|
|
7272
7252
|
"zeroize",
|
|
7273
7253
|
]
|
|
7274
7254
|
|
|
7275
|
-
[[package]]
|
|
7276
|
-
name = "security-framework"
|
|
7277
|
-
version = "2.11.1"
|
|
7278
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
7279
|
-
checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02"
|
|
7280
|
-
dependencies = [
|
|
7281
|
-
"bitflags",
|
|
7282
|
-
"core-foundation 0.9.4",
|
|
7283
|
-
"core-foundation-sys",
|
|
7284
|
-
"libc",
|
|
7285
|
-
"security-framework-sys",
|
|
7286
|
-
]
|
|
7287
|
-
|
|
7288
7255
|
[[package]]
|
|
7289
7256
|
name = "security-framework"
|
|
7290
7257
|
version = "3.5.1"
|
|
@@ -7613,7 +7580,7 @@ version = "0.8.9"
|
|
|
7613
7580
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
7614
7581
|
checksum = "c1c97747dbf44bb1ca44a561ece23508e99cb592e862f22222dcf42f51d1e451"
|
|
7615
7582
|
dependencies = [
|
|
7616
|
-
"heck 0.
|
|
7583
|
+
"heck 0.5.0",
|
|
7617
7584
|
"proc-macro2",
|
|
7618
7585
|
"quote",
|
|
7619
7586
|
"syn 2.0.117",
|
|
@@ -7894,9 +7861,9 @@ dependencies = [
|
|
|
7894
7861
|
|
|
7895
7862
|
[[package]]
|
|
7896
7863
|
name = "target-lexicon"
|
|
7897
|
-
version = "0.
|
|
7864
|
+
version = "0.13.5"
|
|
7898
7865
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
7899
|
-
checksum = "
|
|
7866
|
+
checksum = "adb6935a6f5c20170eeceb1a3835a49e12e19d792f6dd344ccc76a985ca5a6ca"
|
|
7900
7867
|
|
|
7901
7868
|
[[package]]
|
|
7902
7869
|
name = "tempfile"
|
|
@@ -8297,6 +8264,12 @@ dependencies = [
|
|
|
8297
8264
|
"syn 2.0.117",
|
|
8298
8265
|
]
|
|
8299
8266
|
|
|
8267
|
+
[[package]]
|
|
8268
|
+
name = "typed-path"
|
|
8269
|
+
version = "0.12.3"
|
|
8270
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
8271
|
+
checksum = "8e28f89b80c87b8fb0cf04ab448d5dd0dd0ade2f8891bae878de66a75a28600e"
|
|
8272
|
+
|
|
8300
8273
|
[[package]]
|
|
8301
8274
|
name = "typeid"
|
|
8302
8275
|
version = "1.0.3"
|
|
@@ -8433,12 +8406,6 @@ version = "0.2.6"
|
|
|
8433
8406
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
8434
8407
|
checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853"
|
|
8435
8408
|
|
|
8436
|
-
[[package]]
|
|
8437
|
-
name = "unindent"
|
|
8438
|
-
version = "0.2.4"
|
|
8439
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
8440
|
-
checksum = "7264e107f553ccae879d21fbea1d6724ac785e8c3bfc762137959b5802826ef3"
|
|
8441
|
-
|
|
8442
8409
|
[[package]]
|
|
8443
8410
|
name = "untrusted"
|
|
8444
8411
|
version = "0.7.1"
|
|
@@ -9320,32 +9287,29 @@ dependencies = [
|
|
|
9320
9287
|
|
|
9321
9288
|
[[package]]
|
|
9322
9289
|
name = "zip"
|
|
9323
|
-
version = "
|
|
9290
|
+
version = "6.0.0"
|
|
9324
9291
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
9325
|
-
checksum = "
|
|
9292
|
+
checksum = "eb2a05c7c36fde6c09b08576c9f7fb4cda705990f73b58fe011abf7dfb24168b"
|
|
9326
9293
|
dependencies = [
|
|
9327
9294
|
"arbitrary",
|
|
9328
9295
|
"crc32fast",
|
|
9329
|
-
"crossbeam-utils",
|
|
9330
|
-
"displaydoc",
|
|
9331
9296
|
"flate2",
|
|
9332
9297
|
"indexmap 2.13.0",
|
|
9333
9298
|
"memchr",
|
|
9334
|
-
"thiserror 2.0.18",
|
|
9335
9299
|
"zopfli",
|
|
9336
9300
|
]
|
|
9337
9301
|
|
|
9338
9302
|
[[package]]
|
|
9339
9303
|
name = "zip"
|
|
9340
|
-
version = "
|
|
9304
|
+
version = "7.2.0"
|
|
9341
9305
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
9342
|
-
checksum = "
|
|
9306
|
+
checksum = "c42e33efc22a0650c311c2ef19115ce232583abbe80850bc8b66509ebef02de0"
|
|
9343
9307
|
dependencies = [
|
|
9344
|
-
"arbitrary",
|
|
9345
9308
|
"crc32fast",
|
|
9346
9309
|
"flate2",
|
|
9347
9310
|
"indexmap 2.13.0",
|
|
9348
9311
|
"memchr",
|
|
9312
|
+
"typed-path",
|
|
9349
9313
|
"zopfli",
|
|
9350
9314
|
]
|
|
9351
9315
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[package]
|
|
2
2
|
name = "floe-core"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "0.6.2"
|
|
4
4
|
edition = "2021"
|
|
5
5
|
description = "Core library for Floe, a YAML-driven technical ingestion tool."
|
|
6
6
|
license = "MIT"
|
|
@@ -26,6 +26,9 @@ glob = "0.3"
|
|
|
26
26
|
roxmltree = "0.20"
|
|
27
27
|
aws-config = "1"
|
|
28
28
|
aws-sdk-s3 = "1"
|
|
29
|
+
# `ProvideCredentials` trait — used to resolve EKS Pod Identity / container credentials for
|
|
30
|
+
# the Iceberg S3 write path (#426).
|
|
31
|
+
aws-credential-types = "1"
|
|
29
32
|
# Only used by the Iceberg Glue catalog path; gated under the `iceberg` feature.
|
|
30
33
|
aws-sdk-glue = { version = "1", optional = true }
|
|
31
34
|
apache-avro = "0.16"
|
|
@@ -51,13 +54,14 @@ orc-rust = "0.7.1"
|
|
|
51
54
|
# split the RecordBatch type and break `dataframe_to_record_batch` ingestion.
|
|
52
55
|
duckdb = { version = "=1.10500.0", features = ["bundled", "appender-arrow"], optional = true }
|
|
53
56
|
|
|
54
|
-
reqwest = { version = "0.
|
|
57
|
+
reqwest = { version = "0.13", default-features = true, features = ["native-tls-vendored", "json", "blocking"] }
|
|
55
58
|
sha2 = "0.10"
|
|
59
|
+
hmac = "0.12"
|
|
56
60
|
hex = "0.4"
|
|
57
61
|
thiserror = "1"
|
|
58
62
|
|
|
59
63
|
[dev-dependencies]
|
|
60
|
-
rust_xlsxwriter = "0.
|
|
64
|
+
rust_xlsxwriter = "0.95"
|
|
61
65
|
mockito = "1"
|
|
62
66
|
|
|
63
67
|
[features]
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+

|
|
2
|
+
|
|
3
|
+
# Floe
|
|
4
|
+
|
|
5
|
+
**Floe** is a Polars-powered data contract runtime for reliable file ingestion.
|
|
6
|
+
It validates raw files or extracted datasets before they enter your trusted
|
|
7
|
+
layer, routing accepted rows to lakehouse sinks and rejected rows to quarantine
|
|
8
|
+
with audit reports.
|
|
9
|
+
|
|
10
|
+
Use Floe when you already have a platform such as Databricks, Fabric-style
|
|
11
|
+
lakehouses, Snowflake/Open Catalog, MotherDuck, Airflow, or Dagster, but you
|
|
12
|
+
need a lightweight entry gate for file contracts, quality checks, rejected rows,
|
|
13
|
+
and run evidence.
|
|
14
|
+
|
|
15
|
+
Floe complements extract/load tools such as dlt, ingestr, and Airbyte: they get
|
|
16
|
+
data out of source systems; Floe decides what is allowed into trusted storage.
|
|
17
|
+
|
|
18
|
+
## What Floe does
|
|
19
|
+
|
|
20
|
+
- Defines source, schema, checks, accepted output, rejected output, write mode,
|
|
21
|
+
metadata, and reporting in one human-readable YAML contract.
|
|
22
|
+
- Reads common file exports and extracted datasets from local or cloud storage.
|
|
23
|
+
- Applies schema, casting, nullability, and uniqueness checks before write.
|
|
24
|
+
- Writes accepted rows to Parquet, Delta Lake, Apache Iceberg, or DuckDB.
|
|
25
|
+
- Writes invalid rows separately and emits deterministic JSON run reports.
|
|
26
|
+
- Runs as a CLI binary, Docker image, Python library, or orchestrated job.
|
|
27
|
+
|
|
28
|
+
## How it works
|
|
29
|
+
|
|
30
|
+

|
|
31
|
+
|
|
32
|
+
Each `floe run` executes a deterministic gate per entity:
|
|
33
|
+
|
|
34
|
+
| Stage | What happens |
|
|
35
|
+
|---|---|
|
|
36
|
+
| **1. Resolve inputs** | Discover and download source files from local or cloud storage |
|
|
37
|
+
| **2. File-level checks** | Validate schema structure, file format, and headers |
|
|
38
|
+
| **3. Row-level checks** | Apply type casting and `not_null` checks row by row |
|
|
39
|
+
| **4. Entity-level checks** | Apply `unique` / primary-key checks across all input rows plus existing accepted data |
|
|
40
|
+
| **5. Write outputs** | Route valid rows to accepted sinks, invalid rows to rejected sinks, and write reports |
|
|
41
|
+
|
|
42
|
+
Floe uses Rust, Polars, and Arrow for single-node columnar execution. At the
|
|
43
|
+
sink boundary, Arrow RecordBatches are handed to table-format writers without an
|
|
44
|
+
extra serialization hop.
|
|
45
|
+
|
|
46
|
+
- **Inputs:** CSV · TSV · JSON · Parquet · ORC · Avro · XLSX · XML · Fixed-width
|
|
47
|
+
- **Accepted outputs:** Parquet · Delta Lake · Apache Iceberg · DuckDB / MotherDuck
|
|
48
|
+
- **Storage:** local · S3 · ADLS · GCS
|
|
49
|
+
- **Catalogs:** AWS Glue · Iceberg REST (Polaris, Nessie, Snowflake) · Databricks Unity Catalog
|
|
50
|
+
|
|
51
|
+
## Feature index
|
|
52
|
+
|
|
53
|
+
| Capability | Start here |
|
|
54
|
+
|---|---|
|
|
55
|
+
| Contracts and full YAML reference | [docs/config.md](docs/config.md) |
|
|
56
|
+
| Pipeline phases and execution details | [docs/how-it-works.md](docs/how-it-works.md) |
|
|
57
|
+
| Checks: schema mismatch, cast, `not_null`, `unique` | [docs/checks.md](docs/checks.md) |
|
|
58
|
+
| Supported inputs, outputs, storage, and catalogs | [docs/support-matrix.md](docs/support-matrix.md) |
|
|
59
|
+
| Write modes: `overwrite`, `append`, `merge_scd1`, `merge_scd2` | [docs/write_modes.md](docs/write_modes.md) |
|
|
60
|
+
| Parquet, Delta, Iceberg, and DuckDB sinks | [docs/sinks/parquet.md](docs/sinks/parquet.md), [docs/sinks/delta.md](docs/sinks/delta.md), [docs/sinks/iceberg.md](docs/sinks/iceberg.md), [docs/sinks/duckdb.md](docs/sinks/duckdb.md) |
|
|
61
|
+
| S3, ADLS, and GCS storage | [docs/storages/s3.md](docs/storages/s3.md), [docs/storages/adls.md](docs/storages/adls.md), [docs/storages/gcs.md](docs/storages/gcs.md) |
|
|
62
|
+
| Incremental file state | [docs/incremental.md](docs/incremental.md) |
|
|
63
|
+
| Profiles and variables | [docs/profiles.md](docs/profiles.md), [docs/variables.md](docs/variables.md) |
|
|
64
|
+
| PII masking | [docs/pii.md](docs/pii.md) |
|
|
65
|
+
| Reports, logs, and OpenLineage | [docs/report.md](docs/report.md), [docs/logging.md](docs/logging.md), [docs/lineage.md](docs/lineage.md) |
|
|
66
|
+
| Airflow and Dagster manifests | [docs/manifest.md](docs/manifest.md), [orchestrators/airflow-floe/README.md](orchestrators/airflow-floe/README.md), [orchestrators/dagster-floe/README.md](orchestrators/dagster-floe/README.md) |
|
|
67
|
+
| Python and notebooks | [docs/python-bindings.md](docs/python-bindings.md) |
|
|
68
|
+
| Installation and CLI usage | [docs/installation.md](docs/installation.md), [docs/cli.md](docs/cli.md) |
|
|
69
|
+
|
|
70
|
+
## Install
|
|
71
|
+
|
|
72
|
+
**macOS / Linux — [Homebrew](https://brew.sh)**
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
brew tap malon64/floe
|
|
76
|
+
brew install floe
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
**Windows — [Scoop](https://scoop.sh)**
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
scoop bucket add floe https://github.com/malon64/scoop-floe
|
|
83
|
+
scoop install floe
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
**Docker**
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
docker pull ghcr.io/malon64/floe:latest
|
|
90
|
+
docker run --rm -v "$PWD:/work" ghcr.io/malon64/floe:latest run -c /work/config.yml
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
Or download a prebuilt binary from [GitHub Releases](https://github.com/malon64/floe/releases), or `cargo install floe-cli`.
|
|
94
|
+
→ [Full installation guide](docs/installation.md)
|
|
95
|
+
|
|
96
|
+
**DuckDB sink** is shipped as a companion (the default artifacts are lean): use the
|
|
97
|
+
`ghcr.io/malon64/floe-duckdb` image, a `floe-duckdb` binary on your `PATH`, or the
|
|
98
|
+
off-PyPI `floe-duckdb` wheel. The lean `floe` auto-delegates DuckDB-sink runs to it.
|
|
99
|
+
→ [DuckDB support](docs/installation.md#duckdb-support-companion-distribution)
|
|
100
|
+
|
|
101
|
+
## Quick start
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
floe validate -c config.yml # validate config and schema
|
|
105
|
+
floe run -c config.yml # run the pipeline
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
→ [Config reference](docs/config.md) · [Example config](example/config.yml)
|
|
109
|
+
|
|
110
|
+
For the full documentation entry point, see [docs/summary.md](docs/summary.md).
|
|
111
|
+
|
|
112
|
+
## License
|
|
113
|
+
|
|
114
|
+
MIT
|