apache-airflow-providers-databricks 7.3.2rc1__tar.gz → 7.4.0rc1__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.

Potentially problematic release.


This version of apache-airflow-providers-databricks might be problematic. Click here for more details.

Files changed (92) hide show
  1. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/PKG-INFO +26 -20
  2. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/README.rst +17 -15
  3. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/docs/changelog.rst +26 -0
  4. apache_airflow_providers_databricks-7.4.0rc1/docs/commits.rst +35 -0
  5. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/docs/index.rst +19 -17
  6. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/provider.yaml +6 -2
  7. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/pyproject.toml +13 -5
  8. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/src/airflow/providers/databricks/__init__.py +3 -3
  9. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/src/airflow/providers/databricks/hooks/databricks_sql.py +89 -1
  10. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/src/airflow/providers/databricks/operators/databricks_sql.py +6 -1
  11. apache_airflow_providers_databricks-7.4.0rc1/src/airflow/providers/databricks/utils/openlineage.py +336 -0
  12. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/src/airflow/providers/databricks/version_compat.py +0 -1
  13. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/tests/unit/databricks/hooks/test_databricks_sql.py +126 -1
  14. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/tests/unit/databricks/operators/test_databricks_sql.py +7 -0
  15. apache_airflow_providers_databricks-7.4.0rc1/tests/unit/databricks/utils/test_openlineage.py +617 -0
  16. apache_airflow_providers_databricks-7.3.2rc1/docs/commits.rst +0 -992
  17. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/docs/.latest-doc-only-change.txt +0 -0
  18. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/docs/conf.py +0 -0
  19. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/docs/connections/databricks.rst +0 -0
  20. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/docs/img/databricks_workflow_task_group_airflow_graph_view.png +0 -0
  21. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/docs/img/workflow_plugin_launch_task.png +0 -0
  22. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/docs/img/workflow_plugin_single_task.png +0 -0
  23. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/docs/img/workflow_run_databricks_graph_view.png +0 -0
  24. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/docs/installing-providers-from-sources.rst +0 -0
  25. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/docs/integration-logos/Databricks.png +0 -0
  26. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/docs/operators/copy_into.rst +0 -0
  27. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/docs/operators/index.rst +0 -0
  28. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/docs/operators/jobs_create.rst +0 -0
  29. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/docs/operators/notebook.rst +0 -0
  30. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/docs/operators/repos_create.rst +0 -0
  31. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/docs/operators/repos_delete.rst +0 -0
  32. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/docs/operators/repos_update.rst +0 -0
  33. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/docs/operators/run_now.rst +0 -0
  34. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/docs/operators/sql.rst +0 -0
  35. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/docs/operators/sql_statements.rst +0 -0
  36. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/docs/operators/submit_run.rst +0 -0
  37. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/docs/operators/task.rst +0 -0
  38. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/docs/operators/workflow.rst +0 -0
  39. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/docs/plugins/index.rst +0 -0
  40. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/docs/plugins/workflow.rst +0 -0
  41. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/docs/security.rst +0 -0
  42. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/src/airflow/__init__.py +0 -0
  43. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/src/airflow/providers/__init__.py +0 -0
  44. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/src/airflow/providers/databricks/LICENSE +0 -0
  45. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/src/airflow/providers/databricks/exceptions.py +0 -0
  46. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/src/airflow/providers/databricks/get_provider_info.py +0 -0
  47. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/src/airflow/providers/databricks/hooks/__init__.py +0 -0
  48. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/src/airflow/providers/databricks/hooks/databricks.py +0 -0
  49. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/src/airflow/providers/databricks/hooks/databricks_base.py +0 -0
  50. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/src/airflow/providers/databricks/operators/__init__.py +0 -0
  51. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/src/airflow/providers/databricks/operators/databricks.py +0 -0
  52. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/src/airflow/providers/databricks/operators/databricks_repos.py +0 -0
  53. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/src/airflow/providers/databricks/operators/databricks_workflow.py +0 -0
  54. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/src/airflow/providers/databricks/plugins/__init__.py +0 -0
  55. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/src/airflow/providers/databricks/plugins/databricks_workflow.py +0 -0
  56. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/src/airflow/providers/databricks/sensors/__init__.py +0 -0
  57. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/src/airflow/providers/databricks/sensors/databricks_partition.py +0 -0
  58. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/src/airflow/providers/databricks/sensors/databricks_sql.py +0 -0
  59. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/src/airflow/providers/databricks/triggers/__init__.py +0 -0
  60. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/src/airflow/providers/databricks/triggers/databricks.py +0 -0
  61. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/src/airflow/providers/databricks/utils/__init__.py +0 -0
  62. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/src/airflow/providers/databricks/utils/databricks.py +0 -0
  63. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/tests/conftest.py +0 -0
  64. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/tests/system/__init__.py +0 -0
  65. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/tests/system/databricks/__init__.py +0 -0
  66. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/tests/system/databricks/example_databricks.py +0 -0
  67. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/tests/system/databricks/example_databricks_repos.py +0 -0
  68. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/tests/system/databricks/example_databricks_sensors.py +0 -0
  69. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/tests/system/databricks/example_databricks_sql.py +0 -0
  70. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/tests/system/databricks/example_databricks_workflow.py +0 -0
  71. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/tests/unit/__init__.py +0 -0
  72. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/tests/unit/databricks/__init__.py +0 -0
  73. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/tests/unit/databricks/hooks/__init__.py +0 -0
  74. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/tests/unit/databricks/hooks/test_databricks.py +0 -0
  75. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/tests/unit/databricks/hooks/test_databricks_azure_workload_identity.py +0 -0
  76. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/tests/unit/databricks/hooks/test_databricks_azure_workload_identity_async.py +0 -0
  77. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/tests/unit/databricks/hooks/test_databricks_base.py +0 -0
  78. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/tests/unit/databricks/operators/__init__.py +0 -0
  79. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/tests/unit/databricks/operators/test_databricks.py +0 -0
  80. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/tests/unit/databricks/operators/test_databricks_copy.py +0 -0
  81. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/tests/unit/databricks/operators/test_databricks_repos.py +0 -0
  82. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/tests/unit/databricks/operators/test_databricks_workflow.py +0 -0
  83. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/tests/unit/databricks/plugins/__init__.py +0 -0
  84. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/tests/unit/databricks/plugins/test_databricks_workflow.py +0 -0
  85. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/tests/unit/databricks/sensors/__init__.py +0 -0
  86. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/tests/unit/databricks/sensors/test_databricks_partition.py +0 -0
  87. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/tests/unit/databricks/sensors/test_databricks_sql.py +0 -0
  88. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/tests/unit/databricks/test_exceptions.py +0 -0
  89. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/tests/unit/databricks/triggers/__init__.py +0 -0
  90. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/tests/unit/databricks/triggers/test_databricks.py +0 -0
  91. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/tests/unit/databricks/utils/__init__.py +0 -0
  92. {apache_airflow_providers_databricks-7.3.2rc1 → apache_airflow_providers_databricks-7.4.0rc1}/tests/unit/databricks/utils/test_databricks.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: apache-airflow-providers-databricks
