apache-airflow-providers-openlineage 2.7.3rc1__tar.gz → 2.10.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 (151) hide show
  1. apache_airflow_providers_openlineage-2.10.1rc1/NOTICE +5 -0
  2. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/PKG-INFO +30 -16
  3. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/README.rst +18 -8
  4. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/docs/changelog.rst +154 -6
  5. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/docs/commits.rst +2 -1
  6. apache_airflow_providers_openlineage-2.10.1rc1/docs/configurations-ref.rst +285 -0
  7. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/docs/guides/developer.rst +120 -129
  8. apache_airflow_providers_openlineage-2.10.1rc1/docs/guides/structure.rst +204 -0
  9. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/docs/index.rst +14 -12
  10. apache_airflow_providers_openlineage-2.10.1rc1/docs/macros.rst +447 -0
  11. apache_airflow_providers_openlineage-2.10.1rc1/docs/spark.rst +280 -0
  12. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/docs/supported_classes.rst +21 -1
  13. apache_airflow_providers_openlineage-2.10.1rc1/docs/troubleshooting.rst +290 -0
  14. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/provider.yaml +79 -77
  15. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/pyproject.toml +17 -8
  16. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/src/airflow/providers/openlineage/__init__.py +3 -3
  17. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/src/airflow/providers/openlineage/conf.py +1 -1
  18. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/src/airflow/providers/openlineage/extractors/manager.py +3 -3
  19. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/src/airflow/providers/openlineage/get_provider_info.py +56 -56
  20. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/src/airflow/providers/openlineage/operators/empty.py +2 -2
  21. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/src/airflow/providers/openlineage/plugins/adapter.py +40 -17
  22. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/src/airflow/providers/openlineage/plugins/facets.py +1 -1
  23. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/src/airflow/providers/openlineage/plugins/listener.py +222 -26
  24. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/src/airflow/providers/openlineage/plugins/macros.py +55 -27
  25. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/src/airflow/providers/openlineage/plugins/openlineage.py +3 -1
  26. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/src/airflow/providers/openlineage/sqlparser.py +1 -1
  27. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/src/airflow/providers/openlineage/utils/selective_enable.py +3 -10
  28. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/src/airflow/providers/openlineage/utils/spark.py +1 -1
  29. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/src/airflow/providers/openlineage/utils/sql.py +26 -10
  30. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/src/airflow/providers/openlineage/utils/utils.py +684 -86
  31. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/src/airflow/providers/openlineage/version_compat.py +2 -13
  32. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/system/openlineage/conftest.py +2 -7
  33. apache_airflow_providers_openlineage-2.10.1rc1/tests/system/openlineage/dag_doc.md +19 -0
  34. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/system/openlineage/example_openlineage_base_complex_dag.py +1 -1
  35. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/system/openlineage/example_openlineage_defer_simple_dag.py +3 -7
  36. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/system/openlineage/example_openlineage_docs_file_dag.py +1 -8
  37. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/system/openlineage/example_openlineage_mapped_simple_dag.py +3 -1
  38. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/system/openlineage/example_openlineage_schedule_asset_or_time_dag.py +1 -1
  39. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/system/openlineage/example_openlineage_trigger_dag.py +12 -1
  40. apache_airflow_providers_openlineage-2.10.1rc1/tests/system/openlineage/example_openlineage_trigger_dag_deferrable.py +93 -0
  41. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/system/openlineage/expected_events/openlineage_trigger_dag.json +218 -60
  42. apache_airflow_providers_openlineage-2.10.1rc1/tests/system/openlineage/expected_events/openlineage_trigger_dag_deferrable.json +660 -0
  43. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/system/openlineage/operator.py +11 -18
  44. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/unit/openlineage/dags/test_openlineage_execution.py +1 -1
  45. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/unit/openlineage/extractors/test_base.py +2 -8
  46. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/unit/openlineage/extractors/test_manager.py +14 -29
  47. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/unit/openlineage/operators/test_empty.py +1 -1
  48. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/unit/openlineage/plugins/test_adapter.py +109 -47
  49. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/unit/openlineage/plugins/test_execution.py +20 -22
  50. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/unit/openlineage/plugins/test_listener.py +152 -38
  51. apache_airflow_providers_openlineage-2.10.1rc1/tests/unit/openlineage/plugins/test_macros.py +368 -0
  52. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/unit/openlineage/plugins/test_openlineage.py +1 -1
  53. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/unit/openlineage/plugins/test_utils.py +3 -6
  54. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/unit/openlineage/test_conf.py +1 -1
  55. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/unit/openlineage/utils/custom_facet_fixture.py +1 -1
  56. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/unit/openlineage/utils/test_selective_enable.py +1 -7
  57. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/unit/openlineage/utils/test_spark.py +26 -15
  58. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/unit/openlineage/utils/test_sql.py +1 -1
  59. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/unit/openlineage/utils/test_utils.py +1467 -39
  60. apache_airflow_providers_openlineage-2.7.3rc1/docs/configurations-ref.rst +0 -22
  61. apache_airflow_providers_openlineage-2.7.3rc1/docs/guides/structure.rst +0 -67
  62. apache_airflow_providers_openlineage-2.7.3rc1/docs/guides/user.rst +0 -511
  63. apache_airflow_providers_openlineage-2.7.3rc1/docs/macros.rst +0 -72
  64. apache_airflow_providers_openlineage-2.7.3rc1/tests/unit/openlineage/plugins/test_macros.py +0 -132
  65. {apache_airflow_providers_openlineage-2.7.3rc1/src/airflow/providers/openlineage → apache_airflow_providers_openlineage-2.10.1rc1}/LICENSE +0 -0
  66. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/docs/.latest-doc-only-change.txt +0 -0
  67. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/docs/conf.py +0 -0
  68. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/docs/installing-providers-from-sources.rst +0 -0
  69. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/docs/integration-logos/openlineage.svg +0 -0
  70. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/docs/security.rst +0 -0
  71. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/src/airflow/__init__.py +0 -0
  72. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/src/airflow/providers/__init__.py +0 -0
  73. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/src/airflow/providers/openlineage/extractors/__init__.py +0 -0
  74. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/src/airflow/providers/openlineage/extractors/base.py +0 -0
  75. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/src/airflow/providers/openlineage/extractors/bash.py +0 -0
  76. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/src/airflow/providers/openlineage/extractors/python.py +0 -0
  77. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/src/airflow/providers/openlineage/facets/AirflowDagRunFacet.json +0 -0
  78. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/src/airflow/providers/openlineage/facets/AirflowDebugRunFacet.json +0 -0
  79. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/src/airflow/providers/openlineage/facets/AirflowJobFacet.json +0 -0
  80. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/src/airflow/providers/openlineage/facets/AirflowRunFacet.json +0 -0
  81. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/src/airflow/providers/openlineage/facets/AirflowStateRunFacet.json +0 -0
  82. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/src/airflow/providers/openlineage/facets/__init__.py +0 -0
  83. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/src/airflow/providers/openlineage/operators/__init__.py +0 -0
  84. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/src/airflow/providers/openlineage/plugins/__init__.py +0 -0
  85. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/src/airflow/providers/openlineage/utils/__init__.py +0 -0
  86. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/conftest.py +0 -0
  87. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/integration/__init__.py +0 -0
  88. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/integration/openlineage/__init__.py +0 -0
  89. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/integration/openlineage/operators/__init__.py +0 -0
  90. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/system/__init__.py +0 -0
  91. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/system/openlineage/__init__.py +0 -0
  92. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/system/openlineage/example_openlineage_base_simple_dag.py +0 -0
  93. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/system/openlineage/example_openlineage_schedule_cron_dag.py +0 -0
  94. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/system/openlineage/example_openlineage_schedule_list_complex_assets_dag.py +0 -0
  95. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/system/openlineage/example_openlineage_schedule_list_multiple_assets_dag.py +0 -0
  96. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/system/openlineage/example_openlineage_schedule_list_single_asset_dag.py +0 -0
  97. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/system/openlineage/example_openlineage_schedule_multiple_assets_dag.py +0 -0
  98. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/system/openlineage/example_openlineage_schedule_single_asset_dag.py +0 -0
  99. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/system/openlineage/example_openlineage_schedule_timetable_dag.py +0 -0
  100. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/system/openlineage/example_openlineage_setup_teardown_dag.py +0 -0
  101. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/system/openlineage/example_openlineage_short_circuit_dag.py +0 -0
  102. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/system/openlineage/example_openlineage_task_groups_dag.py +0 -0
  103. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/system/openlineage/example_openlineage_taskflow_simple_dag.py +0 -0
  104. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/system/openlineage/example_openlineage_versioned_dag.py +0 -0
  105. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/system/openlineage/expected_events/__init__.py +0 -0
  106. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/system/openlineage/expected_events/openlineage_base_complex_dag__af2.json +0 -0
  107. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/system/openlineage/expected_events/openlineage_base_complex_dag__af3.json +0 -0
  108. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/system/openlineage/expected_events/openlineage_base_simple_dag__af2.json +0 -0
  109. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/system/openlineage/expected_events/openlineage_base_simple_dag__af3.json +0 -0
  110. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/system/openlineage/expected_events/openlineage_defer_simple_dag.json +0 -0
  111. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/system/openlineage/expected_events/openlineage_docs_file_dag.json +0 -0
  112. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/system/openlineage/expected_events/openlineage_mapped_simple_dag.json +0 -0
  113. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/system/openlineage/expected_events/openlineage_schedule_asset_or_time_dag__af2.json +0 -0
  114. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/system/openlineage/expected_events/openlineage_schedule_asset_or_time_dag__af3.json +0 -0
  115. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/system/openlineage/expected_events/openlineage_schedule_cron_dag__af2.json +0 -0
  116. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/system/openlineage/expected_events/openlineage_schedule_cron_dag__af3.json +0 -0
  117. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/system/openlineage/expected_events/openlineage_schedule_list_complex_assets_dag__af2.json +0 -0
  118. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/system/openlineage/expected_events/openlineage_schedule_list_complex_assets_dag__af3.json +0 -0
  119. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/system/openlineage/expected_events/openlineage_schedule_list_multiple_assets_dag__af2.json +0 -0
  120. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/system/openlineage/expected_events/openlineage_schedule_list_multiple_assets_dag__af3.json +0 -0
  121. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/system/openlineage/expected_events/openlineage_schedule_list_single_asset_dag__af2.json +0 -0
  122. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/system/openlineage/expected_events/openlineage_schedule_list_single_asset_dag__af3.json +0 -0
  123. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/system/openlineage/expected_events/openlineage_schedule_multiple_assets_dag__af2.json +0 -0
  124. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/system/openlineage/expected_events/openlineage_schedule_multiple_assets_dag__af3.json +0 -0
  125. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/system/openlineage/expected_events/openlineage_schedule_single_asset_dag__af2.json +0 -0
  126. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/system/openlineage/expected_events/openlineage_schedule_single_asset_dag__af3.json +0 -0
  127. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/system/openlineage/expected_events/openlineage_schedule_timetable_dag__af2.json +0 -0
  128. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/system/openlineage/expected_events/openlineage_schedule_timetable_dag__af3.json +0 -0
  129. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/system/openlineage/expected_events/openlineage_setup_teardown_dag__af2.json +0 -0
  130. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/system/openlineage/expected_events/openlineage_setup_teardown_dag__af3.json +0 -0
  131. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/system/openlineage/expected_events/openlineage_short_circuit_dag.json +0 -0
  132. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/system/openlineage/expected_events/openlineage_task_groups_dag.json +0 -0
  133. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/system/openlineage/expected_events/openlineage_taskflow_simple_dag.json +0 -0
  134. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/system/openlineage/expected_events/openlineage_versioned_dag__af2.json +0 -0
  135. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/system/openlineage/expected_events/openlineage_versioned_dag__af3.json +0 -0
  136. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/system/openlineage/transport/__init__.py +0 -0
  137. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/system/openlineage/transport/variable.py +0 -0
  138. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/unit/__init__.py +0 -0
  139. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/unit/openlineage/__init__.py +0 -0
  140. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/unit/openlineage/dags/__init__.py +0 -0
  141. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/unit/openlineage/extractors/__init__.py +0 -0
  142. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/unit/openlineage/extractors/test_bash.py +0 -0
  143. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/unit/openlineage/extractors/test_python.py +0 -0
  144. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/unit/openlineage/log_config.py +0 -0
  145. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/unit/openlineage/operators/__init__.py +0 -0
  146. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/unit/openlineage/plugins/__init__.py +0 -0
  147. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/unit/openlineage/plugins/openlineage_configs/__init__.py +0 -0
  148. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/unit/openlineage/plugins/openlineage_configs/http.yaml +0 -0
  149. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/unit/openlineage/plugins/test_facets.py +0 -0
  150. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/unit/openlineage/test_sqlparser.py +0 -0
  151. {apache_airflow_providers_openlineage-2.7.3rc1 → apache_airflow_providers_openlineage-2.10.1rc1}/tests/unit/openlineage/utils/__init__.py +0 -0
