apache-airflow-providers-databricks 6.10.0rc1__tar.gz → 6.11.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 (24) hide show
  1. {apache_airflow_providers_databricks-6.10.0rc1 → apache_airflow_providers_databricks-6.11.0rc1}/PKG-INFO +8 -9
  2. {apache_airflow_providers_databricks-6.10.0rc1 → apache_airflow_providers_databricks-6.11.0rc1}/README.rst +4 -4
  3. {apache_airflow_providers_databricks-6.10.0rc1 → apache_airflow_providers_databricks-6.11.0rc1}/airflow/providers/databricks/__init__.py +1 -1
  4. {apache_airflow_providers_databricks-6.10.0rc1 → apache_airflow_providers_databricks-6.11.0rc1}/airflow/providers/databricks/get_provider_info.py +2 -1
  5. {apache_airflow_providers_databricks-6.10.0rc1 → apache_airflow_providers_databricks-6.11.0rc1}/airflow/providers/databricks/hooks/databricks_base.py +18 -0
  6. {apache_airflow_providers_databricks-6.10.0rc1 → apache_airflow_providers_databricks-6.11.0rc1}/airflow/providers/databricks/operators/databricks.py +9 -1
  7. {apache_airflow_providers_databricks-6.10.0rc1 → apache_airflow_providers_databricks-6.11.0rc1}/airflow/providers/databricks/operators/databricks_workflow.py +26 -1
  8. {apache_airflow_providers_databricks-6.10.0rc1 → apache_airflow_providers_databricks-6.11.0rc1}/pyproject.toml +4 -5
  9. {apache_airflow_providers_databricks-6.10.0rc1 → apache_airflow_providers_databricks-6.11.0rc1}/airflow/providers/databricks/LICENSE +0 -0
  10. {apache_airflow_providers_databricks-6.10.0rc1 → apache_airflow_providers_databricks-6.11.0rc1}/airflow/providers/databricks/hooks/__init__.py +0 -0
  11. {apache_airflow_providers_databricks-6.10.0rc1 → apache_airflow_providers_databricks-6.11.0rc1}/airflow/providers/databricks/hooks/databricks.py +0 -0
  12. {apache_airflow_providers_databricks-6.10.0rc1 → apache_airflow_providers_databricks-6.11.0rc1}/airflow/providers/databricks/hooks/databricks_sql.py +0 -0
  13. {apache_airflow_providers_databricks-6.10.0rc1 → apache_airflow_providers_databricks-6.11.0rc1}/airflow/providers/databricks/operators/__init__.py +0 -0
  14. {apache_airflow_providers_databricks-6.10.0rc1 → apache_airflow_providers_databricks-6.11.0rc1}/airflow/providers/databricks/operators/databricks_repos.py +0 -0
  15. {apache_airflow_providers_databricks-6.10.0rc1 → apache_airflow_providers_databricks-6.11.0rc1}/airflow/providers/databricks/operators/databricks_sql.py +0 -0
  16. {apache_airflow_providers_databricks-6.10.0rc1 → apache_airflow_providers_databricks-6.11.0rc1}/airflow/providers/databricks/plugins/__init__.py +0 -0
  17. {apache_airflow_providers_databricks-6.10.0rc1 → apache_airflow_providers_databricks-6.11.0rc1}/airflow/providers/databricks/plugins/databricks_workflow.py +0 -0
  18. {apache_airflow_providers_databricks-6.10.0rc1 → apache_airflow_providers_databricks-6.11.0rc1}/airflow/providers/databricks/sensors/__init__.py +0 -0
  19. {apache_airflow_providers_databricks-6.10.0rc1 → apache_airflow_providers_databricks-6.11.0rc1}/airflow/providers/databricks/sensors/databricks_partition.py +0 -0
  20. {apache_airflow_providers_databricks-6.10.0rc1 → apache_airflow_providers_databricks-6.11.0rc1}/airflow/providers/databricks/sensors/databricks_sql.py +0 -0
  21. {apache_airflow_providers_databricks-6.10.0rc1 → apache_airflow_providers_databricks-6.11.0rc1}/airflow/providers/databricks/triggers/__init__.py +0 -0
  22. {apache_airflow_providers_databricks-6.10.0rc1 → apache_airflow_providers_databricks-6.11.0rc1}/airflow/providers/databricks/triggers/databricks.py +0 -0
  23. {apache_airflow_providers_databricks-6.10.0rc1 → apache_airflow_providers_databricks-6.11.0rc1}/airflow/providers/databricks/utils/__init__.py +0 -0
  24. {apache_airflow_providers_databricks-6.10.0rc1 → apache_airflow_providers_databricks-6.11.0rc1}/airflow/providers/databricks/utils/databricks.py +0 -0