3
- Version: 7.3.2rc1
3
+ Version: 7.4.0rc1
4
4
  Summary: Provider package apache-airflow-providers-databricks for Apache Airflow
5
5
  Keywords: airflow-provider,databricks,airflow,integration
6
6
  Author-email: Apache Software Foundation <dev@airflow.apache.org>
@@ -20,27 +20,31 @@ Classifier: Programming Language :: Python :: 3.10
20
20
  Classifier: Programming Language :: Python :: 3.11
21
21
  Classifier: Programming Language :: Python :: 3.12
22
22
  Classifier: Topic :: System :: Monitoring
23
- Requires-Dist: apache-airflow>=2.9.0rc0
24
- Requires-Dist: apache-airflow-providers-common-sql>=1.20.0rc0
23
+ Requires-Dist: apache-airflow>=2.10.0rc1
24
+ Requires-Dist: apache-airflow-providers-common-compat>=1.6.0rc1
25
+ Requires-Dist: apache-airflow-providers-common-sql>=1.27.0rc1
25
26
  Requires-Dist: requests>=2.31.0,<3
26
27
  Requires-Dist: databricks-sql-connector>=3.0.0
28
+ Requires-Dist: databricks-sqlalchemy>=1.0.2
27
29
  Requires-Dist: aiohttp>=3.9.2, <4
28
30
  Requires-Dist: mergedeep>=1.3.4
29
31
  Requires-Dist: pandas>=2.1.2,<2.2
30
32
  Requires-Dist: pyarrow>=14.0.1
31
33
  Requires-Dist: azure-identity>=1.3.1 ; extra == "azure-identity"
32
34
  Requires-Dist: apache-airflow-providers-fab ; extra == "fab"
35
+ Requires-Dist: apache-airflow-providers-openlineage>=2.3.0rc1 ; extra == "openlineage"
33
36
  Requires-Dist: databricks-sdk==0.10.0 ; extra == "sdk"
