apache-airflow-providers-snowflake 6.4.0__tar.gz → 6.5.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.
- {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/PKG-INFO +23 -20
- {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/README.rst +11 -9
- {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/docs/changelog.rst +29 -0
- {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/docs/index.rst +10 -8
- {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/provider.yaml +2 -1
- {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/pyproject.toml +12 -15
- {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/src/airflow/providers/snowflake/__init__.py +1 -1
- {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/src/airflow/providers/snowflake/decorators/snowpark.py +2 -2
- {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/src/airflow/providers/snowflake/hooks/snowflake.py +14 -22
- {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/src/airflow/providers/snowflake/hooks/snowflake_sql_api.py +182 -23
- {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/src/airflow/providers/snowflake/operators/snowflake.py +4 -0
- {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/src/airflow/providers/snowflake/operators/snowpark.py +2 -2
- {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/src/airflow/providers/snowflake/transfers/copy_into_snowflake.py +1 -1
- {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/src/airflow/providers/snowflake/utils/openlineage.py +81 -18
- {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/src/airflow/providers/snowflake/utils/snowpark.py +2 -1
- {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/src/airflow/providers/snowflake/version_compat.py +10 -0
- {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/tests/unit/snowflake/decorators/test_snowpark.py +12 -13
- {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/tests/unit/snowflake/hooks/test_snowflake.py +21 -18
- apache_airflow_providers_snowflake-6.5.0rc1/tests/unit/snowflake/hooks/test_snowflake_sql_api.py +1422 -0
- {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/tests/unit/snowflake/operators/test_snowflake.py +7 -10
- {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/tests/unit/snowflake/operators/test_snowpark.py +8 -10
- {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/tests/unit/snowflake/transfers/test_copy_into_snowflake.py +1 -1
- apache_airflow_providers_snowflake-6.5.0rc1/tests/unit/snowflake/utils/test_openlineage.py +1401 -0
- apache_airflow_providers_snowflake-6.4.0/tests/unit/snowflake/hooks/test_snowflake_sql_api.py +0 -815
- apache_airflow_providers_snowflake-6.4.0/tests/unit/snowflake/utils/test_openlineage.py +0 -717
- {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/docs/.latest-doc-only-change.txt +0 -0
- {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/docs/commits.rst +0 -0
- {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/docs/conf.py +0 -0
- {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/docs/connections/snowflake.rst +0 -0
- {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/docs/decorators/index.rst +0 -0
- {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/docs/decorators/snowpark.rst +0 -0
- {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/docs/installing-providers-from-sources.rst +0 -0
- {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/docs/integration-logos/Snowflake.png +0 -0
- {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/docs/operators/copy_into_snowflake.rst +0 -0
- {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/docs/operators/index.rst +0 -0
- {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/docs/operators/snowflake.rst +0 -0
- {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/docs/operators/snowpark.rst +0 -0
- {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/docs/security.rst +0 -0
- {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/src/airflow/__init__.py +0 -0
- {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/src/airflow/providers/__init__.py +0 -0
- {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/src/airflow/providers/snowflake/LICENSE +0 -0
- {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/src/airflow/providers/snowflake/decorators/__init__.py +0 -0
- {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/src/airflow/providers/snowflake/get_provider_info.py +0 -0
- {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/src/airflow/providers/snowflake/hooks/__init__.py +0 -0
- {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/src/airflow/providers/snowflake/operators/__init__.py +0 -0
- {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/src/airflow/providers/snowflake/transfers/__init__.py +0 -0
- {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/src/airflow/providers/snowflake/triggers/__init__.py +0 -0
- {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/src/airflow/providers/snowflake/triggers/snowflake_trigger.py +0 -0
- {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/src/airflow/providers/snowflake/utils/__init__.py +0 -0
- {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/src/airflow/providers/snowflake/utils/common.py +0 -0
- {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/src/airflow/providers/snowflake/utils/sql_api_generate_jwt.py +0 -0
- {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/tests/conftest.py +0 -0
- {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/tests/system/__init__.py +0 -0
- {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/tests/system/snowflake/__init__.py +0 -0
- {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/tests/system/snowflake/example_copy_into_snowflake.py +0 -0
- {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/tests/system/snowflake/example_snowflake.py +0 -0
- {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/tests/system/snowflake/example_snowflake_snowflake_op_template_file.sql +0 -0
- {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/tests/system/snowflake/example_snowpark_decorator.py +0 -0
- {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/tests/system/snowflake/example_snowpark_operator.py +0 -0
- {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/tests/unit/__init__.py +0 -0
- {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/tests/unit/snowflake/__init__.py +0 -0
- {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/tests/unit/snowflake/decorators/__init__.py +0 -0
- {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/tests/unit/snowflake/hooks/__init__.py +0 -0
- {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/tests/unit/snowflake/hooks/test_sql.py +0 -0
- {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/tests/unit/snowflake/operators/__init__.py +0 -0
- {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/tests/unit/snowflake/operators/test_snowflake_sql.py +0 -0
- {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/tests/unit/snowflake/transfers/__init__.py +0 -0
- {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/tests/unit/snowflake/triggers/__init__.py +0 -0
- {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/tests/unit/snowflake/triggers/test_snowflake.py +0 -0
- {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/tests/unit/snowflake/utils/__init__.py +0 -0
- {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/tests/unit/snowflake/utils/test_common.py +0 -0
- {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/tests/unit/snowflake/utils/test_snowpark.py +0 -0
- {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/tests/unit/snowflake/utils/test_sql_api_generate_jwt.py +0 -0
{apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/PKG-INFO
RENAMED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: apache-airflow-providers-snowflake
|
|
3
|
-
Version: 6.
|
|
3
|
+
Version: 6.5.0rc1
|
|
4
4
|
Summary: Provider package apache-airflow-providers-snowflake for Apache Airflow
|
|
5
5
|
Keywords: airflow-provider,snowflake,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
|
+
Requires-Python: ~=3.10
|
|
9
9
|
Description-Content-Type: text/x-rst
|
|
10
10
|
Classifier: Development Status :: 5 - Production/Stable
|
|
11
11
|
Classifier: Environment :: Console
|
|
@@ -15,23 +15,24 @@ 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.9
|
|
19
18
|
Classifier: Programming Language :: Python :: 3.10
|
|
20
19
|
Classifier: Programming Language :: Python :: 3.11
|
|
21
20
|
Classifier: Programming Language :: Python :: 3.12
|
|
22
21
|
Classifier: Topic :: System :: Monitoring
|
|
23
|
-
Requires-Dist: apache-airflow>=2.10.
|
|
24
|
-
Requires-Dist: apache-airflow-providers-common-compat>=1.6.
|
|
25
|
-
Requires-Dist: apache-airflow-providers-common-sql>=1.21.
|
|
26
|
-
Requires-Dist: pandas>=2.1.2
|
|
27
|
-
Requires-Dist:
|
|
22
|
+
Requires-Dist: apache-airflow>=2.10.0rc1
|
|
23
|
+
Requires-Dist: apache-airflow-providers-common-compat>=1.6.0rc1
|
|
24
|
+
Requires-Dist: apache-airflow-providers-common-sql>=1.21.0rc1
|
|
25
|
+
Requires-Dist: pandas>=2.1.2; python_version <"3.13"
|
|
26
|
+
Requires-Dist: pandas>=2.2.3; python_version >="3.13"
|
|
27
|
+
Requires-Dist: pyarrow>=16.1.0
|
|
28
28
|
Requires-Dist: snowflake-connector-python>=3.7.1
|
|
29
29
|
Requires-Dist: snowflake-sqlalchemy>=1.4.0
|
|
30
30
|
Requires-Dist: snowflake-snowpark-python>=1.17.0;python_version<'3.12'
|
|
31
|
-
Requires-Dist:
|
|
31
|
+
Requires-Dist: snowflake-snowpark-python>=1.27.0;python_version>='3.12'
|
|
32
|
+
Requires-Dist: apache-airflow-providers-openlineage>=2.3.0rc1 ; extra == "openlineage"
|
|
32
33
|
Project-URL: Bug Tracker, https://github.com/apache/airflow/issues
|
|
33
|
-
Project-URL: Changelog, https://airflow.apache.org/docs/apache-airflow-providers-snowflake/6.
|
|
34
|
-
Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-snowflake/6.
|
|
34
|
+
Project-URL: Changelog, https://airflow.staged.apache.org/docs/apache-airflow-providers-snowflake/6.5.0/changelog.html
|
|
35
|
+
Project-URL: Documentation, https://airflow.staged.apache.org/docs/apache-airflow-providers-snowflake/6.5.0
|
|
35
36
|
Project-URL: Mastodon, https://fosstodon.org/@airflow
|
|
36
37
|
Project-URL: Slack Chat, https://s.apache.org/airflow-slack
|
|
37
38
|
Project-URL: Source Code, https://github.com/apache/airflow
|
|
@@ -63,7 +64,7 @@ Provides-Extra: openlineage
|
|
|
63
64
|
|
|
64
65
|
Package ``apache-airflow-providers-snowflake``
|
|
65
66
|
|
|
66
|
-
Release: ``6.
|
|
67
|
+
Release: ``6.5.0``
|
|
67
68
|
|
|
68
69
|
|
|
69
70
|
`Snowflake <https://www.snowflake.com/>`__
|
|
@@ -76,7 +77,7 @@ This is a provider package for ``snowflake`` provider. All classes for this prov
|
|
|
76
77
|
are in ``airflow.providers.snowflake`` python package.
|
|
77
78
|
|
|
78
79
|
You can find package information and changelog for the provider
|
|
79
|
-
in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-snowflake/6.
|
|
80
|
+
in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-snowflake/6.5.0/>`_.
|
|
80
81
|
|
|
81
82
|
Installation
|
|
82
83
|
------------
|
|
@@ -85,23 +86,25 @@ You can install this package on top of an existing Airflow 2 installation (see `
|
|
|
85
86
|
for the minimum Airflow version supported) via
|
|
86
87
|
``pip install apache-airflow-providers-snowflake``
|
|
87
88
|
|
|
88
|
-
The package supports the following python versions: 3.
|
|
89
|
+
The package supports the following python versions: 3.10,3.11,3.12
|
|
89
90
|
|
|
90
91
|
Requirements
|
|
91
92
|
------------
|
|
92
93
|
|
|
93
|
-
==========================================
|
|
94
|
+
========================================== ======================================
|
|
94
95
|
PIP package Version required
|
|
95
|
-
==========================================
|
|
96
|
+
========================================== ======================================
|
|
96
97
|
``apache-airflow`` ``>=2.10.0``
|
|
97
98
|
``apache-airflow-providers-common-compat`` ``>=1.6.0``
|
|
98
99
|
``apache-airflow-providers-common-sql`` ``>=1.21.0``
|
|
99
|
-
``pandas`` ``>=2.1.2
|
|
100
|
-
``
|
|
100
|
+
``pandas`` ``>=2.1.2; python_version < "3.13"``
|
|
101
|
+
``pandas`` ``>=2.2.3; python_version >= "3.13"``
|
|
102
|
+
``pyarrow`` ``>=16.1.0``
|
|
101
103
|
``snowflake-connector-python`` ``>=3.7.1``
|
|
102
104
|
``snowflake-sqlalchemy`` ``>=1.4.0``
|
|
103
105
|
``snowflake-snowpark-python`` ``>=1.17.0; python_version < "3.12"``
|
|
104
|
-
|
|
106
|
+
``snowflake-snowpark-python`` ``>=1.27.0; python_version >= "3.12"``
|
|
107
|
+
========================================== ======================================
|
|
105
108
|
|
|
106
109
|
Cross provider package dependencies
|
|
107
110
|
-----------------------------------
|
|
@@ -125,5 +128,5 @@ Dependent package
|
|
|
125
128
|
================================================================================================================== =================
|
|
126
129
|
|
|
127
130
|
The changelog for the provider package can be found in the
|
|
128
|
-
`changelog <https://airflow.apache.org/docs/apache-airflow-providers-snowflake/6.
|
|
131
|
+
`changelog <https://airflow.apache.org/docs/apache-airflow-providers-snowflake/6.5.0/changelog.html>`_.
|
|
129
132
|
|
{apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/README.rst
RENAMED
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
|
|
24
24
|
Package ``apache-airflow-providers-snowflake``
|
|
25
25
|
|
|
26
|
-
Release: ``6.
|
|
26
|
+
Release: ``6.5.0``
|
|
27
27
|
|
|
28
28
|
|
|
29
29
|
`Snowflake <https://www.snowflake.com/>`__
|
|
@@ -36,7 +36,7 @@ This is a provider package for ``snowflake`` provider. All classes for this prov
|
|
|
36
36
|
are in ``airflow.providers.snowflake`` 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-snowflake/6.
|
|
39
|
+
in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-snowflake/6.5.0/>`_.
|
|
40
40
|
|
|
41
41
|
Installation
|
|
42
42
|
------------
|
|
@@ -45,23 +45,25 @@ You can install this package on top of an existing Airflow 2 installation (see `
|
|
|
45
45
|
for the minimum Airflow version supported) via
|
|
46
46
|
``pip install apache-airflow-providers-snowflake``
|
|
47
47
|
|
|
48
|
-
The package supports the following python versions: 3.
|
|
48
|
+
The package supports the following python versions: 3.10,3.11,3.12
|
|
49
49
|
|
|
50
50
|
Requirements
|
|
51
51
|
------------
|
|
52
52
|
|
|
53
|
-
==========================================
|
|
53
|
+
========================================== ======================================
|
|
54
54
|
PIP package Version required
|
|
55
|
-
==========================================
|
|
55
|
+
========================================== ======================================
|
|
56
56
|
``apache-airflow`` ``>=2.10.0``
|
|
57
57
|
``apache-airflow-providers-common-compat`` ``>=1.6.0``
|
|
58
58
|
``apache-airflow-providers-common-sql`` ``>=1.21.0``
|
|
59
|
-
``pandas`` ``>=2.1.2
|
|
60
|
-
``
|
|
59
|
+
``pandas`` ``>=2.1.2; python_version < "3.13"``
|
|
60
|
+
``pandas`` ``>=2.2.3; python_version >= "3.13"``
|
|
61
|
+
``pyarrow`` ``>=16.1.0``
|
|
61
62
|
``snowflake-connector-python`` ``>=3.7.1``
|
|
62
63
|
``snowflake-sqlalchemy`` ``>=1.4.0``
|
|
63
64
|
``snowflake-snowpark-python`` ``>=1.17.0; python_version < "3.12"``
|
|
64
|
-
|
|
65
|
+
``snowflake-snowpark-python`` ``>=1.27.0; python_version >= "3.12"``
|
|
66
|
+
========================================== ======================================
|
|
65
67
|
|
|
66
68
|
Cross provider package dependencies
|
|
67
69
|
-----------------------------------
|
|
@@ -85,4 +87,4 @@ Dependent package
|
|
|
85
87
|
================================================================================================================== =================
|
|
86
88
|
|
|
87
89
|
The changelog for the provider package can be found in the
|
|
88
|
-
`changelog <https://airflow.apache.org/docs/apache-airflow-providers-snowflake/6.
|
|
90
|
+
`changelog <https://airflow.apache.org/docs/apache-airflow-providers-snowflake/6.5.0/changelog.html>`_.
|
|
@@ -27,6 +27,35 @@
|
|
|
27
27
|
Changelog
|
|
28
28
|
---------
|
|
29
29
|
|
|
30
|
+
6.5.0
|
|
31
|
+
.....
|
|
32
|
+
|
|
33
|
+
Features
|
|
34
|
+
~~~~~~~~
|
|
35
|
+
|
|
36
|
+
* ``feat: Add explicit support for SnowflakeSqlApiHook to Openlineage helper (#52161)``
|
|
37
|
+
* ``feat: Add new query related methods to SnowflakeSqlApiHook (#52157)``
|
|
38
|
+
* ``feat: Add SnowflakeSqlApiHook Retry Logic (#51463)``
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
Misc
|
|
42
|
+
~~~~
|
|
43
|
+
|
|
44
|
+
* ``Provider Migration: Update Snowflake provider for Airflow 3.0 compatibility (#52629)``
|
|
45
|
+
* ``Disable UP038 ruff rule and revert mandatory 'X | Y' in insintance checks (#52644)``
|
|
46
|
+
* ``Bump pyarrow to 16.1.0 minimum version for several providers (#52635)``
|
|
47
|
+
* ``Replace models.BaseOperator to Task SDK one for Common Providers (#52443)``
|
|
48
|
+
* ``Relax snowflake-snowpark-python for Python>=3.12 (#52356)``
|
|
49
|
+
* ``Drop support for Python 3.9 (#52072)``
|
|
50
|
+
* ``Replace 'models.BaseOperator' to Task SDK one for Standard Provider (#52292)``
|
|
51
|
+
* ``Bump upper binding on pandas in all providers (#52060)``
|
|
52
|
+
|
|
53
|
+
.. Below changes are excluded from the changelog. Move them to
|
|
54
|
+
appropriate section above if needed. Do not delete the lines(!):
|
|
55
|
+
* ``Fix StopIteration in snowflake sql tests (#52394)``
|
|
56
|
+
* ``Make sure all test version imports come from test_common (#52425)``
|
|
57
|
+
* ``Add tests to test whether snowflake sql API handles invalid JSON (#52118)``
|
|
58
|
+
|
|
30
59
|
6.4.0
|
|
31
60
|
.....
|
|
32
61
|
|
|
@@ -78,7 +78,7 @@ apache-airflow-providers-snowflake package
|
|
|
78
78
|
`Snowflake <https://www.snowflake.com/>`__
|
|
79
79
|
|
|
80
80
|
|
|
81
|
-
Release: 6.
|
|
81
|
+
Release: 6.5.0
|
|
82
82
|
|
|
83
83
|
Provider package
|
|
84
84
|
----------------
|
|
@@ -98,18 +98,20 @@ Requirements
|
|
|
98
98
|
|
|
99
99
|
The minimum Apache Airflow version supported by this provider distribution is ``2.10.0``.
|
|
100
100
|
|
|
101
|
-
==========================================
|
|
101
|
+
========================================== ======================================
|
|
102
102
|
PIP package Version required
|
|
103
|
-
==========================================
|
|
103
|
+
========================================== ======================================
|
|
104
104
|
``apache-airflow`` ``>=2.10.0``
|
|
105
105
|
``apache-airflow-providers-common-compat`` ``>=1.6.0``
|
|
106
106
|
``apache-airflow-providers-common-sql`` ``>=1.21.0``
|
|
107
|
-
``pandas`` ``>=2.1.2
|
|
108
|
-
``
|
|
107
|
+
``pandas`` ``>=2.1.2; python_version < "3.13"``
|
|
108
|
+
``pandas`` ``>=2.2.3; python_version >= "3.13"``
|
|
109
|
+
``pyarrow`` ``>=16.1.0``
|
|
109
110
|
``snowflake-connector-python`` ``>=3.7.1``
|
|
110
111
|
``snowflake-sqlalchemy`` ``>=1.4.0``
|
|
111
112
|
``snowflake-snowpark-python`` ``>=1.17.0; python_version < "3.12"``
|
|
112
|
-
|
|
113
|
+
``snowflake-snowpark-python`` ``>=1.27.0; python_version >= "3.12"``
|
|
114
|
+
========================================== ======================================
|
|
113
115
|
|
|
114
116
|
Cross provider package dependencies
|
|
115
117
|
-----------------------------------
|
|
@@ -138,5 +140,5 @@ Downloading official packages
|
|
|
138
140
|
You can download officially released packages and verify their checksums and signatures from the
|
|
139
141
|
`Official Apache Download site <https://downloads.apache.org/airflow/providers/>`_
|
|
140
142
|
|
|
141
|
-
* `The apache-airflow-providers-snowflake 6.
|
|
142
|
-
* `The apache-airflow-providers-snowflake 6.
|
|
143
|
+
* `The apache-airflow-providers-snowflake 6.5.0 sdist package <https://downloads.apache.org/airflow/providers/apache_airflow_providers_snowflake-6.5.0.tar.gz>`_ (`asc <https://downloads.apache.org/airflow/providers/apache_airflow_providers_snowflake-6.5.0.tar.gz.asc>`__, `sha512 <https://downloads.apache.org/airflow/providers/apache_airflow_providers_snowflake-6.5.0.tar.gz.sha512>`__)
|
|
144
|
+
* `The apache-airflow-providers-snowflake 6.5.0 wheel package <https://downloads.apache.org/airflow/providers/apache_airflow_providers_snowflake-6.5.0-py3-none-any.whl>`_ (`asc <https://downloads.apache.org/airflow/providers/apache_airflow_providers_snowflake-6.5.0-py3-none-any.whl.asc>`__, `sha512 <https://downloads.apache.org/airflow/providers/apache_airflow_providers_snowflake-6.5.0-py3-none-any.whl.sha512>`__)
|
|
@@ -22,12 +22,13 @@ description: |
|
|
|
22
22
|
`Snowflake <https://www.snowflake.com/>`__
|
|
23
23
|
|
|
24
24
|
state: ready
|
|
25
|
-
source-date-epoch:
|
|
25
|
+
source-date-epoch: 1751474253
|
|
26
26
|
# Note that those versions are maintained by release manager - do not update them manually
|
|
27
27
|
# with the exception of case where other provider in sources has >= new provider version.
|
|
28
28
|
# In such case adding >= NEW_VERSION and bumping to NEW_VERSION in a provider have
|
|
29
29
|
# to be done in the same PR
|
|
30
30
|
versions:
|
|
31
|
+
- 6.5.0
|
|
31
32
|
- 6.4.0
|
|
32
33
|
- 6.3.1
|
|
33
34
|
- 6.3.0
|
|
@@ -25,7 +25,7 @@ build-backend = "flit_core.buildapi"
|
|
|
25
25
|
|
|
26
26
|
[project]
|
|
27
27
|
name = "apache-airflow-providers-snowflake"
|
|
28
|
-
version = "6.
|
|
28
|
+
version = "6.5.0rc1"
|
|
29
29
|
description = "Provider package apache-airflow-providers-snowflake for Apache Airflow"
|
|
30
30
|
readme = "README.rst"
|
|
31
31
|
authors = [
|
|
@@ -44,38 +44,35 @@ classifiers = [
|
|
|
44
44
|
"Framework :: Apache Airflow",
|
|
45
45
|
"Framework :: Apache Airflow :: Provider",
|
|
46
46
|
"License :: OSI Approved :: Apache Software License",
|
|
47
|
-
"Programming Language :: Python :: 3.9",
|
|
48
47
|
"Programming Language :: Python :: 3.10",
|
|
49
48
|
"Programming Language :: Python :: 3.11",
|
|
50
49
|
"Programming Language :: Python :: 3.12",
|
|
51
50
|
"Topic :: System :: Monitoring",
|
|
52
51
|
]
|
|
53
|
-
requires-python = "~=3.
|
|
52
|
+
requires-python = "~=3.10"
|
|
54
53
|
|
|
55
54
|
# The dependencies should be modified in place in the generated file.
|
|
56
55
|
# Any change in the dependencies is preserved when the file is regenerated
|
|
57
56
|
# Make sure to run ``breeze static-checks --type update-providers-dependencies --all-files``
|
|
58
57
|
# After you modify the dependencies, and rebuild your Breeze CI image with ``breeze ci-image build``
|
|
59
58
|
dependencies = [
|
|
60
|
-
"apache-airflow>=2.10.
|
|
61
|
-
"apache-airflow-providers-common-compat>=1.6.
|
|
62
|
-
"apache-airflow-providers-common-sql>=1.21.
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
# In addition FAB also limit sqlalchemy to < 2.0
|
|
67
|
-
"pandas>=2.1.2,<2.2",
|
|
68
|
-
"pyarrow>=14.0.1",
|
|
59
|
+
"apache-airflow>=2.10.0rc1",
|
|
60
|
+
"apache-airflow-providers-common-compat>=1.6.0rc1",
|
|
61
|
+
"apache-airflow-providers-common-sql>=1.21.0rc1",
|
|
62
|
+
'pandas>=2.1.2; python_version <"3.13"',
|
|
63
|
+
'pandas>=2.2.3; python_version >="3.13"',
|
|
64
|
+
"pyarrow>=16.1.0",
|
|
69
65
|
"snowflake-connector-python>=3.7.1",
|
|
70
66
|
"snowflake-sqlalchemy>=1.4.0",
|
|
71
67
|
"snowflake-snowpark-python>=1.17.0;python_version<'3.12'",
|
|
68
|
+
"snowflake-snowpark-python>=1.27.0;python_version>='3.12'",
|
|
72
69
|
]
|
|
73
70
|
|
|
74
71
|
# The optional dependencies should be modified in place in the generated file
|
|
75
72
|
# Any change in the dependencies is preserved when the file is regenerated
|
|
76
73
|
[project.optional-dependencies]
|
|
77
74
|
"openlineage" = [
|
|
78
|
-
"apache-airflow-providers-openlineage>=2.3.
|
|
75
|
+
"apache-airflow-providers-openlineage>=2.3.0rc1"
|
|
79
76
|
]
|
|
80
77
|
|
|
81
78
|
[dependency-groups]
|
|
@@ -116,8 +113,8 @@ apache-airflow-providers-common-sql = {workspace = true}
|
|
|
116
113
|
apache-airflow-providers-standard = {workspace = true}
|
|
117
114
|
|
|
118
115
|
[project.urls]
|
|
119
|
-
"Documentation" = "https://airflow.apache.org/docs/apache-airflow-providers-snowflake/6.
|
|
120
|
-
"Changelog" = "https://airflow.apache.org/docs/apache-airflow-providers-snowflake/6.
|
|
116
|
+
"Documentation" = "https://airflow.staged.apache.org/docs/apache-airflow-providers-snowflake/6.5.0"
|
|
117
|
+
"Changelog" = "https://airflow.staged.apache.org/docs/apache-airflow-providers-snowflake/6.5.0/changelog.html"
|
|
121
118
|
"Bug Tracker" = "https://github.com/apache/airflow/issues"
|
|
122
119
|
"Source Code" = "https://github.com/apache/airflow"
|
|
123
120
|
"Slack Chat" = "https://s.apache.org/airflow-slack"
|
|
@@ -29,7 +29,7 @@ from airflow import __version__ as airflow_version
|
|
|
29
29
|
|
|
30
30
|
__all__ = ["__version__"]
|
|
31
31
|
|
|
32
|
-
__version__ = "6.
|
|
32
|
+
__version__ = "6.5.0"
|
|
33
33
|
|
|
34
34
|
if packaging.version.parse(packaging.version.parse(airflow_version).base_version) < packaging.version.parse(
|
|
35
35
|
"2.10.0"
|
|
@@ -17,8 +17,8 @@
|
|
|
17
17
|
|
|
18
18
|
from __future__ import annotations
|
|
19
19
|
|
|
20
|
-
from collections.abc import Sequence
|
|
21
|
-
from typing import TYPE_CHECKING
|
|
20
|
+
from collections.abc import Callable, Sequence
|
|
21
|
+
from typing import TYPE_CHECKING
|
|
22
22
|
|
|
23
23
|
from airflow.providers.snowflake.version_compat import AIRFLOW_V_3_0_PLUS
|
|
24
24
|
|
|
@@ -19,12 +19,12 @@ from __future__ import annotations
|
|
|
19
19
|
|
|
20
20
|
import base64
|
|
21
21
|
import os
|
|
22
|
-
from collections.abc import Iterable, Mapping
|
|
22
|
+
from collections.abc import Callable, Iterable, Mapping
|
|
23
23
|
from contextlib import closing, contextmanager
|
|
24
24
|
from functools import cached_property
|
|
25
25
|
from io import StringIO
|
|
26
26
|
from pathlib import Path
|
|
27
|
-
from typing import TYPE_CHECKING, Any,
|
|
27
|
+
from typing import TYPE_CHECKING, Any, TypeVar, overload
|
|
28
28
|
from urllib.parse import urlparse
|
|
29
29
|
|
|
30
30
|
import requests
|
|
@@ -617,10 +617,9 @@ class SnowflakeHook(DbApiHook):
|
|
|
617
617
|
|
|
618
618
|
def get_openlineage_database_specific_lineage(self, task_instance) -> OperatorLineage | None:
|
|
619
619
|
"""
|
|
620
|
-
|
|
620
|
+
Emit separate OpenLineage events for each Snowflake query, based on executed query IDs.
|
|
621
621
|
|
|
622
|
-
If a single query ID is present,
|
|
623
|
-
If multiple query IDs are present, emits separate OpenLineage events for each query.
|
|
622
|
+
If a single query ID is present, also add an `ExternalQueryRunFacet` to the returned lineage metadata.
|
|
624
623
|
|
|
625
624
|
Note that `get_openlineage_database_specific_lineage` is usually called after task's execution,
|
|
626
625
|
so if multiple query IDs are present, both START and COMPLETE event for each query will be emitted
|
|
@@ -641,13 +640,22 @@ class SnowflakeHook(DbApiHook):
|
|
|
641
640
|
)
|
|
642
641
|
|
|
643
642
|
if not self.query_ids:
|
|
644
|
-
self.log.
|
|
643
|
+
self.log.info("OpenLineage could not find snowflake query ids.")
|
|
645
644
|
return None
|
|
646
645
|
|
|
647
646
|
self.log.debug("openlineage: getting connection to get database info")
|
|
648
647
|
connection = self.get_connection(self.get_conn_id())
|
|
649
648
|
namespace = SQLParser.create_namespace(self.get_openlineage_database_info(connection))
|
|
650
649
|
|
|
650
|
+
self.log.info("Separate OpenLineage events will be emitted for each query_id.")
|
|
651
|
+
emit_openlineage_events_for_snowflake_queries(
|
|
652
|
+
task_instance=task_instance,
|
|
653
|
+
hook=self,
|
|
654
|
+
query_ids=self.query_ids,
|
|
655
|
+
query_for_extra_metadata=True,
|
|
656
|
+
query_source_namespace=namespace,
|
|
657
|
+
)
|
|
658
|
+
|
|
651
659
|
if len(self.query_ids) == 1:
|
|
652
660
|
self.log.debug("Attaching ExternalQueryRunFacet with single query_id to OpenLineage event.")
|
|
653
661
|
return OperatorLineage(
|
|
@@ -658,20 +666,4 @@ class SnowflakeHook(DbApiHook):
|
|
|
658
666
|
}
|
|
659
667
|
)
|
|
660
668
|
|
|
661
|
-
self.log.info("Multiple query_ids found. Separate OpenLineage event will be emitted for each query.")
|
|
662
|
-
try:
|
|
663
|
-
from airflow.providers.openlineage.utils.utils import should_use_external_connection
|
|
664
|
-
|
|
665
|
-
use_external_connection = should_use_external_connection(self)
|
|
666
|
-
except ImportError:
|
|
667
|
-
# OpenLineage provider release < 1.8.0 - we always use connection
|
|
668
|
-
use_external_connection = True
|
|
669
|
-
|
|
670
|
-
emit_openlineage_events_for_snowflake_queries(
|
|
671
|
-
query_ids=self.query_ids,
|
|
672
|
-
query_source_namespace=namespace,
|
|
673
|
-
task_instance=task_instance,
|
|
674
|
-
hook=self if use_external_connection else None,
|
|
675
|
-
)
|
|
676
|
-
|
|
677
669
|
return None
|