apache-airflow-providers-dbt-cloud 4.3.3__tar.gz → 4.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-dbt-cloud might be problematic. Click here for more details.

Files changed (55) hide show
  1. {apache_airflow_providers_dbt_cloud-4.3.3 → apache_airflow_providers_dbt_cloud-4.4.0rc1}/PKG-INFO +10 -10
  2. {apache_airflow_providers_dbt_cloud-4.3.3 → apache_airflow_providers_dbt_cloud-4.4.0rc1}/README.rst +4 -4
  3. {apache_airflow_providers_dbt_cloud-4.3.3 → apache_airflow_providers_dbt_cloud-4.4.0rc1}/docs/changelog.rst +26 -0
  4. apache_airflow_providers_dbt_cloud-4.4.0rc1/docs/commits.rst +35 -0
  5. {apache_airflow_providers_dbt_cloud-4.3.3 → apache_airflow_providers_dbt_cloud-4.4.0rc1}/docs/index.rst +5 -5
  6. {apache_airflow_providers_dbt_cloud-4.3.3 → apache_airflow_providers_dbt_cloud-4.4.0rc1}/provider.yaml +6 -2
  7. {apache_airflow_providers_dbt_cloud-4.3.3 → apache_airflow_providers_dbt_cloud-4.4.0rc1}/pyproject.toml +6 -6
  8. {apache_airflow_providers_dbt_cloud-4.3.3 → apache_airflow_providers_dbt_cloud-4.4.0rc1}/src/airflow/providers/dbt/cloud/__init__.py +3 -3
  9. {apache_airflow_providers_dbt_cloud-4.3.3 → apache_airflow_providers_dbt_cloud-4.4.0rc1}/src/airflow/providers/dbt/cloud/utils/openlineage.py +20 -10
  10. {apache_airflow_providers_dbt_cloud-4.3.3 → apache_airflow_providers_dbt_cloud-4.4.0rc1}/src/airflow/providers/dbt/cloud/version_compat.py +0 -1
  11. {apache_airflow_providers_dbt_cloud-4.3.3 → apache_airflow_providers_dbt_cloud-4.4.0rc1}/tests/system/dbt/cloud/example_dbt_cloud.py +1 -1
  12. {apache_airflow_providers_dbt_cloud-4.3.3 → apache_airflow_providers_dbt_cloud-4.4.0rc1}/tests/unit/dbt/cloud/utils/test_openlineage.py +34 -13
  13. apache_airflow_providers_dbt_cloud-4.3.3/docs/commits.rst +0 -611
  14. {apache_airflow_providers_dbt_cloud-4.3.3 → apache_airflow_providers_dbt_cloud-4.4.0rc1}/docs/.latest-doc-only-change.txt +0 -0
  15. {apache_airflow_providers_dbt_cloud-4.3.3 → apache_airflow_providers_dbt_cloud-4.4.0rc1}/docs/conf.py +0 -0
  16. {apache_airflow_providers_dbt_cloud-4.3.3 → apache_airflow_providers_dbt_cloud-4.4.0rc1}/docs/connections.rst +0 -0
  17. {apache_airflow_providers_dbt_cloud-4.3.3 → apache_airflow_providers_dbt_cloud-4.4.0rc1}/docs/installing-providers-from-sources.rst +0 -0
  18. {apache_airflow_providers_dbt_cloud-4.3.3 → apache_airflow_providers_dbt_cloud-4.4.0rc1}/docs/integration-logos/dbt.png +0 -0
  19. {apache_airflow_providers_dbt_cloud-4.3.3 → apache_airflow_providers_dbt_cloud-4.4.0rc1}/docs/operators.rst +0 -0
  20. {apache_airflow_providers_dbt_cloud-4.3.3 → apache_airflow_providers_dbt_cloud-4.4.0rc1}/docs/security.rst +0 -0
  21. {apache_airflow_providers_dbt_cloud-4.3.3 → apache_airflow_providers_dbt_cloud-4.4.0rc1}/src/airflow/__init__.py +0 -0
  22. {apache_airflow_providers_dbt_cloud-4.3.3 → apache_airflow_providers_dbt_cloud-4.4.0rc1}/src/airflow/providers/__init__.py +0 -0
  23. {apache_airflow_providers_dbt_cloud-4.3.3 → apache_airflow_providers_dbt_cloud-4.4.0rc1}/src/airflow/providers/dbt/__init__.py +0 -0
  24. {apache_airflow_providers_dbt_cloud-4.3.3 → apache_airflow_providers_dbt_cloud-4.4.0rc1}/src/airflow/providers/dbt/cloud/LICENSE +0 -0
  25. {apache_airflow_providers_dbt_cloud-4.3.3 → apache_airflow_providers_dbt_cloud-4.4.0rc1}/src/airflow/providers/dbt/cloud/get_provider_info.py +0 -0
  26. {apache_airflow_providers_dbt_cloud-4.3.3 → apache_airflow_providers_dbt_cloud-4.4.0rc1}/src/airflow/providers/dbt/cloud/hooks/__init__.py +0 -0
  27. {apache_airflow_providers_dbt_cloud-4.3.3 → apache_airflow_providers_dbt_cloud-4.4.0rc1}/src/airflow/providers/dbt/cloud/hooks/dbt.py +0 -0
  28. {apache_airflow_providers_dbt_cloud-4.3.3 → apache_airflow_providers_dbt_cloud-4.4.0rc1}/src/airflow/providers/dbt/cloud/operators/__init__.py +0 -0
  29. {apache_airflow_providers_dbt_cloud-4.3.3 → apache_airflow_providers_dbt_cloud-4.4.0rc1}/src/airflow/providers/dbt/cloud/operators/dbt.py +0 -0
  30. {apache_airflow_providers_dbt_cloud-4.3.3 → apache_airflow_providers_dbt_cloud-4.4.0rc1}/src/airflow/providers/dbt/cloud/sensors/__init__.py +0 -0
  31. {apache_airflow_providers_dbt_cloud-4.3.3 → apache_airflow_providers_dbt_cloud-4.4.0rc1}/src/airflow/providers/dbt/cloud/sensors/dbt.py +0 -0
  32. {apache_airflow_providers_dbt_cloud-4.3.3 → apache_airflow_providers_dbt_cloud-4.4.0rc1}/src/airflow/providers/dbt/cloud/triggers/__init__.py +0 -0
  33. {apache_airflow_providers_dbt_cloud-4.3.3 → apache_airflow_providers_dbt_cloud-4.4.0rc1}/src/airflow/providers/dbt/cloud/triggers/dbt.py +0 -0
  34. {apache_airflow_providers_dbt_cloud-4.3.3 → apache_airflow_providers_dbt_cloud-4.4.0rc1}/src/airflow/providers/dbt/cloud/utils/__init__.py +0 -0
  35. {apache_airflow_providers_dbt_cloud-4.3.3 → apache_airflow_providers_dbt_cloud-4.4.0rc1}/tests/conftest.py +0 -0
  36. {apache_airflow_providers_dbt_cloud-4.3.3 → apache_airflow_providers_dbt_cloud-4.4.0rc1}/tests/system/__init__.py +0 -0
  37. {apache_airflow_providers_dbt_cloud-4.3.3 → apache_airflow_providers_dbt_cloud-4.4.0rc1}/tests/system/dbt/__init__.py +0 -0
  38. {apache_airflow_providers_dbt_cloud-4.3.3 → apache_airflow_providers_dbt_cloud-4.4.0rc1}/tests/system/dbt/cloud/__init__.py +0 -0
  39. {apache_airflow_providers_dbt_cloud-4.3.3 → apache_airflow_providers_dbt_cloud-4.4.0rc1}/tests/unit/__init__.py +0 -0
  40. {apache_airflow_providers_dbt_cloud-4.3.3 → apache_airflow_providers_dbt_cloud-4.4.0rc1}/tests/unit/dbt/__init__.py +0 -0
  41. {apache_airflow_providers_dbt_cloud-4.3.3 → apache_airflow_providers_dbt_cloud-4.4.0rc1}/tests/unit/dbt/cloud/__init__.py +0 -0
  42. {apache_airflow_providers_dbt_cloud-4.3.3 → apache_airflow_providers_dbt_cloud-4.4.0rc1}/tests/unit/dbt/cloud/hooks/__init__.py +0 -0
  43. {apache_airflow_providers_dbt_cloud-4.3.3 → apache_airflow_providers_dbt_cloud-4.4.0rc1}/tests/unit/dbt/cloud/hooks/test_dbt.py +0 -0
  44. {apache_airflow_providers_dbt_cloud-4.3.3 → apache_airflow_providers_dbt_cloud-4.4.0rc1}/tests/unit/dbt/cloud/operators/__init__.py +0 -0
  45. {apache_airflow_providers_dbt_cloud-4.3.3 → apache_airflow_providers_dbt_cloud-4.4.0rc1}/tests/unit/dbt/cloud/operators/test_dbt.py +0 -0
  46. {apache_airflow_providers_dbt_cloud-4.3.3 → apache_airflow_providers_dbt_cloud-4.4.0rc1}/tests/unit/dbt/cloud/sensors/__init__.py +0 -0
  47. {apache_airflow_providers_dbt_cloud-4.3.3 → apache_airflow_providers_dbt_cloud-4.4.0rc1}/tests/unit/dbt/cloud/sensors/test_dbt.py +0 -0
  48. {apache_airflow_providers_dbt_cloud-4.3.3 → apache_airflow_providers_dbt_cloud-4.4.0rc1}/tests/unit/dbt/cloud/test_data/__init__.py +0 -0
  49. {apache_airflow_providers_dbt_cloud-4.3.3 → apache_airflow_providers_dbt_cloud-4.4.0rc1}/tests/unit/dbt/cloud/test_data/catalog.json +0 -0
  50. {apache_airflow_providers_dbt_cloud-4.3.3 → apache_airflow_providers_dbt_cloud-4.4.0rc1}/tests/unit/dbt/cloud/test_data/job_run.json +0 -0
  51. {apache_airflow_providers_dbt_cloud-4.3.3 → apache_airflow_providers_dbt_cloud-4.4.0rc1}/tests/unit/dbt/cloud/test_data/manifest.json +0 -0
  52. {apache_airflow_providers_dbt_cloud-4.3.3 → apache_airflow_providers_dbt_cloud-4.4.0rc1}/tests/unit/dbt/cloud/test_data/run_results.json +0 -0
  53. {apache_airflow_providers_dbt_cloud-4.3.3 → apache_airflow_providers_dbt_cloud-4.4.0rc1}/tests/unit/dbt/cloud/triggers/__init__.py +0 -0
  54. {apache_airflow_providers_dbt_cloud-4.3.3 → apache_airflow_providers_dbt_cloud-4.4.0rc1}/tests/unit/dbt/cloud/triggers/test_dbt.py +0 -0
  55. {apache_airflow_providers_dbt_cloud-4.3.3 → apache_airflow_providers_dbt_cloud-4.4.0rc1}/tests/unit/dbt/cloud/utils/__init__.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: apache-airflow-providers-dbt-cloud