34
37
  Requires-Dist: apache-airflow-providers-standard ; extra == "standard"
35
38
  Project-URL: Bug Tracker, https://github.com/apache/airflow/issues
36
- Project-URL: Changelog, https://airflow.apache.org/docs/apache-airflow-providers-databricks/7.3.2/changelog.html
37
- Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-databricks/7.3.2
39
+ Project-URL: Changelog, https://airflow.staged.apache.org/docs/apache-airflow-providers-databricks/7.4.0/changelog.html
40
+ Project-URL: Documentation, https://airflow.staged.apache.org/docs/apache-airflow-providers-databricks/7.4.0
38
41
  Project-URL: Mastodon, https://fosstodon.org/@airflow
39
42
  Project-URL: Slack Chat, https://s.apache.org/airflow-slack
40
43
  Project-URL: Source Code, https://github.com/apache/airflow
41
44
  Project-URL: YouTube, https://www.youtube.com/channel/UCSXwxpWZQ7XZ1WL3wqevChA/
42
45
  Provides-Extra: azure-identity
43
46
  Provides-Extra: fab
47
+ Provides-Extra: openlineage
44
48
  Provides-Extra: sdk
45
49
  Provides-Extra: standard
46
50
 
@@ -69,7 +73,7 @@ Provides-Extra: standard
69
73
 
70
74
  Package ``apache-airflow-providers-databricks``
71
75
 
72
- Release: ``7.3.2``
76
+ Release: ``7.4.0``
73
77
 
74
78
 
75
79
  `Databricks <https://databricks.com/>`__
@@ -82,7 +86,7 @@ This is a provider package for ``databricks`` provider. All classes for this pro
82
86
  are in ``airflow.providers.databricks`` python package.
83
87
 
84
88
  You can find package information and changelog for the provider
85
- in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-databricks/7.3.2/>`_.
89
+ in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-databricks/7.4.0/>`_.
86
90
 
87
91
  Installation
88
92
  ------------
@@ -96,18 +100,20 @@ The package supports the following python versions: 3.9,3.10,3.11,3.12
96
100
  Requirements
97
101
  ------------
98
102
 
99
- ======================================= ==================
100
- PIP package Version required
101
- ======================================= ==================
102
- ``apache-airflow`` ``>=2.9.0``
103
- ``apache-airflow-providers-common-sql`` ``>=1.20.0``
104
- ``requests`` ``>=2.31.0,<3``
105
- ``databricks-sql-connector`` ``>=3.0.0``
106
- ``aiohttp`` ``>=3.9.2,<4``
107
- ``mergedeep`` ``>=1.3.4``
108
- ``pandas`` ``>=2.1.2,<2.2``
109
- ``pyarrow`` ``>=14.0.1``
110
- ======================================= ==================
103
+ ========================================== ==================
104
+ PIP package Version required
105
+ ========================================== ==================
106
+ ``apache-airflow`` ``>=2.10.0``
107
+ ``apache-airflow-providers-common-compat`` ``>=1.6.0``
108
+ ``apache-airflow-providers-common-sql`` ``>=1.27.0``
109
+ ``requests`` ``>=2.31.0,<3``
110
+ ``databricks-sql-connector`` ``>=3.0.0``
111
+ ``databricks-sqlalchemy`` ``>=1.0.2``
112
+ ``aiohttp`` ``>=3.9.2,<4``
113
+ ``mergedeep`` ``>=1.3.4``
114
+ ``pandas`` ``>=2.1.2,<2.2``
115
+ ``pyarrow`` ``>=14.0.1``
116
+ ========================================== ==================
111
117
 
112
118
  Cross provider package dependencies
113
119
  -----------------------------------
@@ -130,5 +136,5 @@ Dependent package
130
136
  ============================================================================================================ ==============
131
137
 
132
138
  The changelog for the provider package can be found in the
133
- `changelog <https://airflow.apache.org/docs/apache-airflow-providers-databricks/7.3.2/changelog.html>`_.
139
+ `changelog <https://airflow.apache.org/docs/apache-airflow-providers-databricks/7.4.0/changelog.html>`_.
134
140
 
@@ -23,7 +23,7 @@
23
23
 
24
24
  Package ``apache-airflow-providers-databricks``
25
25
 
26
- Release: ``7.3.2``
26
+ Release: ``7.4.0``
27
27
 
28
28
 
29
29
  `Databricks <https://databricks.com/>`__
