floe-python 0.8.8__tar.gz → 0.9.0__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.9.0/CHANGELOG.md +1467 -0
- floe_python-0.9.0/PKG-INFO +15 -0
- floe_python-0.9.0/conformance/config/val1_version_d21_newer_minor/config.yml +18 -0
- floe_python-0.9.0/conformance/config/val1_version_d21_newer_minor/expected/validate.json +4 -0
- floe_python-0.9.0/conformance/config/val1_version_future_major_ok/expected/validate.json +4 -0
- floe_python-0.9.0/conformance/manifest_run/expected/reports/report/run_ID/finance/orders/run.json +144 -0
- floe_python-0.9.0/conformance/manifest_run/expected/reports/report/run_ID/run.summary.json +62 -0
- floe_python-0.9.0/conformance/manifest_run/expected/reports/report/run_ID/sales/orders/run.json +98 -0
- floe_python-0.9.0/conformance/unique_pii/expected/reports/report/spike/run_ID/spike/orders/run.json +264 -0
- floe_python-0.9.0/context/bump-release.md +99 -0
- floe_python-0.9.0/docs/config.md +661 -0
- floe_python-0.9.0/docs/incremental.md +234 -0
- floe_python-0.9.0/docs/installation.md +67 -0
- floe_python-0.9.0/docs/manifest.md +402 -0
- floe_python-0.9.0/docs/pii.md +134 -0
- floe_python-0.9.0/docs/profiles.md +427 -0
- floe_python-0.9.0/docs/sinks/iceberg.md +193 -0
- floe_python-0.9.0/docs/support-matrix.md +102 -0
- floe_python-0.9.0/orchestrators/airflow-floe/README.md +104 -0
- floe_python-0.9.0/orchestrators/airflow-floe/example/config.sales.yml +41 -0
- floe_python-0.9.0/orchestrators/airflow-floe/example/config.yml +73 -0
- floe_python-0.9.0/orchestrators/airflow-floe/example/manifest.airflow.json +243 -0
- floe_python-0.9.0/orchestrators/airflow-floe/example/manifests/hr.manifest.json +158 -0
- floe_python-0.9.0/orchestrators/airflow-floe/example/manifests/sales.manifest.json +158 -0
- floe_python-0.9.0/orchestrators/airflow-floe/pyproject.toml +44 -0
- floe_python-0.9.0/orchestrators/airflow-floe/src/airflow_floe/manifest.py +440 -0
- floe_python-0.9.0/orchestrators/airflow-floe/tests/test_manifest_loader.py +171 -0
- floe_python-0.9.0/orchestrators/dagster-floe/README.md +236 -0
- floe_python-0.9.0/orchestrators/dagster-floe/pyproject.toml +60 -0
- floe_python-0.9.0/orchestrators/dagster-floe/src/floe_dagster/assets.py +805 -0
- floe_python-0.9.0/orchestrators/dagster-floe/src/floe_dagster/manifest.py +637 -0
- floe_python-0.9.0/orchestrators/dagster-floe/src/floe_dagster/runner.py +350 -0
- floe_python-0.9.0/orchestrators/dagster-floe/src/floe_dagster/schemas/floe.manifest.schema.json +1150 -0
- floe_python-0.9.0/orchestrators/dagster-floe/tests/test_asset_checks.py +285 -0
- floe_python-0.9.0/orchestrators/dagster-floe/tests/test_assets_manifest.py +686 -0
- floe_python-0.9.0/orchestrators/dagster-floe/tests/test_definitions.py +441 -0
- floe_python-0.9.0/orchestrators/dagster-floe/tests/test_inprocess_runner.py +188 -0
- floe_python-0.9.0/orchestrators/dagster-floe/tests/test_manifest.py +472 -0
- floe_python-0.9.0/orchestrators/schemas/floe.manifest.schema.json +1150 -0
- floe_python-0.9.0/pyproject.toml +55 -0
- floe_python-0.9.0/schemas/profile.schema.yaml +658 -0
- floe_python-0.9.0/scripts/test_config_schema.py +1448 -0
- floe_python-0.9.0/src/floe/checks/unique.py +257 -0
- floe_python-0.9.0/src/floe/config/profile.py +455 -0
- floe_python-0.9.0/src/floe/iceberg/catalog.py +407 -0
- floe_python-0.9.0/src/floe/iceberg/compact.py +141 -0
- floe_python-0.9.0/src/floe/iceberg/sink.py +229 -0
- floe_python-0.9.0/src/floe/iceberg/write.py +308 -0
- floe_python-0.9.0/src/floe/manifest.py +519 -0
- floe_python-0.9.0/src/floe/run/__init__.py +202 -0
- floe_python-0.9.0/src/floe/run/entity.py +1059 -0
- floe_python-0.9.0/src/floe/state.py +337 -0
- floe_python-0.9.0/src/floe/storage/archive.py +31 -0
- floe_python-0.9.0/src/floe/storage/local.py +180 -0
- floe_python-0.9.0/src/floe/storage/partitioning.py +126 -0
- floe_python-0.9.0/src/floe/storage/s3.py +220 -0
- floe_python-0.9.0/src/floe/storage/types.py +36 -0
- floe_python-0.9.0/tests/unit/checks/test_unique.py +191 -0
- floe_python-0.9.0/tests/unit/config/test_validate.py +453 -0
- floe_python-0.9.0/tests/unit/iceberg/test_catalog.py +328 -0
- floe_python-0.9.0/tests/unit/iceberg/test_compact.py +158 -0
- floe_python-0.9.0/tests/unit/iceberg/test_glue.py +185 -0
- floe_python-0.9.0/tests/unit/iceberg/test_write_commit_retry.py +235 -0
- floe_python-0.9.0/tests/unit/run/test_run.py +247 -0
- floe_python-0.9.0/tests/unit/run/test_run_entity.py +667 -0
- floe_python-0.9.0/tests/unit/run/test_run_iceberg.py +729 -0
- floe_python-0.9.0/tests/unit/run/test_run_parallel.py +399 -0
- floe_python-0.9.0/tests/unit/run/test_run_partitioning.py +371 -0
- floe_python-0.9.0/tests/unit/run/test_run_s3.py +539 -0
- floe_python-0.9.0/tests/unit/state/test_state.py +499 -0
- floe_python-0.9.0/tests/unit/storage/test_inputs.py +413 -0
- floe_python-0.9.0/tests/unit/storage/test_s3.py +125 -0
- floe_python-0.9.0/tests/unit/test_cli_add_entity.py +845 -0
- floe_python-0.9.0/tests/unit/test_manifest.py +772 -0
- floe_python-0.9.0/uv.lock +1808 -0
- floe_python-0.8.8/CHANGELOG.md +0 -1385
- floe_python-0.8.8/PKG-INFO +0 -15
- floe_python-0.8.8/conformance/config/val1_version_d21_newer_minor/config.yml +0 -18
- floe_python-0.8.8/conformance/config/val1_version_d21_newer_minor/expected/validate.json +0 -4
- floe_python-0.8.8/conformance/config/val1_version_future_major_ok/expected/validate.json +0 -4
- floe_python-0.8.8/conformance/manifest_run/expected/reports/report/run_ID/finance/orders/run.json +0 -144
- floe_python-0.8.8/conformance/manifest_run/expected/reports/report/run_ID/run.summary.json +0 -62
- floe_python-0.8.8/conformance/manifest_run/expected/reports/report/run_ID/sales/orders/run.json +0 -98
- floe_python-0.8.8/conformance/unique_pii/expected/reports/report/spike/run_ID/spike/orders/run.json +0 -264
- floe_python-0.8.8/context/bump-release.md +0 -96
- floe_python-0.8.8/docs/config.md +0 -656
- floe_python-0.8.8/docs/incremental.md +0 -229
- floe_python-0.8.8/docs/installation.md +0 -67
- floe_python-0.8.8/docs/manifest.md +0 -402
- floe_python-0.8.8/docs/pii.md +0 -134
- floe_python-0.8.8/docs/profiles.md +0 -417
- floe_python-0.8.8/docs/sinks/iceberg.md +0 -187
- floe_python-0.8.8/docs/support-matrix.md +0 -102
- floe_python-0.8.8/orchestrators/airflow-floe/README.md +0 -103
- floe_python-0.8.8/orchestrators/airflow-floe/example/config.sales.yml +0 -41
- floe_python-0.8.8/orchestrators/airflow-floe/example/config.yml +0 -73
- floe_python-0.8.8/orchestrators/airflow-floe/example/manifest.airflow.json +0 -162
- floe_python-0.8.8/orchestrators/airflow-floe/example/manifests/hr.manifest.json +0 -141
- floe_python-0.8.8/orchestrators/airflow-floe/example/manifests/sales.manifest.json +0 -141
- floe_python-0.8.8/orchestrators/airflow-floe/pyproject.toml +0 -44
- floe_python-0.8.8/orchestrators/airflow-floe/src/airflow_floe/manifest.py +0 -440
- floe_python-0.8.8/orchestrators/airflow-floe/tests/test_manifest_loader.py +0 -161
- floe_python-0.8.8/orchestrators/dagster-floe/README.md +0 -235
- floe_python-0.8.8/orchestrators/dagster-floe/pyproject.toml +0 -60
- floe_python-0.8.8/orchestrators/dagster-floe/src/floe_dagster/assets.py +0 -802
- floe_python-0.8.8/orchestrators/dagster-floe/src/floe_dagster/manifest.py +0 -637
- floe_python-0.8.8/orchestrators/dagster-floe/src/floe_dagster/runner.py +0 -338
- floe_python-0.8.8/orchestrators/dagster-floe/src/floe_dagster/schemas/floe.manifest.schema.json +0 -1149
- floe_python-0.8.8/orchestrators/dagster-floe/tests/test_asset_checks.py +0 -284
- floe_python-0.8.8/orchestrators/dagster-floe/tests/test_assets_manifest.py +0 -685
- floe_python-0.8.8/orchestrators/dagster-floe/tests/test_definitions.py +0 -440
- floe_python-0.8.8/orchestrators/dagster-floe/tests/test_inprocess_runner.py +0 -164
- floe_python-0.8.8/orchestrators/dagster-floe/tests/test_manifest.py +0 -461
- floe_python-0.8.8/orchestrators/schemas/floe.manifest.schema.json +0 -1149
- floe_python-0.8.8/pyproject.toml +0 -55
- floe_python-0.8.8/schemas/profile.schema.yaml +0 -656
- floe_python-0.8.8/scripts/test_config_schema.py +0 -1443
- floe_python-0.8.8/src/floe/checks/unique.py +0 -297
- floe_python-0.8.8/src/floe/config/profile.py +0 -447
- floe_python-0.8.8/src/floe/iceberg/catalog.py +0 -399
- floe_python-0.8.8/src/floe/iceberg/compact.py +0 -139
- floe_python-0.8.8/src/floe/iceberg/sink.py +0 -225
- floe_python-0.8.8/src/floe/iceberg/write.py +0 -271
- floe_python-0.8.8/src/floe/manifest.py +0 -522
- floe_python-0.8.8/src/floe/run/__init__.py +0 -198
- floe_python-0.8.8/src/floe/run/entity.py +0 -1036
- floe_python-0.8.8/src/floe/state.py +0 -311
- floe_python-0.8.8/src/floe/storage/archive.py +0 -31
- floe_python-0.8.8/src/floe/storage/local.py +0 -176
- floe_python-0.8.8/src/floe/storage/partitioning.py +0 -116
- floe_python-0.8.8/src/floe/storage/s3.py +0 -190
- floe_python-0.8.8/src/floe/storage/types.py +0 -33
- floe_python-0.8.8/tests/unit/checks/test_unique.py +0 -185
- floe_python-0.8.8/tests/unit/config/test_validate.py +0 -453
- floe_python-0.8.8/tests/unit/iceberg/test_catalog.py +0 -267
- floe_python-0.8.8/tests/unit/iceberg/test_compact.py +0 -138
- floe_python-0.8.8/tests/unit/iceberg/test_glue.py +0 -181
- floe_python-0.8.8/tests/unit/iceberg/test_write_commit_retry.py +0 -210
- floe_python-0.8.8/tests/unit/run/test_run.py +0 -231
- floe_python-0.8.8/tests/unit/run/test_run_entity.py +0 -638
- floe_python-0.8.8/tests/unit/run/test_run_iceberg.py +0 -709
- floe_python-0.8.8/tests/unit/run/test_run_parallel.py +0 -358
- floe_python-0.8.8/tests/unit/run/test_run_partitioning.py +0 -332
- floe_python-0.8.8/tests/unit/run/test_run_s3.py +0 -512
- floe_python-0.8.8/tests/unit/state/test_state.py +0 -482
- floe_python-0.8.8/tests/unit/storage/test_inputs.py +0 -410
- floe_python-0.8.8/tests/unit/storage/test_s3.py +0 -102
- floe_python-0.8.8/tests/unit/test_cli_add_entity.py +0 -845
- floe_python-0.8.8/tests/unit/test_manifest.py +0 -724
- floe_python-0.8.8/uv.lock +0 -1808
- {floe_python-0.8.8 → floe_python-0.9.0}/.dockerignore +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/.gitattributes +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/.github/DISCUSSION_TEMPLATE/onboarding.md +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/.github/ISSUE_TEMPLATE/bugfix.md +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/.github/ISSUE_TEMPLATE/feature.md +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/.github/ISSUE_TEMPLATE/task.md +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/.github/dependabot.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/.github/release.md +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/.github/workflows/airflow-floe.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/.github/workflows/ci.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/.github/workflows/coverage-python.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/.github/workflows/dagster-floe.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/.github/workflows/orchestrator-drift.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/.github/workflows/pr-size.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/.github/workflows/python-image.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/.github/workflows/python-integration.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/.github/workflows/release-airflow-floe.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/.github/workflows/release-dagster-floe.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/.github/workflows/release.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/.github/workflows/supply-chain.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/.gitignore +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/AGENTS.md +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/CLAUDE.md +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/CONTRIBUTING.md +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/Dockerfile.python +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/LICENSE +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/README.md +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/ARCHIVE.md +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/README.md +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/archive_mode/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/archive_mode/expected/accepted/orders.parquet +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/archive_mode/expected/rejected/orders/a.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/archive_mode/expected/rejected/orders/part-00000.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/archive_mode/expected/reports/report/spike/run_ID/run.summary.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/archive_mode/expected/reports/report/spike/run_ID/spike/orders/run.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/archive_mode/in/a.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/archive_mode/in/b.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/avro_read/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/avro_read/expected/accepted/avro_read.parquet +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/avro_read/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/avro_read/expected/rejected/avro_read/part-00000.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/avro_read/expected/reports/report/spike/run_ID/run.summary.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/avro_read/expected/reports/report/spike/run_ID/spike/avro_read/run.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/avro_read/in/avro_read.avro +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/cast_error_with_source/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/cast_error_with_source/expected/accepted/orders.parquet +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/cast_error_with_source/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/cast_error_with_source/expected/rejected/orders/part-00000.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/cast_error_with_source/expected/reports/report/spike/run_ID/run.summary.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/cast_error_with_source/expected/reports/report/spike/run_ID/spike/orders/run.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/cast_error_with_source/in/orders.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/casts/README.md +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/casts/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/casts/expected/accepted/casts.parquet +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/casts/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/casts/expected/rejected/casts/part-00000.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/casts/expected/reports/report/spike/run_ID/run.summary.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/casts/expected/reports/report/spike/run_ID/spike/casts/run.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/casts/in/casts.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/casts_coerce/README.md +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/casts_coerce/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/casts_coerce/expected/accepted/casts_coerce.parquet +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/casts_coerce/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/casts_coerce/expected/reports/report/spike/run_ID/run.summary.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/casts_coerce/expected/reports/report/spike/run_ID/spike/casts_coerce/run.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/casts_coerce/in/casts_coerce.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/casts_date/README.md +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/casts_date/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/casts_date/expected/accepted/casts_date.parquet +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/casts_date/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/casts_date/expected/rejected/casts_date/part-00000.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/casts_date/expected/reports/report/spike/run_ID/run.summary.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/casts_date/expected/reports/report/spike/run_ID/spike/casts_date/run.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/casts_date/in/casts_date.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/casts_datetime/README.md +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/casts_datetime/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/casts_datetime/expected/accepted/casts_datetime.parquet +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/casts_datetime/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/casts_datetime/expected/rejected/casts_datetime/part-00000.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/casts_datetime/expected/reports/report/spike/run_ID/run.summary.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/casts_datetime/expected/reports/report/spike/run_ID/spike/casts_datetime/run.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/casts_datetime/in/casts_datetime.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/casts_typed/README.md +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/casts_typed/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/casts_typed/expected/accepted/typed_boolean.parquet +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/casts_typed/expected/accepted/typed_date.parquet +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/casts_typed/expected/accepted/typed_datetime.parquet +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/casts_typed/expected/accepted/typed_float32.parquet +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/casts_typed/expected/accepted/typed_float64.parquet +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/casts_typed/expected/accepted/typed_int32.parquet +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/casts_typed/expected/accepted/typed_int64.parquet +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/casts_typed/expected/accepted/typed_int8.parquet +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/casts_typed/expected/accepted/typed_string.parquet +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/casts_typed/expected/accepted/typed_uint32.parquet +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/casts_typed/expected/accepted/typed_uint64.parquet +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/casts_typed/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/casts_typed/expected/rejected/typed_date/part-00000.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/casts_typed/expected/rejected/typed_datetime/part-00000.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/casts_typed/expected/rejected/typed_int32/part-00000.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/casts_typed/expected/rejected/typed_int64/part-00000.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/casts_typed/expected/rejected/typed_int8/part-00000.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/casts_typed/expected/rejected/typed_uint32/part-00000.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/casts_typed/expected/rejected/typed_uint64/part-00000.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/casts_typed/expected/reports/report/spike/run_ID/run.summary.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/casts_typed/expected/reports/report/spike/run_ID/spike/typed_boolean/run.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/casts_typed/expected/reports/report/spike/run_ID/spike/typed_date/run.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/casts_typed/expected/reports/report/spike/run_ID/spike/typed_datetime/run.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/casts_typed/expected/reports/report/spike/run_ID/spike/typed_float32/run.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/casts_typed/expected/reports/report/spike/run_ID/spike/typed_float64/run.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/casts_typed/expected/reports/report/spike/run_ID/spike/typed_int32/run.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/casts_typed/expected/reports/report/spike/run_ID/spike/typed_int64/run.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/casts_typed/expected/reports/report/spike/run_ID/spike/typed_int8/run.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/casts_typed/expected/reports/report/spike/run_ID/spike/typed_string/run.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/casts_typed/expected/reports/report/spike/run_ID/spike/typed_uint32/run.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/casts_typed/expected/reports/report/spike/run_ID/spike/typed_uint64/run.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/casts_typed/in/casts_typed.parquet +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/check.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/README.md +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/d1_catalog_glue/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/d1_catalog_glue/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/d1_catalog_unity/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/d1_catalog_unity/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/d1_sink_delta/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/d1_sink_delta/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/d1_sink_duckdb/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/d1_sink_duckdb/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/d1_source_avro/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/d1_source_avro/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/d1_source_avro/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/d1_source_fixed/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/d1_source_fixed/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/d1_source_orc/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/d1_source_orc/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/d1_source_orc/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/d1_source_xlsx/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/d1_source_xlsx/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/d1_source_xlsx/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/d1_source_xml/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/d1_source_xml/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/d1_source_xml/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/d1_storage_adls/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/d1_storage_adls/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/d1_storage_gcs/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/d1_storage_gcs/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S1/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S1/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S10/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S10/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S10_ctrl/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S10_ctrl/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S11/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S11/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S11_ctrl/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S11_ctrl/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S12/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S12/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S12_ctrl/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S12_ctrl/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S13/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S13/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S13_ctrl/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S13_ctrl/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S13_ctrl/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S14a/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S14a/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S14a_ctrl_csv/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S14a_ctrl_csv/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S14a_ctrl_csv/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S14a_ctrl_json/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S14a_ctrl_json/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S14a_ctrl_json/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S14b/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S14b/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S14b_ctrl/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S14b_ctrl/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S14b_ctrl/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S15/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S15/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S15_ctrl/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S15_ctrl/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S15_ctrl/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S16a/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S16a/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S16a_ctrl/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S16a_ctrl/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S16a_ctrl/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S16b/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S16b/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S16b_ctrl/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S16b_ctrl/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S16b_ctrl/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S17/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S17/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S17_ctrl/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S17_ctrl/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S18/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S18/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S18/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S18_ctrl/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S18_ctrl/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S18_ctrl/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S19/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S19/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S19/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S19_ctrl/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S19_ctrl/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S19_ctrl/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S1_ctrl/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S1_ctrl/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S1_ctrl/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S2/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S2/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S20/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S20/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S20/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S20_ctrl/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S20_ctrl/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S20_ctrl/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S21/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S21/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S21/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S21_ctrl/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S21_ctrl/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S21_ctrl/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S22a/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S22a/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S22a/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S22a_ctrl/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S22a_ctrl/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S22a_ctrl/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S22b/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S22b/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S22b/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S22b_ctrl/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S22b_ctrl/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S22b_ctrl/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S23/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S23/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S23/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S23_ctrl/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S23_ctrl/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S23_ctrl/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S24/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S24/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S24/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S24_ctrl/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S24_ctrl/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S24_ctrl/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S25/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S25/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S25/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S25_ctrl/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S25_ctrl/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S25_ctrl/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S26/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S26/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S26/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S26_ctrl/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S26_ctrl/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S26_ctrl/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S27/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S27/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S27/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S27_ctrl/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S27_ctrl/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S27_ctrl/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S28/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S28/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S28/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S28_ctrl/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S28_ctrl/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S28_ctrl/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S29/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S29/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S29/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S29_ctrl/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S29_ctrl/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S29_ctrl/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S2_ctrl/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S2_ctrl/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S2_ctrl/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S3/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S3/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S30/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S30/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S30/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S30_ctrl/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S30_ctrl/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S30_ctrl/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S31a/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S31a/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S31a/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S31a_ctrl/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S31a_ctrl/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S31a_ctrl/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S31b/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S31b/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S31b/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S31b_ctrl/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S31b_ctrl/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S31b_ctrl/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S32/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S32/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S32/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S32_ctrl/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S32_ctrl/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S32_ctrl/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S3_ctrl/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S3_ctrl/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S3_ctrl/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S4/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S4/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S4_ctrl/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S4_ctrl/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S4_ctrl/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S5/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S5/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S5_ctrl/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S5_ctrl/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S5_ctrl/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S6/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S6/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S6_ctrl/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S6_ctrl/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S6_ctrl/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S7_ctrl/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S7_ctrl/domains/finance/_domain.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S7_ctrl/domains/finance/accounts.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S7_ctrl/domains/sales/_domain.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S7_ctrl/domains/sales/accounts.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S7_ctrl/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S7_ctrl/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S7_ctrl/sources.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S7a/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S7a/domains/finance/_domain.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S7a/domains/finance/accounts.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S7a/domains/sales/_domain.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S7a/domains/sales/accounts.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S7a/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S7a/sources.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S7b/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S7b/domains/finance/_domain.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S7b/domains/finance/accounts.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S7b/domains/sales/_domain.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S7b/domains/sales/accounts.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S7b/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S7b/sources.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S7c/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S7c/domains/finance/_domain.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S7c/domains/finance/accounts.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S7c/domains/sales/_domain.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S7c/domains/sales/accounts.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S7c/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S7c/sources.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S8/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S8/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S8_ctrl/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S8_ctrl/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S8_ctrl/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S9/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S9/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S9_ctrl/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S9_ctrl/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/div_S9_ctrl/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/example_config_yml/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/example_config_yml/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/example_profile_dev/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/example_profile_dev/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/example_profile_dev/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/example_profile_prod/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/example_profile_prod/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/example_profile_prod/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/example_profile_uat/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/example_profile_uat/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/example_profile_uat/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/example_project/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/example_project/domains/finance/_domain.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/example_project/domains/finance/accounts.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/example_project/domains/sales/_domain.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/example_project/domains/sales/accounts.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/example_project/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/example_project/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/example_project/sources.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/example_standalone/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/example_standalone/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/example_standalone/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/manifest_fields/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/manifest_fields/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/manifest_fields/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/manifest_registries/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/manifest_registries/domains/hr/_domain.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/manifest_registries/domains/hr/people.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/manifest_registries/domains/sales/_domain.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/manifest_registries/domains/sales/orders.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/manifest_registries/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/manifest_registries/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_catalogs_definition_wrapper/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_catalogs_definition_wrapper/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_catalogs_missing_definitions/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_catalogs_missing_definitions/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_catalogs_type_unsupported/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_catalogs_type_unsupported/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_d28_date_column_missing/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_d28_date_column_missing/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_d28_named_source_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_d28_named_source_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_d28_unknown_key/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_d28_unknown_key/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_d30_lookback_days_negative/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_d30_lookback_days_negative/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_d30_lookback_days_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_d30_lookback_days_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_domains_defaults_drops_schema_columns_and_primary_key/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_domains_defaults_drops_schema_columns_and_primary_key/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_domains_defaults_entity_overrides/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_domains_defaults_entity_overrides/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_domains_defaults_entity_overrides/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_domains_defaults_inherit_error_prefix/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_domains_defaults_inherit_error_prefix/domains/sales/_domain.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_domains_defaults_inherit_error_prefix/domains/sales/orders.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_domains_defaults_inherit_error_prefix/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_domains_defaults_merge_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_domains_defaults_merge_ok/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_domains_defaults_merge_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_domains_defaults_not_a_map/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_domains_defaults_not_a_map/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_domains_defaults_requires_0_3/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_domains_defaults_requires_0_3/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_domains_duplicate_name/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_domains_duplicate_name/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_domains_incoming_dir_optional_from_0_3/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_domains_incoming_dir_optional_from_0_3/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_domains_incoming_dir_optional_from_0_3/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_domains_missing_incoming_dir_before_0_3/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_domains_missing_incoming_dir_before_0_3/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_domains_missing_name/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_domains_missing_name/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_domains_not_array/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_domains_not_array/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_domains_unknown_key/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_domains_unknown_key/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_entity_unknown_domain/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_entity_unknown_domain/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_entity_without_name/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_entity_without_name/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_env_file_empty/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_env_file_empty/env.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_env_file_empty/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_env_file_missing/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_env_file_missing/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_env_file_not_a_map/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_env_file_not_a_map/env.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_env_file_not_a_map/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_env_file_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_env_file_ok/env.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_env_file_ok/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_env_file_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_env_file_value_not_string/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_env_file_value_not_string/env.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_env_file_value_not_string/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_env_not_a_map/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_env_not_a_map/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_env_unknown_key/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_env_unknown_key/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_env_vars_not_a_map/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_env_vars_not_a_map/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_env_vars_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_env_vars_ok/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_env_vars_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_env_vars_override_file/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_env_vars_override_file/env.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_env_vars_override_file/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_env_vars_override_file/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_env_vars_value_not_string/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_env_vars_value_not_string/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_expected_boolean/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_expected_boolean/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_expected_integer/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_expected_integer/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_expected_positive_integer/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_expected_positive_integer/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_filesystems_alias_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_filesystems_alias_ok/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_filesystems_alias_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_domain_file_empty/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_domain_file_empty/domains/sales/_domain.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_domain_file_empty/domains/sales/orders.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_domain_file_empty/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_domain_file_missing_name/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_domain_file_missing_name/domains/sales/_domain.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_domain_file_missing_name/domains/sales/orders.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_domain_file_missing_name/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_domain_file_not_a_map/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_domain_file_not_a_map/domains/sales/_domain.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_domain_file_not_a_map/domains/sales/orders.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_domain_file_not_a_map/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_domain_file_syntax_error/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_domain_file_syntax_error/domains/sales/_domain.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_domain_file_syntax_error/domains/sales/orders.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_domain_file_syntax_error/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_domains_no_match/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_domains_no_match/domains/sales/_domain.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_domains_no_match/domains/sales/orders.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_domains_no_match/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_domains_not_array/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_domains_not_array/domains/sales/_domain.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_domains_not_array/domains/sales/orders.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_domains_not_array/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_domains_pattern_not_string/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_domains_pattern_not_string/domains/sales/_domain.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_domains_pattern_not_string/domains/sales/orders.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_domains_pattern_not_string/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_entities_array_conflict/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_entities_array_conflict/domains/sales/_domain.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_entities_array_conflict/domains/sales/orders.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_entities_array_conflict/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_entity_file_domain_matches/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_entity_file_domain_matches/domains/sales/_domain.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_entity_file_domain_matches/domains/sales/orders.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_entity_file_domain_matches/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_entity_file_domain_matches/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_entity_file_domain_mismatch/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_entity_file_domain_mismatch/domains/sales/_domain.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_entity_file_domain_mismatch/domains/sales/orders.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_entity_file_domain_mismatch/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_entity_file_domain_not_string/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_entity_file_domain_not_string/domains/sales/_domain.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_entity_file_domain_not_string/domains/sales/orders.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_entity_file_domain_not_string/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_entity_file_error_names_file/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_entity_file_error_names_file/domains/sales/_domain.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_entity_file_error_names_file/domains/sales/orders.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_entity_file_error_names_file/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_entity_file_not_a_map/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_entity_file_not_a_map/domains/sales/_domain.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_entity_file_not_a_map/domains/sales/orders.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_entity_file_not_a_map/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_glob_pattern_invalid/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_glob_pattern_invalid/domains/sales/_domain.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_glob_pattern_invalid/domains/sales/orders.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_glob_pattern_invalid/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_missing_domains/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_missing_domains/domains/sales/_domain.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_missing_domains/domains/sales/orders.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_missing_domains/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_missing_version/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_missing_version/domains/sales/_domain.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_missing_version/domains/sales/orders.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_missing_version/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_not_a_map/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_not_a_map/domains/sales/_domain.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_not_a_map/domains/sales/orders.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_not_a_map/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_ok/domains/sales/_domain.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_ok/domains/sales/orders.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_ok/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_requires_version_0_3/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_requires_version_0_3/domains/sales/_domain.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_requires_version_0_3/domains/sales/orders.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_requires_version_0_3/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_root_entities_not_array/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_root_entities_not_array/domains/sales/_domain.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_root_entities_not_array/domains/sales/orders.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_root_entities_not_array/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_sibling_non_yml_ignored/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_sibling_non_yml_ignored/domains/sales/_domain.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_sibling_non_yml_ignored/domains/sales/notes.txt +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_sibling_non_yml_ignored/domains/sales/orders.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_sibling_non_yml_ignored/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_sibling_non_yml_ignored/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_source_ref_error_names_files/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_source_ref_error_names_files/domains/sales/_domain.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_source_ref_error_names_files/domains/sales/orders.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_source_ref_error_names_files/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_source_ref_error_names_files/sources.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_sources_and_root_sources/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_sources_and_root_sources/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_sources_and_root_sources/sources.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_sources_file_empty/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_sources_file_empty/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_sources_file_empty/sources.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_sources_file_missing/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_sources_file_missing/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_sources_file_missing_sources/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_sources_file_missing_sources/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_sources_file_missing_sources/sources.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_sources_file_unknown_key/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_sources_file_unknown_key/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_sources_file_unknown_key/sources.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_sources_only_no_entities/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_sources_only_no_entities/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_sources_only_no_entities/sources.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_sources_path_not_string/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_sources_path_not_string/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_sources_with_domains/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_sources_with_domains/domains/sales/_domain.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_sources_with_domains/domains/sales/orders.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_sources_with_domains/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_sources_with_domains/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_sources_with_domains/sources.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_unknown_key/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_unknown_key/domains/sales/_domain.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_unknown_key/domains/sales/orders.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_include_unknown_key/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_incremental_mode_case_insensitive/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_incremental_mode_case_insensitive/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_incremental_mode_case_insensitive/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_incremental_mode_unsupported/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_incremental_mode_unsupported/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_integer_exceeds_u32/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_integer_exceeds_u32/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_integer_u32_max_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_integer_u32_max_ok/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_integer_u32_max_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_lineage_missing_url/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_lineage_missing_url/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_missing_entities/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_missing_entities/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_missing_entity_source/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_missing_entity_source/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_missing_version/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_missing_version/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_pii_column_wrapper/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_pii_column_wrapper/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_pii_strategy_unsupported/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_pii_strategy_unsupported/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_policy_severity_case_sensitive/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_policy_severity_case_sensitive/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_policy_severity_unsupported/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_policy_severity_unsupported/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_root_storages_and_filesystems/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_root_storages_and_filesystems/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_schema_column_wrapper/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_schema_column_wrapper/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_schema_evolution_mode_unsupported/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_schema_evolution_mode_unsupported/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_schema_evolution_on_incompatible_unsupported/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_schema_evolution_on_incompatible_unsupported/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_schema_evolution_strict_fail_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_schema_evolution_strict_fail_ok/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_schema_evolution_strict_fail_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_sink_accepted_storage_and_filesystem/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_sink_accepted_storage_and_filesystem/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_sink_duckdb_block_on_parquet/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_sink_duckdb_block_on_parquet/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_sink_rejected_rejects_accepted_only_keys/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_sink_rejected_rejects_accepted_only_keys/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_sink_rejected_storage_and_filesystem/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_sink_rejected_storage_and_filesystem/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_source_storage_and_filesystem/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_source_storage_and_filesystem/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_sources_duplicate_name/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_sources_duplicate_name/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_sources_entity_source_overlays_named/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_sources_entity_source_overlays_named/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_sources_entity_source_overlays_named/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_sources_item_not_a_map/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_sources_item_not_a_map/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_sources_missing_name/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_sources_missing_name/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_sources_not_array/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_sources_not_array/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_sources_ref_not_string/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_sources_ref_not_string/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_sources_ref_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_sources_ref_ok/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_sources_ref_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_sources_ref_resource_not_string/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_sources_ref_resource_not_string/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_sources_ref_resource_override/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_sources_ref_resource_override/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_sources_ref_resource_override/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_sources_ref_undeclared/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_sources_ref_undeclared/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_sources_requires_0_3/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_sources_requires_0_3/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_sources_unknown_key/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_sources_unknown_key/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_storages_definition_wrapper/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_storages_definition_wrapper/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_storages_missing_definitions/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_storages_missing_definitions/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_template_domain_incoming_dir_unknown/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_template_domain_incoming_dir_unknown/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_template_domain_incoming_dir_unset/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_template_domain_incoming_dir_unset/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_template_domain_vars_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_template_domain_vars_ok/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_template_domain_vars_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_template_empty_placeholder/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_template_empty_placeholder/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_template_entity_name_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_template_entity_name_ok/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_template_entity_name_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_template_lineage_api_key_unknown/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_template_lineage_api_key_unknown/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_template_lineage_dataset_namespace_unknown/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_template_lineage_dataset_namespace_unknown/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_template_lineage_endpoint_unknown/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_template_lineage_endpoint_unknown/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_template_lineage_url_unknown/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_template_lineage_url_unknown/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_template_missing_closing/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_template_missing_closing/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_template_report_path_unknown/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_template_report_path_unknown/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_template_resource_not_substituted_without_ref/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_template_resource_not_substituted_without_ref/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_template_sink_accepted_unknown/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_template_sink_accepted_unknown/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_template_sink_archive_unknown/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_template_sink_archive_unknown/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_template_sink_rejected_unknown/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_template_sink_rejected_unknown/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_template_storage_field_unknown/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_template_storage_field_unknown/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_template_unknown_variable/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_template_unknown_variable/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_version_0_3_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_version_0_3_ok/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_version_0_3_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_write_mode_case_insensitive/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_write_mode_case_insensitive/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_write_mode_case_insensitive/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_write_mode_unsupported/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_write_mode_unsupported/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_yaml_comment_only/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_yaml_comment_only/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_yaml_duplicate_key/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_yaml_duplicate_key/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_yaml_empty_file/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_yaml_empty_file/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_yaml_expected_array/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_yaml_expected_array/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_yaml_expected_map/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_yaml_expected_map/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_yaml_multiple_documents/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_yaml_multiple_documents/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_yaml_name_is_int/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_yaml_name_is_int/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_yaml_non_string_key/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_yaml_non_string_key/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_yaml_optional_null_is_absent/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_yaml_optional_null_is_absent/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_yaml_optional_null_is_absent/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_yaml_required_null/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_yaml_required_null/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_yaml_root_is_list/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_yaml_root_is_list/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_yaml_root_is_scalar/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_yaml_root_is_scalar/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_yaml_syntax_error/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_yaml_syntax_error/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_yaml_tab_indent/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_yaml_tab_indent/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_yaml_unknown_nested_field/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_yaml_unknown_nested_field/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_yaml_unknown_root_field/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_yaml_unknown_root_field/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_yaml_version_is_float/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/parse_yaml_version_is_float/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_api_version_missing/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_api_version_missing/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_api_version_missing/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_api_version_not_string/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_api_version_not_string/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_api_version_not_string/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_api_version_wrong/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_api_version_wrong/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_api_version_wrong/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_auth_not_map/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_auth_not_map/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_auth_not_map/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_auth_ref_not_string/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_auth_ref_not_string/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_auth_ref_not_string/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_auth_unknown_key/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_auth_unknown_key/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_auth_unknown_key/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_catalogs_default_absent_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_catalogs_default_absent_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_catalogs_default_absent_ok/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_catalogs_default_null_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_catalogs_default_null_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_catalogs_default_null_ok/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_catalogs_default_unknown/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_catalogs_default_unknown/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_catalogs_default_unknown/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_catalogs_definition_duplicate/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_catalogs_definition_duplicate/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_catalogs_definition_duplicate/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_catalogs_definition_name_empty/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_catalogs_definition_name_empty/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_catalogs_definition_name_empty/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_catalogs_definition_name_missing/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_catalogs_definition_name_missing/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_catalogs_definition_name_missing/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_catalogs_definition_not_map/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_catalogs_definition_not_map/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_catalogs_definition_not_map/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_catalogs_definition_type_missing/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_catalogs_definition_type_missing/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_catalogs_definition_type_missing/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_catalogs_definition_type_unsupported/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_catalogs_definition_type_unsupported/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_catalogs_definition_type_unsupported/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_catalogs_definition_unknown_key/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_catalogs_definition_unknown_key/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_catalogs_definition_unknown_key/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_catalogs_definitions_empty/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_catalogs_definitions_empty/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_catalogs_definitions_empty/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_catalogs_definitions_missing/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_catalogs_definitions_missing/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_catalogs_definitions_missing/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_catalogs_definitions_not_array/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_catalogs_definitions_not_array/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_catalogs_definitions_not_array/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_catalogs_not_map/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_catalogs_not_map/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_catalogs_not_map/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_catalogs_rest_uri_missing/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_catalogs_rest_uri_missing/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_catalogs_rest_uri_missing/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_catalogs_two_definitions_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_catalogs_two_definitions_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_catalogs_two_definitions_ok/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_catalogs_unknown_key/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_catalogs_unknown_key/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_catalogs_unknown_key/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_cfg_iceberg_catalog_and_storage_from_profile/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_cfg_iceberg_catalog_and_storage_from_profile/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_cfg_iceberg_catalog_and_storage_from_profile/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_cfg_iceberg_catalog_from_profile_local_storage/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_cfg_iceberg_catalog_from_profile_local_storage/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_cfg_iceberg_catalog_from_profile_local_storage/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_cfg_iceberg_catalog_without_profile/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_cfg_iceberg_catalog_without_profile/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_cfg_iceberg_profile_catalog_wrong_name/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_cfg_iceberg_profile_catalog_wrong_name/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_cfg_iceberg_profile_catalog_wrong_name/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_cfg_invalid_config_storages_without_profile_override/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_cfg_invalid_config_storages_without_profile_override/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_cfg_invalid_config_storages_without_profile_override/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_cfg_invalid_lineage_without_profile_lineage/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_cfg_invalid_lineage_without_profile_lineage/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_cfg_invalid_lineage_without_profile_lineage/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_cfg_profile_catalogs_replace_config_catalogs/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_cfg_profile_catalogs_replace_config_catalogs/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_cfg_profile_catalogs_replace_config_catalogs/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_cfg_profile_lineage_replaces_invalid_config_lineage/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_cfg_profile_lineage_replaces_invalid_config_lineage/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_cfg_profile_lineage_replaces_invalid_config_lineage/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_cfg_profile_lineage_url_template/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_cfg_profile_lineage_url_template/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_cfg_profile_lineage_url_template/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_cfg_profile_storages_fix_invalid_config_storages/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_cfg_profile_storages_fix_invalid_config_storages/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_cfg_profile_storages_fix_invalid_config_storages/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_cfg_profile_storages_replace_config_storages/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_cfg_profile_storages_replace_config_storages/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_cfg_profile_storages_replace_config_storages/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_cfg_storage_defined_by_profile/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_cfg_storage_defined_by_profile/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_cfg_storage_defined_by_profile/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_cfg_storage_not_in_profile_storages/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_cfg_storage_not_in_profile_storages/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_cfg_storage_not_in_profile_storages/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_cfg_unknown_storage_without_profile/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_cfg_unknown_storage_without_profile/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_dbx_auth_empty_map/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_dbx_auth_empty_map/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_dbx_auth_empty_map/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_dbx_auth_missing/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_dbx_auth_missing/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_dbx_auth_missing/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_dbx_auth_ref_blank/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_dbx_auth_ref_blank/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_dbx_auth_ref_blank/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_dbx_config_uri_blank/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_dbx_config_uri_blank/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_dbx_config_uri_blank/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_dbx_config_uri_missing/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_dbx_config_uri_missing/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_dbx_config_uri_missing/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_dbx_existing_cluster_id_blank/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_dbx_existing_cluster_id_blank/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_dbx_existing_cluster_id_blank/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_dbx_existing_cluster_id_missing/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_dbx_existing_cluster_id_missing/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_dbx_existing_cluster_id_missing/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_dbx_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_dbx_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_dbx_ok/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_dbx_ok_with_extras/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_dbx_ok_with_extras/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_dbx_ok_with_extras/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_dbx_only_type/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_dbx_only_type/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_dbx_only_type/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_dbx_python_file_uri_blank/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_dbx_python_file_uri_blank/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_dbx_python_file_uri_blank/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_dbx_python_file_uri_missing/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_dbx_python_file_uri_missing/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_dbx_python_file_uri_missing/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_dbx_workspace_url_blank/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_dbx_workspace_url_blank/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_dbx_workspace_url_blank/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_dbx_workspace_url_missing/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_dbx_workspace_url_missing/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_dbx_workspace_url_missing/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_execution_not_map/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_execution_not_map/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_execution_not_map/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_execution_runner_missing/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_execution_runner_missing/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_execution_runner_missing/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_execution_unknown_key/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_execution_unknown_key/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_execution_unknown_key/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_file_empty/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_file_empty/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_file_empty/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_file_invalid_yaml/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_file_invalid_yaml/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_file_invalid_yaml/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_file_is_directory/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_file_is_directory/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_file_is_directory/profile.yml/keep +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_file_non_string_key/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_file_non_string_key/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_file_non_string_key/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_file_only_comment/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_file_only_comment/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_file_only_comment/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_file_root_is_list/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_file_root_is_list/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_file_root_is_list/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_file_root_is_scalar/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_file_root_is_scalar/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_file_root_is_scalar/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_file_two_documents/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_file_two_documents/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_file_two_documents/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_file_unknown_root_key/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_file_unknown_root_key/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_file_unknown_root_key/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_k8s_image_blank/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_k8s_image_blank/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_k8s_image_blank/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_k8s_image_checked_before_namespace/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_k8s_image_checked_before_namespace/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_k8s_image_checked_before_namespace/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_k8s_image_missing/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_k8s_image_missing/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_k8s_image_missing/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_k8s_namespace_blank/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_k8s_namespace_blank/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_k8s_namespace_blank/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_k8s_namespace_missing/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_k8s_namespace_missing/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_k8s_namespace_missing/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_k8s_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_k8s_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_k8s_ok/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_k8s_ok_with_extras/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_k8s_ok_with_extras/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_k8s_ok_with_extras/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_kind_missing/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_kind_missing/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_kind_missing/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_kind_wrong/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_kind_wrong/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_kind_wrong/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_lineage_max_failures_negative/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_lineage_max_failures_negative/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_lineage_max_failures_negative/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_lineage_max_failures_one_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_lineage_max_failures_one_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_lineage_max_failures_one_ok/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_lineage_max_failures_too_large/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_lineage_max_failures_too_large/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_lineage_max_failures_too_large/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_lineage_max_failures_zero/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_lineage_max_failures_zero/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_lineage_max_failures_zero/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_lineage_namespace_empty/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_lineage_namespace_empty/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_lineage_namespace_empty/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_lineage_namespace_missing/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_lineage_namespace_missing/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_lineage_namespace_missing/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_lineage_not_map/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_lineage_not_map/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_lineage_not_map/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_lineage_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_lineage_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_lineage_ok/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_lineage_ok_full/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_lineage_ok_full/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_lineage_ok_full/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_lineage_timeout_negative/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_lineage_timeout_negative/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_lineage_timeout_negative/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_lineage_timeout_not_integer/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_lineage_timeout_not_integer/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_lineage_timeout_not_integer/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_lineage_unknown_key/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_lineage_unknown_key/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_lineage_unknown_key/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_lineage_url_blank/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_lineage_url_blank/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_lineage_url_blank/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_lineage_url_empty/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_lineage_url_empty/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_lineage_url_empty/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_lineage_url_missing/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_lineage_url_missing/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_lineage_url_missing/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_lineage_url_not_string/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_lineage_url_not_string/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_lineage_url_not_string/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_local_blank_image_namespace_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_local_blank_image_namespace_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_local_blank_image_namespace_ok/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_metadata_description_not_string/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_metadata_description_not_string/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_metadata_description_not_string/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_metadata_missing/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_metadata_missing/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_metadata_missing/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_metadata_name_empty/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_metadata_name_empty/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_metadata_name_empty/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_metadata_name_missing/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_metadata_name_missing/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_metadata_name_missing/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_metadata_name_not_string/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_metadata_name_not_string/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_metadata_name_not_string/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_metadata_not_map/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_metadata_not_map/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_metadata_not_map/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_metadata_tag_not_string/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_metadata_tag_not_string/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_metadata_tag_not_string/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_metadata_tags_not_array/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_metadata_tags_not_array/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_metadata_tags_not_array/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_metadata_unknown_key/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_metadata_unknown_key/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_metadata_unknown_key/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_ok_base/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_ok_base/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_ok_base/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_ok_full_local_runner/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_ok_full_local_runner/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_ok_full_local_runner/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_ok_metadata_only_runner_absent/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_ok_metadata_only_runner_absent/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_ok_metadata_only_runner_absent/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_ok_minimal/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_ok_minimal/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_ok_minimal/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_ok_orchestration_absent/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_ok_orchestration_absent/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_ok_orchestration_absent/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_ok_orchestration_empty/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_ok_orchestration_empty/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_ok_orchestration_empty/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_ok_strategy_sequential/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_ok_strategy_sequential/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_ok_strategy_sequential/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_ok_validation_strict_false/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_ok_validation_strict_false/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_ok_validation_strict_false/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_orch_max_bool/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_orch_max_bool/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_orch_max_bool/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_orch_max_float/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_orch_max_float/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_orch_max_float/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_orch_max_i64_max/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_orch_max_i64_max/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_orch_max_i64_max/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_orch_max_negative/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_orch_max_negative/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_orch_max_negative/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_orch_max_one/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_orch_max_one/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_orch_max_one/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_orch_max_string/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_orch_max_string/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_orch_max_string/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_orch_max_zero/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_orch_max_zero/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_orch_max_zero/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_orch_not_map/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_orch_not_map/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_orch_not_map/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_orch_strategy_case_sensitive/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_orch_strategy_case_sensitive/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_orch_strategy_case_sensitive/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_orch_strategy_invalid/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_orch_strategy_invalid/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_orch_strategy_invalid/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_orch_strategy_not_string/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_orch_strategy_not_string/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_orch_strategy_not_string/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_orch_unknown_key/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_orch_unknown_key/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_orch_unknown_key/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_resources_cpu_not_string/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_resources_cpu_not_string/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_resources_cpu_not_string/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_resources_memory_float/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_resources_memory_float/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_resources_memory_float/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_resources_memory_negative/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_resources_memory_negative/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_resources_memory_negative/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_resources_not_map/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_resources_not_map/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_resources_not_map/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_resources_unknown_key/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_resources_unknown_key/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_resources_unknown_key/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_runner_args_item_not_string/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_runner_args_item_not_string/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_runner_args_item_not_string/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_runner_args_not_array/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_runner_args_not_array/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_runner_args_not_array/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_runner_command_not_string/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_runner_command_not_string/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_runner_command_not_string/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_runner_env_key_not_string/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_runner_env_key_not_string/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_runner_env_key_not_string/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_runner_env_not_map/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_runner_env_not_map/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_runner_env_not_map/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_runner_env_parameters_not_map/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_runner_env_parameters_not_map/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_runner_env_parameters_not_map/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_runner_env_parameters_value_not_string/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_runner_env_parameters_value_not_string/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_runner_env_parameters_value_not_string/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_runner_env_value_not_string/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_runner_env_value_not_string/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_runner_env_value_not_string/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_runner_image_not_string/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_runner_image_not_string/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_runner_image_not_string/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_runner_job_name_not_string/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_runner_job_name_not_string/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_runner_job_name_not_string/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_runner_namespace_not_string/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_runner_namespace_not_string/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_runner_namespace_not_string/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_runner_not_map/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_runner_not_map/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_runner_not_map/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_runner_poll_huge/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_runner_poll_huge/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_runner_poll_huge/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_runner_poll_interval_seconds_negative/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_runner_poll_interval_seconds_negative/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_runner_poll_interval_seconds_negative/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_runner_service_account_not_string/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_runner_service_account_not_string/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_runner_service_account_not_string/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_runner_timeout_float/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_runner_timeout_float/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_runner_timeout_float/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_runner_timeout_seconds_negative/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_runner_timeout_seconds_negative/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_runner_timeout_seconds_negative/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_runner_timeout_string/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_runner_timeout_string/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_runner_timeout_string/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_runner_ttl_huge/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_runner_ttl_huge/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_runner_ttl_huge/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_runner_ttl_seconds_after_finished_negative/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_runner_ttl_seconds_after_finished_negative/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_runner_ttl_seconds_after_finished_negative/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_runner_type_case_sensitive/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_runner_type_case_sensitive/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_runner_type_case_sensitive/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_runner_type_missing/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_runner_type_missing/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_runner_type_missing/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_runner_type_not_string/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_runner_type_not_string/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_runner_type_not_string/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_runner_type_unknown/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_runner_type_unknown/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_runner_type_unknown/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_runner_unknown_key/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_runner_unknown_key/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_runner_unknown_key/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_secrets_empty_list/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_secrets_empty_list/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_secrets_empty_list/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_secrets_item_not_map/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_secrets_item_not_map/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_secrets_item_not_map/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_secrets_key_missing/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_secrets_key_missing/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_secrets_key_missing/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_secrets_key_not_string/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_secrets_key_not_string/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_secrets_key_not_string/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_secrets_name_missing/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_secrets_name_missing/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_secrets_name_missing/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_secrets_not_array/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_secrets_not_array/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_secrets_not_array/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_secrets_secret_name_missing/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_secrets_secret_name_missing/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_secrets_secret_name_missing/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_secrets_unknown_key/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_secrets_unknown_key/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_secrets_unknown_key/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_storages_default_missing/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_storages_default_missing/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_storages_default_missing/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_storages_default_not_string/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_storages_default_not_string/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_storages_default_not_string/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_storages_default_unknown/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_storages_default_unknown/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_storages_default_unknown/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_storages_definition_duplicate/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_storages_definition_duplicate/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_storages_definition_duplicate/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_storages_definition_name_empty/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_storages_definition_name_empty/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_storages_definition_name_empty/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_storages_definition_name_missing/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_storages_definition_name_missing/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_storages_definition_name_missing/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_storages_definition_not_map/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_storages_definition_not_map/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_storages_definition_not_map/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_storages_definition_type_missing/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_storages_definition_type_missing/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_storages_definition_type_missing/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_storages_definition_unknown_key/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_storages_definition_unknown_key/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_storages_definition_unknown_key/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_storages_definitions_empty/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_storages_definitions_empty/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_storages_definitions_empty/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_storages_definitions_missing/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_storages_definitions_missing/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_storages_definitions_missing/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_storages_definitions_not_array/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_storages_definitions_not_array/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_storages_definitions_not_array/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_storages_local_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_storages_local_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_storages_local_ok/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_storages_not_map/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_storages_not_map/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_storages_not_map/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_storages_path_style_not_bool/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_storages_path_style_not_bool/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_storages_path_style_not_bool/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_storages_s3_bucket_missing/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_storages_s3_bucket_missing/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_storages_s3_bucket_missing/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_storages_s3_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_storages_s3_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_storages_s3_ok/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_storages_s3_region_missing/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_storages_s3_region_missing/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_storages_s3_region_missing/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_storages_type_unsupported/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_storages_type_unsupported/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_storages_type_unsupported/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_storages_unknown_key/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_storages_unknown_key/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_storages_unknown_key/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_tpl_config_env_overrides_profile/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_tpl_config_env_overrides_profile/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_tpl_config_env_overrides_profile/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_tpl_no_variables_block/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_tpl_no_variables_block/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_tpl_no_variables_block/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_tpl_profile_var_missing/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_tpl_profile_var_missing/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_tpl_profile_var_missing/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_tpl_profile_var_used/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_tpl_profile_var_used/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_tpl_profile_var_used/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_tpl_report_path_profile_var/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_tpl_report_path_profile_var/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_tpl_report_path_profile_var/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_tpl_report_path_unknown/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_tpl_report_path_unknown/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_tpl_report_path_unknown/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_validation_empty_map/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_validation_empty_map/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_validation_empty_map/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_validation_not_map/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_validation_not_map/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_validation_not_map/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_validation_strict_int/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_validation_strict_int/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_validation_strict_int/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_validation_strict_not_bool/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_validation_strict_not_bool/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_validation_strict_not_bool/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_validation_unknown_key/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_validation_unknown_key/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_validation_unknown_key/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_vars_config_env_empty_placeholder/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_vars_config_env_empty_placeholder/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_vars_config_env_empty_placeholder/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_vars_config_env_overrides_profile_cycle/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_vars_config_env_overrides_profile_cycle/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_vars_config_env_overrides_profile_cycle/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_vars_config_env_unclosed/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_vars_config_env_unclosed/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_vars_config_env_unclosed/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_vars_config_env_unknown_reference/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_vars_config_env_unknown_reference/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_vars_config_env_unknown_reference/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_vars_dollar_without_brace_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_vars_dollar_without_brace_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_vars_dollar_without_brace_ok/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_vars_empty_map/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_vars_empty_map/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_vars_empty_map/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_vars_key_not_string/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_vars_key_not_string/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_vars_key_not_string/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_vars_malformed_blank_key/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_vars_malformed_blank_key/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_vars_malformed_blank_key/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_vars_malformed_second_placeholder/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_vars_malformed_second_placeholder/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_vars_malformed_second_placeholder/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_vars_not_map/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_vars_not_map/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_vars_not_map/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_vars_reference_chain_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_vars_reference_chain_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_vars_reference_chain_ok/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_vars_reference_defined_by_config_env/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_vars_reference_defined_by_config_env/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_vars_reference_defined_by_config_env/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_vars_reference_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_vars_reference_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_vars_reference_ok/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_vars_self_cycle/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_vars_self_cycle/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_vars_self_cycle/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_vars_unknown_reference/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_vars_unknown_reference/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_vars_unknown_reference/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_vars_value_bool/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_vars_value_bool/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_vars_value_bool/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_vars_value_not_string/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_vars_value_not_string/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/prof_vars_value_not_string/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_abort_severity_without_rejected_sink/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_abort_severity_without_rejected_sink/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_archive_conflicts_with_file_mode/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_archive_conflicts_with_file_mode/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_archive_conflicts_with_row_mode/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_archive_conflicts_with_row_mode/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_archive_storage_differs_from_source/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_archive_storage_differs_from_source/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_archive_storage_same_as_source_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_archive_storage_same_as_source_ok/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_archive_storage_same_as_source_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_archive_without_incremental_mode_warns_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_archive_without_incremental_mode_warns_ok/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_archive_without_incremental_mode_warns_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_d28_batch_column_same_as_date/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_d28_batch_column_same_as_date/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_d28_batch_column_without_token/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_d28_batch_column_without_token/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_d28_date_column_clash/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_d28_date_column_clash/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_d28_date_column_clash_normalised/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_d28_date_column_clash_normalised/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_d28_date_column_empty/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_d28_date_column_empty/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_d28_partitioning_hour_hive_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_d28_partitioning_hour_hive_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_d28_partitioning_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_d28_partitioning_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_d28_pattern_missing_day/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_d28_pattern_missing_day/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_d28_pattern_repeated_token/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_d28_pattern_repeated_token/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_d28_pattern_unknown_token/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_d28_pattern_unknown_token/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_d28_pattern_unmatched_brace/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_d28_pattern_unmatched_brace/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_d2_iceberg_merge_scd1/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_d2_iceberg_merge_scd1/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_d2_iceberg_merge_scd2/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_d2_iceberg_merge_scd2/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_d2_iceberg_merge_with_empty_primary_key/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_d2_iceberg_merge_with_empty_primary_key/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_d2_iceberg_merge_without_primary_key/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_d2_iceberg_merge_without_primary_key/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_d2_pii_on_primary_key_with_merge/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_d2_pii_on_primary_key_with_merge/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_entities_empty/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_entities_empty/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_entity_duplicate_name/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_entity_duplicate_name/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_entity_same_name_other_domain_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_entity_same_name_other_domain_ok/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_entity_same_name_other_domain_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_id_domain_empty/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_id_domain_empty/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_id_domain_with_backslash/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_id_domain_with_backslash/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_id_name_with_dot/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_id_name_with_dot/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_id_name_with_dot_before_0_3_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_id_name_with_dot_before_0_3_ok/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_id_name_with_dot_before_0_3_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_id_name_with_slash/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_id_name_with_slash/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_incremental_archive_with_sink_archive_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_incremental_archive_with_sink_archive_ok/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_incremental_archive_with_sink_archive_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_incremental_archive_without_sink_archive/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_incremental_archive_without_sink_archive/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_lineage_max_failures_one_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_lineage_max_failures_one_ok/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_lineage_max_failures_one_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_lineage_max_failures_zero/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_lineage_max_failures_zero/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_lineage_namespace_blank/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_lineage_namespace_blank/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_lineage_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_lineage_ok/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_lineage_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_lineage_url_blank/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_lineage_url_blank/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_pii_abort_severity/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_pii_abort_severity/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_pii_drop_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_pii_drop_ok/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_pii_drop_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_pii_drop_on_iceberg/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_pii_drop_on_iceberg/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_pii_drop_on_primary_key/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_pii_drop_on_primary_key/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_pii_duplicate_column/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_pii_duplicate_column/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_pii_hash_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_pii_hash_ok/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_pii_hash_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_pii_hash_on_iceberg_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_pii_hash_on_iceberg_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_pii_hash_on_legacy_unique_column/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_pii_hash_on_legacy_unique_column/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_pii_hash_on_number/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_pii_hash_on_number/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_pii_hash_on_unique_key/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_pii_hash_on_unique_key/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_pii_hash_with_key_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_pii_hash_with_key_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_pii_legacy_unique_ignored_when_unique_keys_set_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_pii_legacy_unique_ignored_when_unique_keys_set_ok/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_pii_legacy_unique_ignored_when_unique_keys_set_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_pii_mask_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_pii_mask_ok/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_pii_mask_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_pii_mask_on_number/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_pii_mask_on_number/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_pii_mask_pattern_without_token/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_pii_mask_pattern_without_token/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_pii_mask_pattern_zero_width_token/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_pii_mask_pattern_zero_width_token/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_pii_mask_without_pattern/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_pii_mask_without_pattern/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_pii_mismatch_extra_reject_file/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_pii_mismatch_extra_reject_file/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_pii_mismatch_fill_nulls_ignore_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_pii_mismatch_fill_nulls_ignore_ok/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_pii_mismatch_fill_nulls_ignore_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_pii_mismatch_missing_reject_file/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_pii_mismatch_missing_reject_file/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_pii_nullify_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_pii_nullify_ok/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_pii_nullify_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_pii_nullify_on_not_nullable/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_pii_nullify_on_not_nullable/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_pii_redact_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_pii_redact_ok/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_pii_redact_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_pii_redact_on_primary_key/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_pii_redact_on_primary_key/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_pii_redact_on_unique_key/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_pii_redact_on_unique_key/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_pii_tokenize/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_pii_tokenize/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_pii_unknown_column/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_pii_unknown_column/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_pii_with_archive/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_pii_with_archive/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_reject_severity_with_rejected_sink_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_reject_severity_with_rejected_sink_ok/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_reject_severity_with_rejected_sink_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_reject_severity_without_rejected_sink/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_reject_severity_without_rejected_sink/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_report_remote_path_on_local/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_report_remote_path_on_local/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_report_remote_path_on_s3_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_report_remote_path_on_s3_ok/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_report_remote_path_on_s3_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_sink_accepted_format_unknown/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_sink_accepted_format_unknown/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_sink_options_compression_unknown/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_sink_options_compression_unknown/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_sink_options_max_size_per_file_zero/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_sink_options_max_size_per_file_zero/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_sink_options_row_group_size_zero/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_sink_options_row_group_size_zero/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_sink_options_valid_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_sink_options_valid_ok/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_sink_options_valid_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_sink_rejected_csv_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_sink_rejected_csv_ok/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_sink_rejected_csv_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_sink_rejected_format_parquet/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_sink_rejected_format_parquet/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_source_cast_mode_coerce_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_source_cast_mode_coerce_ok/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_source_cast_mode_coerce_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_source_cast_mode_unknown/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_source_cast_mode_unknown/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_source_format_unknown/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_source_format_unknown/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_source_json_default_mode_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_source_json_default_mode_ok/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_source_json_default_mode_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_source_json_mode_ndjson_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_source_json_mode_ndjson_ok/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_source_json_mode_ndjson_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_source_json_mode_unknown/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_source_json_mode_unknown/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_state_path_blank/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_state_path_blank/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_state_path_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_state_path_ok/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_state_path_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_version_below_minimum/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_version_below_minimum/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_version_d21_floe_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_version_d21_floe_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_version_extra_dot/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_version_extra_dot/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_version_future_major_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_version_major_not_numeric/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_version_major_not_numeric/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_version_minimum_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_version_minimum_ok/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_version_minimum_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_version_minor_not_numeric/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_version_minor_not_numeric/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_version_no_dot/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_version_no_dot/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_write_mode_append_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_write_mode_append_ok/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_write_mode_append_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_write_mode_merge_on_parquet/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val1_write_mode_merge_on_parquet/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_catalog_default_absent_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_catalog_default_absent_ok/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_catalog_default_absent_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_catalog_default_unknown/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_catalog_default_unknown/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_catalog_duplicate/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_catalog_duplicate/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_catalog_rest_wh_storage_local/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_catalog_rest_wh_storage_local/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_catalog_rest_wh_storage_s3_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_catalog_rest_wh_storage_s3_ok/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_catalog_rest_wh_storage_s3_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_catalog_rest_wh_storage_unknown/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_catalog_rest_wh_storage_unknown/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_catalogs_empty/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_catalogs_empty/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_catalogs_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_catalogs_ok/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_catalogs_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_d26_iceberg_no_catalog/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_d26_iceberg_no_catalog/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_d28_partition_spec_day_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_d28_partition_spec_day_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_d2_compare_pk/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_d2_compare_pk/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_d2_ignore_pk/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_d2_ignore_pk/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_d2_merge_block_overwrite/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_d2_merge_block_overwrite/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_d2_merge_list_duplicate/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_d2_merge_list_duplicate/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_d2_merge_list_entry_empty/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_d2_merge_list_entry_empty/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_d2_merge_list_unknown_column/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_d2_merge_list_unknown_column/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_d2_merge_scd1_ignore_columns_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_d2_merge_scd1_ignore_columns_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_d2_merge_scd1_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_d2_merge_scd1_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_d2_merge_scd2_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_d2_merge_scd2_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_d2_scd2_column_collides/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_d2_scd2_column_collides/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_d2_scd2_column_empty/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_d2_scd2_column_empty/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_d2_scd2_columns_not_unique/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_d2_scd2_columns_not_unique/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_d2_scd2_with_scd1/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_d2_scd2_with_scd1/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_evolution_add_columns_iceberg_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_evolution_add_columns_iceberg_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_evolution_add_columns_not_delta/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_evolution_add_columns_not_delta/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_evolution_old_version/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_evolution_old_version/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_evolution_strict_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_evolution_strict_ok/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_evolution_strict_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_iceberg_block_on_parquet/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_iceberg_block_on_parquet/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_iceberg_default_catalog_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_iceberg_default_catalog_ok/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_iceberg_default_catalog_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_iceberg_local_storage/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_iceberg_local_storage/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_iceberg_local_storage_with_warehouse_storage_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_iceberg_local_storage_with_warehouse_storage_ok/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_iceberg_local_storage_with_warehouse_storage_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_iceberg_no_catalog/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_iceberg_no_catalog/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_iceberg_unknown_catalog/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_iceberg_unknown_catalog/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_iceberg_valid/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_iceberg_valid/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_iceberg_valid/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_jsel_blank/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_jsel_blank/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_jsel_empty/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_jsel_empty/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_jsel_empty_field/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_jsel_empty_field/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_jsel_index_empty/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_jsel_index_empty/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_jsel_index_negative/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_jsel_index_negative/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_jsel_index_not_numeric/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_jsel_index_not_numeric/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_jsel_index_overflow/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_jsel_index_overflow/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_jsel_index_unclosed/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_jsel_index_unclosed/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_jsel_leading_dot/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_jsel_leading_dot/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_jsel_name_used_when_no_source/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_jsel_name_used_when_no_source/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_jsel_unexpected_bracket/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_jsel_unexpected_bracket/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_jsel_valid_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_jsel_valid_ok/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_jsel_valid_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_json_columns_limit/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_json_columns_limit/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_json_columns_limit_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_json_columns_limit_ok/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_json_columns_limit_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_merge_on_parquet/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_merge_on_parquet/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_mismatch_extra_unsupported/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_mismatch_extra_unsupported/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_mismatch_missing_unsupported/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_mismatch_missing_unsupported/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_mismatch_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_mismatch_ok/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_mismatch_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_normalize_selector_collision/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_normalize_selector_collision/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_normalize_strategy_spelling_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_normalize_strategy_spelling_ok/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_normalize_strategy_spelling_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_normalize_strategy_unsupported/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_normalize_strategy_unsupported/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_part_both/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_part_both/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_part_by_on_parquet/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_part_by_on_parquet/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_part_spec_bucket_not_integer/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_part_spec_bucket_not_integer/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_part_spec_bucket_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_part_spec_bucket_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_part_spec_bucket_on_day/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_part_spec_bucket_on_day/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_part_spec_bucket_zero/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_part_spec_bucket_zero/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_part_spec_column_empty/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_part_spec_column_empty/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_part_spec_column_unknown/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_part_spec_column_unknown/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_part_spec_duplicate/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_part_spec_duplicate/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_part_spec_empty/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_part_spec_empty/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_part_spec_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_part_spec_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_part_spec_on_parquet/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_part_spec_on_parquet/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_part_spec_same_column_other_transform_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_part_spec_same_column_other_transform_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_part_spec_transform_unsupported/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_part_spec_transform_unsupported/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_pk_duplicate/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_pk_duplicate/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_pk_duplicate_after_trim/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_pk_duplicate_after_trim/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_pk_empty/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_pk_empty/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_pk_entry_empty/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_pk_entry_empty/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_pk_nullable_false_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_pk_nullable_false_ok/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_pk_nullable_false_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_pk_nullable_true/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_pk_nullable_true/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_pk_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_pk_ok/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_pk_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_pk_trimmed_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_pk_trimmed_ok/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_pk_trimmed_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_pk_unknown_column/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_pk_unknown_column/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_ref_accepted_unknown/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_ref_accepted_unknown/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_ref_accepted_unknown_no_block/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_ref_accepted_unknown_no_block/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_ref_rejected_unknown/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_ref_rejected_unknown/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_ref_report_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_ref_report_ok/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_ref_report_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_ref_report_unknown/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_ref_report_unknown/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_ref_report_unknown_no_block/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_ref_report_unknown_no_block/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_ref_source_local_no_block_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_ref_source_local_no_block_ok/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_ref_source_local_no_block_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_ref_source_unknown/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_ref_source_unknown/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_ref_source_unknown_no_block/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_ref_source_unknown_no_block/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_storage_default_missing/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_storage_default_missing/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_storage_default_unknown/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_storage_default_unknown/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_storage_duplicate/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_storage_duplicate/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_storage_s3_no_bucket/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_storage_s3_no_bucket/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_storage_s3_no_region/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_storage_s3_no_region/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_storage_s3_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_storage_s3_ok/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_storage_s3_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_storage_type_unsupported/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_storage_type_unsupported/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_storages_empty/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_storages_empty/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_storages_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_storages_ok/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_storages_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_type_aliases_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_type_aliases_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_type_time/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_type_time/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_type_unsupported/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_type_unsupported/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_uk_duplicate_column/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_uk_duplicate_column/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_uk_duplicate_group_warns_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_uk_duplicate_group_warns_ok/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_uk_duplicate_group_warns_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_uk_empty/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_uk_empty/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_uk_entry_empty/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_uk_entry_empty/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_uk_group_empty/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_uk_group_empty/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_uk_legacy_unique_warns_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_uk_legacy_unique_warns_ok/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_uk_legacy_unique_warns_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_uk_ok/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_uk_ok/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_uk_ok/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_uk_unknown_column/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/config/val2_uk_unknown_column/expected/validate.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/example/standalone/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/example/standalone/expected/accepted/orders.parquet +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/example/standalone/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/example/standalone/expected/rejected/orders/part-00000.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/example/standalone/expected/reports/report/sales/run_ID/run.summary.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/example/standalone/expected/reports/report/sales/run_ID/sales/orders/run.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/example/standalone/in/orders.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/incremental_file/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/incremental_file/expected/accepted/orders.parquet +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/incremental_file/expected/reports/report/spike/run_ID/run.summary.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/incremental_file/expected/reports/report/spike/run_ID/spike/orders/run.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/incremental_file/in/orders.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/incremental_file/runs +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/incremental_file_full_refresh/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/incremental_file_full_refresh/expected/accepted/orders.parquet +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/incremental_file_full_refresh/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/incremental_file_full_refresh/expected/reports/report/spike/run_ID/run.summary.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/incremental_file_full_refresh/expected/reports/report/spike/run_ID/spike/orders/run.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/incremental_file_full_refresh/in/orders.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/incremental_file_full_refresh/runs +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/json_orders/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/json_orders/expected/accepted/orders.parquet +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/json_orders/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/json_orders/expected/rejected/orders/part-00000.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/json_orders/expected/reports/report/spike/run_ID/run.summary.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/json_orders/expected/reports/report/spike/run_ID/spike/orders/run.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/json_orders/in/orders_invalid.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/json_orders/in/orders_valid.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/manifest_run/README.md +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/manifest_run/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/manifest_run/expected/accepted/finance_orders.parquet +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/manifest_run/expected/accepted/sales_orders.parquet +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/manifest_run/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/manifest_run/expected/rejected/sales_orders/part-00000.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/manifest_run/in/finance/orders.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/manifest_run/in/sales/orders.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/manifest_run/manifest_run +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/manifest_run/runs +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/mismatch/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/mismatch/expected/accepted/customers.parquet +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/mismatch/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/mismatch/expected/rejected/customers/part-00000.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/mismatch/expected/reports/report/spike/run_ID/run.summary.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/mismatch/expected/reports/report/spike/run_ID/spike/customers/run.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/mismatch/in/customers.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/mismatch_abort/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/mismatch_abort/expected/accepted/orders.parquet +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/mismatch_abort/expected/exit_code +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/mismatch_abort/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/mismatch_abort/expected/rejected/orders/orders.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/mismatch_abort/expected/reports/report/spike/run_ID/run.summary.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/mismatch_abort/expected/reports/report/spike/run_ID/spike/orders/run.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/mismatch_abort/in/orders.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/mismatch_file_order/README.md +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/mismatch_file_order/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/mismatch_file_order/expected/accepted/orders.parquet +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/mismatch_file_order/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/mismatch_file_order/expected/rejected/orders/b.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/mismatch_file_order/expected/reports/report/run_ID/orders/run.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/mismatch_file_order/expected/reports/report/run_ID/run.summary.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/mismatch_file_order/in/a.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/mismatch_file_order/in/b.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/mismatch_reject_file/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/mismatch_reject_file/expected/accepted/orders.parquet +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/mismatch_reject_file/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/mismatch_reject_file/expected/rejected/orders/orders.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/mismatch_reject_file/expected/reports/report/spike/run_ID/run.summary.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/mismatch_reject_file/expected/reports/report/spike/run_ID/spike/orders/run.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/mismatch_reject_file/in/orders.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/orc_read/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/orc_read/expected/accepted/orc_read.parquet +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/orc_read/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/orc_read/expected/rejected/orc_read/part-00000.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/orc_read/expected/reports/report/spike/run_ID/run.summary.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/orc_read/expected/reports/report/spike/run_ID/spike/orc_read/run.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/orc_read/in/orc_read.orc +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/partitioning_archive_full_refresh/README.md +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/partitioning_archive_full_refresh/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/partitioning_archive_full_refresh/expected/accepted/orders.parquet +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/partitioning_archive_full_refresh/expected/events.jsonl +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/partitioning_archive_full_refresh/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/partitioning_archive_full_refresh/expected/reports/report/raw/run_ID/raw/orders/run.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/partitioning_archive_full_refresh/expected/reports/report/raw/run_ID/run.summary.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/partitioning_archive_full_refresh/in/2026/10/24/f9e8/orders.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/partitioning_archive_full_refresh/runs +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/partitioning_file_watermark/README.md +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/partitioning_file_watermark/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/partitioning_file_watermark/expected/accepted/orders.parquet +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/partitioning_file_watermark/expected/events.jsonl +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/partitioning_file_watermark/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/partitioning_file_watermark/expected/reports/report/raw/run_ID/raw/orders/run.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/partitioning_file_watermark/expected/reports/report/raw/run_ID/run.summary.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/partitioning_file_watermark/in/2026/10/20/a1/orders.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/partitioning_file_watermark/in/2026/10/23/b2/orders.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/partitioning_file_watermark/in/2026/10/24/c3/orders.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/partitioning_file_watermark/runs +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/partitioning_hive_hour/README.md +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/partitioning_hive_hour/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/partitioning_hive_hour/expected/accepted/orders.parquet +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/partitioning_hive_hour/expected/events.jsonl +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/partitioning_hive_hour/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/partitioning_hive_hour/expected/reports/report/raw/run_ID/raw/orders/run.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/partitioning_hive_hour/expected/reports/report/raw/run_ID/run.summary.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/partitioning_hive_hour/in/year=2026/month=10/day=24/hour=09/orders.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/partitioning_hive_hour/in/year=2026/month=10/day=24/hour=13/orders.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/partitioning_hive_hour/runs +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/partitioning_two_days/README.md +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/partitioning_two_days/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/partitioning_two_days/expected/accepted/orders.parquet +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/partitioning_two_days/expected/events.jsonl +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/partitioning_two_days/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/partitioning_two_days/expected/rejected/orders/part-00000.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/partitioning_two_days/expected/reports/report/raw/run_ID/raw/orders/run.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/partitioning_two_days/expected/reports/report/raw/run_ID/run.summary.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/partitioning_two_days/in/2026/10/24/f9e8/orders.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/partitioning_two_days/in/2026/10/25/a1b2/orders.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/partitioning_two_days/runs +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/partitioning_unmatched/README.md +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/partitioning_unmatched/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/partitioning_unmatched/expected/events.jsonl +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/partitioning_unmatched/expected/exit_code +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/partitioning_unmatched/in/2026/10/24/f9e8/orders.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/partitioning_unmatched/in/2026/10/24/orders.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/partitioning_unmatched/runs +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/precheck_header_order/README.md +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/precheck_header_order/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/precheck_header_order/expected/accepted/orders.parquet +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/precheck_header_order/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/precheck_header_order/expected/rejected/orders/a.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/precheck_header_order/expected/rejected/orders/b.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/precheck_header_order/expected/reports/report/run_ID/orders/run.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/precheck_header_order/expected/reports/report/run_ID/run.summary.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/precheck_header_order/in/a.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/precheck_header_order/in/b.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/record.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/severity_abort/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/severity_abort/expected/accepted/orders.parquet +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/severity_abort/expected/exit_code +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/severity_abort/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/severity_abort/expected/rejected/orders/orders.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/severity_abort/expected/reports/report/spike/run_ID/run.summary.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/severity_abort/expected/reports/report/spike/run_ID/spike/orders/run.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/severity_abort/in/orders.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/severity_warn/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/severity_warn/expected/accepted/orders.parquet +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/severity_warn/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/severity_warn/expected/reports/report/spike/run_ID/run.summary.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/severity_warn/expected/reports/report/spike/run_ID/spike/orders/run.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/severity_warn/in/orders.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/unique_pii/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/unique_pii/expected/accepted/orders.parquet +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/unique_pii/expected/rejected/orders/part-00000.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/unique_pii/expected/rejected/orders/part-UUID.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/unique_pii/expected/reports/report/spike/run_ID/run.summary.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/unique_pii/in/a.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/unique_pii/in/b.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/unresolved_inputs/README.md +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/unresolved_inputs/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/unresolved_inputs/expected/events.jsonl +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/unresolved_inputs/expected/exit_code +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/unresolved_inputs/in/first.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/unresolved_inputs/runs +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/unresolved_inputs_dot/README.md +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/unresolved_inputs_dot/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/unresolved_inputs_dot/expected/events.jsonl +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/unresolved_inputs_dot/expected/exit_code +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/unresolved_inputs_dot/in/first.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/unresolved_inputs_dot/runs +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/write_oserror/README.md +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/write_oserror/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/write_oserror/expected/events.jsonl +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/write_oserror/expected/exit_code +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/write_oserror/in/first.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/write_oserror/out/accepted +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/write_oserror/runs +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/xlsx/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/xlsx/expected/accepted/orders.parquet +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/xlsx/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/xlsx/expected/reports/report/run_ID/orders/run.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/xlsx/expected/reports/report/run_ID/run.summary.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/xlsx/in/orders.xlsx +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/xml/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/xml/expected/accepted/items.parquet +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/xml/expected/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/xml/expected/rejected/items/part-00000.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/xml/expected/reports/report/spike/run_ID/run.summary.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/xml/expected/reports/report/spike/run_ID/spike/items/run.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/conformance/xml/in/items.xml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/context/architecture.md +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/context/coding-standards.md +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/context/decisions/entity-commit-guarantees.md +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/context/decisions/incremental-state-cas.md +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/context/decisions/merge-delegated-to-sink.md +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/context/decisions/polars-and-arrow.md +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/context/decisions/python-core-for-olf.md +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/context/decisions/structured-floe-error.md +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/context/orchestrators.md +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/context/project.md +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/context/testing-strategy.md +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/docs/assets/architecture.png +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/docs/assets/floe-banner.png +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/docs/assets/floe.png +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/docs/checks.md +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/docs/cli.md +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/docs/how-it-works.md +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/docs/lineage.md +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/docs/logging.md +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/docs/projects.md +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/docs/python-bindings.md +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/docs/report.md +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/docs/sinks/options.md +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/docs/sinks/parquet.md +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/docs/storages/s3.md +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/docs/summary.md +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/docs/variables.md +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/docs/write_modes.md +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/example/README.md +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/example/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/example/in/customer/customers_invalid.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/example/in/customer/customers_missing.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/example/in/customer/customers_valid.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/example/in/orders/orders_invalid.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/example/in/orders/orders_valid.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/example/profiles/dev.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/example/profiles/prod.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/example/profiles/uat.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/example/project/bronze/csv_drop/customer_accounts.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/example/project/bronze/csv_drop/ledger_accounts.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/example/project/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/example/project/domains/finance/_domain.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/example/project/domains/finance/accounts.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/example/project/domains/sales/_domain.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/example/project/domains/sales/accounts.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/example/project/sources.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/example/standalone/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/example/standalone/in/orders.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/orchestrators/LOCAL_DEV.md +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/orchestrators/airflow-floe/INTEGRATION_SPEC.md +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/orchestrators/airflow-floe/dags/floe_example_operator_dag.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/orchestrators/airflow-floe/example/config.hr.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/orchestrators/airflow-floe/example/in/hr/employees.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/orchestrators/airflow-floe/example/in/sales/orders.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/orchestrators/airflow-floe/schemas/floe.airflow.run.v1.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/orchestrators/airflow-floe/schemas/floe.airflow.validate.v1.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/orchestrators/airflow-floe/src/airflow_floe/__init__.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/orchestrators/airflow-floe/src/airflow_floe/databricks_client.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/orchestrators/airflow-floe/src/airflow_floe/databricks_runner.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/orchestrators/airflow-floe/src/airflow_floe/hooks.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/orchestrators/airflow-floe/src/airflow_floe/k8s_status.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/orchestrators/airflow-floe/src/airflow_floe/kubernetes_runner.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/orchestrators/airflow-floe/src/airflow_floe/manifest_discovery.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/orchestrators/airflow-floe/src/airflow_floe/operators.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/orchestrators/airflow-floe/src/airflow_floe/runtime.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/orchestrators/airflow-floe/tests/fixtures/manifest_0_8.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/orchestrators/airflow-floe/tests/test_databricks_client.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/orchestrators/airflow-floe/tests/test_databricks_runner.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/orchestrators/airflow-floe/tests/test_hook_and_operator.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/orchestrators/airflow-floe/tests/test_kubernetes_runner.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/orchestrators/airflow-floe/tests/test_manifest_discovery.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/orchestrators/airflow-floe/tests/test_runtime.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/orchestrators/dagster-floe/.gitignore +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/orchestrators/dagster-floe/INTEGRATION_SPEC.md +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/orchestrators/dagster-floe/MANIFEST.in +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/orchestrators/dagster-floe/example/README.md +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/orchestrators/dagster-floe/example/config.hr.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/orchestrators/dagster-floe/example/config.sales.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/orchestrators/dagster-floe/example/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/orchestrators/dagster-floe/example/definitions.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/orchestrators/dagster-floe/example/in/hr/employees.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/orchestrators/dagster-floe/example/in/sales/invoices.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/orchestrators/dagster-floe/example/in/sales/orders.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/orchestrators/dagster-floe/example/manifest.dagster.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/orchestrators/dagster-floe/example/manifests/hr.manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/orchestrators/dagster-floe/example/manifests/sales.manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/orchestrators/dagster-floe/setup.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/orchestrators/dagster-floe/src/floe_dagster/__init__.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/orchestrators/dagster-floe/src/floe_dagster/asset_checks.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/orchestrators/dagster-floe/src/floe_dagster/databricks_client.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/orchestrators/dagster-floe/src/floe_dagster/databricks_runner.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/orchestrators/dagster-floe/src/floe_dagster/definitions.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/orchestrators/dagster-floe/src/floe_dagster/events.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/orchestrators/dagster-floe/src/floe_dagster/k8s_status.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/orchestrators/dagster-floe/src/floe_dagster/kubernetes_runner.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/orchestrators/dagster-floe/tests/conftest.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/orchestrators/dagster-floe/tests/fixtures/manifest.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/orchestrators/dagster-floe/tests/fixtures/manifest_hr.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/orchestrators/dagster-floe/tests/fixtures/manifest_sales.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/orchestrators/dagster-floe/tests/fixtures/run_events.ndjson +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/orchestrators/dagster-floe/tests/test_config_mode.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/orchestrators/dagster-floe/tests/test_databricks_client.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/orchestrators/dagster-floe/tests/test_databricks_runner.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/orchestrators/dagster-floe/tests/test_domain_scope.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/orchestrators/dagster-floe/tests/test_events.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/orchestrators/dagster-floe/tests/test_kubernetes_runner.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/orchestrators/dagster-floe/tests/test_localrunner_optional.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/orchestrators/dagster-floe/tests/test_remote_json.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/orchestrators/dagster-floe/tests/test_runner_defaults.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/orchestrators/dagster-floe/tests/test_s3_boto3.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/orchestrators/dagster-floe/tests/test_s3_boto3_service.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/orchestrators/dagster-floe/workspace.yaml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/schemas/README.md +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/schemas/domains.schema.yaml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/schemas/entity.schema.yaml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/schemas/project.schema.yaml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/schemas/sources.schema.yaml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/scripts/check_orchestrator_drift.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/src/floe/__init__.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/src/floe/__main__.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/src/floe/_cli.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/src/floe/_cli_output.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/src/floe/add_entity.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/src/floe/checks/cast.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/src/floe/checks/mismatch.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/src/floe/checks/normalize.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/src/floe/checks/rows.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/src/floe/config/__init__.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/src/floe/config/entity.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/src/floe/config/include.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/src/floe/config/parse.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/src/floe/config/project.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/src/floe/config/storage.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/src/floe/config/types.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/src/floe/config/validate.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/src/floe/config/vars.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/src/floe/config/yaml.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/src/floe/errors.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/src/floe/glob.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/src/floe/iceberg/merge.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/src/floe/iceberg/unique.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/src/floe/lineage/events.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/src/floe/lineage/observer.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/src/floe/maintain.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/src/floe/manifest_run.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/src/floe/pii.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/src/floe/py.typed +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/src/floe/read/__init__.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/src/floe/read/avro.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/src/floe/read/csv.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/src/floe/read/json.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/src/floe/read/orc.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/src/floe/read/parquet.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/src/floe/read/xlsx.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/src/floe/read/xml.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/src/floe/report/entity.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/src/floe/report/summary.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/src/floe/run/events.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/src/floe/run/parallel.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/src/floe/storage/__init__.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/src/floe/storage/inputs.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/src/floe/storage/paths.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/src/floe/storage/prefetch.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/src/floe/storage/resolve.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/src/floe/write/__init__.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/src/floe/write/outputs.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/tests/integration/test_iceberg_catalog.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/tests/integration/test_iceberg_glue.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/tests/integration/test_iceberg_merge.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/tests/integration/test_iceberg_write.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/tests/integration/test_profile_s3_seaweedfs.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/tests/integration/test_run_polaris_parallel.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/tests/integration/test_run_seaweedfs.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/tests/integration/test_s3_seaweedfs.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/tests/unit/checks/test_cast.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/tests/unit/checks/test_cast_native.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/tests/unit/checks/test_mismatch.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/tests/unit/checks/test_rows.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/tests/unit/config/test_entity.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/tests/unit/config/test_include.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/tests/unit/config/test_project.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/tests/unit/config/test_readers.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/tests/unit/config/test_storage.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/tests/unit/config/test_template.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/tests/unit/config/test_vars.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/tests/unit/config/test_yaml.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/tests/unit/fixtures/public_api/config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/tests/unit/fixtures/public_api/in/customer/customers_valid.csv +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/tests/unit/fixtures/public_api/invalid_config.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/tests/unit/fixtures/public_api/profile.yml +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/tests/unit/iceberg/test_catalog_reuse.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/tests/unit/iceberg/test_merge.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/tests/unit/iceberg/test_merge_commit_retry.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/tests/unit/iceberg/test_unique_seed.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/tests/unit/iceberg/test_write.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/tests/unit/lineage/test_lineage_events.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/tests/unit/lineage/test_lineage_observer.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/tests/unit/read/test_avro.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/tests/unit/read/test_csv.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/tests/unit/read/test_json.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/tests/unit/read/test_orc.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/tests/unit/read/test_parquet.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/tests/unit/read/test_xlsx.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/tests/unit/read/test_xml.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/tests/unit/report/test_entity_report.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/tests/unit/report/test_summary.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/tests/unit/run/test_incremental.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/tests/unit/run/test_run_stream.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/tests/unit/state/rust_0_7_state.json +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/tests/unit/storage/test_local.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/tests/unit/storage/test_partitioning.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/tests/unit/storage/test_paths.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/tests/unit/storage/test_prefetch.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/tests/unit/storage/test_resolve.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/tests/unit/test_add_entity_infer.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/tests/unit/test_cli_maintain.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/tests/unit/test_cli_output.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/tests/unit/test_cli_run.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/tests/unit/test_cli_run_manifest.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/tests/unit/test_cli_state.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/tests/unit/test_cli_validate.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/tests/unit/test_cli_version.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/tests/unit/test_glob.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/tests/unit/test_import.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/tests/unit/test_pii.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/tests/unit/test_profile_env.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/tests/unit/test_public_api.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/tests/unit/test_python_m.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/tests/unit/test_run_workers.py +0 -0
- {floe_python-0.8.8 → floe_python-0.9.0}/tests/unit/write/test_outputs.py +0 -0
|
@@ -0,0 +1,1467 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to Floe are documented in this file.
|
|
4
|
+
|
|
5
|
+
## v0.9.0
|
|
6
|
+
|
|
7
|
+
Floe 0.9 accepts configs with `version:` up to `"0.9"` and generates manifests with `spec_version: "0.9"`; use
|
|
8
|
+
dagster-floe 0.5 or airflow-floe 0.3 with it.
|
|
9
|
+
|
|
10
|
+
- **A `kubernetes_job` runner passes its pod options through to the manifest (#1065).** The profile's
|
|
11
|
+
`kubernetes_job` runner keeps every key the core does not use (`security_context`, `node_selector`,
|
|
12
|
+
`tolerations`, `priority_class_name`, ...) as written, and the manifest carries it; a new pod option needs only a
|
|
13
|
+
dagster-floe release. The core no longer type-checks these options: a mistyped key or a wrongly typed pod option
|
|
14
|
+
now passes `floe validate` (dagster-floe still rejects a wrongly typed known option when it loads the manifest).
|
|
15
|
+
`local` and `databricks_job` runners still accept and ignore the old pod keys (`labels`, `tolerations`, ...)
|
|
16
|
+
and reject other unknown keys; a non-finite number (`.inf`, `.nan`) in a pod option is rejected. Existing manifests
|
|
17
|
+
are unchanged.
|
|
18
|
+
|
|
19
|
+
- **File-mode state prunes ingested entries behind a stored `pruned_before` date (#949).** With
|
|
20
|
+
`incremental_mode: file` and `source.partitioning`, each successful run moves `pruned_before` to the watermark
|
|
21
|
+
minus `lookback_days` and drops older `files` entries in the same state write, so the state file no longer grows
|
|
22
|
+
with every ingested file. A normal run never lists days before `pruned_before`, even after `lookback_days` is
|
|
23
|
+
raised; only `--full-refresh` does. After a failed full refresh the next run lists from `pruned_before`, no longer
|
|
24
|
+
from the start. State files without the field load unchanged.
|
|
25
|
+
|
|
26
|
+
- **A full refresh replays same-day S3 archive copies in their original order (#939).** An S3 archive copy keeps
|
|
27
|
+
the source's modification time in the object metadata `floe-source-mtime`, and a full refresh of a partitioned
|
|
28
|
+
entity reads it back (one HEAD per archived file) to order same-day batches. Before, batches archived in the same
|
|
29
|
+
second could replay in batch-name order and keep a different version of a key than the first run. Archiving now
|
|
30
|
+
takes one HEAD on the source before each copy; archives written before this change keep the old order.
|
|
31
|
+
|
|
32
|
+
- **`incremental_mode: file` with no source files has nothing pending (#1139).** An entity whose source prefix is
|
|
33
|
+
empty or missing used to fail the run with `no input files matched` / `no input objects matched`. It now finishes
|
|
34
|
+
with 0 files and 0 rows and leaves its table and state untouched, as when every listed file was already processed.
|
|
35
|
+
`--full-refresh` with no source files, and `incremental_mode: none` or `archive`, still fail.
|
|
36
|
+
|
|
37
|
+
- **Compaction no longer keeps all-deleted manifests in the manifest list (#1136).** `floe maintain --compact` left
|
|
38
|
+
one more dead manifest in the table's manifest list on every run, so later scans and commits read more manifests
|
|
39
|
+
each time; it now drops them, as overwrites do since v0.8.9.
|
|
40
|
+
|
|
41
|
+
## v0.8.9
|
|
42
|
+
|
|
43
|
+
- **A file removed after listing no longer aborts a run with `sink.rejected` set (#1121).** The file is reported as
|
|
44
|
+
failed with its read error, without a raw copy, and the run continues.
|
|
45
|
+
|
|
46
|
+
- **Tied unique-key samples are ordered by the key, not its Rust Debug text (#984).** When duplicate keys share a
|
|
47
|
+
count, the report samples now order them by value: numbers numerically (2 before 10, no longer 10 before 2),
|
|
48
|
+
strings by code point, and composite keys column by column. Reports whose tied samples held keys of different
|
|
49
|
+
digit counts, or strings with control characters, list them in a different order.
|
|
50
|
+
|
|
51
|
+
- **Iceberg sinks apply `options.compression` and `options.row_group_size` (#1009).** Both were parsed and
|
|
52
|
+
validated but ignored for `sink.accepted.format: iceberg`. `overwrite` and `append` now write data files with the
|
|
53
|
+
configured codec and rows per row group, for that write only; the table's properties are not changed. Merge modes
|
|
54
|
+
still ignore them.
|
|
55
|
+
|
|
56
|
+
- **Parallel runs list entity inputs on the worker pool (#1131).** With `workers` > 1, the inputs of all entities are
|
|
57
|
+
listed on up to `workers` threads instead of one after another; they are still all resolved before the first
|
|
58
|
+
`entity_started`, and a listing failure raises the first error in config order.
|
|
59
|
+
|
|
60
|
+
- **Opening an existing Iceberg table takes one catalog call instead of three (#1130).** `ensure_table` now tries
|
|
61
|
+
`load_table` first and checks or creates the namespace only when the table is missing; merge entities no longer
|
|
62
|
+
call `table_exists` and `load_table` before it. With a remote catalog this saves about 0.2 s per entity at
|
|
63
|
+
100 ms of latency. Errors and messages are unchanged.
|
|
64
|
+
|
|
65
|
+
- **Overwriting the same Iceberg table no longer gets slower with every earlier overwrite (#1132).** PyIceberg 0.12
|
|
66
|
+
left the all-deleted manifest of each earlier overwrite in the table's manifest list, so every scan and commit read
|
|
67
|
+
one more manifest. On a local SQL catalog the 100th overwrite took about 430-750 ms against about 45 ms for the
|
|
68
|
+
2nd; it now takes about 230 ms, and the manifest list stays at 2 entries. A table that already accumulated them
|
|
69
|
+
sheds them on its next overwrite.
|
|
70
|
+
|
|
71
|
+
## v0.8.8
|
|
72
|
+
|
|
73
|
+
- **Entities can run in parallel in one `floe run` (#1105).** With `execution.orchestration.strategy: parallel` in
|
|
74
|
+
the profile, `floe run -c … -p …`, `floe run --manifest …` and `floe.run(…, profile_path=…)` run up to
|
|
75
|
+
`max_concurrent_entities` entities at once (default `min(4, CPU count)`). Entities that share an Iceberg table, an
|
|
76
|
+
accepted path or a state file never run together, and merge entities run one at a time. Reports and the summary
|
|
77
|
+
stay in config order; events of different entities interleave and observers are called from worker threads. On
|
|
78
|
+
the Polaris/SeaweedFS harness, 12 entities writing 12 Iceberg tables took 2.04 s with one worker and 1.03 s with
|
|
79
|
+
four. Without `strategy: parallel` nothing changes. Profiles that already set `strategy: parallel` for Dagster now
|
|
80
|
+
also run the entities of a `job_scope: domain` Job in parallel; peak memory then grows with the number of workers
|
|
81
|
+
(see `docs/profiles.md`).
|
|
82
|
+
|
|
83
|
+
- **Creating a new Iceberg namespace no longer fails when two writers race (#1117).** Two entities, or two
|
|
84
|
+
processes such as concurrent Dagster Jobs, that both found a namespace missing and created it made the second
|
|
85
|
+
creation fail the run. A namespace that already exists by then now counts as created.
|
|
86
|
+
|
|
87
|
+
- **A small JSON file is parsed once (#1115).** The key check before the read parsed every JSON file a second
|
|
88
|
+
time. A file of at most 8 MiB is now parsed once and its records reused; larger files keep the two passes, so
|
|
89
|
+
memory stays bounded. On 300 files of 200 records, JSON reading took 37-38% less CPU, and a 100,000-record file
|
|
90
|
+
about 28% less end to end.
|
|
91
|
+
|
|
92
|
+
## v0.8.7
|
|
93
|
+
|
|
94
|
+
- **The Iceberg catalog is opened once per run (#1101).** Every catalog call used to start a new REST session
|
|
95
|
+
(a config request, plus an OAuth token request when a credential is set), and an `append` entity did it twice.
|
|
96
|
+
A run now reuses one catalog per catalog definition and storage, so N entities no longer pay up to 2N
|
|
97
|
+
initialisations. The catalog is opened again at the start of each run.
|
|
98
|
+
|
|
99
|
+
- **S3 clients are reused within a run (#1100).** Each `S3Client` builds its own boto3 session, about 55-120 ms,
|
|
100
|
+
and one S3 entity built 6-8 of them (source, state, accepted, rejected, archive, report). A run now builds one
|
|
101
|
+
client per storage definition: a two-entity run on one storage went from 5 clients to 1. `AWS_*` variables and
|
|
102
|
+
credentials are read again at the start of each run, and by `inspect_entity_state()` and
|
|
103
|
+
`reset_entity_state()`.
|
|
104
|
+
|
|
105
|
+
- **Remote inputs are downloaded ahead of the file being read (#1102).** Each pending S3 file used to be
|
|
106
|
+
downloaded only when its turn came, so the read loop waited on every GET. An entity now downloads up to 8
|
|
107
|
+
files, and about 512 MiB, ahead of the one it is validating (a single larger file still downloads, alone).
|
|
108
|
+
Files are still processed in the same order, a failed download still raises its own error when that file's turn
|
|
109
|
+
comes, and local sources are unchanged. With a simulated 0.1 s download per file, 16 files went from 1.72 s to
|
|
110
|
+
0.24 s.
|
|
111
|
+
|
|
112
|
+
- **Small CSV files cost fewer Polars plans (#1104).** A clean 200-row file ran 16 query plans between the
|
|
113
|
+
reader and the writer and now runs 6, with identical output. On 1,200 such files (8 entities of 150 files,
|
|
114
|
+
Parquet sink on local disk) the run was about 26-28% faster, 7.45 s to 5.38 s in the last measurement.
|
|
115
|
+
|
|
116
|
+
- **`poll_interval_seconds` and `job_scope` are documented (#1103).** `docs/profiles.md` and
|
|
117
|
+
`context/orchestrators.md` describe the Kubernetes runner's status poll (default 10 s, a Job that finishes
|
|
118
|
+
early is noticed at the next poll) and when to choose `job_scope: domain` over `entity`.
|
|
119
|
+
|
|
120
|
+
## v0.8.6
|
|
121
|
+
|
|
122
|
+
- **Merge modes keep a key's latest version when it repeats across pending files (#1090).** With `merge_scd1`
|
|
123
|
+
or `merge_scd2`, a run that picks up several batches used to keep the oldest file's row and reject the newer
|
|
124
|
+
ones. A key repeated across files now resolves to the latest file in file order, and the older rows are
|
|
125
|
+
rejected as duplicates. Within one file the first row still wins. Under `policy.severity: abort` the order is
|
|
126
|
+
unchanged.
|
|
127
|
+
|
|
128
|
+
- **`--full-refresh` rebuilds a `merge_scd1` table from the inputs (#1091).** It used to be rejected. It now reads
|
|
129
|
+
every input and replaces the table with their rows in one commit, so a row deleted at the source leaves the
|
|
130
|
+
table. Merge-key checks still apply, and a key in several inputs keeps the latest file's row. `merge_scd2` still
|
|
131
|
+
rejects the flag, and the message now says its version history cannot be rebuilt from the inputs.
|
|
132
|
+
|
|
133
|
+
## v0.8.5
|
|
134
|
+
|
|
135
|
+
- **An output column name collision now fails `floe validate`, not the run (#1080).** A column with an explicit
|
|
136
|
+
`source` keeps its `name`; a column without one is normalised. When the two end on the same output name,
|
|
137
|
+
`floe validate` passed and `floe run` then failed. Validate now rejects it, and the message names the two
|
|
138
|
+
columns as written instead of their normalised sources.
|
|
139
|
+
|
|
140
|
+
## v0.8.4
|
|
141
|
+
|
|
142
|
+
- **Columns that normalise to the same name now fail `floe validate`, not the run (#1005).** With
|
|
143
|
+
`normalize_columns`, a column `order_id` and a JSON or XML selector `order.id` (or `order/id`) both become
|
|
144
|
+
`order_id`; `floe validate` passed and `floe run` then failed. Validate now rejects it, and the message names both
|
|
145
|
+
columns or selectors and the shared name.
|
|
146
|
+
|
|
147
|
+
- **`add_columns` schema evolution on Iceberg is reported and emitted.** An entity run that adds columns to
|
|
148
|
+
the table now sets `schema_evolution.applied` and lists them in `schema_evolution.added_columns` in `run.json`,
|
|
149
|
+
emits the `schema_evolution_applied` event, and `schema_evolution.enabled` is `true` whenever the mode is
|
|
150
|
+
`add_columns`. They were always `false` and the event was never emitted. (#994)
|
|
151
|
+
|
|
152
|
+
- **Accepted rows now reach the sink chunk by chunk (#1056)**: an entity no longer holds all its accepted rows
|
|
153
|
+
in memory before the write. The Parquet sink writes parts as the input is read, and the Iceberg sink writes
|
|
154
|
+
data files into the same single commit. A file's chunks after the first wait on local disk until the file
|
|
155
|
+
is read to the end, so a late read error or an `abort` still drops all of that file's rows. `append`
|
|
156
|
+
stages its Parquet parts like `overwrite` does, so a killed run leaves no visible part for a retry to duplicate.
|
|
157
|
+
|
|
158
|
+
- **`unique` checks with `append` read the target's keys once per entity (#1057)**: an Iceberg table's key columns
|
|
159
|
+
were scanned once per chunk, and a Parquet sink's parts were loaded into memory in full, so cost and memory
|
|
160
|
+
grew with chunks times history. The key columns are now written once to a local file in the entity's temp
|
|
161
|
+
directory, and each chunk joins its keys against that file. Flags and counts are unchanged; the temp
|
|
162
|
+
directory needs room for the history's key columns.
|
|
163
|
+
|
|
164
|
+
## v0.8.3
|
|
165
|
+
|
|
166
|
+
- **`-p env:NAME` (#1068).** `-p` / `--profile` and `profile_path=` accept `env:NAME`, which reads the profile YAML
|
|
167
|
+
from environment variable `NAME`, so a `kubernetes_job` run needs no profile file in the Job (part of #1047).
|
|
168
|
+
An unset or empty variable is a `FloeConfigError` naming it. Relative paths a profile supplies resolve against
|
|
169
|
+
the config's directory, as for a file profile. `execution.runner` stays validate-only.
|
|
170
|
+
- **A Parquet or CSV `overwrite` keeps the previous parts until the new ones are written (#1054)**: the
|
|
171
|
+
new parts are staged as `_staging-*` files, and the old parts are removed only after every new part
|
|
172
|
+
was written, so a failed write no longer empties the sink. A crash during the final swap can still
|
|
173
|
+
leave a mix of old and new parts; see [the Parquet sink](docs/sinks/parquet.md).
|
|
174
|
+
- **Iceberg merges and compaction run DuckDB with `memory_limit=4GB` and a bounded spill directory (#1055).**
|
|
175
|
+
DuckDB defaulted to 80% of the host's RAM, so a large merge in a Kubernetes pod was OOM-killed
|
|
176
|
+
instead of spilling. It now caps memory at 4GB and spills to a temporary directory (at most
|
|
177
|
+
50GB, removed afterwards). Size pods at 6 GiB or more (see `docs/write_modes.md`).
|
|
178
|
+
|
|
179
|
+
## Unreleased
|
|
180
|
+
|
|
181
|
+
### airflow-floe
|
|
182
|
+
|
|
183
|
+
- **A `kubernetes_job` runner `args` override no longer drops the entity selection (#1031)**, as in
|
|
184
|
+
dagster-floe: `args` now prefix Floe's rendered arguments instead of replacing them.
|
|
185
|
+
|
|
186
|
+
## dagster-floe v0.5.0
|
|
187
|
+
|
|
188
|
+
- **Accepts Floe 0.9 manifests.** `spec_version` `0.8` and `0.9` load; the `floe` extra now installs
|
|
189
|
+
`floe-python>=0.9,<0.10`. Pod options a Floe 0.9 profile passes through on a `kubernetes_job` runner reach the
|
|
190
|
+
manifest unchanged and are validated here, against the manifest schema.
|
|
191
|
+
|
|
192
|
+
- **In-process runs log Floe events live (#904).** With `InProcessRunner` (the default of `build_runner_from_env()`
|
|
193
|
+
when the `floe` core is installed), each Floe event reaches the Dagster log as it happens, once, instead of all
|
|
194
|
+
together after the run. Subprocess, `kubernetes_job` and `databricks_job` runs, `job_scope: domain` runs and the
|
|
195
|
+
asset metadata are unchanged.
|
|
196
|
+
|
|
197
|
+
## dagster-floe v0.4.3
|
|
198
|
+
|
|
199
|
+
- **Per-run full refresh from the `floe/full_refresh` run tag (#1091).** A Dagster run tagged
|
|
200
|
+
`floe/full_refresh=true` runs its entities with `floe run --full-refresh`, in process or through a
|
|
201
|
+
`local_process`, `kubernetes_job` or `databricks_job` runner. Runs without the tag are unchanged. A
|
|
202
|
+
`merge_scd1` entity needs Floe 0.8.6 or newer, which rebuilds the table from the inputs; `merge_scd2`
|
|
203
|
+
still rejects `--full-refresh`.
|
|
204
|
+
|
|
205
|
+
## dagster-floe v0.4.2
|
|
206
|
+
|
|
207
|
+
- **Silver lineage events from a `kubernetes_job` run now carry the Dagster parent run (#1076).** The Job
|
|
208
|
+
container gets `DAGSTER_RUN_ID` and `DAGSTER_JOB_NAME`, and the Job and its pod a `dagster/run-id` label;
|
|
209
|
+
both `job_scope`s were missing them.
|
|
210
|
+
|
|
211
|
+
## dagster-floe v0.4.1
|
|
212
|
+
|
|
213
|
+
**Upgrading from 0.4.0:** the `floe` extra now requires Floe 0.8.3 or newer, and so does the image a
|
|
214
|
+
`kubernetes_job` runs when the run has a profile.
|
|
215
|
+
|
|
216
|
+
- **A `kubernetes_job` Job gets the profile as content, not as a pod-local path (#1069).** A run with a
|
|
217
|
+
profile reads it in the run pod and sets it as the Job's `FLOE_PROFILE_CONTENT` env var, with
|
|
218
|
+
`-p env:FLOE_PROFILE_CONTENT` in place of `-p <path>`; `${VAR}` references stay unexpanded and a remote
|
|
219
|
+
profile (`s3://...`) is passed as is. The Job image needs Floe 0.8.3 or newer for these runs.
|
|
220
|
+
|
|
221
|
+
- **A `kubernetes_job` Job is deleted, with its pods, when the run stops watching it (#1070).** An
|
|
222
|
+
interrupt (a cancelled Dagster run), any error while polling, or the poll timeout used to leave the Job
|
|
223
|
+
writing tables, so a re-run could collide with it. A Job that reached a final state is left alone, so
|
|
224
|
+
`ttl_seconds_after_finished` still controls how long its logs stay.
|
|
225
|
+
|
|
226
|
+
## dagster-floe v0.4.0
|
|
227
|
+
|
|
228
|
+
**Upgrading from 0.3:** rejected assets move to new keys (below). Works with Floe 0.8.1 or newer; a Glue
|
|
229
|
+
`database` with `{domain}` needs Floe 0.8.2.
|
|
230
|
+
|
|
231
|
+
- **Breaking: rejected assets are keyed `<domain>/rejected/<table>` (#1046).** They were
|
|
232
|
+
`<domain>/<table>_rejected`, which collided with a real table named `<table>_rejected`. Upgrade:
|
|
233
|
+
the history of the rejected assets restarts under the new key, and any selection, sensor or
|
|
234
|
+
automation condition that names the old keys must be updated.
|
|
235
|
+
|
|
236
|
+
- **`ManifestEntity` exposes `source_resource` (#1044)**, the entity's `source.resource`, next to
|
|
237
|
+
`source_ref`, so a `source_key_fn` can build `<source>/<resource>` from the manifest.
|
|
238
|
+
|
|
239
|
+
- **Accepted and rejected assets carry `floe/entity` and `floe/output` metadata (#1045)**: the entity
|
|
240
|
+
name and `"accepted"` or `"rejected"`, so callers no longer parse the `<op>__accepted` output names.
|
|
241
|
+
|
|
242
|
+
- **The `floe/table` asset tag of a Glue entity expands `{domain}` in `database` (#1043)**, so it
|
|
243
|
+
names the database the run writes.
|
|
244
|
+
|
|
245
|
+
## v0.8.2
|
|
246
|
+
|
|
247
|
+
- **A Glue catalog can write one database per domain (#1043).** `database` may contain `{domain}`,
|
|
248
|
+
e.g. `dev_{domain}_silver`: per entity it expands to `sink.accepted.iceberg.namespace`, else
|
|
249
|
+
`entity.domain`, so one catalog writes `dev_sales_silver` and `dev_finance_silver`. Put the catalog in
|
|
250
|
+
each stage's profile (`catalogs:` replaces the config's) to vary the prefix per stage. An entity
|
|
251
|
+
with neither is a `floe validate` error. A `database` without `{domain}` behaves as before.
|
|
252
|
+
|
|
253
|
+
## v0.8.1
|
|
254
|
+
|
|
255
|
+
- **floe-python requires `boto3>=1.36.0` (was `>=1.43.118`) (#1028).** The old floor made `s3fs`
|
|
256
|
+
uninstallable next to Floe: current `aiobotocore` caps `botocore` below 1.43.118. 1.36.0 is the
|
|
257
|
+
first release with every S3 call and option Floe uses (conditional writes, checksum settings).
|
|
258
|
+
|
|
259
|
+
- **AWS Glue catalogs are back.** Floe 0.8.0 rejected `catalogs.definitions[].type: glue`, a
|
|
260
|
+
regression for AWS deployments (OpenLakeForge). A Glue catalog takes the 0.7 keys (`region`,
|
|
261
|
+
`database`, `create_database_if_missing`, `warehouse_storage`, `warehouse_prefix`) and writes
|
|
262
|
+
Iceberg tables through PyIceberg's Glue catalog, with credentials from the AWS chain.
|
|
263
|
+
`overwrite` and `append` are supported; `merge_scd1`/`merge_scd2` and `floe maintain --compact`
|
|
264
|
+
still need a REST catalog. **D42:** `allow_takeover` is accepted and ignored; 0.8 does not check
|
|
265
|
+
0.7's `floe.managed` ownership marker.
|
|
266
|
+
|
|
267
|
+
- **`floe run --domain <d>` (#1024)** selects every entity of a domain, for `-c` and `--manifest` runs. It
|
|
268
|
+
takes several domains (repeatable or comma-separated), fails on an unknown domain, and cannot be combined
|
|
269
|
+
with `--entities`.
|
|
270
|
+
|
|
271
|
+
- **`kubernetes_job` runners can shape the Job's pod (#1023).** `execution.runner` in a profile accepts
|
|
272
|
+
`labels` (added to the defaults), `annotations`, `image_pull_policy`, `security_context`,
|
|
273
|
+
`node_selector`, `tolerations`, `backoff_limit` and `env_from`. They are carried into the manifest
|
|
274
|
+
runner definition only when set, so existing manifests are unchanged. dagster-floe 0.3.1 applies them;
|
|
275
|
+
airflow-floe ignores them.
|
|
276
|
+
|
|
277
|
+
- **A profile's `execution.runner.command` may be a list (#1034)**, e.g. `command: [olf-floe-job, --]`,
|
|
278
|
+
as the manifest and the connectors already accept. A string still works.
|
|
279
|
+
|
|
280
|
+
- **`-p s3://...`.** `-p` / `--profile` and `profile_path=` accept an `s3://` URI, read as an `s3://` manifest is,
|
|
281
|
+
so a container run no longer needs the profile file copied in (#1025). `floe manifest generate -p s3://...`
|
|
282
|
+
records the URI as `profile_uri`. `-c` still takes a local path.
|
|
283
|
+
|
|
284
|
+
## dagster-floe v0.3.1
|
|
285
|
+
|
|
286
|
+
- **The `floe` extra requires `floe-python>=0.8.1,<0.9` (#1041)**, the first release with `floe run --domain`.
|
|
287
|
+
|
|
288
|
+
- **A `kubernetes_job` runner `args` override no longer drops the entity selection (#1031).** It
|
|
289
|
+
used to replace the whole argument list, so every Job ran every entity. `args` now prefix Floe's
|
|
290
|
+
rendered arguments: `command: [python]` + `args: [-m, floe]` runs
|
|
291
|
+
`python -m floe run … --entities …`.
|
|
292
|
+
|
|
293
|
+
- **`s3://` run reports and manifests are read with boto3 (#1021).** When boto3 is importable (it is whenever the
|
|
294
|
+
`floe` extra is installed) it replaces fsspec/s3fs for `s3://`, honouring `AWS_ENDPOINT_URL_S3` /
|
|
295
|
+
`AWS_ENDPOINT_URL`, `AWS_REGION` and `AWS_S3_FORCE_PATH_STYLE`. s3fs no longer has to be installable next to
|
|
296
|
+
`floe-python`; without it Silver assets lost row counts, rejection counts and check detail. Other schemes, and
|
|
297
|
+
`s3://` without boto3, still use fsspec.
|
|
298
|
+
|
|
299
|
+
- **`kubernetes_job` pod options are applied to the Job (#1023).** dagster-floe puts the runner's `labels`
|
|
300
|
+
(added to `app` and `floe-job`, which are never overridden), `annotations`, `image_pull_policy`,
|
|
301
|
+
`security_context`, `node_selector`, `tolerations`, `backoff_limit` (default 0) and `env_from` in the Job
|
|
302
|
+
it creates. With retries the run waits for the Job's final status and reads the pod that matches it.
|
|
303
|
+
|
|
304
|
+
- **`manifest_name=` in config mode (#1022).** `load_floe_assets`, `build_definitions` and
|
|
305
|
+
`build_job_run_config_from_manifest` accept `manifest_name=` next to `config_path=` and pass it to
|
|
306
|
+
`floe.build_manifest`. With a fixed name, the op name of a `job_scope: domain` asset stays
|
|
307
|
+
`floe_<name>__<domain>__...` when the config changes; without it the name derives from the config's path and
|
|
308
|
+
checksum, as before. Passing it with `manifest_path=` raises `ValueError`.
|
|
309
|
+
|
|
310
|
+
- **`source_key_fn` picks each entity's upstream source key (#1020).** `load_floe_assets` and
|
|
311
|
+
`build_definitions` accept `source_key_fn=lambda entity: AssetKey([...])` (or `None` for the default key).
|
|
312
|
+
Entities of one named source can depend on different upstream assets, e.g. `crm/orders` and `crm/accounts`,
|
|
313
|
+
and Dagster still orders each after its upstream. No `SourceAsset` is registered for a key you choose.
|
|
314
|
+
|
|
315
|
+
- **`job_scope: domain` Jobs run `floe run --domain <d>` for a whole domain (#1036).** When the selected
|
|
316
|
+
entities are exactly every entity of the domain in the manifest, the Job sends `--domain <d>` in place of
|
|
317
|
+
`--entities a,b,c`; a subset keeps `--entities`. It needs Floe 0.8.1 (`floe run --domain`):
|
|
318
|
+
a `kubernetes_job` image must be 0.8.1 or newer.
|
|
319
|
+
|
|
320
|
+
## v0.8.0
|
|
321
|
+
|
|
322
|
+
Floe 0.8 is the Python core. `pip install floe-python` installs the `floe` command (a pure-Python
|
|
323
|
+
`py3-none-any` wheel), and `ghcr.io/openlakeforge/floe` is the Python image. The Rust implementation is
|
|
324
|
+
archived at [OpenLakeForge/floe-rust](https://github.com/OpenLakeForge/floe-rust) (tag `rust-final`).
|
|
325
|
+
Every intentional behaviour change from 0.7 is numbered (D1–D41) in the migration register (#619).
|
|
326
|
+
|
|
327
|
+
**Upgrading from 0.7:**
|
|
328
|
+
- Regenerate manifests with `floe manifest generate`: manifests carry `spec_version` `0.8`, and the
|
|
329
|
+
connectors (dagster-floe 0.3, airflow-floe 0.2) reject older ones.
|
|
330
|
+
- PII `hash` keys used through a manifest must be `${ENV_VAR}` references (#1006).
|
|
331
|
+
- `policy.severity: abort` now requires `sink.rejected` at validation (D39).
|
|
332
|
+
- Dropped in 0.8: Delta and DuckDB sinks, the fixed-width reader, and GCS/ADLS storage; Iceberg needs a
|
|
333
|
+
REST catalog (D26). See `docs/support-matrix.md`.
|
|
334
|
+
- Run reports of a single-domain run live under `<report.path>/<domain>/run_<id>/` (D37), and a policy
|
|
335
|
+
abort fails only its entity while the run continues (D36).
|
|
336
|
+
|
|
337
|
+
- **JSON sources run end to end (#998)**, matching Floe 0.7's rows, statuses and rules, with two deliberate
|
|
338
|
+
changes from 0.7:
|
|
339
|
+
- **D40:** the column-mismatch check compares the top-level keys of *every* record, not just the first,
|
|
340
|
+
so `schema.mismatch.extra_columns`/`missing_columns` apply to the whole file;
|
|
341
|
+
- **D41:** an empty array `[]` (or an NDJSON file without records) is a valid empty extract: 0 rows,
|
|
342
|
+
success. Floe 0.7 rejected it as `json_parse_error`. A file that is not valid JSON is still rejected.
|
|
343
|
+
- **`floe validate` requires `sink.rejected` for `policy.severity: abort` (D39, #1007).** Abort writes the
|
|
344
|
+
failing file to the rejected sink, so a config without one could only fail at its first violation, as in
|
|
345
|
+
Rust 0.7. It is now refused up front with the same message as `reject`.
|
|
346
|
+
- **`floe run --manifest` and `floe.run_manifest` take an `s3://` manifest (#1003)**, and write the run
|
|
347
|
+
reports under an `s3://` `report_base_uri`, as Floe 0.7 did. Relative local paths in a remote manifest
|
|
348
|
+
resolve under its `work_root`, else `FLOE_WORK_ROOT`, else the current directory (`/work` for an `image`
|
|
349
|
+
manifest).
|
|
350
|
+
- **`floe manifest generate` refuses a literal PII hash key (#1006).** It used to write `key: null`, so
|
|
351
|
+
`floe run --manifest` hashed with unsalted SHA-256 instead of the config run's HMAC. Set the key to a
|
|
352
|
+
`${ENV_VAR}` reference; the manifest keeps it and both runs produce the same hashes.
|
|
353
|
+
- **Validation messages no longer point to Delta (#995).** Wording only:
|
|
354
|
+
- `sink.accepted.merge` on a format without merge now says it requires `sink.accepted.format=iceberg`;
|
|
355
|
+
- `sink.accepted.partition_by` now says it is not supported in 0.8 and points to `sink.accepted.partition_spec`
|
|
356
|
+
on Iceberg.
|
|
357
|
+
- **Floe is a pure-Python package (#971).** `pip install floe-python` installs the `floe`
|
|
358
|
+
command; the wheel is `py3-none-any`. `ghcr.io/openlakeforge/floe` is now the Python image
|
|
359
|
+
(`ghcr.io/openlakeforge/floe-python` is no longer published). The Rust core moved to the
|
|
360
|
+
archived OpenLakeForge/floe-rust repository: 0.8 publishes no Rust binaries, no `floe-core`
|
|
361
|
+
or `floe-cli` crates, no `floe-duckdb` companion and no Homebrew or Scoop update.
|
|
362
|
+
- **`merge_scd2` on Iceberg sinks in `floe run` (#997).** `floe validate` already accepted it; the run
|
|
363
|
+
now creates the table with the SCD2 system columns, closes changed current rows and inserts their new
|
|
364
|
+
versions, and reports `inserted_count`, `updated_count`, `closed_count` and `unchanged_count`.
|
|
365
|
+
- **`example/config.yml` validates on 0.8 (#993).** The `customer` entity writes Parquet instead of Delta, and the
|
|
366
|
+
`customer_warehouse` entity (a DuckDB sink) is removed; both formats were dropped in 0.8.
|
|
367
|
+
- **Clearer config error messages (#704).** Wording only; the same configs are accepted and rejected:
|
|
368
|
+
- `<ctx>.storage and <ctx>.storage are mutually exclusive` now names `<ctx>.filesystem`;
|
|
369
|
+
- an unknown key at the root of an included sources file is `unknown field root.<key>` (was `sources file.<key>`);
|
|
370
|
+
- `pii.columns: <name> is not an unknown schema column` is now `is not a schema column`;
|
|
371
|
+
- `pii.columns[...].strategy=` prints the strategy as written (`hash`, not `Hash`);
|
|
372
|
+
- `schema_evolution.mode=add_columns` on a non-Iceberg sink now says it requires `sink.accepted.format=iceberg`.
|
|
373
|
+
- **`floe.run` posts OpenLineage events (#989)**, as `floe run -c` and `floe.run_manifest` already do,
|
|
374
|
+
when the config has a `lineage` block.
|
|
375
|
+
- **`floe.build_manifest(config_path, profile_path=None, ...)` (#986).** Returns, as a dict, the
|
|
376
|
+
manifest `floe manifest generate` writes for the same config and profile (deterministic by
|
|
377
|
+
default). `manifest generate` now calls it.
|
|
378
|
+
|
|
379
|
+
## dagster-floe v0.3.0
|
|
380
|
+
|
|
381
|
+
Supports Floe 0.8 (`floe-python` 0.8, manifest `spec_version` `0.8`); older Floe versions are not
|
|
382
|
+
supported. Floe 0.7 and earlier manifests are rejected.
|
|
383
|
+
|
|
384
|
+
- **Config mode (#986).** `load_floe_assets`, `build_definitions` and `build_job_run_config_from_manifest` accept
|
|
385
|
+
`config_path=` (and `profile_path=`) in place of `manifest_path=`. The manifest is built in memory with
|
|
386
|
+
`floe.build_manifest` (needs the `floe` extra), and runs take `floe run -c <config> [-p <profile>]` in place of
|
|
387
|
+
`--manifest <uri>`. `manifest_path=` is unchanged.
|
|
388
|
+
- **Optional `floe` extra (#973).** `pip install "dagster-floe[floe]"` installs `floe-python>=0.8,<0.9`
|
|
389
|
+
so `build_runner_from_env()` runs Floe in-process (see below) without a separate `floe` install.
|
|
390
|
+
- **Report paths follow D37.** A run whose entities share one domain writes its reports under
|
|
391
|
+
`<report.path>/<domain>/run_<id>/`; other runs keep `<report.path>/run_<id>/`. The connector
|
|
392
|
+
reads report locations from the `run_finished` event, so no configuration changes.
|
|
393
|
+
- **`ghcr.io/openlakeforge/floe` is now the Python image.** The image name and the `floe` command
|
|
394
|
+
are unchanged; `kubernetes_job` runners need no change.
|
|
395
|
+
- **S3 reads honour the Floe environment.** `s3://` manifests and run reports are read with the
|
|
396
|
+
endpoint (`AWS_ENDPOINT_URL_S3`/`AWS_ENDPOINT_URL`) and path-style (`AWS_S3_FORCE_PATH_STYLE`)
|
|
397
|
+
settings Floe itself uses, so deployments that patched `floe_dagster.assets._fsspec_read_text`
|
|
398
|
+
for S3-compatible stores can drop the patch and set those variables instead.
|
|
399
|
+
- Manifest schema additions for 0.8 are listed below (`partition_spec`, `source.partitioning`,
|
|
400
|
+
`lookback_days`, `sources` index).
|
|
401
|
+
|
|
402
|
+
- **`job_scope: domain` runs one Kubernetes Job per domain (#580).** With the opt-in
|
|
403
|
+
`execution.runner.job_scope: domain` on a `kubernetes_job` runner, the selected entities of a
|
|
404
|
+
domain (per runner) run one after another in a single `floe run --entities a,b,c` Job, while Dagster
|
|
405
|
+
still reports each entity. `execution.runner.resources` gains `cpu_limit` and `memory_limit_mb`, and
|
|
406
|
+
`domain_resources` sizes the Job per domain. Unset, nothing changes (one Job per entity). After
|
|
407
|
+
an entity aborted by its policy the run continues with the next one (D36, #959), and Dagster reports
|
|
408
|
+
each entity's own status; see `context/orchestrators.md`.
|
|
409
|
+
|
|
410
|
+
- **Iceberg entities carry a `floe/table` op tag (#924).** The value is the resolved
|
|
411
|
+
`catalog.namespace.table` from the manifest, so entities writing one table share it and other
|
|
412
|
+
tables don't. Advisory, and an op tag: a `tag_concurrency_limits` entry on `floe/table` in the
|
|
413
|
+
job's executor config (`applyLimitPerUniqueValue: true`, `limit: 1`) limits steps within one
|
|
414
|
+
run, not across runs. No manifest change.
|
|
415
|
+
|
|
416
|
+
- **Manifest sinks may carry the Iceberg `partition_spec` (#911).** The bundled schema accepts
|
|
417
|
+
`partition_spec` (`column`, `transform`, optional `num_buckets`) on a sink, so a run from the
|
|
418
|
+
manifest creates the same partitioned table as the config run.
|
|
419
|
+
- **Manifest `source.partitioning` may carry `lookback_days` (D30, #885).** The bundled schema
|
|
420
|
+
accepts the non-negative integer that bounds a `file`-mode run's listing to the watermark minus
|
|
421
|
+
that many days.
|
|
422
|
+
- **Manifest entity sources may carry `partitioning` (D28, #883).** The bundled schema accepts
|
|
423
|
+
the `source.partitioning` block (`pattern`, `date_column`, `batch_column`) that `floe run
|
|
424
|
+
--manifest` honours.
|
|
425
|
+
- **Floe runs in-process when the Python core is installed (#902).** `build_runner_from_env()`
|
|
426
|
+
now returns an `InProcessRunner` when `floe.run_manifest` is importable: a local
|
|
427
|
+
`floe run --manifest` execution runs through the Python API, with the same events, `RunResult`,
|
|
428
|
+
asset metadata and OpenLineage events as the subprocess. In-process runs are serialized within a
|
|
429
|
+
process. Set `FLOE_RUNNER=local` to keep the `floe` subprocess (`LocalRunner`).
|
|
430
|
+
- **Entities sharing a named source depend on one `sources/<project>/<name>` asset (D20, #796).** When
|
|
431
|
+
the manifest carries the `sources` index, every entity whose `source.ref` names an entry depends
|
|
432
|
+
on one shared `sources/<project>/<name>` asset (group `sources`, the source's format and `uri`
|
|
433
|
+
as metadata) instead of its own `<entity>_source` asset. `<project>` is the manifest's
|
|
434
|
+
`manifest_name`, else its `manifest_id`, so two manifests loaded together can both name a
|
|
435
|
+
source `crm`.
|
|
436
|
+
- **Manifests may carry a `sources` index and project `metadata` (D20, #796).** The bundled
|
|
437
|
+
schema accepts both optional blocks: `sources` lists each named config source with its
|
|
438
|
+
format, resolved `uri` and consuming entities; `metadata` is the config's project metadata.
|
|
439
|
+
- **Manifests are versioned by Floe release (D22, #798).** `load_manifest` accepts a
|
|
440
|
+
manifest whose `spec_version` (the Floe major.minor that generated it) is supported, `0.8`
|
|
441
|
+
for now, and rejects any other with a clear error. The `schema: "floe.manifest.v1"` field is
|
|
442
|
+
gone and the bundled schema is `floe.manifest.schema.json`; regenerate older manifests with
|
|
443
|
+
Floe 0.8.
|
|
444
|
+
- **`load_floe_assets(domains=[...])` loads one domain slice of a project manifest (#510).**
|
|
445
|
+
Only entities whose `domain` is listed are loaded; an unknown domain raises `ValueError`.
|
|
446
|
+
Op names of entities with a domain are now derived from the full asset key
|
|
447
|
+
(`sales__accounts`), so two domains sharing an entity name load in one manifest.
|
|
448
|
+
Entities without a domain keep their existing op name.
|
|
449
|
+
- **Fix: remote `s3://` reads honor S3-compatible endpoint env (#512).** Manifest and run
|
|
450
|
+
report reads via fsspec now pass `AWS_ENDPOINT_URL_S3` (falling back to
|
|
451
|
+
`AWS_ENDPOINT_URL`) as the endpoint and, when `AWS_S3_FORCE_PATH_STYLE` is `true`/`1`,
|
|
452
|
+
path-style addressing, matching Floe core (#448). Without these variables behaviour is
|
|
453
|
+
unchanged. Requires the existing `remote` extra.
|
|
454
|
+
|
|
455
|
+
## airflow-floe v0.3.0
|
|
456
|
+
|
|
457
|
+
- **Accepts Floe 0.9 manifests.** `spec_version` `0.8` and `0.9` load. Pod options a Floe 0.9 profile passes
|
|
458
|
+
through on a `kubernetes_job` runner are ignored, as before.
|
|
459
|
+
|
|
460
|
+
## airflow-floe v0.2.0
|
|
461
|
+
|
|
462
|
+
Built for Floe 0.8 (`floe-python` 0.8, where `floe` is the Python CLI and `ghcr.io/openlakeforge/floe`
|
|
463
|
+
is the Python image; the command line and image name are unchanged). Floe 0.7 and earlier are not
|
|
464
|
+
targeted by this release.
|
|
465
|
+
|
|
466
|
+
- **Report paths follow D37.** A run whose entities share one domain writes its reports under
|
|
467
|
+
`<report.path>/<domain>/run_<id>/`; other runs keep `<report.path>/run_<id>/`. The connector
|
|
468
|
+
reads report locations from the `run_finished` event, so no configuration changes.
|
|
469
|
+
- Per-domain run pods (`job_scope: domain`, #580) and the in-process runner are dagster-floe only;
|
|
470
|
+
airflow-floe still runs `floe run` as a subprocess or Kubernetes/Databricks job.
|
|
471
|
+
|
|
472
|
+
- **Loads Floe 0.8 manifests (#979).** The loader checks `spec_version` against
|
|
473
|
+
`SUPPORTED_SPEC_VERSIONS = ("0.8",)`, as dagster-floe does, instead of the pre-0.8
|
|
474
|
+
`schema: "floe.manifest.v1"` field that 0.8 manifests no longer carry. Other versions are
|
|
475
|
+
rejected; regenerate them with a supported Floe release. `MANIFEST_SCHEMA` is replaced by
|
|
476
|
+
`SUPPORTED_SPEC_VERSIONS`, and `AirflowManifest.schema` by `AirflowManifest.spec_version`.
|
|
477
|
+
- **`build_dag_manifest_context(domains=[...])` loads one domain slice of a project manifest
|
|
478
|
+
(#511).** Only entities whose `domain` is listed land in the context; an unknown domain
|
|
479
|
+
or an empty list raises `ValueError`. Pass `entities=context.entity_names` to `FloeRunOperator` so the run
|
|
480
|
+
covers only that slice.
|
|
481
|
+
|
|
482
|
+
## v0.7.0
|
|
483
|
+
|
|
484
|
+
Floe projects: config `version: "0.3"` scales one project across many domains and files.
|
|
485
|
+
Existing 0.1/0.2 configs keep working unchanged; see the 0.2 → 0.3 migration section of
|
|
486
|
+
`docs/config.md` and the project layouts in `docs/projects.md`.
|
|
487
|
+
|
|
488
|
+
- **Qualified entity identity `<domain>.<name>` (#464).** With `version >= "0.3"`, an entity
|
|
489
|
+
with a `domain` is identified as `<domain>.<name>`; otherwise its identity stays the bare
|
|
490
|
+
`name`.
|
|
491
|
+
- The id keys report paths (`run_<id>/<domain>/<name>/run.json`), run events, the default
|
|
492
|
+
incremental state dir (`.floe/state/<domain>/<name>/`), manifest `entities[].name`
|
|
493
|
+
(`asset_key` is unchanged) and OpenLineage job names.
|
|
494
|
+
- `--entities` and `floe state` accept a qualified id or an unambiguous bare name; an
|
|
495
|
+
ambiguous bare name fails and lists the candidates.
|
|
496
|
+
- In 0.3, `name` and `domain` must be non-empty and must not contain `.`, `/` or `\`.
|
|
497
|
+
Regenerate manifests of 0.3 projects after upgrading.
|
|
498
|
+
- **Domain `defaults` merged into entities (#501).** A 0.3 domain may declare `defaults`:
|
|
499
|
+
the entity wins, maps deep-merge, lists replace, and `schema.columns` /
|
|
500
|
+
`schema.primary_key` are never inherited.
|
|
501
|
+
- **Reusable project `sources` and `source: { ref, resource }` (#503).** Named sources are
|
|
502
|
+
declared once and referenced by entities; the entity's own `source` fields win, and
|
|
503
|
+
`{{resource}}` in the source path resolves to `source.resource` (defaulting to the entity
|
|
504
|
+
name). An unknown `ref` lists the declared sources.
|
|
505
|
+
- **Multi-file projects with `include.domains` (#505).** Glob patterns, relative to the
|
|
506
|
+
project file, load each `_domain.yml` and its sibling entity files (one entity per file);
|
|
507
|
+
the domain is implied by the folder. Includes resolve against local files only.
|
|
508
|
+
- **Inherited-value errors name the contributing files (#582).** When an entity that
|
|
509
|
+
inherits `defaults` from an included `_domain.yml` or a source from an included
|
|
510
|
+
`sources.yml` fails to parse, the error adds `(inherits from <files>)` after the entity's
|
|
511
|
+
file (or leads with `inherits from <files>` for an inline entity); single-file config
|
|
512
|
+
errors are unchanged.
|
|
513
|
+
- **Errors in included domain and entity files name the file (#581).** In an
|
|
514
|
+
`include.domains` project, a load or parse error in a `_domain.yml` or entity file is
|
|
515
|
+
prefixed with that file's path; single-file config errors are unchanged.
|
|
516
|
+
- **Self-contained YAML authoring schemas (#574).** Replace editor/tooling references to
|
|
517
|
+
`schemas/config.schema.yaml` with `schemas/project.schema.yaml`. Included source,
|
|
518
|
+
domain and entity documents use `sources.schema.yaml`, `domains.schema.yaml` and
|
|
519
|
+
`entity.schema.yaml` directly under `schemas/`; each carries its own definitions.
|
|
520
|
+
Fragment sink options, CSV encodings and separators, string `env.vars` keys, PII mask
|
|
521
|
+
count bounds, nonblank include paths and version integer bounds now match parser and
|
|
522
|
+
assembly constraints; YAML real scalars remain rejected by `floe validate`.
|
|
523
|
+
- **`add-entity` can reference a declared source (#515).** Pass `--source <ref>` and
|
|
524
|
+
`--resource <name>`; `--input` still supplies the file used for schema inference.
|
|
525
|
+
- **`add-entity` writes included-domain entities as sibling files (#514).** With `--domain`
|
|
526
|
+
and no `--output`, the new entity is written beside `_domain.yml`; fields covered by domain
|
|
527
|
+
defaults are omitted, and existing files are never overwritten.
|
|
528
|
+
- **`include.sources` loads reusable sources from one project file (#508).** Config version
|
|
529
|
+
0.3 projects may put their named `sources` array in a root-relative `sources.yml`; inline
|
|
530
|
+
and included sources cannot be combined, and the included file is covered by the manifest
|
|
531
|
+
config checksum.
|
|
532
|
+
- **Runnable standalone and multi-file project examples (#507).** `example/standalone/`
|
|
533
|
+
demonstrates inline source and domain config; `example/project/` demonstrates named sources,
|
|
534
|
+
source references, domain defaults, and sibling domain/entity files.
|
|
535
|
+
- **Generated manifests retain source references (#504).** Referenced entities include
|
|
536
|
+
`source.ref` and the effective `source.resource`; inline sources omit both fields.
|
|
537
|
+
- **Config 0.3 domains may omit `incoming_dir` (#500).** Config 0.2 still requires it;
|
|
538
|
+
manifests omit the field for domains without an incoming directory.
|
|
539
|
+
- **Manifest `config_checksum` covers every file of an `include.domains` project (#509).**
|
|
540
|
+
For a multi-file config the checksum is SHA-256 over the sorted `path\0sha256\n` lines of
|
|
541
|
+
every file read, so editing any `_domain.yml` or entity file changes `manifest_id`. The
|
|
542
|
+
files are listed in the new manifest field `config_files: [{path, sha256}]` (paths relative
|
|
543
|
+
to the root config's directory). Single-file configs keep their checksum and emit no
|
|
544
|
+
`config_files`.
|
|
545
|
+
- **Config path templates expose `{{entity.name}}` and `{{domain.name}}` (#502).** Domain
|
|
546
|
+
defaults can build a separate sink path for each entity.
|
|
547
|
+
- **Fix `include.domains` for Windows UNC project paths (#526).** Verbatim UNC paths such as
|
|
548
|
+
`\\?\UNC\server\share\project` now resolve relative include patterns from the network share.
|
|
549
|
+
- **Docs (#516, #517, #519).** New `docs/projects.md` project-layout guide; config 0.3
|
|
550
|
+
merge-rules table and 0.2 → 0.3 migration in `docs/config.md`; removed the nonexistent
|
|
551
|
+
`--var` CLI flag from `docs/variables.md` and `docs/profiles.md`.
|
|
552
|
+
|
|
553
|
+
### Internal hardening
|
|
554
|
+
|
|
555
|
+
- Repository moved to `OpenLakeForge/floe`: crate metadata, docs, release scripts and the
|
|
556
|
+
GHCR owner point at the new org (#483, #484, #485).
|
|
557
|
+
- Dependency advisories patched (h2, rustls, yanked chacha20) (#486), plus routine
|
|
558
|
+
dependency bumps.
|
|
559
|
+
|
|
560
|
+
## v0.6.11
|
|
561
|
+
|
|
562
|
+
- **Manifest replay now emits dataset lineage (#455).** `floe run --manifest`
|
|
563
|
+
built the OpenLineage observer with an empty entity set, so entity `COMPLETE`
|
|
564
|
+
events were posted with empty `inputs`/`outputs` and no upstream lineage edge
|
|
565
|
+
was created (OpenMetadata accepted the events with HTTP 200 but produced no
|
|
566
|
+
Bronze-to-Silver edge). Replay now passes the manifest's reconstructed
|
|
567
|
+
entities to the observer, so source and sink datasets are emitted exactly as
|
|
568
|
+
in a direct config run. A resolved `s3://` source is reported with an
|
|
569
|
+
`s3://<bucket>` namespace and its bucket-relative key as the dataset name.
|
|
570
|
+
Direct config execution is unchanged. See `docs/lineage.md`.
|
|
571
|
+
|
|
572
|
+
## v0.6.10
|
|
573
|
+
|
|
574
|
+
- **Runtime `OPENLINEAGE_API_KEY` resolution for lineage auth (#452).**
|
|
575
|
+
- When `lineage.api_key` is unset, Floe now resolves the Bearer token from the
|
|
576
|
+
`OPENLINEAGE_API_KEY` environment variable when the lineage observer is
|
|
577
|
+
constructed, matching the OpenLineage Python client and `dbt-ol`. This lets
|
|
578
|
+
orchestrated runners and manifest replays authenticate from a mounted
|
|
579
|
+
Kubernetes Secret without persisting the credential in the generated
|
|
580
|
+
manifest, Git, or object storage.
|
|
581
|
+
- Precedence: an explicit `lineage.api_key` still wins (backward compatible);
|
|
582
|
+
otherwise the environment variable is used; if neither is present, events are
|
|
583
|
+
sent unauthenticated as before.
|
|
584
|
+
- An unresolved `{{VAR}}` placeholder that survives into a manifest (e.g. a
|
|
585
|
+
profile-only `api_key` merged after config templating) is treated as absent,
|
|
586
|
+
so replay falls back to `OPENLINEAGE_API_KEY` instead of sending the literal
|
|
587
|
+
placeholder as the token. See `docs/lineage.md`.
|
|
588
|
+
|
|
589
|
+
## v0.6.9
|
|
590
|
+
|
|
591
|
+
- **Configurable OpenLineage endpoint and Iceberg dataset namespace (#450).**
|
|
592
|
+
- `lineage.endpoint` configures the request path, defaulting to
|
|
593
|
+
`api/v1/lineage`; this supports OpenMetadata's native
|
|
594
|
+
`api/v1/openlineage/lineage` route without a proxy.
|
|
595
|
+
- `lineage.dataset_namespace` separates accepted Iceberg output dataset
|
|
596
|
+
identity from the stable OpenLineage job namespace, defaulting to
|
|
597
|
+
`lineage.namespace` for backward compatibility. See `docs/lineage.md`.
|
|
598
|
+
|
|
599
|
+
## v0.6.8
|
|
600
|
+
|
|
601
|
+
- **Fix image runner using custom S3 URL**
|
|
602
|
+
The published Floe image can hit S3-compatible endpoints through a hostname such as host.lima.internal, while the host CLI repro uses an IP literal such as 127.0.0.1. Floe already lets aws-config pick up AWS_ENDPOINT_URL / AWS_ENDPOINT_URL_S3, but the plain Rust S3Client only enabled path-style addressing from the YAML path_style_access field.
|
|
603
|
+
|
|
604
|
+
That left image runs using virtual-hosted-style requests against SeaweedFS/MinIO-style endpoints even when users set AWS_S3_FORCE_PATH_STYLE=true, which matches the failing direct-config and remote-manifest cases in the issue.
|
|
605
|
+
|
|
606
|
+
## v0.6.7
|
|
607
|
+
|
|
608
|
+
- **Manifest local paths are always absolute, targeted at the replay runner (#443).**
|
|
609
|
+
v0.6.6 (#438) made `manifest generate` record local `config_uri` / `profile_uri` relative
|
|
610
|
+
(`local://domains/...`) for cross-checkout reproducible ids. That broke manifests generated
|
|
611
|
+
inside the container image, which downstream orchestrators deploy to object storage and
|
|
612
|
+
replay remotely: the portable `local:///work/...` form was lost, and a manifest loaded from a
|
|
613
|
+
remote URI resolved its relative paths against the *manifest's own bucket*, failing an
|
|
614
|
+
Iceberg write with `storage <name> bucket mismatch`. The definitive rule is now: because the
|
|
615
|
+
runner that generates a manifest is not the one that replays it, every local path is recorded
|
|
616
|
+
**absolute**, resolved against the target runner's work-root.
|
|
617
|
+
- New `manifest generate --runtime image|cli` (manifest field `runtime_env`). `image` records
|
|
618
|
+
local URIs absolute under the container work-root (`/work`) — portable for remote replay
|
|
619
|
+
*and* reproducible across containers; `cli` records them host-absolute (canonicalized) for
|
|
620
|
+
same-host execution. Omitted → auto-detect (container ⇒ image, else cli; override with
|
|
621
|
+
`FLOE_RUNTIME`; work-root override `FLOE_WORK_ROOT`). Cross-environment reproducible
|
|
622
|
+
`manifest_id` now comes from `--runtime image`, not from relative paths.
|
|
623
|
+
- `floe run --manifest` loaded from a **remote** URI no longer treats the manifest's own
|
|
624
|
+
location as the path-resolution base; local paths resolve under the recorded `work_root`
|
|
625
|
+
and remote paths resolve purely from their storage definitions. Local manifest files are
|
|
626
|
+
unchanged. See `docs/manifest.md`.
|
|
627
|
+
- Behaviour change: local-config `config_uri` / `manifest_id` change again (now absolute) —
|
|
628
|
+
regenerate committed manifests, preferring `--runtime image` for CI-stable ids.
|
|
629
|
+
|
|
630
|
+
## dagster-floe v0.2.5
|
|
631
|
+
|
|
632
|
+
- **Fix: vendored manifest schema rejected the new `runtime_env` / `work_root` fields.**
|
|
633
|
+
`dagster-floe` validates every manifest against its own bundled copy of
|
|
634
|
+
`floe.manifest.v1.json` before parsing it. That copy predated #443/#444 and still set
|
|
635
|
+
`additionalProperties: false` without the two new fields, so `load_manifest()` failed with
|
|
636
|
+
`Additional properties are not allowed ('runtime_env', 'work_root' were unexpected)` for
|
|
637
|
+
every manifest generated by `floe` v0.6.7+. The vendored copy is now resynced with the
|
|
638
|
+
canonical schema (also picking up a `duckdb` sink-target field it had missed independently
|
|
639
|
+
of #443/#444) and a drift guard (`scripts/check_orchestrator_drift.py`) now checks the two
|
|
640
|
+
files stay byte-identical. `airflow-floe` was unaffected — it has no `jsonschema` dependency
|
|
641
|
+
and hand-parses only the fields it needs.
|
|
642
|
+
|
|
643
|
+
|
|
644
|
+
## v0.6.6
|
|
645
|
+
|
|
646
|
+
- **Reproducible manifest IDs across environments (#438).** `manifest generate` baked the
|
|
647
|
+
host-absolute, canonicalized config/profile path into `config_uri` / `profile_uri`, so
|
|
648
|
+
the same config referenced by the same relative path produced different `manifest_id`
|
|
649
|
+
and `manifest_revision` under Docker (`/work/...`) versus a native checkout
|
|
650
|
+
(`/Users/...`). These URIs now record the path exactly as passed — a relative `-c`
|
|
651
|
+
stays relative — restoring the documented `--deterministic` byte-identical guarantee
|
|
652
|
+
across machines and containers. Remote config URIs (`s3://`, `gs://`, `abfs://`) stay
|
|
653
|
+
absolute and scheme-normalized. See `docs/manifest.md`.
|
|
654
|
+
- Behaviour change: `manifest_id` / `manifest_revision` values change for manifests
|
|
655
|
+
generated from local-file configs — regenerate any committed manifests.
|
|
656
|
+
- **Fix broken arm64 container image (#437).** The `aarch64-unknown-linux-gnu` release
|
|
657
|
+
binary was built on `ubuntu-24.04-arm` (glibc 2.39) and packaged into
|
|
658
|
+
`debian:bookworm-slim` (glibc 2.36), so `ghcr.io/malon64/floe:0.6.5` failed on ARM64
|
|
659
|
+
with `GLIBC_2.38/2.39 not found`. The lean `floe` and companion `floe-duckdb` aarch64
|
|
660
|
+
binaries now build on `ubuntu-22.04-arm` (glibc 2.35), which runs on bookworm and older
|
|
661
|
+
distros.
|
|
662
|
+
- Internal hardening:
|
|
663
|
+
- **CD: drop the redundant `docker-duckdb` dry-run job.** It was the last consumer of a
|
|
664
|
+
workflow_dispatch dry-run path that no longer adds coverage.
|
|
665
|
+
|
|
666
|
+
## v0.6.5
|
|
667
|
+
|
|
668
|
+
- **Glue Iceberg tables now expose their schema to Iceberg REST clients (#433).** Floe previously
|
|
669
|
+
registered Glue tables with `StorageDescriptor.Columns` empty, leaving only a `metadata_location`
|
|
670
|
+
pointer. The Glue Iceberg REST endpoint reconstructs table metadata from its own catalog state,
|
|
671
|
+
so `loadTable` returned no `schemas` array — causing DuckDB's `ENDPOINT_TYPE GLUE` integration
|
|
672
|
+
to report the table as non-existent even though the data was intact on S3. Floe now mirrors the
|
|
673
|
+
full Iceberg schema into Glue's native column list (with correct Hive type mappings) on every
|
|
674
|
+
create and overwrite commit.
|
|
675
|
+
- Internal hardening:
|
|
676
|
+
- **CI: parallelize DuckDB job and centralize change detection (#435).** The DuckDB CI job
|
|
677
|
+
previously ran clippy → tests sequentially on one runner. It is now split into two parallel
|
|
678
|
+
jobs (`duckdb-clippy` / `duckdb-test`) sharing a cached bundled native build, and a single
|
|
679
|
+
upfront `changes` job gates all downstream jobs at the job level so runners do not boot when
|
|
680
|
+
relevant paths are untouched.
|
|
681
|
+
|
|
682
|
+
## v0.6.4
|
|
683
|
+
|
|
684
|
+
- **Iceberg sink on Azure Data Lake Storage Gen2 (#411).** Iceberg tables can now be
|
|
685
|
+
written to ADLS Gen2 using filesystem catalog semantics, with account-key, SAS-token, or
|
|
686
|
+
service-principal credentials resolved from the environment. See `docs/sinks/iceberg.md`.
|
|
687
|
+
- **Resolved credentials are wrapped in a redacting `Secret` newtype (#392).** Unity / REST
|
|
688
|
+
catalog tokens and the MotherDuck token now live in a `Secret` type whose `Debug`/`Display`
|
|
689
|
+
render `[REDACTED]`, so an accidental `{:?}` in a log line or error can no longer leak a
|
|
690
|
+
PAT. The raw value is reachable only through an explicit accessor at the trust boundaries
|
|
691
|
+
that need it (HTTP bearer header, DuckDB connection config). Serde stays transparent, so
|
|
692
|
+
YAML config parsing and manifest round-trips are unchanged, and existing manifest token
|
|
693
|
+
redaction is unaffected. Docs recommend `${ENV_VAR}` references over literal secrets in YAML.
|
|
694
|
+
- Internal hardening:
|
|
695
|
+
- Bumped `apache-avro` from 0.16 to 0.21 (#401).
|
|
696
|
+
- Repaired the release CD: the `publish` job now polls the crates.io sparse index (not the
|
|
697
|
+
web API) before publishing `floe-cli` and retries the resolve-sensitive publish, and the
|
|
698
|
+
lean `aarch64-unknown-linux-gnu` binary builds on a native runner instead of `cross`
|
|
699
|
+
(#431). Bumped `actions/checkout` from 6 to 7 (#414).
|
|
700
|
+
|
|
701
|
+
## v0.6.3
|
|
702
|
+
|
|
703
|
+
- **Fixes the `floe-duckdb` companion build (CLI binaries, Docker images).** Building
|
|
704
|
+
`floe-cli` with `--features duckdb` failed to compile (`error[E0425]: cannot find type
|
|
705
|
+
FloeResult`) because the `FloeResult` import in `crates/floe-cli/src/delegate.rs` was gated
|
|
706
|
+
to the lean build (`#[cfg(not(feature = "duckdb"))]`) yet used by the duckdb build's no-op
|
|
707
|
+
`maybe_delegate_duckdb`. The import is now unconditional. The lean `floe` binary and PyPI
|
|
708
|
+
wheels were unaffected; only the DuckDB companion artifacts failed to build for v0.6.2.
|
|
709
|
+
- **CI now compiles `floe-cli --features duckdb`.** The path-gated `duckdb` job previously
|
|
710
|
+
only linted `floe-core`; it now also builds the CLI binary the release ships as
|
|
711
|
+
`floe-duckdb` and triggers on `floe-cli` source changes, so feature-gated CLI breakage is
|
|
712
|
+
caught before a tagged release instead of in the release pipeline.
|
|
713
|
+
|
|
714
|
+
## v0.6.2
|
|
715
|
+
|
|
716
|
+
- **`manifest generate` resolves profile variables in storage definitions (#424).**
|
|
717
|
+
`{{VAR}}` placeholders in config-level `storages.definitions` fields
|
|
718
|
+
(`bucket`/`region`/`account`/`container`/`prefix`/`endpoint`) supplied by a profile
|
|
719
|
+
`variables:` block are now substituted during manifest generation, not just `prefix`.
|
|
720
|
+
- **Generated manifests are self-contained for `floe run --manifest` (#424, #425).** The
|
|
721
|
+
manifest now embeds the effective `storages`/`catalogs`/`lineage` (config-level
|
|
722
|
+
definitions merged with the profile, with profile variables already resolved) instead of
|
|
723
|
+
only the profile sections, so manifest replay can resolve named storages such as
|
|
724
|
+
`source.storage` / `sink.*.storage`. A present-but-malformed embedded block now produces a
|
|
725
|
+
clear `manifest <section> block is malformed` error instead of being silently dropped
|
|
726
|
+
(which previously resurfaced as the confusing `no storages block` failure). See
|
|
727
|
+
`docs/manifest.md`.
|
|
728
|
+
- **EKS Pod Identity / container credentials for Glue/S3 Iceberg writes (#426).** The Iceberg
|
|
729
|
+
S3 write/seed path resolves AWS credentials through the AWS SDK default chain (which honors
|
|
730
|
+
`AWS_CONTAINER_CREDENTIALS_FULL_URI` + token file, the same chain the Glue client and S3
|
|
731
|
+
reads already use) and hands them to the opendal-backed writer as static credentials, so
|
|
732
|
+
writes no longer fall back to EC2 IMDS in EKS Pod Identity pods. Existing static-env / IMDS
|
|
733
|
+
setups are unaffected. See `docs/sinks/iceberg.md`.
|
|
734
|
+
- Internal hardening: removed a duplicated `#[cfg(feature = "delta")]` attribute flagged by
|
|
735
|
+
newer clippy.
|
|
736
|
+
|
|
737
|
+
## v0.6.1
|
|
738
|
+
|
|
739
|
+
- **Structured `FloeError` type (#395).** `floe-core` previously returned
|
|
740
|
+
`Box<dyn Error>` over four stringly-typed wrappers
|
|
741
|
+
(`ConfigError`/`RunError`/`StorageError`/`IoError`); failures could only be
|
|
742
|
+
classified by inspecting message strings. Every failure is now a structured
|
|
743
|
+
`FloeError` enum variant (`Config`/`Validation`/`Storage`/`Sink`/`State`/`Run`/`Io`)
|
|
744
|
+
carrying typed context fields (entity, path, rule). Library consumers — including
|
|
745
|
+
the Python bindings and the CLI log emitter — recover the kind via
|
|
746
|
+
`err.downcast_ref::<FloeError>()` and `FloeError::kind()`.
|
|
747
|
+
- No user-visible behaviour change: `Display` output is byte-identical to the
|
|
748
|
+
old wrappers, the typed Python exceptions (`FloeConfigError`, `FloeRunError`,
|
|
749
|
+
`FloeStorageError`, `FloeIoError`) and CLI error codes are unchanged.
|
|
750
|
+
- `FloeResult<T>` remains the boxed alias so foreign errors keep flowing through
|
|
751
|
+
`?`. See `context/decisions/structured-floe-error.md`.
|
|
752
|
+
- Internal-only release: no config, CLI, or sink behaviour changes.
|
|
753
|
+
|
|
754
|
+
## v0.6.0
|
|
755
|
+
|
|
756
|
+
- **HMAC-SHA256 keyed hashing for `strategy: hash` (`docs/pii.md`, #388).**
|
|
757
|
+
The optional `key:` field on a `pii.columns[]` entry selects HMAC-SHA256 instead of
|
|
758
|
+
plain SHA-256, making hash-masked values computationally infeasible to reverse by
|
|
759
|
+
dictionary attack while preserving referential integrity (same input + same key → same
|
|
760
|
+
output across runs). The key accepts a plain literal or a `${ENV_VAR}` reference
|
|
761
|
+
resolved at masking time.
|
|
762
|
+
- Plain SHA-256 remains the default for backward compatibility.
|
|
763
|
+
- A configuration warning is emitted when `strategy: hash` is used without `key:`.
|
|
764
|
+
- Literal keys are redacted from manifest serialization so they never appear in the
|
|
765
|
+
run manifest JSON.
|
|
766
|
+
- **`abfss://` URIs now accepted everywhere (#393).**
|
|
767
|
+
The secure `abfss://` spelling (the one Azure surfaces in the portal and Databricks
|
|
768
|
+
shows in external-location URIs) was previously not recognized and silently fell
|
|
769
|
+
through to local-path handling. Floe now normalizes `abfss://` to the canonical
|
|
770
|
+
`abfs://` at config-parse time, so both spellings work end-to-end in source paths,
|
|
771
|
+
sink paths, state paths, and storage config.
|
|
772
|
+
- `is_remote_uri` was deduplicated from four copy-pasted sites into a single
|
|
773
|
+
canonical helper (`io/storage/core/uri.rs`); adding a scheme is now a one-line change.
|
|
774
|
+
- **Run reliability hardening (#389, #390).**
|
|
775
|
+
- *Unity Catalog HTTP timeout*: the `reqwest` client used for Unity Catalog table
|
|
776
|
+
registration had no timeout. A hung or unreachable Databricks workspace now times out
|
|
777
|
+
after 30 seconds instead of blocking forever.
|
|
778
|
+
- *Stale lock recovery*: a local `.lock` file left behind by a killed or OOM-killed
|
|
779
|
+
process (previously permanent) is now broken automatically when older than 5 minutes.
|
|
780
|
+
The lock records its acquisition timestamp + PID; the fallback is file mtime for
|
|
781
|
+
legacy locks.
|
|
782
|
+
- *CAS jittered backoff*: conditional-write retries no longer fire in lockstep with no
|
|
783
|
+
delay. Full-jitter exponential backoff (50 ms base, 2 s cap) is applied between
|
|
784
|
+
failed attempts, and the retry count is raised from 5 to 8. No external PRNG
|
|
785
|
+
dependency — entropy is derived from the system clock.
|
|
786
|
+
|
|
787
|
+
### Internal hardening
|
|
788
|
+
|
|
789
|
+
- **pyo3 0.22 → 0.29 (#391):** clears two supply-chain advisories
|
|
790
|
+
(RUSTSEC-2025-0020, RUSTSEC-2026-0177) that were parked under `[advisories].ignore`
|
|
791
|
+
in `deny.toml`. The `cargo-deny` supply-chain gate is re-armed with both ignore
|
|
792
|
+
entries removed. No API or behavior change visible to Python callers.
|
|
793
|
+
- **`cargo update`:** ~250 transitive lockfile bumps to latest semver-compatible
|
|
794
|
+
versions (tokio 1.49→1.52.3, aws-sdk-s3 1.120→1.137, openssl 0.10.75→0.10.81,
|
|
795
|
+
rustls 0.23.36→0.23.40, arrow 57.2→57.3.1, deltalake 0.30.1→0.30.2, and more).
|
|
796
|
+
|
|
797
|
+
## v0.5.6
|
|
798
|
+
|
|
799
|
+
- **Fixes the `build-duckdb-cli` Windows build failure introduced in v0.5.5.**
|
|
800
|
+
The bundled C++ DuckDB library (`libduckdb-sys`) fails to compile with MSVC
|
|
801
|
+
`cl.exe` (exit code 2 on `ub_src_storage_compression_chimp.cpp`). Windows was
|
|
802
|
+
mistakenly included in the `build-duckdb-cli` matrix even though the
|
|
803
|
+
`build-duckdb-wheel` job already excluded it for the same reason. The Windows
|
|
804
|
+
entry is now dropped from `build-duckdb-cli`; four Unix/macOS platforms remain
|
|
805
|
+
(Linux x86\_64/arm64, macOS x86\_64/arm64). The lean `floe.exe` Windows binary is
|
|
806
|
+
**unaffected** — it is built by a separate job that does not enable the `duckdb`
|
|
807
|
+
feature. Windows users who need DuckDB support can use
|
|
808
|
+
`docker run ghcr.io/malon64/floe-duckdb` or build from source:
|
|
809
|
+
`cargo build -p floe-cli --release --features duckdb`.
|
|
810
|
+
- **Supply-chain hardening and dependency migrations (PR #396):**
|
|
811
|
+
- `cargo-deny` gate added (`deny.toml`): denies known advisories, yanked crates,
|
|
812
|
+
non-whitelisted licenses, and non-whitelisted crate sources; bans
|
|
813
|
+
re-introduction of `serde_yaml` and deprecated `azure_storage*` 0.x crates.
|
|
814
|
+
A new `.github/workflows/supply-chain.yml` workflow runs the gate on every PR
|
|
815
|
+
touching dependency files, weekly on a schedule, and on demand.
|
|
816
|
+
- Dependabot configured (`.github/dependabot.yml`): weekly Cargo updates
|
|
817
|
+
(minor + patch, grouped by ecosystem), GitHub Actions pin updates, and pip
|
|
818
|
+
updates. `duckdb`/`libduckdb-sys` are ignored until the Arrow 58 migration
|
|
819
|
+
lands (tracked in issue #387).
|
|
820
|
+
- **Five security advisories resolved:**
|
|
821
|
+
- `aws-lc-sys` 0.36 → 0.41: fixes RUSTSEC-2026-0044/0045/0046/0047/0048
|
|
822
|
+
(X.509 name-constraint bypass, AES-CCM timing side-channel, PKCS7
|
|
823
|
+
validation bypasses, CRL logic error).
|
|
824
|
+
- `rustls-webpki` 0.103.9 → 0.103.13: fixes RUSTSEC-2026-0098/0099/0104/0049.
|
|
825
|
+
- `lz4_flex` 0.11.5 → 0.11.6 and 0.12.0 → 0.12.1: fixes RUSTSEC-2026-0041
|
|
826
|
+
(uninitialized-memory leak on invalid input).
|
|
827
|
+
- **`serde_yaml` removed** (archived / unmaintained): `add_entity.rs` now uses
|
|
828
|
+
the `yaml-rust2` stack already present in the config parser — one YAML library
|
|
829
|
+
in the dependency tree instead of two.
|
|
830
|
+
- **Azure SDK migrated to GA 1.0:** `azure_core` / `azure_identity` /
|
|
831
|
+
`azure_storage` / `azure_storage_blobs` 0.20 (deprecated unofficial track) →
|
|
832
|
+
`azure_core` / `azure_identity` / `azure_storage_blob` 1.0. Conditional writes
|
|
833
|
+
(`If-Match` / `If-None-Match: *` on put; `If-Match` on delete) are preserved;
|
|
834
|
+
conflict detection is now typed (`ErrorKind::HttpResponse` 412/409) instead of
|
|
835
|
+
fragile string matching; 409 is now correctly mapped to `Conflict`.
|
|
836
|
+
`DefaultAzureCredential` is replaced by a `ChainedCredential` that tries
|
|
837
|
+
service-principal env vars → workload identity → managed identity → Azure CLI.
|
|
838
|
+
- Distribution-only and dependency patch — no engine, API, or config changes.
|
|
839
|
+
|
|
840
|
+
## v0.5.5
|
|
841
|
+
|
|
842
|
+
- **Distributes `floe-duckdb` as a prebuilt standalone CLI binary for all platforms.**
|
|
843
|
+
Previous releases shipped the DuckDB-enabled build only as a Docker image
|
|
844
|
+
(`ghcr.io/malon64/floe-duckdb`) and a Python companion wheel. The CLI binary had to
|
|
845
|
+
be compiled from source. From this release, `floe-duckdb` binaries are attached to
|
|
846
|
+
every GitHub Release for all five supported platforms (Linux x86\_64/arm64,
|
|
847
|
+
macOS x86\_64/arm64, Windows x86\_64) and are available via the existing
|
|
848
|
+
Homebrew tap and Scoop bucket:
|
|
849
|
+
```sh
|
|
850
|
+
# macOS / Linux — Homebrew
|
|
851
|
+
brew tap malon64/floe # skip if already tapped
|
|
852
|
+
brew install malon64/floe/floe-duckdb
|
|
853
|
+
|
|
854
|
+
# Windows — Scoop
|
|
855
|
+
scoop bucket add floe https://github.com/malon64/scoop-floe
|
|
856
|
+
scoop install floe-duckdb
|
|
857
|
+
```
|
|
858
|
+
`floe-duckdb` is a complete, standalone CLI (same commands, same config format as
|
|
859
|
+
`floe`) with the DuckDB sink compiled in. It can be used directly (`floe-duckdb run
|
|
860
|
+
config.yml`) or placed alongside the lean `floe` binary — `floe` auto-delegates a
|
|
861
|
+
DuckDB-sink run to `floe-duckdb` without user intervention.
|
|
862
|
+
- Distribution-only patch — no engine, API, or config changes. DuckDB sink behavior
|
|
863
|
+
and supported targets (Local + MotherDuck) are unchanged.
|
|
864
|
+
|
|
865
|
+
## v0.5.4
|
|
866
|
+
|
|
867
|
+
- **Fixes the Python DuckDB companion so `floe.run()` actually delegates to it.**
|
|
868
|
+
The off-PyPI `floe-duckdb` wheel installs its native extension as a **top-level
|
|
869
|
+
`_floe_duckdb`** package (maturin's pure-Rust layout), but the lean `floe`
|
|
870
|
+
wrapper only looked for the nested `floe._floe_duckdb` submodule via
|
|
871
|
+
`importlib.util.find_spec`. The two never matched, so a DuckDB-sink run on an
|
|
872
|
+
install that *had* the companion still raised *"the `floe-duckdb` companion
|
|
873
|
+
wheel is not installed"* — the Python DuckDB channel was non-functional as
|
|
874
|
+
shipped. The wrapper now accepts **both** layouts (`floe._floe_duckdb` and
|
|
875
|
+
top-level `_floe_duckdb`), preferring the nested name when present. Verified
|
|
876
|
+
end-to-end against the published `floe-duckdb` wheel: a `merge_scd1` DuckDB sink
|
|
877
|
+
inserts on first run and upserts idempotently on re-run.
|
|
878
|
+
- Operational note (no code change): the off-PyPI PEP 503 index at
|
|
879
|
+
`https://malon64.github.io/floe/simple/` requires **GitHub Pages** to be enabled
|
|
880
|
+
on the repository (source `gh-pages`); the release pipeline pushes the index to
|
|
881
|
+
that branch but cannot enable Pages itself.
|
|
882
|
+
- **Fixes four OpenLineage emission bugs that made Floe's OL events unusable by
|
|
883
|
+
OpenMetadata 1.12.x and other strict consumers** (fixes #382, PR #386):
|
|
884
|
+
- S3 input dataset names no longer carry a leading slash (`split_storage_uri` now
|
|
885
|
+
drops the `/` separator, so `s3://bucket/path` splits into `("s3://bucket", "path")`).
|
|
886
|
+
- `runId` is now a spec-valid UUID v4 (a single `Uuid::new_v4()` is generated at
|
|
887
|
+
`RunStarted` and reused at `RunFinished`; each entity gets its own UUID) instead
|
|
888
|
+
of the raw timestamp-based run ID that OpenMetadata silently dropped.
|
|
889
|
+
- `inputs`/`outputs` now use resolvable storage coordinates (Iceberg → catalog
|
|
890
|
+
namespace + `{ns}.{table}`; all other sinks → `split_storage_uri` on the storage
|
|
891
|
+
path) instead of unmappable logical names, so lineage edges are derivable. The
|
|
892
|
+
redundant symlinks facets are removed.
|
|
893
|
+
- Entity job names no longer prepend the OL namespace (it already lives in the job
|
|
894
|
+
object's `namespace` field).
|
|
895
|
+
- The DuckDB distribution changes above are distribution-only — DuckDB sink behavior
|
|
896
|
+
and supported targets (Local + MotherDuck) are unchanged.
|
|
897
|
+
|
|
898
|
+
## v0.5.3
|
|
899
|
+
|
|
900
|
+
- **Fixes the release pipeline so the GitHub Release assets, Homebrew/Scoop
|
|
901
|
+
formulae, and off-PyPI `floe-duckdb` wheel actually publish.** In v0.5.2 the
|
|
902
|
+
`release` job's `Download artifacts` step had no `pattern`, so it pulled *every*
|
|
903
|
+
run artifact (~1.1 GB — including the ~80 MB DuckDB wheels and ~70 MB Python
|
|
904
|
+
wheels) and intermittently failed the download "after 5 retries", which left the
|
|
905
|
+
GitHub Release with no binary assets and skipped the dependent off-PyPI wheel
|
|
906
|
+
publish. The step is now scoped to `pattern: dist-*` (only the platform binary
|
|
907
|
+
archives it actually needs for the release assets and Homebrew/Scoop checksums);
|
|
908
|
+
the DuckDB wheels remain handled by the separately-scoped `publish-duckdb-wheel`
|
|
909
|
+
job. This was invisible to dry-runs because the `release` job is gated off on
|
|
910
|
+
dry-runs.
|
|
911
|
+
- No engine or API changes: distribution-only patch. The DuckDB sink behavior,
|
|
912
|
+
config surface, and supported targets (Local + MotherDuck) are identical to
|
|
913
|
+
v0.5.0–v0.5.2.
|
|
914
|
+
|
|
915
|
+
## v0.5.2
|
|
916
|
+
|
|
917
|
+
- **Fixes the v0.5.1 release pipeline so the DuckDB companion actually ships.** v0.5.1
|
|
918
|
+
published the lean `floe` (PyPI wheel + `ghcr.io/malon64/floe` image) correctly, but
|
|
919
|
+
the `floe-duckdb` companion image and off-PyPI wheel never published because the
|
|
920
|
+
companion image build failed. `Dockerfile.duckdb`'s dependency-cache layer copied
|
|
921
|
+
`crates/floe-python/Cargo.toml` (which declares an explicit `[lib] name = "_floe"`)
|
|
922
|
+
without its source, so `cargo fetch` failed parsing the workspace manifest
|
|
923
|
+
(*"can't find library `_floe`"*). The fetch layer now stubs
|
|
924
|
+
`crates/floe-python/src/lib.rs` before fetching; the real source replaces it in the
|
|
925
|
+
subsequent `COPY`. This path was invisible to release dry-runs because the Docker
|
|
926
|
+
jobs are gated off on dry-runs.
|
|
927
|
+
- No engine or API changes: distribution-only patch. The DuckDB sink behavior, config
|
|
928
|
+
surface, and supported targets (Local + MotherDuck) are identical to v0.5.0/v0.5.1.
|
|
929
|
+
|
|
930
|
+
## v0.5.1
|
|
931
|
+
|
|
932
|
+
- **DuckDB is now available to non-Rust users via a lean-primary + heavy-companion
|
|
933
|
+
distribution.** v0.5.0 made `duckdb` an opt-in Cargo feature, which left it reachable
|
|
934
|
+
only by building from source. v0.5.1 ships the existing DuckDB sink (local `.duckdb`
|
|
935
|
+
files and MotherDuck `md:` databases) as a separate companion that the lean,
|
|
936
|
+
default-distributed `floe` transparently delegates to — modeled on the
|
|
937
|
+
companion-on-PATH pattern used by `git`/`git-lfs` and cargo subcommands, and the
|
|
938
|
+
ONNX-Runtime / PyTorch split-package model for Python.
|
|
939
|
+
- **CLI:** the lean `floe` binary auto-detects a DuckDB sink in the resolved config
|
|
940
|
+
and re-execs a `floe-duckdb` companion (same `floe-cli` source built
|
|
941
|
+
`--features duckdb`) with identical arguments, propagating its exit status. The
|
|
942
|
+
companion is resolved **only** from `PATH` or the canonicalized directory of the
|
|
943
|
+
running executable — never the current working directory (avoids the git-lfs
|
|
944
|
+
CVE GHSA-6rw3-3whw-jvjj class of attack). If no companion is found, the run fails
|
|
945
|
+
with an actionable install hint instead of a cryptic missing-feature error.
|
|
946
|
+
- **Docker:** new `ghcr.io/malon64/floe-duckdb` image (built from `Dockerfile.duckdb`)
|
|
947
|
+
bundles the native DuckDB build with `ENTRYPOINT ["floe-duckdb"]`. The lean
|
|
948
|
+
`ghcr.io/malon64/floe` image is unchanged.
|
|
949
|
+
- **Python:** new off-PyPI `floe-duckdb` wheel installs a `floe._floe_duckdb`
|
|
950
|
+
companion extension into the same `floe` package; the lean `floe.run()`
|
|
951
|
+
transparently delegates a DuckDB-sink run to it. Because the bundled native build
|
|
952
|
+
exceeds PyPI's 100 MB per-file limit and does not build in the manylinux/musllinux
|
|
953
|
+
containers, the companion wheel is published off PyPI (GitHub Release assets + a
|
|
954
|
+
PEP 503 simple index), à la `download.pytorch.org`:
|
|
955
|
+
`pip install floe-python` then
|
|
956
|
+
`pip install floe-duckdb --index-url https://malon64.github.io/floe/simple/`
|
|
957
|
+
(`--index-url`, not `--extra-index-url`, so a squatted `floe-duckdb` on PyPI can't
|
|
958
|
+
shadow the off-PyPI companion).
|
|
959
|
+
- No engine changes: this release only changes *distribution*. The DuckDB sink
|
|
960
|
+
behavior, config surface, and supported targets (Local + MotherDuck) are identical
|
|
961
|
+
to v0.5.0. DuckLake and remote-DuckDB (Quack) sinks remain deferred (they require a
|
|
962
|
+
DuckDB ≥1.5.3 / Arrow 58 bump that is blocked upstream until the Iceberg crate
|
|
963
|
+
publishes an Arrow 58 release).
|
|
964
|
+
- See [DuckDB sink](docs/sinks/duckdb.md) and [installation](docs/installation.md).
|
|
965
|
+
|
|
966
|
+
- **`floe` 0.5.1**: version bump for this release.
|
|
967
|
+
|
|
968
|
+
## dagster-floe v0.2.3
|
|
969
|
+
|
|
970
|
+
- **Floe assets now carry a `compute_kind="floe"` branding badge** (PR #384):
|
|
971
|
+
- Every asset materialized by `dagster-floe` displays a "floe" compute-kind badge
|
|
972
|
+
in the Dagster UI, consistent with how `dagster-dbt` and `dagster-duckdb` brand
|
|
973
|
+
their assets. Cosmetic/UX only — no change to asset keys, execution, or run config.
|
|
974
|
+
|
|
975
|
+
## dagster-floe v0.2.2
|
|
976
|
+
|
|
977
|
+
- **Expose public job run-config helpers for mixed asset jobs** (closes #376, PR #378):
|
|
978
|
+
- `resolve_execution_config(execution)` — derives the Dagster multiprocess run-config dict from a parsed `ManifestExecution` object; returns `None` when no concurrency constraint is set.
|
|
979
|
+
- `build_job_run_config_from_manifest(manifest_path)` — convenience wrapper that loads the manifest and delegates to `resolve_execution_config`.
|
|
980
|
+
- Both are exported from the top-level `floe_dagster` package.
|
|
981
|
+
- Users composing mixed Dagster asset jobs (Floe + dlt + dbt + other assets) can now pass the manifest-derived run config directly to `define_asset_job(config=...)` without duplicating internal logic.
|
|
982
|
+
|
|
983
|
+
## v0.5.0
|
|
984
|
+
|
|
985
|
+
- **Accepted sinks are now opt-in Cargo features** (PR #375):
|
|
986
|
+
- `delta`, `iceberg`, and `duckdb` are each gated behind their own Cargo feature in `floe-core`.
|
|
987
|
+
Parquet (via Polars) is always compiled; the heavy sink dependencies are pulled in only when
|
|
988
|
+
requested. `floe-core`'s default features are `["delta", "iceberg"]`, and `floe-cli` /
|
|
989
|
+
`floe-python` forward the same defaults — so the shipped CLI and published wheels keep
|
|
990
|
+
Delta + Iceberg support and stay lean.
|
|
991
|
+
- **`duckdb` is opt-in everywhere.** The bundled native DuckDB build inflated compile times and
|
|
992
|
+
broke the manylinux/musllinux wheel cross-compile (and pushed wheels past PyPI's per-file size
|
|
993
|
+
limit), so it is excluded from default builds. Enable it from source with `--features duckdb`.
|
|
994
|
+
- **Breaking for library consumers:** code depending on `floe-core` with `default-features = false`
|
|
995
|
+
no longer compiles any sink; add the features you need (`delta`, `iceberg`, `duckdb`).
|
|
996
|
+
- Config validation and manifest generation accept any *known* sink format — including one whose
|
|
997
|
+
feature is not compiled into the current build — so a lean build still validates and round-trips
|
|
998
|
+
a config it cannot execute. Only the runtime write path enforces the feature, failing with a
|
|
999
|
+
clear `rebuild with --features <sink>` hint.
|
|
1000
|
+
- CI now compiles and tests each sink selectively (path-filtered jobs with isolated caches), so the
|
|
1001
|
+
expensive DuckDB bundle is built only when DuckDB code changes.
|
|
1002
|
+
|
|
1003
|
+
- **`floe` 0.5.0**: version bump for this release.
|
|
1004
|
+
|
|
1005
|
+
## v0.4.7
|
|
1006
|
+
|
|
1007
|
+
- **DuckDB accepted sink** (closes #248, PR #372):
|
|
1008
|
+
- New `sink.accepted.format: duckdb` writes accepted output into a DuckDB database — a local
|
|
1009
|
+
`.duckdb` file or a remote [MotherDuck](https://motherduck.com) (`md:<database>`) database.
|
|
1010
|
+
- Full write-mode parity with Delta: `overwrite`, `append`, `merge_scd1`, and `merge_scd2` via
|
|
1011
|
+
DuckDB's native `MERGE INTO` (bundled DuckDB 1.5.0). Merge metrics are reported from
|
|
1012
|
+
`RETURNING merge_action`.
|
|
1013
|
+
- Arrow-native ingestion (no intermediate file); the bundled `duckdb` crate pins Arrow 57 to
|
|
1014
|
+
match floe-core.
|
|
1015
|
+
- MotherDuck token auth via `${ENV}` substitution, passed through the connection configuration
|
|
1016
|
+
(never as SQL) and never logged.
|
|
1017
|
+
- Hardened connection handling: a process-wide single-writer connection cache keyed by canonical
|
|
1018
|
+
database id serializes writes and reuses one handle across flushes and entities. The MotherDuck
|
|
1019
|
+
cache key includes a non-reversible token fingerprint so distinct credentials never share a
|
|
1020
|
+
cached connection.
|
|
1021
|
+
- The `duckdb` sink block is carried through generated manifests, so manifest replay can address
|
|
1022
|
+
the target table / MotherDuck database.
|
|
1023
|
+
- `overwrite` replaces only the target table, leaving other tables in the same database intact.
|
|
1024
|
+
- Object-store `.duckdb` file paths (S3/GCS/ADLS) are rejected at validation with a pointer to
|
|
1025
|
+
MotherDuck (DuckDB cannot read-write database files over object storage).
|
|
1026
|
+
- See [DuckDB sink](docs/sinks/duckdb.md).
|
|
1027
|
+
|
|
1028
|
+
- **Fix: normalize raw headers before projection in Parquet and ORC readers** (PR #373):
|
|
1029
|
+
- `projected_columns` was comparing raw file headers (e.g. `"Customer ID"`) against
|
|
1030
|
+
already-normalised declared column names (e.g. `"customer_id"`), so any column renamed by
|
|
1031
|
+
`schema.normalize_columns` was silently projected out before reaching checks or the sink.
|
|
1032
|
+
- Fix: `normalize_name` is now applied to each raw header before the set-membership test,
|
|
1033
|
+
matching the pattern already used in the Avro reader.
|
|
1034
|
+
|
|
1035
|
+
- **`floe` 0.4.7**: version bump for this release.
|
|
1036
|
+
|
|
1037
|
+
## v0.4.6
|
|
1038
|
+
|
|
1039
|
+
- **`dagster-floe`: load remote report URIs via fsspec** (fixes #361, PR #362):
|
|
1040
|
+
- `summary_uri` and `entity_report_uri` values pointing at `s3://`, `gs://`, or `abfs://` were raising a `ValueError` that was silently swallowed, causing asset checks to fall back to summary-only mode. They are now fetched correctly via `fsspec`.
|
|
1041
|
+
- New `remote` optional extra (`dagster-floe[remote]`) installs `s3fs`, `gcsfs`, and `adlfs` so all three cloud providers are covered out of the box.
|
|
1042
|
+
|
|
1043
|
+
- **`dagster-floe`: tolerate mixed stdout and surface floe events in Dagster logs** (PR #363):
|
|
1044
|
+
- The log parser now handles non-JSON lines interleaved with NDJSON floe events, so plain-text output from wrappers or logging middleware no longer breaks event parsing.
|
|
1045
|
+
- Floe run events (`run_started`, `entity_finished`, `run_finished`) are surfaced as structured Dagster log entries with appropriate log levels.
|
|
1046
|
+
|
|
1047
|
+
- **Soft-buffered accepted writes — cap per-entity memory at `max_size_per_file`** (PR #366):
|
|
1048
|
+
- Previously all accepted rows for an entity were accumulated in memory across every input file and written in a single pass at the end. Peak RAM scaled with input fanout.
|
|
1049
|
+
- Accepted rows are now flushed to the sink incrementally whenever the in-memory accumulation reaches `sink.accepted.options.max_size_per_file` (default 256 MB). Peak memory is bounded regardless of how many input files the entity processes.
|
|
1050
|
+
- `merge_scd1` / `merge_scd2` modes are unaffected — they still accumulate the full dataset before writing.
|
|
1051
|
+
- **Durability note**: flushes commit while the batch is still running — if a later input file fails, rows from earlier files are already committed and will be re-written on the next run. In `append` mode this produces duplicate output rows; use `schema.unique_keys`, `merge_scd1`, or `merge_scd2` to guard against this. See [Parquet sink limitations](docs/sinks/parquet.md#limitations) for details (the same partial-commit exposure applies to Delta and Iceberg accepted sinks, though their individual flushes are transactional).
|
|
1052
|
+
|
|
1053
|
+
- **Stream Parquet writes via the Polars `new_streaming` engine** (PR #369):
|
|
1054
|
+
- Accepted Parquet writes now emit one row group at a time rather than buffering the full chunk plus Arrow encoding state. This reduces per-write peak memory, most noticeably on wide schemas or large `row_group_size` values.
|
|
1055
|
+
- No config changes required. Output file naming, part counts, and the run report shape are unchanged.
|
|
1056
|
+
|
|
1057
|
+
- **Profile `execution.orchestration` → manifest → Dagster job concurrency** (PR #367):
|
|
1058
|
+
- New `orchestration` block in the profile's `execution` section (`strategy`, `max_concurrent_entities`). The manifest builder emits it as `execution.orchestration`; `dagster-floe` wires `max_concurrent` into the Dagster `multiprocess` executor config, driving entity-level parallelism end-to-end without per-job boilerplate.
|
|
1059
|
+
- `max_concurrent_entities: 0` is rejected at parse time with an immediate config error.
|
|
1060
|
+
- Profile JSON Schema updated to declare the new block (previously rejected by `additionalProperties: false`).
|
|
1061
|
+
|
|
1062
|
+
- **REST Iceberg: resolve environment-variable credentials** (PR #370):
|
|
1063
|
+
- REST catalog configs that use `${ENV_VAR}` placeholders for credentials are now resolved against the process environment before the HTTP client is constructed, fixing authentication failures when credentials are injected at runtime rather than baked into the config file.
|
|
1064
|
+
- Malformed placeholder errors are redacted in log output to avoid leaking partial secrets.
|
|
1065
|
+
|
|
1066
|
+
- **`floe` 0.4.6, `dagster-floe` 0.2.1, `airflow-floe` 0.1.5**: version bumps for this release.
|
|
1067
|
+
|
|
1068
|
+
## v0.4.5
|
|
1069
|
+
|
|
1070
|
+
- **Iceberg: propagate S3 endpoint and path-style-access into FileIO** (fixes #352, PR #353):
|
|
1071
|
+
- For S3-compatible storage (SeaweedFS, MinIO), Iceberg/OpenDAL requires an explicit `endpoint` and `path_style_access` in addition to region. Without these, OpenDAL picks up the wrong `AWS_ENDPOINT_URL` and fails at Parquet file close.
|
|
1072
|
+
- Added optional `endpoint` and `path_style_access` fields to `StorageDefinition`; `iceberg_store_config()` now forwards them as `s3.endpoint` and `s3.path-style-access` when present.
|
|
1073
|
+
- The metadata `S3Client` is also wired: `build_client()` passes `endpoint_url` and `force_path_style` from `StorageDefinition`, so listing and uniqueness-seed calls to MinIO/SeaweedFS use the correct addressing style.
|
|
1074
|
+
|
|
1075
|
+
- **Manifest: write remote summary and enrich `run_finished` event** (fixes #354, PR #356):
|
|
1076
|
+
- In manifest mode with a remote `report_base_uri`, `RunContext::from_config()` was skipping `Target` construction and the run summary was never uploaded; `run_finished.summary_uri` was always `null`.
|
|
1077
|
+
- `StorageResolver` gains `find_definition_name_for_uri` / `register_definition` so a synthetic storage definition is created for remote report URIs even when the bucket is not listed in the config `storages` block.
|
|
1078
|
+
- `RunFinished` is extended with `report_base` and `entity_report_uris` (both `skip_serializing_if`-guarded, so existing parsers see identical JSON when no report is configured).
|
|
1079
|
+
- `dagster-floe`: `FloeRunFinished` + `parse_run_finished` + `assets.py` consume `entity_report_uris` directly when available.
|
|
1080
|
+
- `airflow-floe`: `operators.py` and `kubernetes_runner.py` pass the new fields through to the XCom payload.
|
|
1081
|
+
|
|
1082
|
+
- **Manifest: deterministic generation, source checksums, and content revision** (fixes #355, PR #357):
|
|
1083
|
+
- New `--deterministic` flag: sets `generated_at_ts_ms=0` so the same inputs produce byte-identical output — clean `diff` in CI without stripping the timestamp.
|
|
1084
|
+
- New `--manifest-name` flag: stores a stable logical name (e.g. `sales.prod`) in the manifest JSON.
|
|
1085
|
+
- `config_checksum` (SHA-256) is computed on every generation; `profile_checksum` is added when a profile is supplied.
|
|
1086
|
+
- `manifest_revision`: SHA-256 of canonical manifest content (excluding `generated_at_ts_ms`) provides a stable content fingerprint.
|
|
1087
|
+
- `manifest_id` now incorporates `config_checksum` so the ID changes when source config content changes.
|
|
1088
|
+
- All `HashMap` fields in manifest structs (`exit_codes`, `env`, `definitions`, `tags`, `env_parameters`) replaced with `BTreeMap` for stable alphabetical key ordering in serialised JSON.
|
|
1089
|
+
- `dagster-floe` and `airflow-floe` manifest dataclasses parse and surface the four new optional fields (`manifest_name`, `manifest_revision`, `profile_uri`, `profile_checksum`).
|
|
1090
|
+
- JSON Schema updated to declare the new fields, preventing `additionalProperties: false` rejections in the Dagster manifest validator.
|
|
1091
|
+
|
|
1092
|
+
- **`floe manifest generate` — deployment URI overrides** (fixes #358, PR #359):
|
|
1093
|
+
- `-c` and `-p` now accept remote URIs (`s3://`, `gs://`, `abfs://`), downloading transparently and recording the URI as `config_uri` / `profile_uri` in the manifest.
|
|
1094
|
+
- `--output` accepts remote URIs; when a remote URI is given the manifest is uploaded and that URI is automatically baked into `execution.base_args` (replacing the `{manifest_uri}` placeholder), eliminating post-generation JSON patching.
|
|
1095
|
+
- `--default-domain <domain>` sets `domain`, `group_name`, and `asset_key` prefix for entities that do not specify a domain.
|
|
1096
|
+
- `--manifest-path-mode resolved-uri` sets each entity's `source.path` and sink `path` fields to the fully resolved URI (stripping `local://` for local paths), making the manifest a standalone replay contract without a local config directory.
|
|
1097
|
+
- Unknown `--manifest-path-mode` values now produce an immediate CLI error instead of silently defaulting.
|
|
1098
|
+
|
|
1099
|
+
- **`floe` 0.4.5, `dagster-floe` 0.1.8, `airflow-floe` 0.1.5**: version bumps for this release.
|
|
1100
|
+
|
|
1101
|
+
## v0.4.4
|
|
1102
|
+
|
|
1103
|
+
- **REST catalog: correct storage factory for S3 and GCS** (fixes #348 #349):
|
|
1104
|
+
- `build_rest_catalog()` previously always used `LocalFsStorageFactory` regardless of warehouse scheme, causing Parquet data file reads/writes to fail with OS-level errors on any cloud-backed REST catalog (Polaris, Snowflake Open Catalog, Nessie with S3).
|
|
1105
|
+
- The factory is now selected based on the concrete table location URI (`s3://`, `s3a://` → `OpenDalStorageFactory::S3`; `gs://` → `OpenDalStorageFactory::Gcs`; everything else → `LocalFsStorageFactory`).
|
|
1106
|
+
- When the warehouse field is a catalog name rather than a storage URI (e.g. Polaris `"lakehouse"`), the table location from `warehouse_location` / `table_root_uri` is used as the primary dispatch key, with `warehouse` as fallback.
|
|
1107
|
+
- Both write and uniqueness-seed (Append dedup) paths are fixed.
|
|
1108
|
+
|
|
1109
|
+
- **`floe` 0.4.4**: version bump for this release.
|
|
1110
|
+
|
|
1111
|
+
## v0.4.3
|
|
1112
|
+
|
|
1113
|
+
- **Remote manifest support for `floe run --manifest`** (`docs/cli.md`, fixes #342):
|
|
1114
|
+
- `floe run --manifest` now accepts `s3://`, `gs://`, and `abfs://` URIs, downloading the manifest to a temporary directory using the same `resolve_config_location` infrastructure used by `floe run --config`.
|
|
1115
|
+
|
|
1116
|
+
- **OpenLineage: stable job name, versioned `_producer`, column lineage, and Dagster job injection** (`docs/lineage.md`, fixes #335 #336 #337 #338):
|
|
1117
|
+
- Top-level `RunStarted`/`RunFinished` events now use a **stable job name** derived from the config file stem (e.g. `orders.yml` → job name `orders`) instead of the ephemeral run UUID, so run history accumulates on a single job node in Marquez.
|
|
1118
|
+
- An optional `lineage.job_name` field in the config overrides the derived name.
|
|
1119
|
+
- The `_producer` URI is now **versioned** via `env!("CARGO_PKG_VERSION")` at compile time (e.g. `https://github.com/malon64/floe/releases/tag/v0.4.3`) instead of a static string, enabling consumers to correlate lineage events with the exact release.
|
|
1120
|
+
- **`ColumnLineageDatasetFacet`** is emitted on accepted output datasets, mapping each output column to its source field (or itself when no `source:` rename is configured). The `inputFields` dataset identity uses the same `(namespace, name)` tuple as the input dataset in the same event, so column-level edges are correctly joined in OpenLineage consumers.
|
|
1121
|
+
- `dagster-floe` now injects **`DAGSTER_JOB_NAME`** into the floe subprocess environment, so the `ParentRunFacet` carries the correct Dagster job name rather than an empty string.
|
|
1122
|
+
|
|
1123
|
+
- **OpenLineage: Marquez-compatible dataset naming and facet placement** (`docs/lineage.md`, fixes #340):
|
|
1124
|
+
- Source input datasets use a `.source` sub-namespace (e.g. `myns.source`) to avoid colliding with the logical entity name used for accepted outputs.
|
|
1125
|
+
- `SchemaDatasetFacet`, `DataQualityMetricsOutputDatasetFacet`, and `FloeQualityRunFacet` are placed on the accepted output dataset (the write side), matching OpenLineage's semantic: output facets describe what was written.
|
|
1126
|
+
- Rejected output datasets use a `.rejected` sub-namespace and carry their own `DataQualityMetricsOutputDatasetFacet` with the rejected row counts.
|
|
1127
|
+
|
|
1128
|
+
- **`dagster-floe`: `SourceAsset` registration and enriched rejected metadata** (fixes #339):
|
|
1129
|
+
- Each entity now registers a companion `SourceAsset` (key `<entity_key>_source`) so Dagster's asset graph shows the upstream data source as a node. `register_source_assets=False` opts out for pipelines that manage their own upstream declarations.
|
|
1130
|
+
- Rejected output metadata now includes `dominant_rejection_reason` and `files_with_rejections` computed from the entity report, giving Dagster run pages actionable context without opening the floe report file.
|
|
1131
|
+
|
|
1132
|
+
- **`dagster-floe` 0.1.7**, **`floe` 0.4.3**: version bumps for this release.
|
|
1133
|
+
|
|
1134
|
+
## v0.4.2
|
|
1135
|
+
|
|
1136
|
+
- **OpenLineage: source and sink datasets emitted separately** (`docs/lineage.md`, fixes #317):
|
|
1137
|
+
- Entity `COMPLETE`/`FAIL` events now set `inputs` to the **source dataset** (named after `source.path`) and `outputs` to the **accepted sink dataset** (named after `sink.accepted.path`).
|
|
1138
|
+
- When a rejected sink is configured, a second output dataset (named after `sink.rejected.path`) is appended to `outputs`.
|
|
1139
|
+
- Schema (`SchemaDataset`), `DataQualityMetrics`, and `FloeQualityRun` facets are attached to the source input dataset, which is the correct OpenLineage placement for input facets.
|
|
1140
|
+
- Previously, `inputs` contained a single dataset named after the entity (not the path) and `outputs` was always empty, causing Marquez to show a dead-end lineage graph.
|
|
1141
|
+
|
|
1142
|
+
- **OpenLineage observer now installed from profile `lineage` block** (fixes #316):
|
|
1143
|
+
- `floe run --profile` now uses `load_config_with_profile_overrides` for the early config load that wires up the OpenLineage observer. Previously it used `load_config_with_profile_vars`, which substituted `{{VAR}}` placeholders but did not merge the `lineage` section from the profile. Users who declared `lineage:` only in their profile file saw no lineage events emitted.
|
|
1144
|
+
|
|
1145
|
+
- **Profile support for `floe state inspect` and `floe state reset`** (fixes #320):
|
|
1146
|
+
- Both state subcommands now accept `-p / --profile <path>`. Without a profile, configs that reference `{{VAR}}` placeholders would fail with "unknown variable" errors. The same profile-loading path used by `validate` and `run` (variable resolution + storages/catalogs/lineage merging) is now applied before reading or resetting entity state.
|
|
1147
|
+
|
|
1148
|
+
- **Incremental state committed for rejected terminal outcomes** (fixes #327):
|
|
1149
|
+
- In `incremental_mode: file`, files whose rows are fully or partially rejected under `severity: reject` are now committed to state after the run. Previously, any `RunStatus::Rejected` caused state to be released, making Floe reprocess the same file on every subsequent run and duplicate accepted/rejected sink outputs. `Aborted` and `Failed` outcomes still release state, as those represent incomplete processing where reprocessing is safe.
|
|
1150
|
+
|
|
1151
|
+
- **`dagster-floe` 0.1.6**: version bump accompanying the floe 0.4.2 release.
|
|
1152
|
+
|
|
1153
|
+
## v0.4.1
|
|
1154
|
+
|
|
1155
|
+
- **Profile `storages` and `lineage` overrides** (`docs/profiles.md`):
|
|
1156
|
+
- Profile files can now declare a `storages` section and a `lineage` section alongside the existing `catalogs` override. Both are applied as wholesale config replacements before validation and run, following the same pattern as `catalogs`.
|
|
1157
|
+
- `floe validate --profile`, `floe run --profile`, and `floe manifest generate --profile` all honour the new sections.
|
|
1158
|
+
- Python bindings (`floe.validate`) pass storages and lineage through to the merged config.
|
|
1159
|
+
- Profile validation now enforces the same semantic constraints as config validation:
|
|
1160
|
+
- `storages.default` is required whenever `storages` is declared.
|
|
1161
|
+
- Storage definitions must use a supported type (`local`, `s3`, `adls`, `gcs`) and supply type-required fields (`s3`: bucket + region; `adls`: account + container; `gcs`: bucket).
|
|
1162
|
+
- `lineage.namespace` must not be empty; `lineage.max_failures` must be ≥ 1 when set.
|
|
1163
|
+
|
|
1164
|
+
## v0.4.0
|
|
1165
|
+
|
|
1166
|
+
- **OpenLineage circuit breaker and retry** (`docs/lineage.md`):
|
|
1167
|
+
- Transient failures (connection errors, HTTP 5xx, 429) are retried up to 3 times with 0 / 100 / 500 ms backoff before counting as a failure.
|
|
1168
|
+
- Non-retryable 4xx responses (e.g. 401 bad API key) are counted immediately without retrying and emit a `lineage_http_error` warning.
|
|
1169
|
+
- After `max_failures` consecutive failures (default 3, configurable via `lineage.max_failures`), the circuit opens and all subsequent events in the run are skipped with no HTTP calls.
|
|
1170
|
+
- A single `lineage_circuit_open` warning is emitted when the circuit trips. The circuit resets at `RunStarted` so a recovered endpoint is retried in the next pipeline execution without restarting the process.
|
|
1171
|
+
- A `lineage_http_error` warning is emitted whenever any event is dropped so silent event loss is always visible in operator logs.
|
|
1172
|
+
|
|
1173
|
+
- **Hardened remote incremental state** (`docs/how-it-works.md`):
|
|
1174
|
+
- State schema bumped to v2 — a `claims` map sits alongside the existing `files` map, enabling CAS-based concurrent-writer safety on S3, GCS, and ADLS via conditional writes (`If-Match` / generation numbers).
|
|
1175
|
+
- Local storage uses `FileLock` (O_CREAT|O_EXCL) to serialize version-check + write, preventing two concurrent local processes from both returning `Written`.
|
|
1176
|
+
- Claim scope is restricted to the owning runner: promotion, release, and renewal only touch URIs held by the current `ClaimedEntityState`, preventing cross-runner interference when multiple processes share a `run_id`.
|
|
1177
|
+
- Unexpired claims from the same `run_id` now block re-claiming — two processes sharing a `run_id` can no longer process the same files concurrently.
|
|
1178
|
+
- Deletes remain conditional even when `expected_version` is `None`, preserving state written by a concurrent runner.
|
|
1179
|
+
- V1 state files (no `claims` field) are silently upgraded to V2 on read.
|
|
1180
|
+
|
|
1181
|
+
- **Kubernetes manifest runner fields** (`context/orchestrators.md`):
|
|
1182
|
+
- `floe manifest generate` with a Kubernetes profile now emits full runner fields in the manifest: `image`, `namespace`, `service_account`, `resources` (cpu / memory_mb), `env`, and structured `secrets`.
|
|
1183
|
+
- `secrets` changed from `Vec<String>` to `Vec<{name, secret_name, key}>` to match the shape expected by `kubernetes_runner.py`.
|
|
1184
|
+
- `dagster-floe[kubernetes]` optional extra added to express the Kubernetes client dependency explicitly.
|
|
1185
|
+
|
|
1186
|
+
- **Internal hardening** (no config or API changes):
|
|
1187
|
+
- `PolicySeverity` is now a typed enum parsed at config load time — string comparison in mismatch, precheck, and run/entity paths replaced with enum match.
|
|
1188
|
+
- `AcceptedWriteReportState` removed — `run_accepted_write_phase` returns `AcceptedWriteOutput` directly, eliminating a 24-field manual field-by-field copy.
|
|
1189
|
+
- Error types (`ConfigError`, `RunError`, `StorageError`, `IoError`) adopt `thiserror` — removes ~40 lines of boilerplate `Display + Error` impls.
|
|
1190
|
+
- `SinkFormat` trait centralises write, seed, and data-driven config validation — adding a new format no longer requires changes to validate.rs or dispatch code.
|
|
1191
|
+
- State module eliminates duplicated load / persist / claim patterns (76 fewer lines, same behaviour).
|
|
1192
|
+
|
|
1193
|
+
- **macOS wheels**: universal2 wheel replaces separate aarch64 + x86_64 artifacts — a single `.whl` runs natively on both Apple Silicon and Intel Macs.
|
|
1194
|
+
|
|
1195
|
+
- **`dagster-floe` 0.1.5**: adds `dagster-floe[kubernetes]` optional extra so consumers can declare the `kubernetes>=28` dependency explicitly when using the Kubernetes runner.
|
|
1196
|
+
|
|
1197
|
+
## v0.3.9
|
|
1198
|
+
|
|
1199
|
+
- **Column-level PII masking** (`docs/pii.md`):
|
|
1200
|
+
- New `pii:` entity block with per-column transform strategies: `hash` (SHA-256), `drop`, `nullify`, `redact`, and `mask`.
|
|
1201
|
+
- `mask` strategy supports a pattern string with `{firstN}` / `{lastN}` reveal tokens (e.g. `{first4}****{last4}` for card numbers).
|
|
1202
|
+
- `redact` strategy replaces every non-null value with a configurable string (default `[REDACTED]`).
|
|
1203
|
+
- Masking runs after schema validation and data-quality checks — rejected rows are never masked.
|
|
1204
|
+
- Compatible with `normalize_columns`: `pii.columns[].name` matches schema names, not post-normalization runtime names.
|
|
1205
|
+
- Full config-validation coverage: duplicate columns, unknown strategies, missing `mask_pattern`, and `strategy: drop` on primary-key columns are all rejected at load time.
|
|
1206
|
+
|
|
1207
|
+
- **OpenLineage integration** (`docs/lineage.md`):
|
|
1208
|
+
- New optional `lineage:` top-level config block that posts run and entity lifecycle events to any OpenLineage-compatible HTTP endpoint (Marquez, Atlan, OpenMetadata, Astronomer, etc.).
|
|
1209
|
+
- Emits four facets per entity `COMPLETE` event: `DataQualityMetrics`, `FloeQualityRun`, `SchemaDataset`, and `ParentRun`.
|
|
1210
|
+
- `ParentRun` facet auto-detected from Airflow (`AIRFLOW_CTX_*`) and Dagster (`DAGSTER_*`) environment variables.
|
|
1211
|
+
- Bearer auth via `api_key` field; supports `{{VAR}}` placeholder expansion and nested `${HOST}/path` variable resolution via `--profile`.
|
|
1212
|
+
- Configurable `timeout_secs` (default 5); fail-silent — HTTP errors emit warnings and do not affect run outcome.
|
|
1213
|
+
- Lineage emission is independent of `--log-format`; events are always posted when configured.
|
|
1214
|
+
- Lineage HTTP error warnings (401, timeouts) are always surfaced to stderr, even with `--log-format off`.
|
|
1215
|
+
- Lifecycle correctness: every run produces a well-formed `START → COMPLETE/FAIL` sequence; pre-execution failures (config validation, context construction) emit a paired `START` before `FAIL`; post-start errors do not re-emit `START`.
|
|
1216
|
+
|
|
1217
|
+
- **Profile validation and catalog hardening** (v0.3.8 patch):
|
|
1218
|
+
- Profile variable resolution errors now produce explicit config errors instead of silently falling back to unresolved placeholders.
|
|
1219
|
+
- Catalog override validation tightened for Unity and REST catalog blocks.
|
|
1220
|
+
|
|
1221
|
+
## v0.3.8
|
|
1222
|
+
|
|
1223
|
+
- Delta Lake + Unity Catalog registration:
|
|
1224
|
+
- new `unity` catalog type — after writing a Delta table to cloud storage, Floe
|
|
1225
|
+
optionally registers (or confirms) it as an EXTERNAL DELTA table in Databricks
|
|
1226
|
+
Unity Catalog via the REST API (`POST /api/2.1/unity-catalog/tables`).
|
|
1227
|
+
- existing-table safety: location mismatch and missing `storage_location`
|
|
1228
|
+
(managed table / view collision) are returned as explicit errors.
|
|
1229
|
+
- ADLS: `abfs://` URIs are normalised to `abfss://` before registration.
|
|
1230
|
+
- new `sink.accepted.delta` block: `catalog`, `schema`, `table` overrides.
|
|
1231
|
+
- `create_schema_if_missing` flag on the catalog definition.
|
|
1232
|
+
- Validation: `sink.accepted.delta` rejected on non-delta formats; Unity type
|
|
1233
|
+
rejected for Iceberg sinks; local storage rejected for Unity targets.
|
|
1234
|
+
- Three new report fields: `delta_catalog_name`, `delta_catalog_schema`,
|
|
1235
|
+
`delta_catalog_table`.
|
|
1236
|
+
- `token` accepts a literal PAT or a single `${ENV_VAR}` reference resolved from the OS environment at run time.
|
|
1237
|
+
|
|
1238
|
+
## v0.3.7
|
|
1239
|
+
|
|
1240
|
+
- Windows binary now distributed via [Scoop](https://github.com/malon64/scoop-floe): `scoop bucket add floe https://github.com/malon64/scoop-floe` then `scoop install floe`.
|
|
1241
|
+
- Release pipeline extended with a `x86_64-pc-windows-msvc` build target; artifact packaged as `.zip`.
|
|
1242
|
+
- GitHub Actions upgraded to Node.js 24 runtime across all workflows.
|
|
1243
|
+
|
|
1244
|
+
## v0.3.6
|
|
1245
|
+
|
|
1246
|
+
- Added `--profile <path>` flag to `floe run` for environment-specific variable injection into `{{VAR}}` config placeholders.
|
|
1247
|
+
- Profile variables support `${KEY}` cross-references; precedence chain: `env.vars` > `env.file` > profile variables.
|
|
1248
|
+
- Updated `profile.schema.yaml` with `kubernetes_job`/`databricks_job` runner types and accurate variable semantics.
|
|
1249
|
+
- Internal cleanup: shared test helper, consolidated `emit_log`, removed 8 redundant unit tests.
|
|
1250
|
+
- README rewrite: architecture diagram, pipeline stage table, `--profile` example.
|
|
1251
|
+
|
|
1252
|
+
## v0.3.5
|
|
1253
|
+
|
|
1254
|
+
- Incremental ingestion release finalization:
|
|
1255
|
+
- documented `incremental_mode: file`, entity `state.path`, and the `floe state inspect/reset` CLI flow
|
|
1256
|
+
- refreshed the repository example config to show file-based incremental ingestion state explicitly
|
|
1257
|
+
- clarified incremental planning and state-commit behavior in the docs summary/reference set
|
|
1258
|
+
- Packaging/version updates:
|
|
1259
|
+
- bumped `floe-core` and `floe-cli` to `0.3.5`
|
|
1260
|
+
|
|
1261
|
+
## v0.3.4
|
|
1262
|
+
|
|
1263
|
+
- Databricks runner foundation for orchestrator connectors:
|
|
1264
|
+
- added `databricks_job` runner contract support in Floe profile/manifest flow
|
|
1265
|
+
- added connector-side Databricks job client flow for Airflow and Dagster
|
|
1266
|
+
- standardized Databricks run status/result mapping with backend metadata and failure reason handling
|
|
1267
|
+
- added mocked integration coverage for success, failure, timeout, canceled, and infra failure paths
|
|
1268
|
+
- Packaging/version updates:
|
|
1269
|
+
- bumped `floe-core` and `floe-cli` to `0.3.4`
|
|
1270
|
+
- bumped `airflow-floe` and `dagster-floe` Python packages to `0.1.4`
|
|
1271
|
+
|
|
1272
|
+
## v0.3.3
|
|
1273
|
+
|
|
1274
|
+
- Runner contract and architecture cleanup:
|
|
1275
|
+
- standardized Kubernetes runner naming to `kubernetes_job` across core/CLI/orchestrator-facing manifest surfaces
|
|
1276
|
+
- removed legacy runner alias handling for `kubernetes`
|
|
1277
|
+
- removed legacy Airflow manifest bridge from `floe.plan.v1` to `floe.manifest.v1` (manifest-v1 only)
|
|
1278
|
+
- Connector reliability/refactor:
|
|
1279
|
+
- improved Kubernetes status normalization and failure-reason surfacing for orchestrator runner execution paths
|
|
1280
|
+
- reduced Airflow/Dagster drift in k8 runner handling and metadata surfaces
|
|
1281
|
+
- Packaging/version updates:
|
|
1282
|
+
- bumped `floe-core` and `floe-cli` to `0.3.3`
|
|
1283
|
+
- bumped `airflow-floe` and `dagster-floe` Python packages to `0.1.3`
|
|
1284
|
+
|
|
1285
|
+
## v0.3.2
|
|
1286
|
+
|
|
1287
|
+
- Delta schema evolution rollout:
|
|
1288
|
+
- added additive schema evolution support for Delta accepted writes across `append`, `overwrite`, `merge_scd1`, and `merge_scd2`
|
|
1289
|
+
- enforced rollout guardrails: additive-only changes, partitioned-table limitations, and merge-key protection against schema-evolved columns
|
|
1290
|
+
- added explicit observability via the entity report `schema_evolution` block and the `schema_evolution_applied` lifecycle event
|
|
1291
|
+
|
|
1292
|
+
## v0.3.1
|
|
1293
|
+
|
|
1294
|
+
- Delta merge write modes:
|
|
1295
|
+
- added `merge_scd1` support for keyed upserts into accepted Delta outputs
|
|
1296
|
+
- added `merge_scd2` support for history-preserving merges with managed current/validity columns
|
|
1297
|
+
- Schema/config validation:
|
|
1298
|
+
- added `schema.primary_key` as the explicit merge key surface, including validation for required, known, unique, non-nullable key columns
|
|
1299
|
+
- Merge/reporting refinements:
|
|
1300
|
+
- added configurable Delta merge options and SCD2 closed/unchanged reporting metrics
|
|
1301
|
+
|
|
1302
|
+
## v0.3.0
|
|
1303
|
+
|
|
1304
|
+
- Core performance and observability:
|
|
1305
|
+
- added internal phase timing instrumentation (gated by `FLOE_PERF_PHASE_TIMINGS`) for run- and entity-level phases
|
|
1306
|
+
- reduced CSV read overhead by reusing prechecked input columns in the read path
|
|
1307
|
+
- optimized JSON `read_parse` path by reducing intermediate row allocations during selector extraction.
|
|
1308
|
+
- Core refactoring (no intended behavior change):
|
|
1309
|
+
- split `run/entity` validation + split/reject flow into dedicated modules
|
|
1310
|
+
- split accepted write phase/report-state plumbing out of `run/entity/mod.rs`
|
|
1311
|
+
- further modularized writer internals (Delta/Iceberg) and report plumbing for maintainability.
|
|
1312
|
+
- Documentation:
|
|
1313
|
+
- refreshed v0.3 release communication draft and docs updates for the new core organization/perf instrumentation.
|
|
1314
|
+
|
|
1315
|
+
## v0.2.8
|
|
1316
|
+
|
|
1317
|
+
- Iceberg accepted sink:
|
|
1318
|
+
- runtime execution of `sink.accepted.partition_spec` for supported transforms (`identity`, `year`, `month`, `day`, `hour`)
|
|
1319
|
+
- write-time file sizing metrics in entity reports (`files_written`, `total_bytes_written`, `avg_file_size_mb`, `small_files_count`)
|
|
1320
|
+
- Delta accepted sink:
|
|
1321
|
+
- exact remote commit-log write metrics (S3/GCS/ADLS) collected via object store commit entry parsing (best-effort fallback keeps metrics nullable)
|
|
1322
|
+
- `dagster-floe` connector package version bumped to `0.1.2` in the same release prep.
|
|
1323
|
+
|
|
1324
|
+
## v0.2.7
|
|
1325
|
+
|
|
1326
|
+
- Added Iceberg S3 accepted sink support (filesystem catalog, no data catalog / Glue yet).
|
|
1327
|
+
- Improved `floe add-entity` bootstrap UX:
|
|
1328
|
+
- create a new config when target `-c` file does not exist
|
|
1329
|
+
- infer default entity name from input filename stem when `--name` is omitted
|
|
1330
|
+
- infer default format from input file extension when `--format` is omitted.
|
|
1331
|
+
- Hardened archive mode safety:
|
|
1332
|
+
- archive only resolved/processed inputs
|
|
1333
|
+
- collision-safe archive behavior (no silent overwrite on repeated filenames).
|
|
1334
|
+
|
|
1335
|
+
## v0.2.6
|
|
1336
|
+
|
|
1337
|
+
- Added local Iceberg accepted sink MVP (`sink.accepted.format: iceberg`) with filesystem table layout and append/overwrite snapshot behavior.
|
|
1338
|
+
- Added cloud source glob pattern support (e.g. `s3://.../sales_*.csv`) with prefix-derived listing + glob filtering.
|
|
1339
|
+
- Added `floe add-entity` CLI command to infer a schema from an input file and append an entity definition to a Floe config.
|
|
1340
|
+
|
|
1341
|
+
## v0.2.5
|
|
1342
|
+
|
|
1343
|
+
- Added `floe manifest generate` as the common manifest surface for orchestrators (`floe.manifest.v1`).
|
|
1344
|
+
- Airflow connector updates:
|
|
1345
|
+
- manifest-first operator flow (`FloeRunOperator` / `FloeManifestHook`)
|
|
1346
|
+
- multi-manifest DAG registration (`FLOE_MANIFEST_DIR`, one DAG per manifest)
|
|
1347
|
+
- streamed Floe stdout/stderr in task logs
|
|
1348
|
+
- enriched asset event metadata with per-entity report references.
|
|
1349
|
+
- Dagster connector updates:
|
|
1350
|
+
- migration to common manifest contract
|
|
1351
|
+
- strict manifest schema validation
|
|
1352
|
+
- multi-manifest loading with one Dagster job per manifest and collision guards.
|
|
1353
|
+
- CLI cleanup:
|
|
1354
|
+
- removed `floe validate --output json` (orchestrator automation now relies on generated manifests).
|
|
1355
|
+
- Documentation updates for local orchestrator workflows and manifest-driven integration specs.
|
|
1356
|
+
|
|
1357
|
+
## v0.2.4
|
|
1358
|
+
|
|
1359
|
+
- Added new source input formats: `tsv`, `xlsx`, `fixed`, `orc`, `avro`, and `xml`.
|
|
1360
|
+
- Added nested JSON selector extraction from `schema.columns[].source` with top-level-only mismatch checks.
|
|
1361
|
+
- Added source-column mapping behavior (`source` as input selector, `name` as output column) in validation and run surfaces.
|
|
1362
|
+
- Added XML selector support (`.` or `/` paths and terminal `@attribute`) with required `source.options.row_tag`.
|
|
1363
|
+
- Dry-run now resolves inputs before execution, shows resolved file lists (with capped preview), and uses the same resolved plan as real runs.
|
|
1364
|
+
- Refactored runtime/storage boundaries to reduce format- and storage-specific coupling in run orchestration.
|
|
1365
|
+
|
|
1366
|
+
## v0.2.3
|
|
1367
|
+
|
|
1368
|
+
- Added append/overwrite write modes for accepted parquet and delta outputs.
|
|
1369
|
+
- Rejected outputs now use dataset-style part files with write modes.
|
|
1370
|
+
- Append mode now seeds unique checks from existing accepted data (parquet + delta).
|
|
1371
|
+
- Part naming improvements:
|
|
1372
|
+
- UUID parts for append
|
|
1373
|
+
- sequential parts for overwrite
|
|
1374
|
+
- unified part listing/cleanup helpers.
|
|
1375
|
+
- Delta append fixes:
|
|
1376
|
+
- enforce schema nullability correctly
|
|
1377
|
+
- respect `normalize_columns` schema names.
|
|
1378
|
+
- Dagster Docker runner now writes outputs correctly.
|
|
1379
|
+
|
|
1380
|
+
## v0.2.2
|
|
1381
|
+
|
|
1382
|
+
- Added Dagster orchestrator connector (`orchestrators/dagster-floe`) with:
|
|
1383
|
+
- validate plan ingestion
|
|
1384
|
+
- NDJSON run event parsing
|
|
1385
|
+
- local and Docker runner integration examples/tests.
|
|
1386
|
+
- Introduced accepted write-mode scaffolding and design groundwork:
|
|
1387
|
+
- `WriteMode` in config model (default overwrite behavior retained)
|
|
1388
|
+
- accepted writer abstraction/module split for future append support
|
|
1389
|
+
- design note: `docs/design/write_modes.md`.
|
|
1390
|
+
- Release workflow hardening:
|
|
1391
|
+
- build Linux AMD64 artifacts with `cross` to improve glibc compatibility.
|
|
1392
|
+
|
|
1393
|
+
## v0.2.1
|
|
1394
|
+
|
|
1395
|
+
- Added official Docker image packaging and GHCR publishing on version tags.
|
|
1396
|
+
- Documentation: Docker usage added to installation guide and summary.
|
|
1397
|
+
- Added machine-readable run event logs (json/text) behind `--log-format`.
|
|
1398
|
+
- Fixes: `metadata.project` optional, CSV empty fields treated as null by default, default `cast_mode=strict`.
|
|
1399
|
+
|
|
1400
|
+
## v0.2.0
|
|
1401
|
+
|
|
1402
|
+
- Cloud storage registry with local/S3/ADLS/GCS support (canonical URIs).
|
|
1403
|
+
- Cloud IO for CSV/JSON/Parquet inputs via temp download + local read.
|
|
1404
|
+
- Accepted outputs: parquet (multipart with `max_size_per_file`) and delta (transactional object_store).
|
|
1405
|
+
- Reports and rejected outputs can be written to cloud via temp upload.
|
|
1406
|
+
- Schema mismatch policy (missing/extra columns) with file-level rejection handling.
|
|
1407
|
+
- Deterministic run pipeline (file precheck → row validation → entity-level unique).
|
|
1408
|
+
- JSON input modes: array (default) and NDJSON.
|
|
1409
|
+
- Config templating (`env` + `domains`) and improved validation errors.
|
|
1410
|
+
|
|
1411
|
+
## v0.1.7
|
|
1412
|
+
|
|
1413
|
+
- Added ADLS and GCS storage definitions with URI resolution and validation.
|
|
1414
|
+
- Implemented ADLS and GCS storage clients (list/download/upload) for file IO.
|
|
1415
|
+
- Added Delta transactional writes via object_store for S3, ADLS, and GCS.
|
|
1416
|
+
- Parquet accepted output now supports multipart chunking via `max_size_per_file`.
|
|
1417
|
+
- Added config templating (`env` + `domains`) and duplicate domain validation.
|
|
1418
|
+
- Refactored storage interface and reorganized test binaries/modules for faster CI.
|
|
1419
|
+
- CI: path-based filters, shared rust-cache across branches, and controlled test threading.
|
|
1420
|
+
|
|
1421
|
+
## v0.1.6
|
|
1422
|
+
|
|
1423
|
+
- Added JSON array input mode alongside NDJSON, with config validation updates.
|
|
1424
|
+
- Added entity-level accepted output with part files and cleared stale S3 outputs.
|
|
1425
|
+
- Enforced validation order (file → row → entity) and fixed unique checks by rechunking.
|
|
1426
|
+
- Expanded and reorganized core test suites (grouped modules) and improved CI test caching.
|
|
1427
|
+
|
|
1428
|
+
## v0.1.5
|
|
1429
|
+
|
|
1430
|
+
- Refactored storage configuration and IO to use a shared storage client abstraction.
|
|
1431
|
+
- Split the entity runner into focused modules and centralized warning handling.
|
|
1432
|
+
- Added configurable row error formatting (json/csv/text) in reports.
|
|
1433
|
+
- Unified input resolution logic and reorganized run/config tests.
|
|
1434
|
+
- Improved warn-mode performance and added lazy scan paths for CSV/Parquet.
|
|
1435
|
+
- Added benchmark harness docs/scripts and example reports for v0.1.5.
|
|
1436
|
+
|
|
1437
|
+
## v0.1.4
|
|
1438
|
+
|
|
1439
|
+
- Added delta accepted sink support with overwrite semantics (local storage only).
|
|
1440
|
+
- Added iceberg accepted sink configuration stub with a clear not-implemented error.
|
|
1441
|
+
- Added `sink.accepted.options` for parquet compression and row group sizing.
|
|
1442
|
+
|
|
1443
|
+
## v0.1.3
|
|
1444
|
+
|
|
1445
|
+
- Added a format registry with adapter traits for inputs and sinks.
|
|
1446
|
+
- Centralized file extension handling for local/S3 resolution.
|
|
1447
|
+
- Expanded input format scaffolding (Parquet/JSON readers) and IO dispatch.
|
|
1448
|
+
- Run pipeline refactor to use format adapters and shared IO helpers.
|
|
1449
|
+
|
|
1450
|
+
## v0.1.2
|
|
1451
|
+
|
|
1452
|
+
- Config validation now rejects unknown fields and adds broader negative test coverage.
|
|
1453
|
+
- CLI and report examples use build-time version strings (no hardcoded 0.1.0).
|
|
1454
|
+
- Release pipeline hardening: portable version bumping, allow-dirty publish, and tap checkout fixes.
|
|
1455
|
+
|
|
1456
|
+
## v0.1.1
|
|
1457
|
+
|
|
1458
|
+
- Global report layout with run-scoped directories and per-entity reports.
|
|
1459
|
+
- CI/CD release pipeline (crate publish, binaries, checksums, GitHub Release, Homebrew tap).
|
|
1460
|
+
- CLI output improvements and documentation refreshes for reports/checks.
|
|
1461
|
+
|
|
1462
|
+
## v0.1.0
|
|
1463
|
+
|
|
1464
|
+
- Initial CLI (`validate`, `run`) and YAML configuration schema.
|
|
1465
|
+
- CSV ingestion with Parquet accepted output and CSV rejected output.
|
|
1466
|
+
- Core checks: casting, not-null, unique; row-level rejection and run reports.
|
|
1467
|
+
- Multi-entity support with run-scoped reporting.
|