3
- Version: 4.3.3
3
+ Version: 4.4.0rc1
4
4
  Summary: Provider package apache-airflow-providers-dbt-cloud for Apache Airflow
5
5
  Keywords: airflow-provider,dbt.cloud,airflow,integration
6
6
  Author-email: Apache Software Foundation <dev@airflow.apache.org>
@@ -20,15 +20,15 @@ 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.0
24
- Requires-Dist: apache-airflow-providers-common-compat>=1.6.0
23
+ Requires-Dist: apache-airflow>=2.10.0rc1
24
+ Requires-Dist: apache-airflow-providers-common-compat>=1.6.0rc1
25
25
  Requires-Dist: apache-airflow-providers-http
26
26
  Requires-Dist: asgiref>=2.3.0
27
27
  Requires-Dist: aiohttp>=3.9.2
28
- Requires-Dist: apache-airflow-providers-openlineage>=2.0.0 ; extra == "openlineage"
28
+ Requires-Dist: apache-airflow-providers-openlineage>=2.3.0rc1 ; extra == "openlineage"
29
29
  Project-URL: Bug Tracker, https://github.com/apache/airflow/issues
30
- Project-URL: Changelog, https://airflow.apache.org/docs/apache-airflow-providers-dbt-cloud/4.3.3/changelog.html
31
- Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-dbt-cloud/4.3.3
30
+ Project-URL: Changelog, https://airflow.staged.apache.org/docs/apache-airflow-providers-dbt-cloud/4.4.0/changelog.html
31
+ Project-URL: Documentation, https://airflow.staged.apache.org/docs/apache-airflow-providers-dbt-cloud/4.4.0
32
32
  Project-URL: Mastodon, https://fosstodon.org/@airflow