@@ -36,7 +36,7 @@ This is a provider package for ``databricks`` provider. All classes for this pro
36
36
  are in ``airflow.providers.databricks`` 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-databricks/7.3.2/>`_.
39
+ in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-databricks/7.4.0/>`_.
40
40
 
41
41
  Installation
42
42
  ------------
@@ -50,18 +50,20 @@ The package supports the following python versions: 3.9,3.10,3.11,3.12
50
50
  Requirements
51
51
  ------------
52
52
 
53
- ======================================= ==================
54
- PIP package Version required
55
- ======================================= ==================
56
- ``apache-airflow`` ``>=2.9.0``
57
- ``apache-airflow-providers-common-sql`` ``>=1.20.0``
58
- ``requests`` ``>=2.31.0,<3``
59
- ``databricks-sql-connector`` ``>=3.0.0``
60
- ``aiohttp`` ``>=3.9.2,<4``
61
- ``mergedeep`` ``>=1.3.4``
62
- ``pandas`` ``>=2.1.2,<2.2``
63
- ``pyarrow`` ``>=14.0.1``
64
- ======================================= ==================
53
+ ========================================== ==================
54
+ PIP package Version required
55
+ ========================================== ==================
56
+ ``apache-airflow`` ``>=2.10.0``
57
+ ``apache-airflow-providers-common-compat`` ``>=1.6.0``
58
+ ``apache-airflow-providers-common-sql`` ``>=1.27.0``
59
+ ``requests`` ``>=2.31.0,<3``
60
+ ``databricks-sql-connector`` ``>=3.0.0``
61
+ ``databricks-sqlalchemy`` ``>=1.0.2``
62
+ ``aiohttp`` ``>=3.9.2,<4``
63
+ ``mergedeep`` ``>=1.3.4``
64
+ ``pandas`` ``>=2.1.2,<2.2``
65
+ ``pyarrow`` ``>=14.0.1``
66
+ ========================================== ==================
65
67
 
66
68
  Cross provider package dependencies
67
69
  -----------------------------------
@@ -84,4 +86,4 @@ Dependent package
84
86
  ============================================================================================================ ==============
85
87
 
86
88
  The changelog for the provider package can be found in the
87
- `changelog <https://airflow.apache.org/docs/apache-airflow-providers-databricks/7.3.2/changelog.html>`_.
89
+ `changelog <https://airflow.apache.org/docs/apache-airflow-providers-databricks/7.4.0/changelog.html>`_.
@@ -26,6 +26,32 @@
26
26
  Changelog
27
27
  ---------
28
28
 