@@ -1,11 +1,11 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: apache-airflow-providers-databricks
3
- Version: 6.10.0rc1
3
+ Version: 6.11.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>
7
7
  Maintainer-email: Apache Software Foundation <dev@airflow.apache.org>
8
- Requires-Python: ~=3.8
8
+ Requires-Python: ~=3.9
9
9
  Description-Content-Type: text/x-rst
10
10
  Classifier: Development Status :: 5 - Production/Stable
11
11
  Classifier: Environment :: Console
@@ -15,7 +15,6 @@ Classifier: Intended Audience :: System Administrators
15
15
  Classifier: Framework :: Apache Airflow
16
16
  Classifier: Framework :: Apache Airflow :: Provider
17
17
  Classifier: License :: OSI Approved :: Apache Software License
18
- Classifier: Programming Language :: Python :: 3.8
19
18
  Classifier: Programming Language :: Python :: 3.9
20
19
  Classifier: Programming Language :: Python :: 3.10
21
20
  Classifier: Programming Language :: Python :: 3.11
@@ -34,8 +33,8 @@ Requires-Dist: azure-identity>=1.3.1 ; extra == "azure-identity"
34
33
  Requires-Dist: apache-airflow-providers-common-sql ; extra == "common.sql"
35
34
  Requires-Dist: databricks-sdk==0.10.0 ; extra == "sdk"
36
35
  Project-URL: Bug Tracker, https://github.com/apache/airflow/issues
37
- Project-URL: Changelog, https://airflow.apache.org/docs/apache-airflow-providers-databricks/6.10.0/changelog.html
38
- Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-databricks/6.10.0
36
+ Project-URL: Changelog, https://airflow.apache.org/docs/apache-airflow-providers-databricks/6.11.0/changelog.html
37
+ Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-databricks/6.11.0
39
38
  Project-URL: Slack Chat, https://s.apache.org/airflow-slack
40
39
  Project-URL: Source Code, https://github.com/apache/airflow
41
40
  Project-URL: Twitter, https://twitter.com/ApacheAirflow
@@ -88,7 +87,7 @@ Provides-Extra: sdk
88
87
 
89
88
  Package ``apache-airflow-providers-databricks``
90
89
 
91
- Release: ``6.10.0.rc1``
90
+ Release: ``6.11.0.rc1``
92
91
 
93
92
 
94
93
  `Databricks <https://databricks.com/>`__
@@ -101,7 +100,7 @@ This is a provider package for ``databricks`` provider. All classes for this pro
101
100
  are in ``airflow.providers.databricks`` python package.
102
101
 
103
102
  You can find package information and changelog for the provider
104
- in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-databricks/6.10.0/>`_.
103
+ in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-databricks/6.11.0/>`_.
105
104
 
106
105
  Installation
107
106
  ------------