33
33
  Project-URL: Slack Chat, https://s.apache.org/airflow-slack
34
34
  Project-URL: Source Code, https://github.com/apache/airflow
@@ -60,7 +60,7 @@ Provides-Extra: openlineage
60
60
 
61
61
  Package ``apache-airflow-providers-dbt-cloud``
62
62
 
63
- Release: ``4.3.3``
63
+ Release: ``4.4.0``
64
64
 
65
65
 
66
66
  `dbt Cloud <https://www.getdbt.com/product/dbt-cloud/>`__
@@ -73,7 +73,7 @@ This is a provider package for ``dbt.cloud`` provider. All classes for this prov
73
73
  are in ``airflow.providers.dbt.cloud`` python package.
74
74
 
75
75
  You can find package information and changelog for the provider
76
- in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-dbt-cloud/4.3.3/>`_.
76
+ in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-dbt-cloud/4.4.0/>`_.
77
77
 
78
78
  Installation
79
79
  ------------
@@ -90,7 +90,7 @@ Requirements
90
90
  ========================================== ==================
91
91
  PIP package Version required
92
92
  ========================================== ==================
93
- ``apache-airflow`` ``>=2.9.0``
93
+ ``apache-airflow`` ``>=2.10.0``
94
94
  ``apache-airflow-providers-common-compat`` ``>=1.6.0``