@@ -0,0 +1,5 @@
1
+ Apache Airflow
2
+ Copyright 2016-2026 The Apache Software Foundation
3
+
4
+ This product includes software developed at
5
+ The Apache Software Foundation (http://www.apache.org/).
@@ -1,12 +1,13 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: apache-airflow-providers-openlineage
3
- Version: 2.7.3rc1
3
+ Version: 2.10.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>
7
7
  Maintainer-email: Apache Software Foundation <dev@airflow.apache.org>
8
8
  Requires-Python: >=3.10
9
9
  Description-Content-Type: text/x-rst
10
+ License-Expression: Apache-2.0
10
11
  Classifier: Development Status :: 5 - Production/Stable
11
12
  Classifier: Environment :: Console
12
13
  Classifier: Environment :: Web Environment
@@ -14,25 +15,28 @@ Classifier: Intended Audience :: Developers
14
15
  Classifier: Intended Audience :: System Administrators
15
16
  Classifier: Framework :: Apache Airflow
16
17
  Classifier: Framework :: Apache Airflow :: Provider
17
- Classifier: License :: OSI Approved :: Apache Software License
18
18
  Classifier: Programming Language :: Python :: 3.10
19
19
  Classifier: Programming Language :: Python :: 3.11
20
20
  Classifier: Programming Language :: Python :: 3.12
21
21
  Classifier: Programming Language :: Python :: 3.13
22
22
  Classifier: Topic :: System :: Monitoring
23
- Requires-Dist: apache-airflow>=2.10.0rc1
23
+ License-File: LICENSE
24
+ License-File: NOTICE
25
+ Requires-Dist: apache-airflow>=2.11.0rc1
24
26
  Requires-Dist: apache-airflow-providers-common-sql>=1.20.0rc1
25
- Requires-Dist: apache-airflow-providers-common-compat>=1.8.0rc1
27
+ Requires-Dist: apache-airflow-providers-common-compat>=1.13.0rc1
26
28
  Requires-Dist: attrs>=22.2
27
- Requires-Dist: openlineage-integration-common>=1.38.0
28
- Requires-Dist: openlineage-python>=1.38.0
29
+ Requires-Dist: openlineage-integration-common>=1.41.0
30
+ Requires-Dist: openlineage-python>=1.41.0
31
+ Requires-Dist: sqlalchemy>=1.4.49 ; extra == "sqlalchemy"
29
32
  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.3/changelog.html
31
- Project-URL: Documentation, https://airflow.staged.apache.org/docs/apache-airflow-providers-openlineage/2.7.3
33
+ Project-URL: Changelog, https://airflow.staged.apache.org/docs/apache-airflow-providers-openlineage/2.10.1/changelog.html
34
+ Project-URL: Documentation, https://airflow.staged.apache.org/docs/apache-airflow-providers-openlineage/2.10.1
32
35
  Project-URL: Mastodon, https://fosstodon.org/@airflow
33
36
  Project-URL: Slack Chat, https://s.apache.org/airflow-slack
34
37
  Project-URL: Source Code, https://github.com/apache/airflow
35
38
  Project-URL: YouTube, https://www.youtube.com/channel/UCSXwxpWZQ7XZ1WL3wqevChA/
39
+ Provides-Extra: sqlalchemy
36
40
 
37
41
 
38
42
  .. Licensed to the Apache Software Foundation (ASF) under one
@@ -59,10 +63,11 @@ Project-URL: YouTube, https://www.youtube.com/channel/UCSXwxpWZQ7XZ1WL3wqevChA/
59
63
 
60
64
  Package ``apache-airflow-providers-openlineage``
61
65
 
62
- Release: ``2.7.3``
66
+ Release: ``2.10.1``
63
67
 
64
68
 
65
- `OpenLineage <https://openlineage.io/>`__
69
+ `OpenLineage <https://openlineage.io/docs/>`__ is an open framework for data lineage collection.
70
+ At its core it is an extensible specification that systems can use to interoperate with lineage metadata.
66
71
 
67
72
 
68
73
  Provider package
@@ -72,7 +77,7 @@ This is a provider package for ``openlineage`` provider. All classes for this pr
72
77
  are in ``airflow.providers.openlineage`` python package.
73
78
 
74
79
  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.3/>`_.
80
+ in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-openlineage/2.10.1/>`_.
76
81
 
77
82
  Installation
78
83
  ------------
@@ -89,12 +94,12 @@ Requirements
89
94
  ========================================== ==================
90
95
  PIP package Version required
91
96
  ========================================== ==================
92
- ``apache-airflow`` ``>=2.10.0``
97
+ ``apache-airflow`` ``>=2.11.0``
93
98
  ``apache-airflow-providers-common-sql`` ``>=1.20.0``
94
- ``apache-airflow-providers-common-compat`` ``>=1.8.0``
99
+ ``apache-airflow-providers-common-compat`` ``>=1.13.0``
95
100
  ``attrs`` ``>=22.2``
96
- ``openlineage-integration-common`` ``>=1.38.0``
97
- ``openlineage-python`` ``>=1.38.0``
101
+ ``openlineage-integration-common`` ``>=1.41.0``
102
+ ``openlineage-python`` ``>=1.41.0``
98
103
  ========================================== ==================
99
104
 
100
105
  Cross provider package dependencies
@@ -117,6 +122,15 @@ Dependent package
117
122
  `apache-airflow-providers-common-sql <https://airflow.apache.org/docs/apache-airflow-providers-common-sql>`_ ``common.sql``
118
123
  ================================================================================================================== =================
119
124
 
125
+ Optional dependencies
126
+ ----------------------
127
+
128
+ ============== ======================
129
+ Extra Dependencies
130
+ ============== ======================
131
+ ``sqlalchemy`` ``sqlalchemy>=1.4.49``
132
+ ============== ======================
133
+
120
134
  The changelog for the provider package can be found in the
121
- `changelog <https://airflow.apache.org/docs/apache-airflow-providers-openlineage/2.7.3/changelog.html>`_.
135
+ `changelog <https://airflow.apache.org/docs/apache-airflow-providers-openlineage/2.10.1/changelog.html>`_.
122
136
 
@@ -23,10 +23,11 @@
23
23
 
24
24
  Package ``apache-airflow-providers-openlineage``
25
25
 
26
- Release: ``2.7.3``
26
+ Release: ``2.10.1``
27
27
 
28
28
 
29
- `OpenLineage <https://openlineage.io/>`__
29
+ `OpenLineage <https://openlineage.io/docs/>`__ is an open framework for data lineage collection.
30
+ At its core it is an extensible specification that systems can use to interoperate with lineage metadata.
30
31
 
31
32
 
32
33
  Provider package
@@ -36,7 +37,7 @@ This is a provider package for ``openlineage`` provider. All classes for this pr
36
37
  are in ``airflow.providers.openlineage`` python package.
37
38
 
38
39
  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.3/>`_.
40
+ in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-openlineage/2.10.1/>`_.
40
41
 
41
42
  Installation
42
43
  ------------
@@ -53,12 +54,12 @@ Requirements
53
54
  ========================================== ==================
54
55
  PIP package Version required
55
56
  ========================================== ==================
56
- ``apache-airflow`` ``>=2.10.0``
57
+ ``apache-airflow`` ``>=2.11.0``
57
58
  ``apache-airflow-providers-common-sql`` ``>=1.20.0``
58
- ``apache-airflow-providers-common-compat`` ``>=1.8.0``
59
+ ``apache-airflow-providers-common-compat`` ``>=1.13.0``
59
60
  ``attrs`` ``>=22.2``
60
- ``openlineage-integration-common`` ``>=1.38.0``
61
- ``openlineage-python`` ``>=1.38.0``
61
+ ``openlineage-integration-common`` ``>=1.41.0``
62
+ ``openlineage-python`` ``>=1.41.0``
62
63
  ========================================== ==================
63
64
 
64
65
  Cross provider package dependencies
@@ -81,5 +82,14 @@ Dependent package
81
82
  `apache-airflow-providers-common-sql <https://airflow.apache.org/docs/apache-airflow-providers-common-sql>`_ ``common.sql``
82
83
  ================================================================================================================== =================
83
84
 
85
+ Optional dependencies
86
+ ----------------------
87
+
88
+ ============== ======================
89
+ Extra Dependencies
90
+ ============== ======================
91
+ ``sqlalchemy`` ``sqlalchemy>=1.4.49``
92
+ ============== ======================
93
+
84
94
  The changelog for the provider package can be found in the
85
- `changelog <https://airflow.apache.org/docs/apache-airflow-providers-openlineage/2.7.3/changelog.html>`_.
95
+ `changelog <https://airflow.apache.org/docs/apache-airflow-providers-openlineage/2.10.1/changelog.html>`_.
@@ -26,6 +26,158 @@
26
26
  Changelog
27
27
  ---------
28
28
 
29
+ 2.10.1
30
+ ......
31
+
32
+ Bug Fixes
33
+ ~~~~~~~~~
34
+
35
+ * ``Add AirflowRunFacet to AF3 tasks with externally changed state (#60583)``
36
+
37
+ Misc
38
+ ~~~~
39
+
40
+ * ``Add SQLAlchemy to the dev‑dependency group in providers (#60472)``
41
+ * ``Option to disable exporting of legacy metric names (#53722)``
42
+
43
+ Doc-only
44
+ ~~~~~~~~
45
+
46
+ * ``Refresh OpenLineage provider docs (#60462)``
47
+ * ``Add OpenLineage known limitations to troubleshooting page (#61072)``
48
+
49
+ .. Below changes are excluded from the changelog. Move them to
50
+ appropriate section above if needed. Do not delete the lines(!):
51
+ * ``Move lineage from airflow core to task sdk (#60968)``
52
+ * ``Revert "Move lineage from airflow core to task sdk (#60968)" (#61151)``
53
+
54
+ 2.10.0
55
+ ......
56
+
57
+ Features
58
+ ~~~~~~~~
59
+
60
+ * ``Add on_task_instance_skipped support to OpenLineage listener (#60409)``
61
+ * ``Add JobDependenciesRunFacet to asset-triggered OL DAG events (#59521)``
62
+
63
+ Bug Fixes
64
+ ~~~~~~~~~
65
+
66
+ * ``Fixing static checks in OL adapter on main (#60042)``
67
+
68
+ Misc
69
+ ~~~~
70
+
71
+ * ``Consume ''AirflowOptionalProviderFeatureException'' from compat sdk in providers (#60335)``
72
+ * ``New year means updated Copyright notices (#60344)``
73
+ * ``Move listeners module to shared library for client server separation (#59883)``
74
+ * ``Move over plugins_manager to a shared library (#59956)``
75
+ * ``Allow providers to consume AirflowConfigException from compat sdk (#60044)``
76
+ * ``Source openlineage provider to use airflow.sdk.configuration.conf (#60026)``
77
+ * ``Make sqlalchemy optional dependency for openlineage provider (#59921)``
78
+
79
+ Doc-only
80
+ ~~~~~~~~
81
+
82
+ * ``Improve changelog descriptions in PR #59947 (latest versions only) (#60036)``
83
+
84
+ .. Below changes are excluded from the changelog. Move them to
85
+ appropriate section above if needed. Do not delete the lines(!):
86
+ * ``Assorted SQLA2/Mypy fixes (#60094)``
87
+ * ``Do not dynamically add dag_doc.md when parsing the test (#59933)``
88
+
89
+ 2.9.2
90
+ .....
91
+
92
+ Misc
93
+ ~~~~
94
+
95
+ * ``Move MappedOperator to serialization (#59628)``
96
+ * ``Split SerializedBaseOperator from serde logic (#59627)``
97
+ * ``Minor cleanups removing SDK references from Core (#59491)``
98
+ * ``Refactor deprecated SQLA query openlineage provider (#59448)``
99
+ * ``Bump OpenLineage client dependency to 1.41 (#59321)``
100
+ * ``Extract shared "module_loading" distribution (#59139)``
101
+
102
+ .. Below changes are excluded from the changelog. Move them to
103
+ appropriate section above if needed. Do not delete the lines(!):
104
+ * ``TaskInstance unused method cleanup (#59835)``
105
+ * ``Split SDK and serialized asset classes (#58993)``
106
+
107
+ 2.9.1
108
+ .....
109
+
110
+ Misc
111
+ ~~~~
112
+
113
+ * ``chore: Adjust AirflowRunFacet and docs after moving OL methods to BaseSQLOperator (#58903)``
114
+ * ``Move the traces and metrics code under a common observability package (#56187)``
115
+ * ``Implement timetables in SDK (#58669)``
116
+ * ``Remove global from openlineage provider (#58868)``
117
+
118
+ .. Below changes are excluded from the changelog. Move them to
119
+ appropriate section above if needed. Do not delete the lines(!):
120
+ * ``tests: Add OL system tests for deferrable TriggerDagRunOperator (#58933)``
121
+
122
+ 2.9.0
123
+ .....
124
+
125
+ .. note::
126
+ This release of provider is only available for Airflow 2.11+ as explained in the
127
+ Apache Airflow providers support policy <https://github.com/apache/airflow/blob/main/PROVIDERS.rst#minimum-supported-version-of-airflow-for-community-managed-providers>_.
128
+
129
+ Features
130
+ ~~~~~~~~
131
+
132
+ * ``Add few attrs from external_task sensor to OpenLineage events (#58719)``
133
+ * ``Auto-inject OpenLineage parent info into TriggerDagRunOperator conf (#58672)``
134
+
135
+ Bug Fixes
136
+ ~~~~~~~~~
137
+
138
+ * ``Fix OL root macros should reflect root from dagrun conf parent (#58428)``
139
+ * ``Fix root in parentRunFacet is not always sourced from dag run (#58407)``
140
+
141
+ Misc
142
+ ~~~~
143
+
144
+ * ``Bump minimum Airflow version in providers to Airflow 2.11.0 (#58612)``
145
+ * ``Bump min version of openlineage libraries to 1.40.0 to fix compat issues (#58302)``
146
+
147
+ .. Below changes are excluded from the changelog. Move them to
148
+ appropriate section above if needed. Do not delete the lines(!):
149
+ * ``Updates to release process of providers (#58316)``
150
+ * ``Remove global from lineage.hook (#58285)``
151
+
152
+ 2.8.0
153
+ .....
154
+
155
+ Features
156
+ ~~~~~~~~
157
+
158
+ * ``feat(openlineage): Add parentRunFacet for DAG events (#57809)``
159
+ * ``nit: Use new taskinstance method to determine if task will emit OL event (#57446)``
160
+
161
+ Misc
162
+ ~~~~
163
+
164
+ * ``Convert all airflow distributions to be compliant with ASF requirements (#58138)``
165
+ * ``Refactor import statement for Session to use sqlalchemy.orm (#57586)``
166
+ * ``Migrate openlineage provider to common.compat (#57124)``
167
+
168
+ Doc-only
169
+ ~~~~~~~~
170
+
171
+ * ``[Doc] Fixing 404 errors for OpenLineage & Oracle providers (#57469)``
172
+
173
+ .. Below changes are excluded from the changelog. Move them to
174
+ appropriate section above if needed. Do not delete the lines(!):
175
+ * ``Delete all unnecessary LICENSE Files (#58191)``
176
+ * ``Enable ruff PLW2101,PLW2901,PLW3301 rule (#57700)``
177
+ * ``Enable PT006 rule to openlineage Provider test (#57940)``
178
+ * ``Fix MyPy type errors in providers openlineage (#57435)``
179
+ * ``Fix MyPy type errors in providers utils/sql.py (#57448)``
180
+
29
181
  2.7.3
30
182
  .....
31
183
 
@@ -120,8 +272,6 @@ Doc-only
120
272
  * ``Switch pre-commit to prek (#54258)``
121
273
  * ``Remove SDK BaseOperator in TaskInstance (#53223)``
122
274
  * ``chore: Adjust OL system tests to latest changes (#54352)``
123
-
124
- .. Review and move the new changes to one of the sections above:
125
275
  * ``Move email notifications from scheduler to DAG processor (#55238)``
126
276
  * ``Fix Airflow 2 reference in README/index of providers (#55240)``
127
277
 
@@ -778,7 +928,8 @@ Features
778
928
 
779
929
  * ``feat: Add dag_id when generating OpenLineage run_id for task instance. (#36659)``
780
930
 
781
- .. Review and move the new changes to one of the sections above:
931
+ .. Below changes are excluded from the changelog. Move them to
932
+ appropriate section above if needed. Do not delete the lines(!):
782
933
  * ``Prepare docs 2nd wave of Providers January 2024 (#36945)``
783
934
 
784
935
  1.4.0
@@ -852,10 +1003,7 @@ Features
852
1003
 
853
1004
  .. Below changes are excluded from the changelog. Move them to
854
1005
  appropriate section above if needed. Do not delete the lines(!):
855
-
856
1006
  * ``Pre-upgrade 'ruff==0.0.292' changes in providers (#35053)``
857
-
858
- .. Review and move the new changes to one of the sections above:
859
1007
  * ``Prepare docs 3rd wave of Providers October 2023 (#35187)``
860
1008
 
861
1009
  1.1.1
@@ -26,7 +26,8 @@
26
26
  Package apache-airflow-providers-openlineage
27
27
  ------------------------------------------------------
28
28
 
29
- `OpenLineage <https://openlineage.io/>`__
29
+ `OpenLineage <https://openlineage.io/docs/>`__ is an open framework for data lineage collection.
30
+ At its core it is an extensible specification that systems can use to interoperate with lineage metadata.
30
31
 
31
32
 
32
33
  This is detailed commit list of changes for versions provider package: ``openlineage``.
@@ -0,0 +1,285 @@
1
+ .. Licensed to the Apache Software Foundation (ASF) under one
2
+ or more contributor license agreements. See the NOTICE file
3
+ distributed with this work for additional information
4
+ regarding copyright ownership. The ASF licenses this file
5
+ to you under the Apache License, Version 2.0 (the
6
+ "License"); you may not use this file except in compliance
7
+ with the License. You may obtain a copy of the License at
8
+
9
+ .. http://www.apache.org/licenses/LICENSE-2.0
10
+
11
+ .. Unless required by applicable law or agreed to in writing,
12
+ software distributed under the License is distributed on an
13
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
+ KIND, either express or implied. See the License for the
15
+ specific language governing permissions and limitations
16
+ under the License.
17
+
18
+
19
+ .. _configuration:openlineage:
20
+
21
+ .. include:: /../../../devel-common/src/sphinx_exts/includes/providers-configurations-ref.rst
22
+ .. include:: /../../../devel-common/src/sphinx_exts/includes/sections-and-options.rst
23
+
24
+
25
+ Highlighted configurations
26
+ ===========================
27
+
28
+ .. _configuration_transport:openlineage:
29
+
30
+ Transport setup
31
+ ----------------
32
+
33
+ At minimum, one thing that needs to be set up for OpenLineage to function is ``Transport`` - where do you wish for
34
+ your events to end up - for example `Marquez <https://marquezproject.ai/>`_.
35
+
36
+ Transport as JSON string
37
+ ^^^^^^^^^^^^^^^^^^^^^^^^
38
+ The ``transport`` option in OpenLineage section of Airflow configuration is used for that purpose.
39
+
40
+ .. code-block:: ini
41
+
42
+ [openlineage]
43
+ transport = {"type": "http", "url": "http://example.com:5000", "endpoint": "api/v1/lineage"}
44
+
45
+ ``AIRFLOW__OPENLINEAGE__TRANSPORT`` environment variable is an equivalent.
46
+
47
+ .. code-block:: ini
48
+
49
+ AIRFLOW__OPENLINEAGE__TRANSPORT='{"type": "http", "url": "http://example.com:5000", "endpoint": "api/v1/lineage"}'
50
+
51
+
52
+ If you want to look at OpenLineage events without sending them anywhere, you can set up ``ConsoleTransport`` - the events will end up in task logs.
53
+
54
+ .. code-block:: ini
55
+
56
+ [openlineage]
57
+ transport = {"type": "console"}
58
+
59
+ .. note::
60
+ For full list of built-in transport types, specific transport's options or instructions on how to implement your custom transport, refer to
61
+ `Python client documentation <https://openlineage.io/docs/client/python/configuration#transports>`_.
62
+
63
+ Transport as config file
64
+ ^^^^^^^^^^^^^^^^^^^^^^^^
65
+ You can also configure OpenLineage ``Transport`` using a YAML file (f.e. ``openlineage.yml``).
66
+ Provide the path to the YAML file as ``config_path`` option in Airflow configuration.
67
+
68
+ .. code-block:: ini
69
+
70
+ [openlineage]
71
+ config_path = '/path/to/openlineage.yml'
72
+
73
+ ``AIRFLOW__OPENLINEAGE__CONFIG_PATH`` environment variable is an equivalent.
74
+
75
+ .. code-block:: ini
76
+
77
+ AIRFLOW__OPENLINEAGE__CONFIG_PATH='/path/to/openlineage.yml'
78
+
79
+ Example content of config YAML file:
80
+
81
+ .. code-block:: ini
82
+
83
+ transport:
84
+ type: http
85
+ url: https://backend:5000
86
+ endpoint: events/receive
87
+ auth:
88
+ type: api_key
89
+ apiKey: f048521b-dfe8-47cd-9c65-0cb07d57591e
90
+
91
+ .. note::
92
+
93
+ Detailed description, together with example config files, can be found `in Python client documentation <https://openlineage.io/docs/client/python/configuration#transports>`_.
94
+
95
+
96
+ Configuration precedence
97
+ ^^^^^^^^^^^^^^^^^^^^^^^^^
98
+
99
+ Primary, and recommended method of configuring OpenLineage Airflow Provider is Airflow configuration.
100
+ As there are multiple possible ways of configuring OpenLineage, it's important to keep in mind the precedence of different configurations.
101
+ OpenLineage Airflow Provider looks for the configuration in the following order:
102
+
103
+ 1. Check ``config_path`` in ``airflow.cfg`` under ``openlineage`` section (or AIRFLOW__OPENLINEAGE__CONFIG_PATH environment variable)
104
+ 2. Check ``transport`` in ``airflow.cfg`` under ``openlineage`` section (or AIRFLOW__OPENLINEAGE__TRANSPORT environment variable)
105
+ 3. If all the above options are missing, the OpenLineage Python client used underneath looks for configuration in the order described in `this <https://openlineage.io/docs/client/python/configuration>`_ documentation. Please note that **using Airflow configuration is encouraged** and is the only future proof solution.
106
+
107
+
108
+ .. _configuration_selective_enable:openlineage:
109
+
110
+ Enabling OpenLineage on Dag/task level
111
+ ---------------------------------------
112
+
113
+ One can selectively enable OpenLineage for specific Dags and tasks by using the ``selective_enable`` policy.
114
+ To enable this policy, set the ``selective_enable`` option to True in the [openlineage] section of your Airflow configuration file:
115
+
116
+ .. code-block:: ini
117
+
118
+ [openlineage]
119
+ selective_enable = True
120
+
121
+ ``AIRFLOW__OPENLINEAGE__SELECTIVE_ENABLE`` environment variable is an equivalent.
122
+
123
+ .. code-block:: ini
124
+
125
+ AIRFLOW__OPENLINEAGE__SELECTIVE_ENABLE=true
126
+
127
+
128
+ While ``selective_enable`` enables selective control, the ``disabled`` option still has precedence.
129
+ If you set ``disabled`` to True in the configuration, OpenLineage will be disabled for all Dags and tasks regardless of the ``selective_enable`` setting.
130
+
131
+ Once the ``selective_enable`` policy is enabled, you can choose to enable OpenLineage
132
+ for individual Dags and tasks using the ``enable_lineage`` and ``disable_lineage`` functions.
133
+
134
+ 1. Enabling Lineage on a Dag:
135
+
136
+ .. code-block:: python
137
+
138
+ from airflow.providers.openlineage.utils.selective_enable import disable_lineage, enable_lineage
139
+
140
+ with enable_lineage(Dag(...)):
141
+ # Tasks within this Dag will have lineage tracking enabled
142
+ MyOperator(...)
143
+
144
+ AnotherOperator(...)
145
+
146
+ 2. Enabling Lineage on a Task:
147
+
148
+ While enabling lineage on a Dag implicitly enables it for all tasks within that Dag, you can still selectively disable it for specific tasks:
149
+
150
+ .. code-block:: python
151
+
152
+ from airflow.providers.openlineage.utils.selective_enable import disable_lineage, enable_lineage
153
+
154
+ with DAG(...) as dag:
155
+ t1 = MyOperator(...)
156
+ t2 = AnotherOperator(...)
157
+
158
+ # Enable lineage for the entire Dag
159
+ enable_lineage(dag)
160
+
161
+ # Disable lineage for task t1
162
+ disable_lineage(t1)
163
+
164
+ Enabling lineage on the Dag level automatically enables it for all tasks within that Dag unless explicitly disabled per task.
165
+
166
+ Enabling lineage on the task level implicitly enables lineage on its Dag.
167
+ This is because each emitting task sends a `ParentRunFacet <https://openlineage.io/docs/spec/facets/run-facets/parent_run>`_,
168
+ which requires the Dag-level lineage to be enabled in some OpenLineage backend systems.
169
+ Disabling Dag-level lineage while enabling task-level lineage might cause errors or inconsistencies.
170
+
171
+
172
+ .. _configuration_custom_facets:openlineage:
173
+
174
+ Custom Facets
175
+ --------------
176
+ To learn more about facets in OpenLineage, please refer to `facet documentation <https://openlineage.io/docs/spec/facets/>`_.
177
+
178
+ The OpenLineage spec might not contain all the facets you need to write your extractor,
179
+ in which case you will have to make your own `custom facets <https://openlineage.io/docs/spec/facets/custom-facets>`_.
180
+
181
+ You can also inject your own custom facets in the lineage event's run facet using the ``custom_run_facets`` Airflow configuration.
182
+
183
+ Steps to be taken,
184
+
185
+ 1. Write a function that returns the custom facets. You can write as many custom facet functions as needed.
186
+ 2. Register the functions using the ``custom_run_facets`` Airflow configuration.
187
+
188
+ Airflow OpenLineage listener will automatically execute these functions during the lineage event generation and append their return values to the run facet in the lineage event.
189
+
190
+ Writing a custom facet function
191
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
192
+
193
+ - **Input arguments:** The function should accept two input arguments: ``TaskInstance`` and ``TaskInstanceState``.
194
+ - **Function body:** Perform the logic needed to generate the custom facets. The custom facets must inherit from the ``RunFacet`` for the ``_producer`` and ``_schemaURL`` to be automatically added for the facet.
195
+ - **Return value:** The custom facets to be added to the lineage event. Return type should be ``dict[str, RunFacet]`` or ``None``. You may choose to return ``None``, if you do not want to add custom facets for certain criteria.
196
+
197
+ **Example custom facet function**
198
+
199
+ .. code-block:: python
200
+
201
+ import attrs
202
+ from airflow.models.taskinstance import TaskInstance, TaskInstanceState
203
+ from airflow.providers.common.compat.openlineage.facet import RunFacet
204
+
205
+
206
+ @attrs.define
207
+ class MyCustomRunFacet(RunFacet):
208
+ """Define a custom facet."""
209
+
210
+ name: str
211
+ jobState: str
212
+ uniqueName: str
213
+ displayName: str
214
+ dagId: str
215
+ taskId: str
216
+ cluster: str
217
+ custom_metadata: dict
218
+
219
+
220
+ def get_my_custom_facet(
221
+ task_instance: TaskInstance, ti_state: TaskInstanceState
222
+ ) -> dict[str, RunFacet] | None:
223
+ operator_name = task_instance.task.operator_name
224
+ custom_metadata = {}
225
+ if operator_name == "BashOperator":
226
+ return None
227
+ if ti_state == TaskInstanceState.FAILED:
228
+ custom_metadata["custom_key_failed"] = "custom_value"
229
+ job_unique_name = f"TEST.{task_instance.dag_id}.{task_instance.task_id}"
230
+ return {
231
+ "additional_run_facet": MyCustomRunFacet(
232
+ name="test-lineage-namespace",
233
+ jobState=task_instance.state,
234
+ uniqueName=job_unique_name,
235
+ displayName=f"{task_instance.dag_id}.{task_instance.task_id}",
236
+ dagId=task_instance.dag_id,
237
+ taskId=task_instance.task_id,
238
+ cluster="TEST",
239
+ custom_metadata=custom_metadata,
240
+ )
241
+ }
242
+
243
+ Register the custom facet functions
244
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
245
+
246
+ Use the ``custom_run_facets`` Airflow configuration to register the custom run facet functions by passing
247
+ a string of semicolon separated full import path to the functions.
248
+
249
+ .. code-block:: ini
250
+
251
+ [openlineage]
252
+ transport = {"type": "http", "url": "http://example.com:5000", "endpoint": "api/v1/lineage"}
253
+ custom_run_facets = full.path.to.get_my_custom_facet;full.path.to.another_custom_facet_function
254
+
255
+ ``AIRFLOW__OPENLINEAGE__CUSTOM_RUN_FACETS`` environment variable is an equivalent.
256
+
257
+ .. code-block:: ini
258
+
259
+ AIRFLOW__OPENLINEAGE__CUSTOM_RUN_FACETS='full.path.to.get_my_custom_facet;full.path.to.another_custom_facet_function'
260
+
261
+ .. note::
262
+
263
+ - The custom facet functions are executed both at the START and COMPLETE/FAIL of the TaskInstance and added to the corresponding OpenLineage event.
264
+ - When creating conditions on TaskInstance state, you should use second argument provided (``TaskInstanceState``) that will contain the state the task should be in. This may vary from ti.current_state() as the OpenLineage listener may get called before the TaskInstance's state is updated in Airflow database.
265
+ - When path to a single function is registered more than once, it will still be executed only once.
266
+ - When duplicate custom facet keys are returned by multiple functions registered, the result of random function result will be added to the lineage event. Please avoid using duplicate facet keys as it can produce unexpected behaviour.
267
+
268
+
269
+ .. _configuration_backwards_compatibility:openlineage:
270
+
271
+ Backwards compatibility
272
+ ------------------------
273
+
274
+ .. warning::
275
+
276
+ Below variables **should not** be used and can be removed in the future. Consider using Airflow configuration (described above) for a future proof solution.
277
+
278
+ For backwards compatibility with ``openlineage-airflow`` package, some environment variables are still available:
279
+
280
+ - ``OPENLINEAGE_DISABLED`` is an equivalent of ``AIRFLOW__OPENLINEAGE__DISABLED``.
281
+ - ``OPENLINEAGE_CONFIG`` is an equivalent of ``AIRFLOW__OPENLINEAGE__CONFIG_PATH``.
282
+ - ``OPENLINEAGE_NAMESPACE`` is an equivalent of ``AIRFLOW__OPENLINEAGE__NAMESPACE``.
283
+ - ``OPENLINEAGE_EXTRACTORS`` is an equivalent of setting ``AIRFLOW__OPENLINEAGE__EXTRACTORS``.
284
+ - ``OPENLINEAGE_AIRFLOW_DISABLE_SOURCE_CODE`` is an equivalent of ``AIRFLOW__OPENLINEAGE__DISABLE_SOURCE_CODE``.
285
+ - ``OPENLINEAGE_URL`` can be used to set up simple http transport. This method has some limitations and may require using other environment variables to achieve desired output. See `docs <https://openlineage.io/docs/client/python/configuration#transports>`_.