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