95
95
  ``apache-airflow-providers-http``
96
96
  ``asgiref`` ``>=2.3.0``
@@ -119,5 +119,5 @@ Dependent package
119
119
  ================================================================================================================== =================
120
120
 
121
121
  The changelog for the provider package can be found in the
122
- `changelog <https://airflow.apache.org/docs/apache-airflow-providers-dbt-cloud/4.3.3/changelog.html>`_.
122
+ `changelog <https://airflow.apache.org/docs/apache-airflow-providers-dbt-cloud/4.4.0/changelog.html>`_.
123
123
 
@@ -23,7 +23,7 @@
23
23
 
24
24
  Package ``apache-airflow-providers-dbt-cloud``
25
25
 
26
- Release: ``4.3.3``
26
+ Release: ``4.4.0``
27
27
 
28
28
 
29
29
  `dbt Cloud <https://www.getdbt.com/product/dbt-cloud/>`__
@@ -36,7 +36,7 @@ This is a provider package for ``dbt.cloud`` provider. All classes for this prov
36
36
  are in ``airflow.providers.dbt.cloud`` 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-dbt-cloud/4.3.3/>`_.
39
+ in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-dbt-cloud/4.4.0/>`_.
40
40
 
41
41
  Installation
42
42
  ------------
@@ -53,7 +53,7 @@ Requirements
53
53
  ========================================== ==================
54
54
  PIP package Version required
55
55
  ========================================== ==================
56
- ``apache-airflow`` ``>=2.9.0``
56
+ ``apache-airflow`` ``>=2.10.0``
57
57
  ``apache-airflow-providers-common-compat`` ``>=1.6.0``
58
58
  ``apache-airflow-providers-http``
59
59
  ``asgiref`` ``>=2.3.0``
@@ -82,4 +82,4 @@ Dependent package
82
82
  ================================================================================================================== =================
83
83
 
84
84
  The changelog for the provider package can be found in the
85
- `changelog <https://airflow.apache.org/docs/apache-airflow-providers-dbt-cloud/4.3.3/changelog.html>`_.
85
+ `changelog <https://airflow.apache.org/docs/apache-airflow-providers-dbt-cloud/4.4.0/changelog.html>`_.
@@ -28,6 +28,32 @@
28
28
  Changelog
29
29
  ---------
30
30
 