@@ -110,7 +109,7 @@ You can install this package on top of an existing Airflow 2 installation (see `
110
109
  for the minimum Airflow version supported) via
111
110
  ``pip install apache-airflow-providers-databricks``
112
111
 
113
- The package supports the following python versions: 3.8,3.9,3.10,3.11,3.12
112
+ The package supports the following python versions: 3.9,3.10,3.11,3.12
114
113
 
115
114
  Requirements
116
115
  ------------
@@ -149,4 +148,4 @@ Dependent package
149
148
  ============================================================================================================ ==============
150
149
 
151
150
  The changelog for the provider package can be found in the
152
- `changelog <https://airflow.apache.org/docs/apache-airflow-providers-databricks/6.10.0/changelog.html>`_.
151
+ `changelog <https://airflow.apache.org/docs/apache-airflow-providers-databricks/6.11.0/changelog.html>`_.
@@ -42,7 +42,7 @@
42
42
 
43
43
  Package ``apache-airflow-providers-databricks``
44
44
 
45
- Release: ``6.10.0.rc1``
45
+ Release: ``6.11.0.rc1``
46
46
 
47
47
 
48
48
  `Databricks <https://databricks.com/>`__
@@ -55,7 +55,7 @@ This is a provider package for ``databricks`` provider. All classes for this pro
55
55
  are in ``airflow.providers.databricks`` python package.
56
56
 
57
57
  You can find package information and changelog for the provider
58
- in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-databricks/6.10.0/>`_.
58
+ in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-databricks/6.11.0/>`_.
59
59
 
60
60
  Installation
61
61
  ------------
@@ -64,7 +64,7 @@ You can install this package on top of an existing Airflow 2 installation (see `
64
64
  for the minimum Airflow version supported) via
65
65
  ``pip install apache-airflow-providers-databricks``
66
66
 
67
- The package supports the following python versions: 3.8,3.9,3.10,3.11,3.12
67
+ The package supports the following python versions: 3.9,3.10,3.11,3.12
68
68
 
69
69
  Requirements
70
70
  ------------
@@ -103,4 +103,4 @@ Dependent package
103
103
  ============================================================================================================ ==============
104
104
 
105
105
  The changelog for the provider package can be found in the
106
- `changelog <https://airflow.apache.org/docs/apache-airflow-providers-databricks/6.10.0/changelog.html>`_.
106
+ `changelog <https://airflow.apache.org/docs/apache-airflow-providers-databricks/6.11.0/changelog.html>`_.
@@ -29,7 +29,7 @@ from airflow import __version__ as airflow_version
29
29
 
30
30
  __all__ = ["__version__"]
31
31
 
32
- __version__ = "6.10.0"
32
+ __version__ = "6.11.0"
33
33
 
34
34
  if packaging.version.parse(packaging.version.parse(airflow_version).base_version) < packaging.version.parse(
35
35
  "2.8.0"
@@ -28,8 +28,9 @@ def get_provider_info():
28
28
  "name": "Databricks",
29
29
  "description": "`Databricks <https://databricks.com/>`__\n",
30
30
  "state": "ready",
31
- "source-date-epoch": 1726860611,
31
+ "source-date-epoch": 1728485027,
32
32
  "versions": [
33
+ "6.11.0",
33
34
  "6.10.0",
34
35
  "6.9.0",
35
36
  "6.8.0",
@@ -561,6 +561,13 @@ class BaseDatabricksHook(BaseHook):
561
561
  try:
562
562
  for attempt in self._get_retry_object():
563
563
  with attempt:
564
+ self.log.debug(
565
+ "Initiating %s request to %s with payload: %s, headers: %s",
566
+ method,
567
+ url,
568
+ json,
569
+ headers,
570
+ )
564
571
  response = request_func(
565
572
  url,
566
573
  json=json if method in ("POST", "PATCH") else None,
@@ -569,6 +576,8 @@ class BaseDatabricksHook(BaseHook):
569
576
  headers=headers,
570
577
  timeout=self.timeout_seconds,
571
578
  )
579
+ self.log.debug("Response Status Code: %s", response.status_code)
580
+ self.log.debug("Response text: %s", response.text)
572
581
  response.raise_for_status()
573
582
  return response.json()
574
583
  except RetryError:
@@ -615,6 +624,13 @@ class BaseDatabricksHook(BaseHook):
615
624
  try:
616
625
  async for attempt in self._a_get_retry_object():
617
626
  with attempt:
627
+ self.log.debug(
628
+ "Initiating %s request to %s with payload: %s, headers: %s",
629
+ method,
630
+ url,
631
+ json,
632
+ headers,
633
+ )
618
634
  async with request_func(
619
635
  url,
620
636
  json=json,
@@ -622,6 +638,8 @@ class BaseDatabricksHook(BaseHook):
622
638
  headers={**headers, **self.user_agent_header},
623
639
  timeout=self.timeout_seconds,
624
640
  ) as response:
641
+ self.log.debug("Response Status Code: %s", response.status_code)
642
+ self.log.debug("Response text: %s", response.text)
625
643
  response.raise_for_status()
626
644
  return await response.json()
627
645
  except RetryError:
@@ -1045,7 +1045,15 @@ class DatabricksTaskBaseOperator(BaseOperator, ABC):
1045
1045
 
1046
1046
  def _get_databricks_task_id(self, task_id: str) -> str:
1047
1047
  """Get the databricks task ID using dag_id and task_id. Removes illegal characters."""
1048
- return f"{self.dag_id}__{task_id.replace('.', '__')}"
1048
+ task_id = f"{self.dag_id}__{task_id.replace('.', '__')}"
1049
+ if len(task_id) > 100:
1050
+ self.log.warning(
1051
+ "The generated task_key '%s' exceeds 100 characters and will be truncated by the Databricks API. "
1052
+ "This will cause failure when trying to monitor the task. task_key is generated by ",
1053
+ "concatenating dag_id and task_id.",
1054
+ task_id,
1055
+ )
1056
+ return task_id
1049
1057
 
1050
1058
  @property
1051
1059
  def _databricks_workflow_task_group(self) -> DatabricksWorkflowTaskGroup | None:
@@ -52,7 +52,7 @@ class WorkflowRunMetadata:
52
52
  """
53
53
 
54
54
  conn_id: str
55
- job_id: str
55
+ job_id: int
56
56
  run_id: int
57
57
 
58
58
 
@@ -116,6 +116,7 @@ class _CreateDatabricksWorkflowOperator(BaseOperator):
116
116
  self.notebook_params = notebook_params or {}
117
117
  self.tasks_to_convert = tasks_to_convert or []
118
118
  self.relevant_upstreams = [task_id]
119
+ self.workflow_run_metadata: WorkflowRunMetadata | None = None
119
120
  super().__init__(task_id=task_id, **kwargs)
120
121
 
121
122
  def _get_hook(self, caller: str) -> DatabricksHook:
@@ -212,12 +213,36 @@ class _CreateDatabricksWorkflowOperator(BaseOperator):
212
213
 
213
214
  self._wait_for_job_to_start(run_id)
214
215
 
216
+ self.workflow_run_metadata = WorkflowRunMetadata(
217
+ self.databricks_conn_id,
218
+ job_id,
219
+ run_id,
220
+ )
221
+
215
222
  return {
216
223
  "conn_id": self.databricks_conn_id,
217
224
  "job_id": job_id,
218
225
  "run_id": run_id,
219
226
  }
220
227
 
228
+ def on_kill(self) -> None:
229
+ if self.workflow_run_metadata:
230
+ run_id = self.workflow_run_metadata.run_id
231
+ job_id = self.workflow_run_metadata.job_id
232
+
233
+ self._hook.cancel_run(run_id)
234
+ self.log.info(
235
+ "Run: %(run_id)s of job_id: %(job_id)s was requested to be cancelled.",
236
+ {"run_id": run_id, "job_id": job_id},
237
+ )
238
+ else:
239
+ self.log.error(
240
+ """
241
+ Error: Workflow Run metadata is not populated, so the run was not canceled. This could be due
242
+ to the workflow not being started or an error in the workflow creation process.
243
+ """
244
+ )
245
+
221
246
 
222
247
  class DatabricksWorkflowTaskGroup(TaskGroup):
223
248
  """
@@ -28,7 +28,7 @@ build-backend = "flit_core.buildapi"
28
28
 
29
29
  [project]
30
30
  name = "apache-airflow-providers-databricks"
31
- version = "6.10.0.rc1"
31
+ version = "6.11.0.rc1"
32
32
  description = "Provider package apache-airflow-providers-databricks for Apache Airflow"
33
33
  readme = "README.rst"
34
34
  authors = [
@@ -47,14 +47,13 @@ classifiers = [
47
47
  "Framework :: Apache Airflow",
48
48
  "Framework :: Apache Airflow :: Provider",
49
49
  "License :: OSI Approved :: Apache Software License",
50
- "Programming Language :: Python :: 3.8",
51
50
  "Programming Language :: Python :: 3.9",
52
51
  "Programming Language :: Python :: 3.10",
53
52
  "Programming Language :: Python :: 3.11",
54
53
  "Programming Language :: Python :: 3.12",
55
54
  "Topic :: System :: Monitoring",
56
55
  ]
57
- requires-python = "~=3.8"
56
+ requires-python = "~=3.9"
58
57
  dependencies = [
59
58
  "aiohttp>=3.9.2, <4",
60
59
  "apache-airflow-providers-common-sql>=1.10.0rc0",
@@ -68,8 +67,8 @@ dependencies = [
68
67
  ]
69
68
 
70
69
  [project.urls]
71
- "Documentation" = "https://airflow.apache.org/docs/apache-airflow-providers-databricks/6.10.0"
72
- "Changelog" = "https://airflow.apache.org/docs/apache-airflow-providers-databricks/6.10.0/changelog.html"
70
+ "Documentation" = "https://airflow.apache.org/docs/apache-airflow-providers-databricks/6.11.0"
71
+ "Changelog" = "https://airflow.apache.org/docs/apache-airflow-providers-databricks/6.11.0/changelog.html"
73
72
  "Bug Tracker" = "https://github.com/apache/airflow/issues"
74
73
  "Source Code" = "https://github.com/apache/airflow"
75
74
  "Slack Chat" = "https://s.apache.org/airflow-slack"