29
+ 7.4.0
30
+ .....
31
+
32
+ .. note::
33
+ This release of provider is only available for Airflow 2.10+ as explained in the
34
+ Apache Airflow providers support policy <https://github.com/apache/airflow/blob/main/PROVIDERS.rst#minimum-supported-version-of-airflow-for-community-managed-providers>_.
35
+
36
+ Features
37
+ ~~~~~~~~
38
+
39
+ * ``Upgrade 'DatabricksSqlHook' to support polars (#50523)``
40
+ * ``feat: Add OpenLineage support for DatabricksSqlHook (#50392)``
41
+ * ``enhance: logs SQL before execution in 'snowflake' and 'databricks_sql' (#48942)``
42
+
43
+ Misc
44
+ ~~~~
45
+
46
+ * ``Remove AIRFLOW_2_10_PLUS conditions (#49877)``
47
+ * ``Bump min Airflow version in providers to 2.10 (#49843)``
48
+ * ``chore: import paths use the stable functions (#49460)``
49
+
50
+ .. Below changes are excluded from the changelog. Move them to
51
+ appropriate section above if needed. Do not delete the lines(!):
52
+ * ``Update description of provider.yaml dependencies (#50231)``
53
+ * ``Avoid committing history for providers (#49907)``
54
+
29
55
  7.3.2
30
56
  .....
31
57
 
@@ -0,0 +1,35 @@
1
+
2
+ .. Licensed to the Apache Software Foundation (ASF) under one
3
+ or more contributor license agreements. See the NOTICE file
4
+ distributed with this work for additional information
5
+ regarding copyright ownership. The ASF licenses this file
6
+ to you under the Apache License, Version 2.0 (the
7
+ "License"); you may not use this file except in compliance
8
+ with the License. You may obtain a copy of the License at
9
+
10
+ .. http://www.apache.org/licenses/LICENSE-2.0
11
+
12
+ .. Unless required by applicable law or agreed to in writing,
13
+ software distributed under the License is distributed on an
14
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15
+ KIND, either express or implied. See the License for the
16
+ specific language governing permissions and limitations
17
+ under the License.
18
+
19
+ .. NOTE! THIS FILE IS AUTOMATICALLY GENERATED AND WILL BE OVERWRITTEN!
20
+
21
+ .. IF YOU WANT TO MODIFY THIS FILE, YOU SHOULD MODIFY THE TEMPLATE
22
+ `PROVIDER_COMMITS_TEMPLATE.rst.jinja2` IN the `dev/breeze/src/airflow_breeze/templates` DIRECTORY
23
+
24
+ .. THE REMAINDER OF THE FILE IS AUTOMATICALLY GENERATED. IT WILL BE OVERWRITTEN!
25
+
26
+ Package apache-airflow-providers-databricks
27
+ ------------------------------------------------------
28
+
29
+ `Databricks <https://databricks.com/>`__
30
+
31
+
32
+ This is detailed commit list of changes for versions provider package: ``databricks``.
33
+ For high-level changelog, see :doc:`package information including changelog <index>`.
34
+
35
+ .. airflow-providers-commits::
@@ -78,7 +78,7 @@ apache-airflow-providers-databricks package
78
78
  `Databricks <https://databricks.com/>`__
79
79
 
80
80
 
81
- Release: 7.3.2
81
+ Release: 7.4.0
82
82
 
83
83
  Provider package
84
84
  ----------------
@@ -96,20 +96,22 @@ For the minimum Airflow version supported, see ``Requirements`` below.
96
96
  Requirements
97
97
  ------------
98
98
 
99
- The minimum Apache Airflow version supported by this provider distribution is ``2.9.0``.
100
-
101
- ======================================= ==================
102
- PIP package Version required
103
- ======================================= ==================
104
- ``apache-airflow`` ``>=2.9.0``
105
- ``apache-airflow-providers-common-sql`` ``>=1.20.0``
106
- ``requests`` ``>=2.31.0,<3``
107
- ``databricks-sql-connector`` ``>=3.0.0``
108
- ``aiohttp`` ``>=3.9.2,<4``
109
- ``mergedeep`` ``>=1.3.4``
110
- ``pandas`` ``>=2.1.2,<2.2``
111
- ``pyarrow`` ``>=14.0.1``
112
- ======================================= ==================
99
+ The minimum Apache Airflow version supported by this provider distribution is ``2.10.0``.
100
+
101
+ ========================================== ==================
102
+ PIP package Version required
103
+ ========================================== ==================
104
+ ``apache-airflow`` ``>=2.10.0``
105
+ ``apache-airflow-providers-common-compat`` ``>=1.6.0``
106
+ ``apache-airflow-providers-common-sql`` ``>=1.27.0``
107
+ ``requests`` ``>=2.31.0,<3``
108
+ ``databricks-sql-connector`` ``>=3.0.0``
109
+ ``databricks-sqlalchemy`` ``>=1.0.2``
110
+ ``aiohttp`` ``>=3.9.2,<4``
111
+ ``mergedeep`` ``>=1.3.4``
112
+ ``pandas`` ``>=2.1.2,<2.2``
113
+ ``pyarrow`` ``>=14.0.1``
114
+ ========================================== ==================
113
115
 
114
116
  Cross provider package dependencies
115
117
  -----------------------------------
@@ -137,5 +139,5 @@ Downloading official packages
137
139
  You can download officially released packages and verify their checksums and signatures from the
138
140
  `Official Apache Download site <https://downloads.apache.org/airflow/providers/>`_
139
141
 
140
- * `The apache-airflow-providers-databricks 7.3.2 sdist package <https://downloads.apache.org/airflow/providers/apache_airflow_providers_databricks-7.3.2.tar.gz>`_ (`asc <https://downloads.apache.org/airflow/providers/apache_airflow_providers_databricks-7.3.2.tar.gz.asc>`__, `sha512 <https://downloads.apache.org/airflow/providers/apache_airflow_providers_databricks-7.3.2.tar.gz.sha512>`__)
141
- * `The apache-airflow-providers-databricks 7.3.2 wheel package <https://downloads.apache.org/airflow/providers/apache_airflow_providers_databricks-7.3.2-py3-none-any.whl>`_ (`asc <https://downloads.apache.org/airflow/providers/apache_airflow_providers_databricks-7.3.2-py3-none-any.whl.asc>`__, `sha512 <https://downloads.apache.org/airflow/providers/apache_airflow_providers_databricks-7.3.2-py3-none-any.whl.sha512>`__)
142
+ * `The apache-airflow-providers-databricks 7.4.0 sdist package <https://downloads.apache.org/airflow/providers/apache_airflow_providers_databricks-7.4.0.tar.gz>`_ (`asc <https://downloads.apache.org/airflow/providers/apache_airflow_providers_databricks-7.4.0.tar.gz.asc>`__, `sha512 <https://downloads.apache.org/airflow/providers/apache_airflow_providers_databricks-7.4.0.tar.gz.sha512>`__)
143
+ * `The apache-airflow-providers-databricks 7.4.0 wheel package <https://downloads.apache.org/airflow/providers/apache_airflow_providers_databricks-7.4.0-py3-none-any.whl>`_ (`asc <https://downloads.apache.org/airflow/providers/apache_airflow_providers_databricks-7.4.0-py3-none-any.whl.asc>`__, `sha512 <https://downloads.apache.org/airflow/providers/apache_airflow_providers_databricks-7.4.0-py3-none-any.whl.sha512>`__)
@@ -22,9 +22,13 @@ description: |
22
22
  `Databricks <https://databricks.com/>`__
23
23
 
24
24
  state: ready
25
- source-date-epoch: 1744788983
26
- # note that those versions are maintained by release manager - do not update them manually
25
+ source-date-epoch: 1747132432
26
+ # Note that those versions are maintained by release manager - do not update them manually
27
+ # with the exception of case where other provider in sources has >= new provider version.
28
+ # In such case adding >= NEW_VERSION and bumping to NEW_VERSION in a provider have
29
+ # to be done in the same PR
27
30
  versions:
31
+ - 7.4.0
28
32
  - 7.3.2
29
33
  - 7.3.1
30
34
  - 7.3.0
@@ -25,7 +25,7 @@ build-backend = "flit_core.buildapi"
25
25
 
26
26
  [project]
27
27
  name = "apache-airflow-providers-databricks"
28
- version = "7.3.2.rc1"
28
+ version = "7.4.0rc1"
29
29
  description = "Provider package apache-airflow-providers-databricks for Apache Airflow"
30
30
  readme = "README.rst"
31
31
  authors = [
@@ -57,10 +57,12 @@ requires-python = "~=3.9"
57
57
  # Make sure to run ``breeze static-checks --type update-providers-dependencies --all-files``
58
58
  # After you modify the dependencies, and rebuild your Breeze CI image with ``breeze ci-image build``
59
59
  dependencies = [
60
- "apache-airflow>=2.9.0rc0",
61
- "apache-airflow-providers-common-sql>=1.20.0rc0",
60
+ "apache-airflow>=2.10.0rc1",
61
+ "apache-airflow-providers-common-compat>=1.6.0rc1",
62
+ "apache-airflow-providers-common-sql>=1.27.0rc1",
62
63
  "requests>=2.31.0,<3",
63
64
  "databricks-sql-connector>=3.0.0",
65
+ "databricks-sqlalchemy>=1.0.2",
64
66
  "aiohttp>=3.9.2, <4",
65
67
  "mergedeep>=1.3.4",
66
68
  "pandas>=2.1.2,<2.2",
@@ -83,17 +85,23 @@ dependencies = [
83
85
  "standard" = [
84
86
  "apache-airflow-providers-standard"
85
87
  ]
88
+ "openlineage" = [
89
+ "apache-airflow-providers-openlineage>=2.3.0rc1"
90
+ ]
86
91
 
87
92
  [dependency-groups]
88
93
  dev = [
89
94
  "apache-airflow",
90
95
  "apache-airflow-task-sdk",
91
96
  "apache-airflow-devel-common",
97
+ "apache-airflow-providers-common-compat",
92
98
  "apache-airflow-providers-common-sql",
93
99
  "apache-airflow-providers-fab",
100
+ "apache-airflow-providers-openlineage",
94
101
  # Additional devel dependencies (do not remove this line and add extra development dependencies)
95
102
  "deltalake>=0.12.0",
96
103
  "apache-airflow-providers-microsoft-azure",
104
+ "apache-airflow-providers-common-sql[pandas,polars]",
97
105
  ]
98
106
 
99
107
  # To build docs:
@@ -122,8 +130,8 @@ apache-airflow-providers-common-sql = {workspace = true}
122
130
  apache-airflow-providers-standard = {workspace = true}
123
131
 
124
132
  [project.urls]
125
- "Documentation" = "https://airflow.apache.org/docs/apache-airflow-providers-databricks/7.3.2"
126
- "Changelog" = "https://airflow.apache.org/docs/apache-airflow-providers-databricks/7.3.2/changelog.html"
133
+ "Documentation" = "https://airflow.staged.apache.org/docs/apache-airflow-providers-databricks/7.4.0"
134
+ "Changelog" = "https://airflow.staged.apache.org/docs/apache-airflow-providers-databricks/7.4.0/changelog.html"
127
135
  "Bug Tracker" = "https://github.com/apache/airflow/issues"
128
136
  "Source Code" = "https://github.com/apache/airflow"
129
137
  "Slack Chat" = "https://s.apache.org/airflow-slack"
@@ -29,11 +29,11 @@ from airflow import __version__ as airflow_version
29
29
 
30
30
  __all__ = ["__version__"]
31
31
 
32
- __version__ = "7.3.2"
32
+ __version__ = "7.4.0"
33
33
 
34
34
  if packaging.version.parse(packaging.version.parse(airflow_version).base_version) < packaging.version.parse(
35
- "2.9.0"
35
+ "2.10.0"
36
36
  ):
37
37
  raise RuntimeError(
38
- f"The package `apache-airflow-providers-databricks:{__version__}` needs Apache Airflow 2.9.0+"
38
+ f"The package `apache-airflow-providers-databricks:{__version__}` needs Apache Airflow 2.10.0+"
39
39
  )
@@ -35,7 +35,8 @@ from databricks import sql # type: ignore[attr-defined]
35
35
  from databricks.sql.types import Row
36
36
 
37
37
  from airflow.exceptions import AirflowException
38
- from airflow.providers.common.sql.hooks.sql import DbApiHook, return_single_query_results
38
+ from airflow.providers.common.sql.hooks.handlers import return_single_query_results
39
+ from airflow.providers.common.sql.hooks.sql import DbApiHook
39
40
  from airflow.providers.databricks.exceptions import DatabricksSqlExecutionError, DatabricksSqlExecutionTimeout
40
41
  from airflow.providers.databricks.hooks.databricks_base import BaseDatabricksHook
41
42
 
@@ -43,6 +44,8 @@ if TYPE_CHECKING:
43
44
  from databricks.sql.client import Connection
44
45
 
45
46
  from airflow.models.connection import Connection as AirflowConnection
47
+ from airflow.providers.openlineage.extractors import OperatorLineage
48
+ from airflow.providers.openlineage.sqlparser import DatabaseInfo
46
49
 
47
50
 
48
51
  LIST_SQL_ENDPOINTS_ENDPOINT = ("GET", "api/2.0/sql/endpoints")
@@ -107,6 +110,7 @@ class DatabricksSqlHook(BaseDatabricksHook, DbApiHook):
107
110
  self.catalog = catalog
108
111
  self.schema = schema
109
112
  self.additional_params = kwargs
113
+ self.query_ids: list[str] = []
110
114
 
111
115
  def _get_extra_config(self) -> dict[str, Any | None]:
112
116
  extra_params = copy(self.databricks_conn.extra_dejson)
@@ -226,6 +230,8 @@ class DatabricksSqlHook(BaseDatabricksHook, DbApiHook):
226
230
  it will raise and fail.
227
231
  """
228
232
  self.descriptions = []
233
+ self.query_ids = []
234
+
229
235
  if isinstance(sql, str):
230
236
  if split_statements:
231
237
  sql_list = [self.strip_sql_string(s) for s in self.split_sql_string(sql)]
@@ -242,6 +248,7 @@ class DatabricksSqlHook(BaseDatabricksHook, DbApiHook):
242
248
  conn = None
243
249
  results = []
244
250
  for sql_statement in sql_list:
251
+ self.log.info("Running statement: %s, parameters: %s", sql_statement, parameters)
245
252
  # when using AAD tokens, it could expire if previous query run longer than token lifetime
246
253
  conn = self.get_conn()
247
254
  with closing(conn.cursor()) as cur:
@@ -265,6 +272,10 @@ class DatabricksSqlHook(BaseDatabricksHook, DbApiHook):
265
272
  if t is not None:
266
273
  t.cancel()
267
274
 
275
+ if query_id := cur.query_id:
276
+ self.log.info("Databricks query id: %s", query_id)
277
+ self.query_ids.append(query_id)
278
+
268
279
  if handler is not None:
269
280
  raw_result = handler(cur)
270
281
  result = self._make_common_data_structure(raw_result)
@@ -307,3 +318,80 @@ class DatabricksSqlHook(BaseDatabricksHook, DbApiHook):
307
318
 
308
319
  def bulk_load(self, table, tmp_file):
309
320
  raise NotImplementedError()
321
+
322
+ def get_openlineage_database_info(self, connection) -> DatabaseInfo:
323
+ from airflow.providers.openlineage.sqlparser import DatabaseInfo
324
+
325
+ return DatabaseInfo(
326
+ scheme=self.get_openlineage_database_dialect(connection),
327
+ authority=self.host,
328
+ database=self.catalog,
329
+ information_schema_columns=[
330
+ "table_schema",
331
+ "table_name",
332
+ "column_name",
333
+ "ordinal_position",
334
+ "data_type",
335
+ "table_catalog",
336
+ ],
337
+ is_information_schema_cross_db=True,
338
+ )
339
+
340
+ def get_openlineage_database_dialect(self, _) -> str:
341
+ return "databricks"
342
+
343
+ def get_openlineage_default_schema(self) -> str | None:
344
+ return self.schema or "default"
345
+
346
+ def get_openlineage_database_specific_lineage(self, task_instance) -> OperatorLineage | None:
347
+ """
348
+ Generate OpenLineage metadata for a Databricks task instance based on executed query IDs.
349
+
350
+ If a single query ID is present, attach an `ExternalQueryRunFacet` to the lineage metadata.
351
+ If multiple query IDs are present, emits separate OpenLineage events for each query instead.
352
+
353
+ Note that `get_openlineage_database_specific_lineage` is usually called after task's execution,
354
+ so if multiple query IDs are present, both START and COMPLETE event for each query will be emitted
355
+ after task's execution. If we are able to query Databricks for query execution metadata,
356
+ query event times will correspond to actual query's start and finish times.
357
+
358
+ Args:
359
+ task_instance: The Airflow TaskInstance object for which lineage is being collected.
360
+
361
+ Returns:
362
+ An `OperatorLineage` object if a single query ID is found; otherwise `None`.
363
+ """
364
+ from airflow.providers.common.compat.openlineage.facet import ExternalQueryRunFacet
365
+ from airflow.providers.databricks.utils.openlineage import (
366
+ emit_openlineage_events_for_databricks_queries,
367
+ )
368
+ from airflow.providers.openlineage.extractors import OperatorLineage
369
+ from airflow.providers.openlineage.sqlparser import SQLParser
370
+
371
+ if not self.query_ids:
372
+ self.log.debug("openlineage: no databricks query ids found.")
373
+ return None
374
+
375
+ self.log.debug("openlineage: getting connection to get database info")
376
+ connection = self.get_connection(self.get_conn_id())
377
+ namespace = SQLParser.create_namespace(self.get_openlineage_database_info(connection))
378
+
379
+ if len(self.query_ids) == 1:
380
+ self.log.debug("Attaching ExternalQueryRunFacet with single query_id to OpenLineage event.")
381
+ return OperatorLineage(
382
+ run_facets={
383
+ "externalQuery": ExternalQueryRunFacet(
384
+ externalQueryId=self.query_ids[0], source=namespace
385
+ )
386
+ }
387
+ )
388
+
389
+ self.log.info("Multiple query_ids found. Separate OpenLineage event will be emitted for each query.")
390
+ emit_openlineage_events_for_databricks_queries(
391
+ query_ids=self.query_ids,
392
+ query_source_namespace=namespace,
393
+ task_instance=task_instance,
394
+ hook=self,
395
+ )
396
+
397
+ return None
@@ -22,6 +22,7 @@ from __future__ import annotations
22
22
  import csv
23
23
  import json
24
24
  from collections.abc import Sequence
25
+ from functools import cached_property
25
26
  from typing import TYPE_CHECKING, Any, ClassVar
26
27
 
27
28
  from databricks.sql.utils import ParamEscaper
@@ -106,7 +107,8 @@ class DatabricksSqlOperator(SQLExecuteQueryOperator):
106
107
  self.catalog = catalog
107
108
  self.schema = schema
108
109
 
109
- def get_db_hook(self) -> DatabricksSqlHook:
110
+ @cached_property
111
+ def _hook(self) -> DatabricksSqlHook:
110
112
  hook_params = {
111
113
  "http_path": self.http_path,
112
114
  "session_configuration": self.session_configuration,
@@ -120,6 +122,9 @@ class DatabricksSqlOperator(SQLExecuteQueryOperator):
120
122
  }
121
123
  return DatabricksSqlHook(self.databricks_conn_id, **hook_params)
122
124
 
125
+ def get_db_hook(self) -> DatabricksSqlHook:
126
+ return self._hook
127
+
123
128
  def _should_run_output_processing(self) -> bool:
124
129
  return self.do_xcom_push or bool(self._output_path)
125
130