31
+ 4.4.0
32
+ .....
33
+
34
+ .. note::
35
+ This release of provider is only available for Airflow 2.10+ as explained in the
36
+ Apache Airflow providers support policy <https://github.com/apache/airflow/blob/main/PROVIDERS.rst#minimum-supported-version-of-airflow-for-community-managed-providers>_.
37
+
38
+ Features
39
+ ~~~~~~~~
40
+
41
+ * ``add root parent information to OpenLineage events (#49237)``
42
+
43
+ Misc
44
+ ~~~~
45
+
46
+ * ``nit: Switch to emitting OL events with adapter and not client directly (#50398)``
47
+ * ``fix: adjust dag_run extraction for Airflow 3 in OL utils (#50346)``
48
+ * ``Remove AIRFLOW_2_10_PLUS conditions (#49877)``
49
+ * ``Bump min Airflow version in providers to 2.10 (#49843)``
50
+ * ``Use Label class from task sdk in providers (#49398)``
51
+
52
+ .. Below changes are excluded from the changelog. Move them to
53
+ appropriate section above if needed. Do not delete the lines(!):
54
+ * ``Update description of provider.yaml dependencies (#50231)``
55
+ * ``Avoid committing history for providers (#49907)``
56
+
31
57
  4.3.3
32
58
  .....
33
59
 
@@ -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-dbt-cloud
27
+ ------------------------------------------------------
28
+
29
+ `dbt Cloud <https://www.getdbt.com/product/dbt-cloud/>`__
30
+
31
+
32
+ This is detailed commit list of changes for versions provider package: ``dbt.cloud``.
33
+ For high-level changelog, see :doc:`package information including changelog <index>`.
34
+
35
+ .. airflow-providers-commits::
@@ -81,7 +81,7 @@ apache-airflow-providers-dbt-cloud package
81
81
  `dbt Cloud <https://www.getdbt.com/product/dbt-cloud/>`__
82
82
 
83
83
 
84
- Release: 4.3.3
84
+ Release: 4.4.0
85
85
 
86
86
  Provider package
87
87
  ----------------
@@ -99,12 +99,12 @@ For the minimum Airflow version supported, see ``Requirements`` below.
99
99
  Requirements
100
100
  ------------
101
101
 
102
- The minimum Apache Airflow version supported by this provider distribution is ``2.9.0``.
102
+ The minimum Apache Airflow version supported by this provider distribution is ``2.10.0``.
103
103
 
104
104
  ========================================== ==================
105
105
  PIP package Version required
106
106
  ========================================== ==================
107
- ``apache-airflow`` ``>=2.9.0``
107
+ ``apache-airflow`` ``>=2.10.0``
108
108
  ``apache-airflow-providers-common-compat`` ``>=1.6.0``
109
109
  ``apache-airflow-providers-http``
110
110
  ``asgiref`` ``>=2.3.0``
@@ -138,5 +138,5 @@ Downloading official packages
138
138
  You can download officially released packages and verify their checksums and signatures from the
139
139
  `Official Apache Download site <https://downloads.apache.org/airflow/providers/>`_
140
140
 
141
- * `The apache-airflow-providers-dbt-cloud 4.3.3 sdist package <https://downloads.apache.org/airflow/providers/apache_airflow_providers_dbt_cloud-4.3.3.tar.gz>`_ (`asc <https://downloads.apache.org/airflow/providers/apache_airflow_providers_dbt_cloud-4.3.3.tar.gz.asc>`__, `sha512 <https://downloads.apache.org/airflow/providers/apache_airflow_providers_dbt_cloud-4.3.3.tar.gz.sha512>`__)
142
- * `The apache-airflow-providers-dbt-cloud 4.3.3 wheel package <https://downloads.apache.org/airflow/providers/apache_airflow_providers_dbt_cloud-4.3.3-py3-none-any.whl>`_ (`asc <https://downloads.apache.org/airflow/providers/apache_airflow_providers_dbt_cloud-4.3.3-py3-none-any.whl.asc>`__, `sha512 <https://downloads.apache.org/airflow/providers/apache_airflow_providers_dbt_cloud-4.3.3-py3-none-any.whl.sha512>`__)
141
+ * `The apache-airflow-providers-dbt-cloud 4.4.0 sdist package <https://downloads.apache.org/airflow/providers/apache_airflow_providers_dbt_cloud-4.4.0.tar.gz>`_ (`asc <https://downloads.apache.org/airflow/providers/apache_airflow_providers_dbt_cloud-4.4.0.tar.gz.asc>`__, `sha512 <https://downloads.apache.org/airflow/providers/apache_airflow_providers_dbt_cloud-4.4.0.tar.gz.sha512>`__)
142
+ * `The apache-airflow-providers-dbt-cloud 4.4.0 wheel package <https://downloads.apache.org/airflow/providers/apache_airflow_providers_dbt_cloud-4.4.0-py3-none-any.whl>`_ (`asc <https://downloads.apache.org/airflow/providers/apache_airflow_providers_dbt_cloud-4.4.0-py3-none-any.whl.asc>`__, `sha512 <https://downloads.apache.org/airflow/providers/apache_airflow_providers_dbt_cloud-4.4.0-py3-none-any.whl.sha512>`__)
@@ -22,9 +22,13 @@ description: |
22
22
  `dbt Cloud <https://www.getdbt.com/product/dbt-cloud/>`__
23
23
 
24
24
  state: ready
25
- source-date-epoch: 1744788993
26
- # note that those versions are maintained by release manager - do not update them manually
25
+ source-date-epoch: 1747132505
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
+ - 4.4.0
28
32
  - 4.3.3
29
33
  - 4.3.2
30
34
  - 4.3.1
@@ -25,7 +25,7 @@ build-backend = "flit_core.buildapi"
25
25
 
26
26
  [project]
27
27
  name = "apache-airflow-providers-dbt-cloud"
28
- version = "4.3.3"
28
+ version = "4.4.0rc1"
29
29
  description = "Provider package apache-airflow-providers-dbt-cloud for Apache Airflow"
30
30
  readme = "README.rst"
31
31
  authors = [
@@ -57,8 +57,8 @@ 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.0",
61
- "apache-airflow-providers-common-compat>=1.6.0",
60
+ "apache-airflow>=2.10.0rc1",
61
+ "apache-airflow-providers-common-compat>=1.6.0rc1",
62
62
  "apache-airflow-providers-http",
63
63
  "asgiref>=2.3.0",
64
64
  "aiohttp>=3.9.2",
@@ -69,7 +69,7 @@ dependencies = [
69
69
  [project.optional-dependencies]
70
70
  # pip install apache-airflow-providers-dbt-cloud[openlineage]
71
71
  "openlineage" = [
72
- "apache-airflow-providers-openlineage>=2.0.0",
72
+ "apache-airflow-providers-openlineage>=2.3.0rc1",
73
73
  ]
74
74
 
75
75
  [dependency-groups]
@@ -109,8 +109,8 @@ apache-airflow-providers-common-sql = {workspace = true}
109
109
  apache-airflow-providers-standard = {workspace = true}
110
110
 
111
111
  [project.urls]
112
- "Documentation" = "https://airflow.apache.org/docs/apache-airflow-providers-dbt-cloud/4.3.3"
113
- "Changelog" = "https://airflow.apache.org/docs/apache-airflow-providers-dbt-cloud/4.3.3/changelog.html"
112
+ "Documentation" = "https://airflow.staged.apache.org/docs/apache-airflow-providers-dbt-cloud/4.4.0"
113
+ "Changelog" = "https://airflow.staged.apache.org/docs/apache-airflow-providers-dbt-cloud/4.4.0/changelog.html"
114
114
  "Bug Tracker" = "https://github.com/apache/airflow/issues"
115
115
  "Source Code" = "https://github.com/apache/airflow"
116
116
  "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__ = "4.3.3"
32
+ __version__ = "4.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-dbt-cloud:{__version__}` needs Apache Airflow 2.9.0+"
38
+ f"The package `apache-airflow-providers-dbt-cloud:{__version__}` needs Apache Airflow 2.10.0+"
39
39
  )
@@ -22,7 +22,7 @@ import re
22
22
  from typing import TYPE_CHECKING
23
23
 
24
24
  from airflow.providers.common.compat.openlineage.check import require_openlineage_version
25
- from airflow.providers.dbt.cloud.version_compat import AIRFLOW_V_2_10_PLUS, AIRFLOW_V_3_0_PLUS
25
+ from airflow.providers.dbt.cloud.version_compat import AIRFLOW_V_3_0_PLUS
26
26
 
27
27
  if TYPE_CHECKING:
28
28
  from airflow.models.taskinstance import TaskInstance
@@ -48,14 +48,15 @@ def _get_logical_date(task_instance):
48
48
  return date
49
49
 
50
50
 
51
- def _get_try_number(val):
52
- # todo: remove when min airflow version >= 2.10.0
53
- if AIRFLOW_V_2_10_PLUS:
54
- return val.try_number
55
- return val.try_number - 1
51
+ def _get_dag_run_clear_number(task_instance):
52
+ # todo: remove when min airflow version >= 3.0
53
+ if AIRFLOW_V_3_0_PLUS:
54
+ dagrun = task_instance.get_template_context()["dag_run"]
55
+ return dagrun.clear_number
56
+ return task_instance.dag_run.clear_number
56
57
 
57
58
 
58
- @require_openlineage_version(provider_min_version="2.0.0")
59
+ @require_openlineage_version(provider_min_version="2.3.0")
59
60
  def generate_openlineage_events_from_dbt_cloud_run(
60
61
  operator: DbtCloudRunJobOperator | DbtCloudJobRunSensor, task_instance: TaskInstance
61
62
  ) -> OperatorLineage:
@@ -144,16 +145,25 @@ def generate_openlineage_events_from_dbt_cloud_run(
144
145
  dag_id=task_instance.dag_id,
145
146
  task_id=operator.task_id,
146
147
  logical_date=_get_logical_date(task_instance),
147
- try_number=_get_try_number(task_instance),
148
+ try_number=task_instance.try_number,
148
149
  map_index=task_instance.map_index,
149
150
  )
150
151
 
152
+ root_parent_run_id = OpenLineageAdapter.build_dag_run_id(
153
+ dag_id=task_instance.dag_id,
154
+ logical_date=_get_logical_date(task_instance),
155
+ clear_number=_get_dag_run_clear_number(task_instance),
156
+ )
157
+
151
158
  parent_job = ParentRunMetadata(
152
159
  run_id=parent_run_id,
153
160
  job_name=f"{task_instance.dag_id}.{task_instance.task_id}",
154
161
  job_namespace=namespace(),
162
+ root_parent_run_id=root_parent_run_id,
163
+ root_parent_job_name=task_instance.dag_id,
164
+ root_parent_job_namespace=namespace(),
155
165
  )
156
- client = get_openlineage_listener().adapter.get_or_create_openlineage_client()
166
+ adapter = get_openlineage_listener().adapter
157
167
 
158
168
  # process each step in loop, sending generated events in the same order as steps
159
169
  for counter, artifacts in enumerate(step_artifacts, 1):
@@ -183,7 +193,7 @@ def generate_openlineage_events_from_dbt_cloud_run(
183
193
  log.debug("Found %s OpenLineage events for artifact no. %s.", len(events), counter)
184
194
 
185
195
  for event in events:
186
- client.emit(event=event)
196
+ adapter.emit(event=event)
187
197
  log.debug("Emitted all OpenLineage events for artifact no. %s.", counter)
188
198
 
189
199
  log.info("OpenLineage has successfully finished processing information about DBT job run.")
@@ -32,5 +32,4 @@ def get_base_airflow_version_tuple() -> tuple[int, int, int]:
32
32
  return airflow_version.major, airflow_version.minor, airflow_version.micro
33
33
 
34
34
 
35
- AIRFLOW_V_2_10_PLUS = get_base_airflow_version_tuple() >= (2, 10, 0)
36
35
  AIRFLOW_V_3_0_PLUS = get_base_airflow_version_tuple() >= (3, 0, 0)
@@ -26,7 +26,7 @@ from airflow.providers.dbt.cloud.operators.dbt import (
26
26
  )
27
27
  from airflow.providers.dbt.cloud.sensors.dbt import DbtCloudJobRunSensor
28
28
  from airflow.providers.standard.operators.empty import EmptyOperator
29
- from airflow.utils.edgemodifier import Label
29
+ from airflow.sdk import Label
30
30
 
31
31
  from tests_common.test_utils.system_tests import get_test_env_id
32
32
 
@@ -33,6 +33,7 @@ from airflow.providers.openlineage.extractors import OperatorLineage
33
33
  TASK_ID = "dbt_test"
34
34
  DAG_ID = "dbt_dag"
35
35
  TASK_UUID = "01481cfa-0ff7-3692-9bba-79417cf498c2"
36
+ DAG_UUID = "01481cfa-1a1a-2b2b-3c3c-79417cf498c2"
36
37
 
37
38
 
38
39
  class MockResponse:
@@ -88,30 +89,48 @@ def get_dbt_artifact(*args, **kwargs):
88
89
  return None
89
90
 
90
91
 
91
- def test_previous_version_openlineage_provider():
92
- """When using OpenLineage, the dbt-cloud provider now depends on openlineage provider >= 2.0"""
92
+ @pytest.mark.parametrize(
93
+ "value, is_error",
94
+ [
95
+ ("1.99.0", True),
96
+ ("2.0.0", True),
97
+ ("2.3.0", False),
98
+ ("2.99.0", False),
99
+ ],
100
+ )
101
+ def test_previous_version_openlineage_provider(value, is_error):
102
+ """When using OpenLineage, the dbt-cloud provider now depends on openlineage provider >= 2.3"""
93
103
 
94
104
  def _mock_version(package):
95
105
  if package == "apache-airflow-providers-openlineage":
96
- return "1.99.0"
106
+ return value
97
107
  raise Exception("Unexpected package")
98
108
 
99
109
  mock_operator = MagicMock()
100
110
  mock_task_instance = MagicMock()
101
111
 
102
112
  expected_err = (
103
- "OpenLineage provider version `1.99.0` is lower than required `2.0.0`, "
113
+ f"OpenLineage provider version `{value}` is lower than required `2.3.0`, "
104
114
  "skipping function `generate_openlineage_events_from_dbt_cloud_run` execution"
105
115
  )
106
116
 
107
- with patch("importlib.metadata.version", side_effect=_mock_version):
108
- with pytest.raises(AirflowOptionalProviderFeatureException, match=expected_err):
109
- generate_openlineage_events_from_dbt_cloud_run(mock_operator, mock_task_instance)
117
+ if is_error:
118
+ with patch("importlib.metadata.version", side_effect=_mock_version):
119
+ with pytest.raises(AirflowOptionalProviderFeatureException, match=expected_err):
120
+ generate_openlineage_events_from_dbt_cloud_run(mock_operator, mock_task_instance)
121
+ else:
122
+ with patch("importlib.metadata.version", side_effect=_mock_version):
123
+ # Error that would certainly not happen on version checking
124
+ mock_operator.hook.get_job_run.side_effect = ZeroDivisionError("error for test")
125
+ with pytest.raises(ZeroDivisionError, match="error for test"):
126
+ generate_openlineage_events_from_dbt_cloud_run(mock_operator, mock_task_instance)
110
127
 
111
128
 
112
129
  class TestGenerateOpenLineageEventsFromDbtCloudRun:
130
+ @patch("importlib.metadata.version", return_value="2.3.0")
113
131
  @patch("airflow.providers.openlineage.plugins.listener.get_openlineage_listener")
114
132
  @patch("airflow.providers.openlineage.plugins.adapter.OpenLineageAdapter.build_task_instance_run_id")
133
+ @patch("airflow.providers.openlineage.plugins.adapter.OpenLineageAdapter.build_dag_run_id")
115
134
  @patch.object(DbtCloudHook, "get_job_run")
116
135
  @patch.object(DbtCloudHook, "get_project")
117
136
  @patch.object(DbtCloudHook, "get_job_run_artifact")
@@ -120,8 +139,10 @@ class TestGenerateOpenLineageEventsFromDbtCloudRun:
120
139
  mock_get_job_run_artifact,
121
140
  mock_get_project,
122
141
  mock_get_job_run,
142
+ mock_build_dag_run_id,
123
143
  mock_build_task_instance_run_id,
124
144
  mock_get_openlineage_listener,
145
+ mock_version,
125
146
  ):
126
147
  mock_operator = MagicMock(spec=DbtCloudRunJobOperator)
127
148
  mock_operator.account_id = None
@@ -154,17 +175,17 @@ class TestGenerateOpenLineageEventsFromDbtCloudRun:
154
175
  mock_task_instance = MagicMock()
155
176
  mock_task_instance.task_id = TASK_ID
156
177
  mock_task_instance.dag_id = DAG_ID
178
+ mock_task_instance.dag_run.clear_number = 0
157
179
 
158
- mock_client = MagicMock()
180
+ mock_adapter = MagicMock()
159
181
 
160
- mock_client.emit.side_effect = emit_event
161
- mock_get_openlineage_listener.return_value.adapter.get_or_create_openlineage_client.return_value = (
162
- mock_client
163
- )
182
+ mock_adapter.emit.side_effect = emit_event
183
+ mock_get_openlineage_listener.return_value.adapter = mock_adapter
164
184
 
165
185
  mock_build_task_instance_run_id.return_value = TASK_UUID
186
+ mock_build_dag_run_id.return_value = DAG_UUID
166
187
  generate_openlineage_events_from_dbt_cloud_run(mock_operator, task_instance=mock_task_instance)
167
- assert mock_client.emit.call_count == 4
188
+ assert mock_adapter.emit.call_count == 4
168
189
 
169
190
  def test_do_not_raise_error_if_runid_not_set_on_operator(self):
170
191
  operator = DbtCloudRunJobOperator(task_id="dbt-job-runid-taskid", job_id=1500)