apache-airflow-providers-openlineage 2.7.0rc1__tar.gz → 2.7.1rc1__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.
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/PKG-INFO +6 -6
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/README.rst +3 -3
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/docs/changelog.rst +20 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/docs/index.rst +3 -3
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/provider.yaml +2 -1
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/pyproject.toml +3 -3
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/src/airflow/providers/openlineage/__init__.py +1 -1
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/src/airflow/providers/openlineage/utils/selective_enable.py +4 -2
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/src/airflow/providers/openlineage/utils/utils.py +30 -15
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/unit/openlineage/plugins/test_listener.py +32 -32
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/unit/openlineage/plugins/test_utils.py +13 -4
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/docs/.latest-doc-only-change.txt +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/docs/commits.rst +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/docs/conf.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/docs/configurations-ref.rst +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/docs/guides/developer.rst +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/docs/guides/structure.rst +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/docs/guides/user.rst +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/docs/installing-providers-from-sources.rst +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/docs/integration-logos/openlineage.svg +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/docs/macros.rst +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/docs/security.rst +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/docs/supported_classes.rst +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/src/airflow/__init__.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/src/airflow/providers/__init__.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/src/airflow/providers/openlineage/LICENSE +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/src/airflow/providers/openlineage/conf.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/src/airflow/providers/openlineage/extractors/__init__.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/src/airflow/providers/openlineage/extractors/base.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/src/airflow/providers/openlineage/extractors/bash.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/src/airflow/providers/openlineage/extractors/manager.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/src/airflow/providers/openlineage/extractors/python.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/src/airflow/providers/openlineage/facets/AirflowDagRunFacet.json +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/src/airflow/providers/openlineage/facets/AirflowDebugRunFacet.json +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/src/airflow/providers/openlineage/facets/AirflowJobFacet.json +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/src/airflow/providers/openlineage/facets/AirflowRunFacet.json +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/src/airflow/providers/openlineage/facets/AirflowStateRunFacet.json +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/src/airflow/providers/openlineage/facets/__init__.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/src/airflow/providers/openlineage/get_provider_info.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/src/airflow/providers/openlineage/operators/__init__.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/src/airflow/providers/openlineage/operators/empty.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/src/airflow/providers/openlineage/plugins/__init__.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/src/airflow/providers/openlineage/plugins/adapter.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/src/airflow/providers/openlineage/plugins/facets.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/src/airflow/providers/openlineage/plugins/listener.py +3 -3
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/src/airflow/providers/openlineage/plugins/macros.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/src/airflow/providers/openlineage/plugins/openlineage.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/src/airflow/providers/openlineage/sqlparser.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/src/airflow/providers/openlineage/utils/__init__.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/src/airflow/providers/openlineage/utils/spark.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/src/airflow/providers/openlineage/utils/sql.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/src/airflow/providers/openlineage/version_compat.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/conftest.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/integration/__init__.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/integration/openlineage/__init__.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/integration/openlineage/operators/__init__.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/system/__init__.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/system/openlineage/__init__.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/system/openlineage/conftest.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/system/openlineage/example_openlineage_base_complex_dag.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/system/openlineage/example_openlineage_base_simple_dag.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/system/openlineage/example_openlineage_defer_simple_dag.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/system/openlineage/example_openlineage_docs_file_dag.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/system/openlineage/example_openlineage_mapped_simple_dag.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/system/openlineage/example_openlineage_schedule_asset_or_time_dag.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/system/openlineage/example_openlineage_schedule_cron_dag.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/system/openlineage/example_openlineage_schedule_list_complex_assets_dag.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/system/openlineage/example_openlineage_schedule_list_multiple_assets_dag.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/system/openlineage/example_openlineage_schedule_list_single_asset_dag.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/system/openlineage/example_openlineage_schedule_multiple_assets_dag.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/system/openlineage/example_openlineage_schedule_single_asset_dag.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/system/openlineage/example_openlineage_schedule_timetable_dag.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/system/openlineage/example_openlineage_setup_teardown_dag.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/system/openlineage/example_openlineage_short_circuit_dag.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/system/openlineage/example_openlineage_task_groups_dag.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/system/openlineage/example_openlineage_taskflow_simple_dag.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/system/openlineage/example_openlineage_trigger_dag.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/system/openlineage/example_openlineage_versioned_dag.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/system/openlineage/expected_events/__init__.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/system/openlineage/expected_events/openlineage_base_complex_dag__af2.json +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/system/openlineage/expected_events/openlineage_base_complex_dag__af3.json +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/system/openlineage/expected_events/openlineage_base_simple_dag__af2.json +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/system/openlineage/expected_events/openlineage_base_simple_dag__af3.json +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/system/openlineage/expected_events/openlineage_defer_simple_dag.json +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/system/openlineage/expected_events/openlineage_docs_file_dag.json +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/system/openlineage/expected_events/openlineage_mapped_simple_dag.json +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/system/openlineage/expected_events/openlineage_schedule_asset_or_time_dag__af2.json +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/system/openlineage/expected_events/openlineage_schedule_asset_or_time_dag__af3.json +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/system/openlineage/expected_events/openlineage_schedule_cron_dag__af2.json +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/system/openlineage/expected_events/openlineage_schedule_cron_dag__af3.json +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/system/openlineage/expected_events/openlineage_schedule_list_complex_assets_dag__af2.json +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/system/openlineage/expected_events/openlineage_schedule_list_complex_assets_dag__af3.json +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/system/openlineage/expected_events/openlineage_schedule_list_multiple_assets_dag__af2.json +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/system/openlineage/expected_events/openlineage_schedule_list_multiple_assets_dag__af3.json +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/system/openlineage/expected_events/openlineage_schedule_list_single_asset_dag__af2.json +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/system/openlineage/expected_events/openlineage_schedule_list_single_asset_dag__af3.json +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/system/openlineage/expected_events/openlineage_schedule_multiple_assets_dag__af2.json +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/system/openlineage/expected_events/openlineage_schedule_multiple_assets_dag__af3.json +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/system/openlineage/expected_events/openlineage_schedule_single_asset_dag__af2.json +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/system/openlineage/expected_events/openlineage_schedule_single_asset_dag__af3.json +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/system/openlineage/expected_events/openlineage_schedule_timetable_dag__af2.json +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/system/openlineage/expected_events/openlineage_schedule_timetable_dag__af3.json +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/system/openlineage/expected_events/openlineage_setup_teardown_dag__af2.json +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/system/openlineage/expected_events/openlineage_setup_teardown_dag__af3.json +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/system/openlineage/expected_events/openlineage_short_circuit_dag.json +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/system/openlineage/expected_events/openlineage_task_groups_dag.json +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/system/openlineage/expected_events/openlineage_taskflow_simple_dag.json +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/system/openlineage/expected_events/openlineage_trigger_dag.json +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/system/openlineage/expected_events/openlineage_versioned_dag__af2.json +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/system/openlineage/expected_events/openlineage_versioned_dag__af3.json +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/system/openlineage/operator.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/system/openlineage/transport/__init__.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/system/openlineage/transport/variable.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/unit/__init__.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/unit/openlineage/__init__.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/unit/openlineage/dags/__init__.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/unit/openlineage/dags/test_openlineage_execution.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/unit/openlineage/extractors/__init__.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/unit/openlineage/extractors/test_base.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/unit/openlineage/extractors/test_bash.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/unit/openlineage/extractors/test_manager.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/unit/openlineage/extractors/test_python.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/unit/openlineage/log_config.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/unit/openlineage/operators/__init__.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/unit/openlineage/operators/test_empty.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/unit/openlineage/plugins/__init__.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/unit/openlineage/plugins/openlineage_configs/__init__.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/unit/openlineage/plugins/openlineage_configs/http.yaml +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/unit/openlineage/plugins/test_adapter.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/unit/openlineage/plugins/test_execution.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/unit/openlineage/plugins/test_facets.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/unit/openlineage/plugins/test_macros.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/unit/openlineage/plugins/test_openlineage.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/unit/openlineage/test_conf.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/unit/openlineage/test_sqlparser.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/unit/openlineage/utils/__init__.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/unit/openlineage/utils/custom_facet_fixture.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/unit/openlineage/utils/test_selective_enable.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/unit/openlineage/utils/test_spark.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/unit/openlineage/utils/test_sql.py +0 -0
- {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/unit/openlineage/utils/test_utils.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: apache-airflow-providers-openlineage
|
|
3
|
-
Version: 2.7.
|
|
3
|
+
Version: 2.7.1rc1
|
|
4
4
|
Summary: Provider package apache-airflow-providers-openlineage for Apache Airflow
|
|
5
5
|
Keywords: airflow-provider,openlineage,airflow,integration
|
|
6
6
|
Author-email: Apache Software Foundation <dev@airflow.apache.org>
|
|
@@ -27,8 +27,8 @@ Requires-Dist: attrs>=22.2
|
|
|
27
27
|
Requires-Dist: openlineage-integration-common>=1.36.0
|
|
28
28
|
Requires-Dist: openlineage-python>=1.36.0
|
|
29
29
|
Project-URL: Bug Tracker, https://github.com/apache/airflow/issues
|
|
30
|
-
Project-URL: Changelog, https://airflow.staged.apache.org/docs/apache-airflow-providers-openlineage/2.7.
|
|
31
|
-
Project-URL: Documentation, https://airflow.staged.apache.org/docs/apache-airflow-providers-openlineage/2.7.
|
|
30
|
+
Project-URL: Changelog, https://airflow.staged.apache.org/docs/apache-airflow-providers-openlineage/2.7.1/changelog.html
|
|
31
|
+
Project-URL: Documentation, https://airflow.staged.apache.org/docs/apache-airflow-providers-openlineage/2.7.1
|
|
32
32
|
Project-URL: Mastodon, https://fosstodon.org/@airflow
|
|
33
33
|
Project-URL: Slack Chat, https://s.apache.org/airflow-slack
|
|
34
34
|
Project-URL: Source Code, https://github.com/apache/airflow
|
|
@@ -59,7 +59,7 @@ Project-URL: YouTube, https://www.youtube.com/channel/UCSXwxpWZQ7XZ1WL3wqevChA/
|
|
|
59
59
|
|
|
60
60
|
Package ``apache-airflow-providers-openlineage``
|
|
61
61
|
|
|
62
|
-
Release: ``2.7.
|
|
62
|
+
Release: ``2.7.1``
|
|
63
63
|
|
|
64
64
|
|
|
65
65
|
`OpenLineage <https://openlineage.io/>`__
|
|
@@ -72,7 +72,7 @@ This is a provider package for ``openlineage`` provider. All classes for this pr
|
|
|
72
72
|
are in ``airflow.providers.openlineage`` python package.
|
|
73
73
|
|
|
74
74
|
You can find package information and changelog for the provider
|
|
75
|
-
in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-openlineage/2.7.
|
|
75
|
+
in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-openlineage/2.7.1/>`_.
|
|
76
76
|
|
|
77
77
|
Installation
|
|
78
78
|
------------
|
|
@@ -118,5 +118,5 @@ Dependent package
|
|
|
118
118
|
================================================================================================================== =================
|
|
119
119
|
|
|
120
120
|
The changelog for the provider package can be found in the
|
|
121
|
-
`changelog <https://airflow.apache.org/docs/apache-airflow-providers-openlineage/2.7.
|
|
121
|
+
`changelog <https://airflow.apache.org/docs/apache-airflow-providers-openlineage/2.7.1/changelog.html>`_.
|
|
122
122
|
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
|
|
24
24
|
Package ``apache-airflow-providers-openlineage``
|
|
25
25
|
|
|
26
|
-
Release: ``2.7.
|
|
26
|
+
Release: ``2.7.1``
|
|
27
27
|
|
|
28
28
|
|
|
29
29
|
`OpenLineage <https://openlineage.io/>`__
|
|
@@ -36,7 +36,7 @@ This is a provider package for ``openlineage`` provider. All classes for this pr
|
|
|
36
36
|
are in ``airflow.providers.openlineage`` python package.
|
|
37
37
|
|
|
38
38
|
You can find package information and changelog for the provider
|
|
39
|
-
in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-openlineage/2.7.
|
|
39
|
+
in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-openlineage/2.7.1/>`_.
|
|
40
40
|
|
|
41
41
|
Installation
|
|
42
42
|
------------
|
|
@@ -82,4 +82,4 @@ Dependent package
|
|
|
82
82
|
================================================================================================================== =================
|
|
83
83
|
|
|
84
84
|
The changelog for the provider package can be found in the
|
|
85
|
-
`changelog <https://airflow.apache.org/docs/apache-airflow-providers-openlineage/2.7.
|
|
85
|
+
`changelog <https://airflow.apache.org/docs/apache-airflow-providers-openlineage/2.7.1/changelog.html>`_.
|
|
@@ -26,6 +26,26 @@
|
|
|
26
26
|
Changelog
|
|
27
27
|
---------
|
|
28
28
|
|
|
29
|
+
2.7.1
|
|
30
|
+
.....
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
Release Date: ``|PypiReleaseDate|``
|
|
34
|
+
|
|
35
|
+
Bug Fixes
|
|
36
|
+
~~~~~~~~~
|
|
37
|
+
|
|
38
|
+
* ``fix: prevent user facets from overriding OL facets (#55765)``
|
|
39
|
+
|
|
40
|
+
Misc
|
|
41
|
+
~~~~
|
|
42
|
+
|
|
43
|
+
* ``Remove SDK dependency from SerializedDAG (#55538)``
|
|
44
|
+
* ``Decouple secrets_masker project from airflow configuration (#55259)``
|
|
45
|
+
|
|
46
|
+
.. Below changes are excluded from the changelog. Move them to
|
|
47
|
+
appropriate section above if needed. Do not delete the lines(!):
|
|
48
|
+
|
|
29
49
|
2.7.0
|
|
30
50
|
.....
|
|
31
51
|
|
|
@@ -81,7 +81,7 @@ apache-airflow-providers-openlineage package
|
|
|
81
81
|
`OpenLineage <https://openlineage.io/>`__
|
|
82
82
|
|
|
83
83
|
|
|
84
|
-
Release: 2.7.
|
|
84
|
+
Release: 2.7.1
|
|
85
85
|
|
|
86
86
|
Provider package
|
|
87
87
|
----------------
|
|
@@ -138,5 +138,5 @@ Downloading official packages
|
|
|
138
138
|
You can download officially released packages and verify their checksums and signatures from the
|
|
139
139
|
`Official Apache Download site <https://downloads.apache.org/airflow/providers/>`_
|
|
140
140
|
|
|
141
|
-
* `The apache-airflow-providers-openlineage 2.7.
|
|
142
|
-
* `The apache-airflow-providers-openlineage 2.7.
|
|
141
|
+
* `The apache-airflow-providers-openlineage 2.7.1 sdist package <https://downloads.apache.org/airflow/providers/apache_airflow_providers_openlineage-2.7.1.tar.gz>`_ (`asc <https://downloads.apache.org/airflow/providers/apache_airflow_providers_openlineage-2.7.1.tar.gz.asc>`__, `sha512 <https://downloads.apache.org/airflow/providers/apache_airflow_providers_openlineage-2.7.1.tar.gz.sha512>`__)
|
|
142
|
+
* `The apache-airflow-providers-openlineage 2.7.1 wheel package <https://downloads.apache.org/airflow/providers/apache_airflow_providers_openlineage-2.7.1-py3-none-any.whl>`_ (`asc <https://downloads.apache.org/airflow/providers/apache_airflow_providers_openlineage-2.7.1-py3-none-any.whl.asc>`__, `sha512 <https://downloads.apache.org/airflow/providers/apache_airflow_providers_openlineage-2.7.1-py3-none-any.whl.sha512>`__)
|
|
@@ -22,12 +22,13 @@ description: |
|
|
|
22
22
|
`OpenLineage <https://openlineage.io/>`__
|
|
23
23
|
|
|
24
24
|
state: ready
|
|
25
|
-
source-date-epoch:
|
|
25
|
+
source-date-epoch: 1757950855
|
|
26
26
|
# Note that those versions are maintained by release manager - do not update them manually
|
|
27
27
|
# with the exception of case where other provider in sources has >= new provider version.
|
|
28
28
|
# In such case adding >= NEW_VERSION and bumping to NEW_VERSION in a provider have
|
|
29
29
|
# to be done in the same PR
|
|
30
30
|
versions:
|
|
31
|
+
- 2.7.1
|
|
31
32
|
- 2.7.0
|
|
32
33
|
- 2.6.1
|
|
33
34
|
- 2.6.0
|
|
@@ -25,7 +25,7 @@ build-backend = "flit_core.buildapi"
|
|
|
25
25
|
|
|
26
26
|
[project]
|
|
27
27
|
name = "apache-airflow-providers-openlineage"
|
|
28
|
-
version = "2.7.
|
|
28
|
+
version = "2.7.1rc1"
|
|
29
29
|
description = "Provider package apache-airflow-providers-openlineage for Apache Airflow"
|
|
30
30
|
readme = "README.rst"
|
|
31
31
|
authors = [
|
|
@@ -105,8 +105,8 @@ apache-airflow-providers-common-sql = {workspace = true}
|
|
|
105
105
|
apache-airflow-providers-standard = {workspace = true}
|
|
106
106
|
|
|
107
107
|
[project.urls]
|
|
108
|
-
"Documentation" = "https://airflow.staged.apache.org/docs/apache-airflow-providers-openlineage/2.7.
|
|
109
|
-
"Changelog" = "https://airflow.staged.apache.org/docs/apache-airflow-providers-openlineage/2.7.
|
|
108
|
+
"Documentation" = "https://airflow.staged.apache.org/docs/apache-airflow-providers-openlineage/2.7.1"
|
|
109
|
+
"Changelog" = "https://airflow.staged.apache.org/docs/apache-airflow-providers-openlineage/2.7.1/changelog.html"
|
|
110
110
|
"Bug Tracker" = "https://github.com/apache/airflow/issues"
|
|
111
111
|
"Source Code" = "https://github.com/apache/airflow"
|
|
112
112
|
"Slack Chat" = "https://s.apache.org/airflow-slack"
|
|
@@ -29,7 +29,7 @@ from airflow import __version__ as airflow_version
|
|
|
29
29
|
|
|
30
30
|
__all__ = ["__version__"]
|
|
31
31
|
|
|
32
|
-
__version__ = "2.7.
|
|
32
|
+
__version__ = "2.7.1"
|
|
33
33
|
|
|
34
34
|
if packaging.version.parse(packaging.version.parse(airflow_version).base_version) < packaging.version.parse(
|
|
35
35
|
"2.10.0"
|
|
@@ -24,8 +24,10 @@ from airflow.models import Param
|
|
|
24
24
|
from airflow.models.xcom_arg import XComArg
|
|
25
25
|
|
|
26
26
|
if TYPE_CHECKING:
|
|
27
|
+
from airflow.providers.openlineage.utils.utils import AnyOperator
|
|
27
28
|
from airflow.sdk import DAG, BaseOperator
|
|
28
29
|
from airflow.sdk.definitions.mappedoperator import MappedOperator
|
|
30
|
+
from airflow.serialization.serialized_objects import SerializedDAG
|
|
29
31
|
|
|
30
32
|
T = TypeVar("T", bound=DAG | BaseOperator | MappedOperator)
|
|
31
33
|
else:
|
|
@@ -76,7 +78,7 @@ def disable_lineage(obj: T) -> T:
|
|
|
76
78
|
return obj
|
|
77
79
|
|
|
78
80
|
|
|
79
|
-
def is_task_lineage_enabled(task:
|
|
81
|
+
def is_task_lineage_enabled(task: AnyOperator) -> bool:
|
|
80
82
|
"""Check if selective enable OpenLineage parameter is set to True on task level."""
|
|
81
83
|
if task.params.get(ENABLE_OL_PARAM_NAME) is False:
|
|
82
84
|
log.debug(
|
|
@@ -85,7 +87,7 @@ def is_task_lineage_enabled(task: BaseOperator | MappedOperator) -> bool:
|
|
|
85
87
|
return task.params.get(ENABLE_OL_PARAM_NAME) is True
|
|
86
88
|
|
|
87
89
|
|
|
88
|
-
def is_dag_lineage_enabled(dag: DAG) -> bool:
|
|
90
|
+
def is_dag_lineage_enabled(dag: DAG | SerializedDAG) -> bool:
|
|
89
91
|
"""
|
|
90
92
|
Check if DAG is selectively enabled to emit OpenLineage events.
|
|
91
93
|
|
|
@@ -34,6 +34,7 @@ from airflow import __version__ as AIRFLOW_VERSION
|
|
|
34
34
|
|
|
35
35
|
# TODO: move this maybe to Airflow's logic?
|
|
36
36
|
from airflow.models import DagRun, TaskReschedule
|
|
37
|
+
from airflow.models.mappedoperator import MappedOperator as SerializedMappedOperator
|
|
37
38
|
from airflow.providers.openlineage import (
|
|
38
39
|
__version__ as OPENLINEAGE_PROVIDER_VERSION,
|
|
39
40
|
conf,
|
|
@@ -53,7 +54,7 @@ from airflow.providers.openlineage.utils.selective_enable import (
|
|
|
53
54
|
is_task_lineage_enabled,
|
|
54
55
|
)
|
|
55
56
|
from airflow.providers.openlineage.version_compat import AIRFLOW_V_3_0_PLUS, get_base_airflow_version_tuple
|
|
56
|
-
from airflow.serialization.serialized_objects import SerializedBaseOperator
|
|
57
|
+
from airflow.serialization.serialized_objects import SerializedBaseOperator, SerializedDAG
|
|
57
58
|
from airflow.utils.module_loading import import_string
|
|
58
59
|
|
|
59
60
|
if AIRFLOW_V_3_0_PLUS:
|
|
@@ -65,6 +66,8 @@ if not AIRFLOW_V_3_0_PLUS:
|
|
|
65
66
|
from airflow.utils.session import NEW_SESSION, provide_session
|
|
66
67
|
|
|
67
68
|
if TYPE_CHECKING:
|
|
69
|
+
from typing import TypeAlias
|
|
70
|
+
|
|
68
71
|
from openlineage.client.event_v2 import Dataset as OpenLineageDataset
|
|
69
72
|
from openlineage.client.facet_v2 import RunFacet, processing_engine_run
|
|
70
73
|
|
|
@@ -76,10 +79,11 @@ if TYPE_CHECKING:
|
|
|
76
79
|
Redactable,
|
|
77
80
|
Redacted,
|
|
78
81
|
SecretsMasker,
|
|
79
|
-
should_hide_value_for_key,
|
|
80
82
|
)
|
|
81
83
|
from airflow.sdk.execution_time.task_runner import RuntimeTaskInstance
|
|
82
84
|
from airflow.utils.state import DagRunState, TaskInstanceState
|
|
85
|
+
|
|
86
|
+
AnyOperator: TypeAlias = BaseOperator | MappedOperator | SerializedBaseOperator | SerializedMappedOperator
|
|
83
87
|
else:
|
|
84
88
|
try:
|
|
85
89
|
from airflow.sdk import DAG, BaseOperator
|
|
@@ -129,13 +133,13 @@ def try_import_from_string(string: str) -> Any:
|
|
|
129
133
|
return import_string(string)
|
|
130
134
|
|
|
131
135
|
|
|
132
|
-
def get_operator_class(task: BaseOperator) -> type:
|
|
136
|
+
def get_operator_class(task: BaseOperator | MappedOperator) -> type:
|
|
133
137
|
if task.__class__.__name__ in ("DecoratedMappedOperator", "MappedOperator"):
|
|
134
138
|
return task.operator_class
|
|
135
139
|
return task.__class__
|
|
136
140
|
|
|
137
141
|
|
|
138
|
-
def get_operator_provider_version(operator:
|
|
142
|
+
def get_operator_provider_version(operator: AnyOperator) -> str | None:
|
|
139
143
|
"""Get the provider package version for the given operator."""
|
|
140
144
|
try:
|
|
141
145
|
class_path = get_fully_qualified_class_name(operator)
|
|
@@ -215,7 +219,7 @@ def _truncate_string_to_byte_size(s: str, max_size: int = _MAX_DOC_BYTES) -> str
|
|
|
215
219
|
return truncated.decode("utf-8", errors="ignore")
|
|
216
220
|
|
|
217
221
|
|
|
218
|
-
def get_task_documentation(operator:
|
|
222
|
+
def get_task_documentation(operator: AnyOperator | None) -> tuple[str | None, str | None]:
|
|
219
223
|
"""Get task documentation and mime type, truncated to _MAX_DOC_BYTES bytes length, if present."""
|
|
220
224
|
if not operator:
|
|
221
225
|
return None, None
|
|
@@ -242,7 +246,7 @@ def get_task_documentation(operator: BaseOperator | MappedOperator | None) -> tu
|
|
|
242
246
|
return None, None
|
|
243
247
|
|
|
244
248
|
|
|
245
|
-
def get_dag_documentation(dag: DAG | None) -> tuple[str | None, str | None]:
|
|
249
|
+
def get_dag_documentation(dag: DAG | SerializedDAG | None) -> tuple[str | None, str | None]:
|
|
246
250
|
"""Get dag documentation and mime type, truncated to _MAX_DOC_BYTES bytes length, if present."""
|
|
247
251
|
if not dag:
|
|
248
252
|
return None, None
|
|
@@ -313,23 +317,23 @@ def get_user_provided_run_facets(ti: TaskInstance, ti_state: TaskInstanceState)
|
|
|
313
317
|
return custom_facets
|
|
314
318
|
|
|
315
319
|
|
|
316
|
-
def get_fully_qualified_class_name(operator:
|
|
317
|
-
if isinstance(operator, (
|
|
320
|
+
def get_fully_qualified_class_name(operator: AnyOperator) -> str:
|
|
321
|
+
if isinstance(operator, (SerializedMappedOperator, SerializedBaseOperator)):
|
|
318
322
|
# as in airflow.api_connexion.schemas.common_schema.ClassReferenceSchema
|
|
319
323
|
return operator._task_module + "." + operator.task_type
|
|
320
324
|
op_class = get_operator_class(operator)
|
|
321
325
|
return op_class.__module__ + "." + op_class.__name__
|
|
322
326
|
|
|
323
327
|
|
|
324
|
-
def is_operator_disabled(operator:
|
|
328
|
+
def is_operator_disabled(operator: AnyOperator) -> bool:
|
|
325
329
|
return get_fully_qualified_class_name(operator) in conf.disabled_operators()
|
|
326
330
|
|
|
327
331
|
|
|
328
|
-
def is_selective_lineage_enabled(obj: DAG |
|
|
332
|
+
def is_selective_lineage_enabled(obj: DAG | SerializedDAG | AnyOperator) -> bool:
|
|
329
333
|
"""If selective enable is active check if DAG or Task is enabled to emit events."""
|
|
330
334
|
if not conf.selective_enable():
|
|
331
335
|
return True
|
|
332
|
-
if isinstance(obj, DAG):
|
|
336
|
+
if isinstance(obj, (DAG, SerializedDAG)):
|
|
333
337
|
return is_dag_lineage_enabled(obj)
|
|
334
338
|
if isinstance(obj, (BaseOperator, MappedOperator)):
|
|
335
339
|
return is_task_lineage_enabled(obj)
|
|
@@ -750,7 +754,7 @@ def get_airflow_state_run_facet(
|
|
|
750
754
|
}
|
|
751
755
|
|
|
752
756
|
|
|
753
|
-
def _get_tasks_details(dag: DAG) -> dict:
|
|
757
|
+
def _get_tasks_details(dag: DAG | SerializedDAG) -> dict:
|
|
754
758
|
tasks = {
|
|
755
759
|
single_task.task_id: {
|
|
756
760
|
"operator": get_fully_qualified_class_name(single_task),
|
|
@@ -769,7 +773,7 @@ def _get_tasks_details(dag: DAG) -> dict:
|
|
|
769
773
|
return tasks
|
|
770
774
|
|
|
771
775
|
|
|
772
|
-
def _get_task_groups_details(dag: DAG) -> dict:
|
|
776
|
+
def _get_task_groups_details(dag: DAG | SerializedDAG) -> dict:
|
|
773
777
|
return {
|
|
774
778
|
tg_id: {
|
|
775
779
|
"parent_group": tg.parent_group.group_id,
|
|
@@ -781,7 +785,7 @@ def _get_task_groups_details(dag: DAG) -> dict:
|
|
|
781
785
|
}
|
|
782
786
|
|
|
783
787
|
|
|
784
|
-
def _emits_ol_events(task:
|
|
788
|
+
def _emits_ol_events(task: AnyOperator) -> bool:
|
|
785
789
|
config_selective_enabled = is_selective_lineage_enabled(task)
|
|
786
790
|
config_disabled_for_operators = is_operator_disabled(task)
|
|
787
791
|
# empty operators without callbacks/outlets are skipped for optimization by Airflow
|
|
@@ -842,8 +846,19 @@ class OpenLineageRedactor(SecretsMasker):
|
|
|
842
846
|
instance = cls()
|
|
843
847
|
instance.patterns = other.patterns
|
|
844
848
|
instance.replacer = other.replacer
|
|
849
|
+
for attr in ["sensitive_variables_fields", "min_length_to_mask", "secret_mask_adapter"]:
|
|
850
|
+
if hasattr(other, attr):
|
|
851
|
+
setattr(instance, attr, getattr(other, attr))
|
|
845
852
|
return instance
|
|
846
853
|
|
|
854
|
+
def _should_hide_value_for_key(self, name):
|
|
855
|
+
"""Compatibility helper for should_hide_value_for_key across Airflow versions."""
|
|
856
|
+
try:
|
|
857
|
+
return self.should_hide_value_for_key(name)
|
|
858
|
+
except AttributeError:
|
|
859
|
+
# fallback to module level function
|
|
860
|
+
return should_hide_value_for_key(name)
|
|
861
|
+
|
|
847
862
|
def _redact(self, item: Redactable, name: str | None, depth: int, max_depth: int, **kwargs) -> Redacted: # type: ignore[override]
|
|
848
863
|
if AIRFLOW_V_3_0_PLUS:
|
|
849
864
|
# Keep compatibility for Airflow 2.x, remove when Airflow 3.0 is the minimum version
|
|
@@ -864,7 +879,7 @@ class OpenLineageRedactor(SecretsMasker):
|
|
|
864
879
|
# Those are deprecated values in _DEPRECATION_REPLACEMENTS
|
|
865
880
|
# in airflow.utils.context.Context
|
|
866
881
|
return "<<non-redactable: Proxy>>"
|
|
867
|
-
if name and
|
|
882
|
+
if name and self._should_hide_value_for_key(name):
|
|
868
883
|
return self._redact_all(item, depth, max_depth)
|
|
869
884
|
if attrs.has(type(item)):
|
|
870
885
|
# TODO: FIXME when mypy gets compatible with new attrs
|
|
@@ -314,8 +314,8 @@ class TestOpenLineageListenerAirflow2:
|
|
|
314
314
|
)
|
|
315
315
|
def test_adapter_start_task_is_called_with_proper_arguments(
|
|
316
316
|
self,
|
|
317
|
-
mock_get_airflow_mapped_task_facet,
|
|
318
317
|
mock_get_user_provided_run_facets,
|
|
318
|
+
mock_get_airflow_mapped_task_facet,
|
|
319
319
|
mock_get_airflow_run_facet,
|
|
320
320
|
mock_get_task_parent_run_facet,
|
|
321
321
|
mock_disabled,
|
|
@@ -332,7 +332,7 @@ class TestOpenLineageListenerAirflow2:
|
|
|
332
332
|
|
|
333
333
|
listener, task_instance = self._create_listener_and_task_instance()
|
|
334
334
|
mock_get_airflow_mapped_task_facet.return_value = {"mapped_facet": 1}
|
|
335
|
-
mock_get_user_provided_run_facets.return_value = {"custom_user_facet": 2}
|
|
335
|
+
mock_get_user_provided_run_facets.return_value = {"custom_user_facet": 2, "parent": 99}
|
|
336
336
|
mock_get_airflow_run_facet.return_value = {"airflow_run_facet": 3}
|
|
337
337
|
mock_get_task_parent_run_facet.return_value = {"parent": 4}
|
|
338
338
|
mock_debug_facet.return_value = {"debug": "packages"}
|
|
@@ -371,8 +371,8 @@ class TestOpenLineageListenerAirflow2:
|
|
|
371
371
|
)
|
|
372
372
|
def test_adapter_start_task_is_called_with_dag_owners_when_task_owner_is_default(
|
|
373
373
|
self,
|
|
374
|
-
mock_get_airflow_mapped_task_facet,
|
|
375
374
|
mock_get_user_provided_run_facets,
|
|
375
|
+
mock_get_airflow_mapped_task_facet,
|
|
376
376
|
mock_get_airflow_run_facet,
|
|
377
377
|
mock_get_task_parent_run_facet,
|
|
378
378
|
mock_disabled,
|
|
@@ -381,7 +381,7 @@ class TestOpenLineageListenerAirflow2:
|
|
|
381
381
|
):
|
|
382
382
|
listener, task_instance = self._create_listener_and_task_instance()
|
|
383
383
|
mock_get_airflow_mapped_task_facet.return_value = {"mapped_facet": 1}
|
|
384
|
-
mock_get_user_provided_run_facets.return_value = {"custom_user_facet": 2}
|
|
384
|
+
mock_get_user_provided_run_facets.return_value = {"custom_user_facet": 2, "parent": 99}
|
|
385
385
|
mock_get_airflow_run_facet.return_value = {"airflow_run_facet": 3}
|
|
386
386
|
mock_get_task_parent_run_facet.return_value = {"parent": 4}
|
|
387
387
|
mock_debug_facet.return_value = {"debug": "packages"}
|
|
@@ -405,8 +405,8 @@ class TestOpenLineageListenerAirflow2:
|
|
|
405
405
|
def test_adapter_start_task_is_called_with_dag_description_when_task_doc_is_empty(
|
|
406
406
|
self,
|
|
407
407
|
mock_get_job_name,
|
|
408
|
-
mock_get_airflow_mapped_task_facet,
|
|
409
408
|
mock_get_user_provided_run_facets,
|
|
409
|
+
mock_get_airflow_mapped_task_facet,
|
|
410
410
|
mock_get_airflow_run_facet,
|
|
411
411
|
mock_get_task_parent_run_facet,
|
|
412
412
|
mock_disabled,
|
|
@@ -416,7 +416,7 @@ class TestOpenLineageListenerAirflow2:
|
|
|
416
416
|
listener, task_instance = self._create_listener_and_task_instance()
|
|
417
417
|
mock_get_job_name.return_value = "job_name"
|
|
418
418
|
mock_get_airflow_mapped_task_facet.return_value = {"mapped_facet": 1}
|
|
419
|
-
mock_get_user_provided_run_facets.return_value = {"custom_user_facet": 2}
|
|
419
|
+
mock_get_user_provided_run_facets.return_value = {"custom_user_facet": 2, "parent": 99}
|
|
420
420
|
mock_get_airflow_run_facet.return_value = {"airflow_run_facet": 3}
|
|
421
421
|
mock_get_task_parent_run_facet.return_value = {"parent": 4}
|
|
422
422
|
mock_debug_facet.return_value = {"debug": "packages"}
|
|
@@ -457,7 +457,7 @@ class TestOpenLineageListenerAirflow2:
|
|
|
457
457
|
|
|
458
458
|
listener, task_instance = self._create_listener_and_task_instance()
|
|
459
459
|
task_instance.logical_date = timezone.datetime(2020, 1, 1, 1, 1, 1)
|
|
460
|
-
mock_get_user_provided_run_facets.return_value = {"custom_user_facet": 2}
|
|
460
|
+
mock_get_user_provided_run_facets.return_value = {"custom_user_facet": 2, "parent": 99}
|
|
461
461
|
mock_get_airflow_run_facet.return_value = {"airflow": {"task": "..."}}
|
|
462
462
|
mock_get_task_parent_run_facet.return_value = {"parent": 4}
|
|
463
463
|
mock_debug_facet.return_value = {"debug": "packages"}
|
|
@@ -499,8 +499,8 @@ class TestOpenLineageListenerAirflow2:
|
|
|
499
499
|
)
|
|
500
500
|
def test_adapter_fail_task_is_called_with_dag_owners_when_task_owner_is_default(
|
|
501
501
|
self,
|
|
502
|
-
mock_get_airflow_mapped_task_facet,
|
|
503
502
|
mock_get_user_provided_run_facets,
|
|
503
|
+
mock_get_airflow_mapped_task_facet,
|
|
504
504
|
mock_get_airflow_run_facet,
|
|
505
505
|
mock_get_task_parent_run_facet,
|
|
506
506
|
mock_disabled,
|
|
@@ -509,7 +509,7 @@ class TestOpenLineageListenerAirflow2:
|
|
|
509
509
|
):
|
|
510
510
|
listener, task_instance = self._create_listener_and_task_instance()
|
|
511
511
|
mock_get_airflow_mapped_task_facet.return_value = {"mapped_facet": 1}
|
|
512
|
-
mock_get_user_provided_run_facets.return_value = {"custom_user_facet": 2}
|
|
512
|
+
mock_get_user_provided_run_facets.return_value = {"custom_user_facet": 2, "parent": 99}
|
|
513
513
|
mock_get_airflow_run_facet.return_value = {"airflow_run_facet": 3}
|
|
514
514
|
mock_get_task_parent_run_facet.return_value = {"parent": 4}
|
|
515
515
|
mock_debug_facet.return_value = {"debug": "packages"}
|
|
@@ -534,8 +534,8 @@ class TestOpenLineageListenerAirflow2:
|
|
|
534
534
|
)
|
|
535
535
|
def test_adapter_fail_task_is_called_with_dag_description_when_task_doc_is_empty(
|
|
536
536
|
self,
|
|
537
|
-
mock_get_airflow_mapped_task_facet,
|
|
538
537
|
mock_get_user_provided_run_facets,
|
|
538
|
+
mock_get_airflow_mapped_task_facet,
|
|
539
539
|
mock_get_airflow_run_facet,
|
|
540
540
|
mock_get_task_parent_run_facet,
|
|
541
541
|
mock_disabled,
|
|
@@ -544,7 +544,7 @@ class TestOpenLineageListenerAirflow2:
|
|
|
544
544
|
):
|
|
545
545
|
listener, task_instance = self._create_listener_and_task_instance()
|
|
546
546
|
mock_get_airflow_mapped_task_facet.return_value = {"mapped_facet": 1}
|
|
547
|
-
mock_get_user_provided_run_facets.return_value = {"custom_user_facet": 2}
|
|
547
|
+
mock_get_user_provided_run_facets.return_value = {"custom_user_facet": 2, "parent": 99}
|
|
548
548
|
mock_get_airflow_run_facet.return_value = {"airflow_run_facet": 3}
|
|
549
549
|
mock_get_task_parent_run_facet.return_value = {"parent": 4}
|
|
550
550
|
mock_debug_facet.return_value = {"debug": "packages"}
|
|
@@ -588,7 +588,7 @@ class TestOpenLineageListenerAirflow2:
|
|
|
588
588
|
time_machine.move_to(timezone.datetime(2023, 1, 3, 13, 1, 1))
|
|
589
589
|
|
|
590
590
|
listener, task_instance = self._create_listener_and_task_instance()
|
|
591
|
-
mock_get_user_provided_run_facets.return_value = {"custom_user_facet": 2}
|
|
591
|
+
mock_get_user_provided_run_facets.return_value = {"custom_user_facet": 2, "parent": 99}
|
|
592
592
|
mock_get_airflow_run_facet.return_value = {"airflow": {"task": "..."}}
|
|
593
593
|
mock_get_task_parent_run_facet.return_value = {"parent": 4}
|
|
594
594
|
mock_debug_facet.return_value = {"debug": "packages"}
|
|
@@ -630,8 +630,8 @@ class TestOpenLineageListenerAirflow2:
|
|
|
630
630
|
)
|
|
631
631
|
def test_adapter_complete_task_is_called_with_dag_owners_when_task_owner_is_default(
|
|
632
632
|
self,
|
|
633
|
-
mock_get_airflow_mapped_task_facet,
|
|
634
633
|
mock_get_user_provided_run_facets,
|
|
634
|
+
mock_get_airflow_mapped_task_facet,
|
|
635
635
|
mock_get_airflow_run_facet,
|
|
636
636
|
mock_get_task_parent_run_facet,
|
|
637
637
|
mock_disabled,
|
|
@@ -640,7 +640,7 @@ class TestOpenLineageListenerAirflow2:
|
|
|
640
640
|
):
|
|
641
641
|
listener, task_instance = self._create_listener_and_task_instance()
|
|
642
642
|
mock_get_airflow_mapped_task_facet.return_value = {"mapped_facet": 1}
|
|
643
|
-
mock_get_user_provided_run_facets.return_value = {"custom_user_facet": 2}
|
|
643
|
+
mock_get_user_provided_run_facets.return_value = {"custom_user_facet": 2, "parent": 99}
|
|
644
644
|
mock_get_airflow_run_facet.return_value = {"airflow_run_facet": 3}
|
|
645
645
|
mock_get_task_parent_run_facet.return_value = {"parent": 4}
|
|
646
646
|
mock_debug_facet.return_value = {"debug": "packages"}
|
|
@@ -662,8 +662,8 @@ class TestOpenLineageListenerAirflow2:
|
|
|
662
662
|
)
|
|
663
663
|
def test_adapter_complete_task_is_called_with_dag_description_when_task_doc_is_empty(
|
|
664
664
|
self,
|
|
665
|
-
mock_get_airflow_mapped_task_facet,
|
|
666
665
|
mock_get_user_provided_run_facets,
|
|
666
|
+
mock_get_airflow_mapped_task_facet,
|
|
667
667
|
mock_get_airflow_run_facet,
|
|
668
668
|
mock_get_task_parent_run_facet,
|
|
669
669
|
mock_disabled,
|
|
@@ -672,7 +672,7 @@ class TestOpenLineageListenerAirflow2:
|
|
|
672
672
|
):
|
|
673
673
|
listener, task_instance = self._create_listener_and_task_instance()
|
|
674
674
|
mock_get_airflow_mapped_task_facet.return_value = {"mapped_facet": 1}
|
|
675
|
-
mock_get_user_provided_run_facets.return_value = {"custom_user_facet": 2}
|
|
675
|
+
mock_get_user_provided_run_facets.return_value = {"custom_user_facet": 2, "parent": 99}
|
|
676
676
|
mock_get_airflow_run_facet.return_value = {"airflow_run_facet": 3}
|
|
677
677
|
mock_get_task_parent_run_facet.return_value = {"parent": 4}
|
|
678
678
|
mock_debug_facet.return_value = {"debug": "packages"}
|
|
@@ -1198,8 +1198,8 @@ class TestOpenLineageListenerAirflow3:
|
|
|
1198
1198
|
)
|
|
1199
1199
|
def test_adapter_start_task_is_called_with_proper_arguments(
|
|
1200
1200
|
self,
|
|
1201
|
-
mock_get_airflow_mapped_task_facet,
|
|
1202
1201
|
mock_get_user_provided_run_facets,
|
|
1202
|
+
mock_get_airflow_mapped_task_facet,
|
|
1203
1203
|
mock_get_airflow_run_facet,
|
|
1204
1204
|
mock_get_task_parent_run_facet,
|
|
1205
1205
|
mock_disabled,
|
|
@@ -1217,7 +1217,7 @@ class TestOpenLineageListenerAirflow3:
|
|
|
1217
1217
|
listener, task_instance = self._create_listener_and_task_instance()
|
|
1218
1218
|
|
|
1219
1219
|
mock_get_airflow_mapped_task_facet.return_value = {"mapped_facet": 1}
|
|
1220
|
-
mock_get_user_provided_run_facets.return_value = {"custom_user_facet": 2}
|
|
1220
|
+
mock_get_user_provided_run_facets.return_value = {"custom_user_facet": 2, "parent": 99}
|
|
1221
1221
|
mock_get_airflow_run_facet.return_value = {"airflow_run_facet": 3}
|
|
1222
1222
|
mock_get_task_parent_run_facet.return_value = {"parent": 4}
|
|
1223
1223
|
mock_debug_facet.return_value = {"debug": "packages"}
|
|
@@ -1256,8 +1256,8 @@ class TestOpenLineageListenerAirflow3:
|
|
|
1256
1256
|
)
|
|
1257
1257
|
def test_adapter_start_task_is_called_with_dag_owners_when_task_owner_is_default(
|
|
1258
1258
|
self,
|
|
1259
|
-
mock_get_airflow_mapped_task_facet,
|
|
1260
1259
|
mock_get_user_provided_run_facets,
|
|
1260
|
+
mock_get_airflow_mapped_task_facet,
|
|
1261
1261
|
mock_get_airflow_run_facet,
|
|
1262
1262
|
mock_get_task_parent_run_facet,
|
|
1263
1263
|
mock_disabled,
|
|
@@ -1266,7 +1266,7 @@ class TestOpenLineageListenerAirflow3:
|
|
|
1266
1266
|
):
|
|
1267
1267
|
listener, task_instance = self._create_listener_and_task_instance()
|
|
1268
1268
|
mock_get_airflow_mapped_task_facet.return_value = {"mapped_facet": 1}
|
|
1269
|
-
mock_get_user_provided_run_facets.return_value = {"custom_user_facet": 2}
|
|
1269
|
+
mock_get_user_provided_run_facets.return_value = {"custom_user_facet": 2, "parent": 99}
|
|
1270
1270
|
mock_get_airflow_run_facet.return_value = {"airflow_run_facet": 3}
|
|
1271
1271
|
mock_get_task_parent_run_facet.return_value = {"parent": 4}
|
|
1272
1272
|
mock_debug_facet.return_value = {"debug": "packages"}
|
|
@@ -1291,8 +1291,8 @@ class TestOpenLineageListenerAirflow3:
|
|
|
1291
1291
|
def test_adapter_start_task_is_called_with_dag_description_when_task_doc_is_empty(
|
|
1292
1292
|
self,
|
|
1293
1293
|
mock_get_job_name,
|
|
1294
|
-
mock_get_airflow_mapped_task_facet,
|
|
1295
1294
|
mock_get_user_provided_run_facets,
|
|
1295
|
+
mock_get_airflow_mapped_task_facet,
|
|
1296
1296
|
mock_get_airflow_run_facet,
|
|
1297
1297
|
mock_get_task_parent_run_facet,
|
|
1298
1298
|
mock_disabled,
|
|
@@ -1302,7 +1302,7 @@ class TestOpenLineageListenerAirflow3:
|
|
|
1302
1302
|
listener, task_instance = self._create_listener_and_task_instance()
|
|
1303
1303
|
mock_get_job_name.return_value = "job_name"
|
|
1304
1304
|
mock_get_airflow_mapped_task_facet.return_value = {"mapped_facet": 1}
|
|
1305
|
-
mock_get_user_provided_run_facets.return_value = {"custom_user_facet": 2}
|
|
1305
|
+
mock_get_user_provided_run_facets.return_value = {"custom_user_facet": 2, "parent": 99}
|
|
1306
1306
|
mock_get_airflow_run_facet.return_value = {"airflow_run_facet": 3}
|
|
1307
1307
|
mock_get_task_parent_run_facet.return_value = {"parent": 4}
|
|
1308
1308
|
mock_debug_facet.return_value = {"debug": "packages"}
|
|
@@ -1343,7 +1343,7 @@ class TestOpenLineageListenerAirflow3:
|
|
|
1343
1343
|
|
|
1344
1344
|
listener, task_instance = self._create_listener_and_task_instance()
|
|
1345
1345
|
task_instance.get_template_context()["dag_run"].logical_date = timezone.datetime(2020, 1, 1, 1, 1, 1)
|
|
1346
|
-
mock_get_user_provided_run_facets.return_value = {"custom_user_facet": 2}
|
|
1346
|
+
mock_get_user_provided_run_facets.return_value = {"custom_user_facet": 2, "parent": 99}
|
|
1347
1347
|
mock_get_airflow_run_facet.return_value = {"airflow": {"task": "..."}}
|
|
1348
1348
|
mock_get_task_parent_run_facet.return_value = {"parent": 4}
|
|
1349
1349
|
mock_debug_facet.return_value = {"debug": "packages"}
|
|
@@ -1383,8 +1383,8 @@ class TestOpenLineageListenerAirflow3:
|
|
|
1383
1383
|
)
|
|
1384
1384
|
def test_adapter_fail_task_is_called_with_dag_owners_when_task_owner_is_default(
|
|
1385
1385
|
self,
|
|
1386
|
-
mock_get_airflow_mapped_task_facet,
|
|
1387
1386
|
mock_get_user_provided_run_facets,
|
|
1387
|
+
mock_get_airflow_mapped_task_facet,
|
|
1388
1388
|
mock_get_airflow_run_facet,
|
|
1389
1389
|
mock_get_task_parent_run_facet,
|
|
1390
1390
|
mock_disabled,
|
|
@@ -1393,7 +1393,7 @@ class TestOpenLineageListenerAirflow3:
|
|
|
1393
1393
|
):
|
|
1394
1394
|
listener, task_instance = self._create_listener_and_task_instance()
|
|
1395
1395
|
mock_get_airflow_mapped_task_facet.return_value = {"mapped_facet": 1}
|
|
1396
|
-
mock_get_user_provided_run_facets.return_value = {"custom_user_facet": 2}
|
|
1396
|
+
mock_get_user_provided_run_facets.return_value = {"custom_user_facet": 2, "parent": 99}
|
|
1397
1397
|
mock_get_airflow_run_facet.return_value = {"airflow_run_facet": 3}
|
|
1398
1398
|
mock_get_task_parent_run_facet.return_value = {"parent": 4}
|
|
1399
1399
|
mock_debug_facet.return_value = {"debug": "packages"}
|
|
@@ -1418,8 +1418,8 @@ class TestOpenLineageListenerAirflow3:
|
|
|
1418
1418
|
)
|
|
1419
1419
|
def test_adapter_fail_task_is_called_with_dag_description_when_task_doc_is_empty(
|
|
1420
1420
|
self,
|
|
1421
|
-
mock_get_airflow_mapped_task_facet,
|
|
1422
1421
|
mock_get_user_provided_run_facets,
|
|
1422
|
+
mock_get_airflow_mapped_task_facet,
|
|
1423
1423
|
mock_get_airflow_run_facet,
|
|
1424
1424
|
mock_get_task_parent_run_facet,
|
|
1425
1425
|
mock_disabled,
|
|
@@ -1428,7 +1428,7 @@ class TestOpenLineageListenerAirflow3:
|
|
|
1428
1428
|
):
|
|
1429
1429
|
listener, task_instance = self._create_listener_and_task_instance()
|
|
1430
1430
|
mock_get_airflow_mapped_task_facet.return_value = {"mapped_facet": 1}
|
|
1431
|
-
mock_get_user_provided_run_facets.return_value = {"custom_user_facet": 2}
|
|
1431
|
+
mock_get_user_provided_run_facets.return_value = {"custom_user_facet": 2, "parent": 99}
|
|
1432
1432
|
mock_get_airflow_run_facet.return_value = {"airflow_run_facet": 3}
|
|
1433
1433
|
mock_get_task_parent_run_facet.return_value = {"parent": 4}
|
|
1434
1434
|
mock_debug_facet.return_value = {"debug": "packages"}
|
|
@@ -1526,7 +1526,7 @@ class TestOpenLineageListenerAirflow3:
|
|
|
1526
1526
|
time_machine.move_to(timezone.datetime(2023, 1, 3, 13, 1, 1), tick=False)
|
|
1527
1527
|
|
|
1528
1528
|
listener, task_instance = self._create_listener_and_task_instance()
|
|
1529
|
-
mock_get_user_provided_run_facets.return_value = {"custom_user_facet": 2}
|
|
1529
|
+
mock_get_user_provided_run_facets.return_value = {"custom_user_facet": 2, "parent": 99}
|
|
1530
1530
|
mock_get_airflow_run_facet.return_value = {"airflow": {"task": "..."}}
|
|
1531
1531
|
mock_get_task_parent_run_facet.return_value = {"parent": 4}
|
|
1532
1532
|
mock_debug_facet.return_value = {"debug": "packages"}
|
|
@@ -1566,8 +1566,8 @@ class TestOpenLineageListenerAirflow3:
|
|
|
1566
1566
|
)
|
|
1567
1567
|
def test_adapter_complete_task_is_called_with_dag_owners_when_task_owner_is_default(
|
|
1568
1568
|
self,
|
|
1569
|
-
mock_get_airflow_mapped_task_facet,
|
|
1570
1569
|
mock_get_user_provided_run_facets,
|
|
1570
|
+
mock_get_airflow_mapped_task_facet,
|
|
1571
1571
|
mock_get_airflow_run_facet,
|
|
1572
1572
|
mock_get_task_parent_run_facet,
|
|
1573
1573
|
mock_disabled,
|
|
@@ -1576,7 +1576,7 @@ class TestOpenLineageListenerAirflow3:
|
|
|
1576
1576
|
):
|
|
1577
1577
|
listener, task_instance = self._create_listener_and_task_instance()
|
|
1578
1578
|
mock_get_airflow_mapped_task_facet.return_value = {"mapped_facet": 1}
|
|
1579
|
-
mock_get_user_provided_run_facets.return_value = {"custom_user_facet": 2}
|
|
1579
|
+
mock_get_user_provided_run_facets.return_value = {"custom_user_facet": 2, "parent": 99}
|
|
1580
1580
|
mock_get_airflow_run_facet.return_value = {"airflow_run_facet": 3}
|
|
1581
1581
|
mock_get_task_parent_run_facet.return_value = {"parent": 4}
|
|
1582
1582
|
mock_debug_facet.return_value = {"debug": "packages"}
|
|
@@ -1600,8 +1600,8 @@ class TestOpenLineageListenerAirflow3:
|
|
|
1600
1600
|
)
|
|
1601
1601
|
def test_adapter_complete_task_is_called_with_dag_description_when_task_doc_is_empty(
|
|
1602
1602
|
self,
|
|
1603
|
-
mock_get_airflow_mapped_task_facet,
|
|
1604
1603
|
mock_get_user_provided_run_facets,
|
|
1604
|
+
mock_get_airflow_mapped_task_facet,
|
|
1605
1605
|
mock_get_airflow_run_facet,
|
|
1606
1606
|
mock_get_task_parent_run_facet,
|
|
1607
1607
|
mock_disabled,
|
|
@@ -1610,7 +1610,7 @@ class TestOpenLineageListenerAirflow3:
|
|
|
1610
1610
|
):
|
|
1611
1611
|
listener, task_instance = self._create_listener_and_task_instance()
|
|
1612
1612
|
mock_get_airflow_mapped_task_facet.return_value = {"mapped_facet": 1}
|
|
1613
|
-
mock_get_user_provided_run_facets.return_value = {"custom_user_facet": 2}
|
|
1613
|
+
mock_get_user_provided_run_facets.return_value = {"custom_user_facet": 2, "parent": 99}
|
|
1614
1614
|
mock_get_airflow_run_facet.return_value = {"airflow_run_facet": 3}
|
|
1615
1615
|
mock_get_task_parent_run_facet.return_value = {"parent": 4}
|
|
1616
1616
|
mock_debug_facet.return_value = {"debug": "packages"}
|