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.
Files changed (141) hide show
  1. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/PKG-INFO +6 -6
  2. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/README.rst +3 -3
  3. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/docs/changelog.rst +20 -0
  4. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/docs/index.rst +3 -3
  5. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/provider.yaml +2 -1
  6. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/pyproject.toml +3 -3
  7. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/src/airflow/providers/openlineage/__init__.py +1 -1
  8. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/src/airflow/providers/openlineage/utils/selective_enable.py +4 -2
  9. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/src/airflow/providers/openlineage/utils/utils.py +30 -15
  10. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/unit/openlineage/plugins/test_listener.py +32 -32
  11. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/unit/openlineage/plugins/test_utils.py +13 -4
  12. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/docs/.latest-doc-only-change.txt +0 -0
  13. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/docs/commits.rst +0 -0
  14. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/docs/conf.py +0 -0
  15. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/docs/configurations-ref.rst +0 -0
  16. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/docs/guides/developer.rst +0 -0
  17. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/docs/guides/structure.rst +0 -0
  18. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/docs/guides/user.rst +0 -0
  19. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/docs/installing-providers-from-sources.rst +0 -0
  20. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/docs/integration-logos/openlineage.svg +0 -0
  21. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/docs/macros.rst +0 -0
  22. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/docs/security.rst +0 -0
  23. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/docs/supported_classes.rst +0 -0
  24. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/src/airflow/__init__.py +0 -0
  25. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/src/airflow/providers/__init__.py +0 -0
  26. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/src/airflow/providers/openlineage/LICENSE +0 -0
  27. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/src/airflow/providers/openlineage/conf.py +0 -0
  28. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/src/airflow/providers/openlineage/extractors/__init__.py +0 -0
  29. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/src/airflow/providers/openlineage/extractors/base.py +0 -0
  30. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/src/airflow/providers/openlineage/extractors/bash.py +0 -0
  31. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/src/airflow/providers/openlineage/extractors/manager.py +0 -0
  32. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/src/airflow/providers/openlineage/extractors/python.py +0 -0
  33. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/src/airflow/providers/openlineage/facets/AirflowDagRunFacet.json +0 -0
  34. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/src/airflow/providers/openlineage/facets/AirflowDebugRunFacet.json +0 -0
  35. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/src/airflow/providers/openlineage/facets/AirflowJobFacet.json +0 -0
  36. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/src/airflow/providers/openlineage/facets/AirflowRunFacet.json +0 -0
  37. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/src/airflow/providers/openlineage/facets/AirflowStateRunFacet.json +0 -0
  38. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/src/airflow/providers/openlineage/facets/__init__.py +0 -0
  39. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/src/airflow/providers/openlineage/get_provider_info.py +0 -0
  40. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/src/airflow/providers/openlineage/operators/__init__.py +0 -0
  41. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/src/airflow/providers/openlineage/operators/empty.py +0 -0
  42. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/src/airflow/providers/openlineage/plugins/__init__.py +0 -0
  43. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/src/airflow/providers/openlineage/plugins/adapter.py +0 -0
  44. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/src/airflow/providers/openlineage/plugins/facets.py +0 -0
  45. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/src/airflow/providers/openlineage/plugins/listener.py +3 -3
  46. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/src/airflow/providers/openlineage/plugins/macros.py +0 -0
  47. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/src/airflow/providers/openlineage/plugins/openlineage.py +0 -0
  48. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/src/airflow/providers/openlineage/sqlparser.py +0 -0
  49. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/src/airflow/providers/openlineage/utils/__init__.py +0 -0
  50. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/src/airflow/providers/openlineage/utils/spark.py +0 -0
  51. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/src/airflow/providers/openlineage/utils/sql.py +0 -0
  52. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/src/airflow/providers/openlineage/version_compat.py +0 -0
  53. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/conftest.py +0 -0
  54. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/integration/__init__.py +0 -0
  55. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/integration/openlineage/__init__.py +0 -0
  56. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/integration/openlineage/operators/__init__.py +0 -0
  57. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/system/__init__.py +0 -0
  58. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/system/openlineage/__init__.py +0 -0
  59. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/system/openlineage/conftest.py +0 -0
  60. {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
  61. {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
  62. {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
  63. {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
  64. {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
  65. {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
  66. {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
  67. {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
  68. {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
  69. {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
  70. {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
  71. {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
  72. {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
  73. {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
  74. {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
  75. {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
  76. {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
  77. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/system/openlineage/example_openlineage_trigger_dag.py +0 -0
  78. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/system/openlineage/example_openlineage_versioned_dag.py +0 -0
  79. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/system/openlineage/expected_events/__init__.py +0 -0
  80. {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
  81. {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
  82. {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
  83. {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
  84. {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
  85. {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
  86. {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
  87. {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
  88. {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
  89. {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
  90. {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
  91. {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
  92. {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
  93. {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
  94. {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
  95. {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
  96. {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
  97. {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
  98. {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
  99. {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
  100. {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
  101. {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
  102. {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
  103. {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
  104. {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
  105. {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
  106. {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
  107. {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
  108. {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
  109. {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
  110. {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
  111. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/system/openlineage/operator.py +0 -0
  112. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/system/openlineage/transport/__init__.py +0 -0
  113. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/system/openlineage/transport/variable.py +0 -0
  114. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/unit/__init__.py +0 -0
  115. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/unit/openlineage/__init__.py +0 -0
  116. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/unit/openlineage/dags/__init__.py +0 -0
  117. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/unit/openlineage/dags/test_openlineage_execution.py +0 -0
  118. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/unit/openlineage/extractors/__init__.py +0 -0
  119. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/unit/openlineage/extractors/test_base.py +0 -0
  120. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/unit/openlineage/extractors/test_bash.py +0 -0
  121. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/unit/openlineage/extractors/test_manager.py +0 -0
  122. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/unit/openlineage/extractors/test_python.py +0 -0
  123. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/unit/openlineage/log_config.py +0 -0
  124. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/unit/openlineage/operators/__init__.py +0 -0
  125. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/unit/openlineage/operators/test_empty.py +0 -0
  126. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/unit/openlineage/plugins/__init__.py +0 -0
  127. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/unit/openlineage/plugins/openlineage_configs/__init__.py +0 -0
  128. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/unit/openlineage/plugins/openlineage_configs/http.yaml +0 -0
  129. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/unit/openlineage/plugins/test_adapter.py +0 -0
  130. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/unit/openlineage/plugins/test_execution.py +0 -0
  131. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/unit/openlineage/plugins/test_facets.py +0 -0
  132. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/unit/openlineage/plugins/test_macros.py +0 -0
  133. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/unit/openlineage/plugins/test_openlineage.py +0 -0
  134. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/unit/openlineage/test_conf.py +0 -0
  135. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/unit/openlineage/test_sqlparser.py +0 -0
  136. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/unit/openlineage/utils/__init__.py +0 -0
  137. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/unit/openlineage/utils/custom_facet_fixture.py +0 -0
  138. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/unit/openlineage/utils/test_selective_enable.py +0 -0
  139. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/unit/openlineage/utils/test_spark.py +0 -0
  140. {apache_airflow_providers_openlineage-2.7.0rc1 → apache_airflow_providers_openlineage-2.7.1rc1}/tests/unit/openlineage/utils/test_sql.py +0 -0
  141. {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.0rc1
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.0/changelog.html
31
- Project-URL: Documentation, https://airflow.staged.apache.org/docs/apache-airflow-providers-openlineage/2.7.0
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.0``
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.0/>`_.
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.0/changelog.html>`_.
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.0``
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.0/>`_.
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.0/changelog.html>`_.
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.0
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.0 sdist package <https://downloads.apache.org/airflow/providers/apache_airflow_providers_openlineage-2.7.0.tar.gz>`_ (`asc <https://downloads.apache.org/airflow/providers/apache_airflow_providers_openlineage-2.7.0.tar.gz.asc>`__, `sha512 <https://downloads.apache.org/airflow/providers/apache_airflow_providers_openlineage-2.7.0.tar.gz.sha512>`__)
142
- * `The apache-airflow-providers-openlineage 2.7.0 wheel package <https://downloads.apache.org/airflow/providers/apache_airflow_providers_openlineage-2.7.0-py3-none-any.whl>`_ (`asc <https://downloads.apache.org/airflow/providers/apache_airflow_providers_openlineage-2.7.0-py3-none-any.whl.asc>`__, `sha512 <https://downloads.apache.org/airflow/providers/apache_airflow_providers_openlineage-2.7.0-py3-none-any.whl.sha512>`__)
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: 1756877213
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.0rc1"
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.0"
109
- "Changelog" = "https://airflow.staged.apache.org/docs/apache-airflow-providers-openlineage/2.7.0/changelog.html"
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.0"
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: BaseOperator | MappedOperator) -> bool:
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: BaseOperator | MappedOperator) -> str | None:
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: BaseOperator | MappedOperator | None) -> tuple[str | None, str | None]:
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: BaseOperator | MappedOperator) -> str:
317
- if isinstance(operator, (MappedOperator, SerializedBaseOperator)):
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: BaseOperator | MappedOperator) -> bool:
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 | BaseOperator | MappedOperator) -> bool:
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: BaseOperator | MappedOperator) -> bool:
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 should_hide_value_for_key(name):
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"}