apache-airflow-providers-snowflake 6.5.1__tar.gz → 6.5.2rc1__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.5.1 → apache_airflow_providers_snowflake-6.5.2rc1}/PKG-INFO +10 -10
- {apache_airflow_providers_snowflake-6.5.1 → apache_airflow_providers_snowflake-6.5.2rc1}/README.rst +3 -3
- {apache_airflow_providers_snowflake-6.5.1 → apache_airflow_providers_snowflake-6.5.2rc1}/docs/changelog.rst +11 -0
- {apache_airflow_providers_snowflake-6.5.1 → apache_airflow_providers_snowflake-6.5.2rc1}/docs/index.rst +3 -3
- {apache_airflow_providers_snowflake-6.5.1 → apache_airflow_providers_snowflake-6.5.2rc1}/provider.yaml +2 -1
- {apache_airflow_providers_snowflake-6.5.1 → apache_airflow_providers_snowflake-6.5.2rc1}/pyproject.toml +7 -7
- {apache_airflow_providers_snowflake-6.5.1 → apache_airflow_providers_snowflake-6.5.2rc1}/src/airflow/providers/snowflake/__init__.py +1 -1
- {apache_airflow_providers_snowflake-6.5.1 → apache_airflow_providers_snowflake-6.5.2rc1}/src/airflow/providers/snowflake/hooks/snowflake_sql_api.py +1 -1
- {apache_airflow_providers_snowflake-6.5.1 → apache_airflow_providers_snowflake-6.5.2rc1}/src/airflow/providers/snowflake/operators/snowflake.py +6 -10
- {apache_airflow_providers_snowflake-6.5.1 → apache_airflow_providers_snowflake-6.5.2rc1}/tests/unit/snowflake/operators/test_snowflake.py +73 -16
- {apache_airflow_providers_snowflake-6.5.1 → apache_airflow_providers_snowflake-6.5.2rc1}/docs/.latest-doc-only-change.txt +0 -0
- {apache_airflow_providers_snowflake-6.5.1 → apache_airflow_providers_snowflake-6.5.2rc1}/docs/commits.rst +0 -0
- {apache_airflow_providers_snowflake-6.5.1 → apache_airflow_providers_snowflake-6.5.2rc1}/docs/conf.py +0 -0
- {apache_airflow_providers_snowflake-6.5.1 → apache_airflow_providers_snowflake-6.5.2rc1}/docs/connections/snowflake.rst +0 -0
- {apache_airflow_providers_snowflake-6.5.1 → apache_airflow_providers_snowflake-6.5.2rc1}/docs/decorators/index.rst +0 -0
- {apache_airflow_providers_snowflake-6.5.1 → apache_airflow_providers_snowflake-6.5.2rc1}/docs/decorators/snowpark.rst +0 -0
- {apache_airflow_providers_snowflake-6.5.1 → apache_airflow_providers_snowflake-6.5.2rc1}/docs/installing-providers-from-sources.rst +0 -0
- {apache_airflow_providers_snowflake-6.5.1 → apache_airflow_providers_snowflake-6.5.2rc1}/docs/integration-logos/Snowflake.png +0 -0
- {apache_airflow_providers_snowflake-6.5.1 → apache_airflow_providers_snowflake-6.5.2rc1}/docs/operators/copy_into_snowflake.rst +0 -0
- {apache_airflow_providers_snowflake-6.5.1 → apache_airflow_providers_snowflake-6.5.2rc1}/docs/operators/index.rst +0 -0
- {apache_airflow_providers_snowflake-6.5.1 → apache_airflow_providers_snowflake-6.5.2rc1}/docs/operators/snowflake.rst +0 -0
- {apache_airflow_providers_snowflake-6.5.1 → apache_airflow_providers_snowflake-6.5.2rc1}/docs/operators/snowpark.rst +0 -0
- {apache_airflow_providers_snowflake-6.5.1 → apache_airflow_providers_snowflake-6.5.2rc1}/docs/security.rst +0 -0
- {apache_airflow_providers_snowflake-6.5.1 → apache_airflow_providers_snowflake-6.5.2rc1}/src/airflow/__init__.py +0 -0
- {apache_airflow_providers_snowflake-6.5.1 → apache_airflow_providers_snowflake-6.5.2rc1}/src/airflow/providers/__init__.py +0 -0
- {apache_airflow_providers_snowflake-6.5.1 → apache_airflow_providers_snowflake-6.5.2rc1}/src/airflow/providers/snowflake/LICENSE +0 -0
- {apache_airflow_providers_snowflake-6.5.1 → apache_airflow_providers_snowflake-6.5.2rc1}/src/airflow/providers/snowflake/decorators/__init__.py +0 -0
- {apache_airflow_providers_snowflake-6.5.1 → apache_airflow_providers_snowflake-6.5.2rc1}/src/airflow/providers/snowflake/decorators/snowpark.py +0 -0
- {apache_airflow_providers_snowflake-6.5.1 → apache_airflow_providers_snowflake-6.5.2rc1}/src/airflow/providers/snowflake/get_provider_info.py +0 -0
- {apache_airflow_providers_snowflake-6.5.1 → apache_airflow_providers_snowflake-6.5.2rc1}/src/airflow/providers/snowflake/hooks/__init__.py +0 -0
- {apache_airflow_providers_snowflake-6.5.1 → apache_airflow_providers_snowflake-6.5.2rc1}/src/airflow/providers/snowflake/hooks/snowflake.py +0 -0
- {apache_airflow_providers_snowflake-6.5.1 → apache_airflow_providers_snowflake-6.5.2rc1}/src/airflow/providers/snowflake/operators/__init__.py +0 -0
- {apache_airflow_providers_snowflake-6.5.1 → apache_airflow_providers_snowflake-6.5.2rc1}/src/airflow/providers/snowflake/operators/snowpark.py +0 -0
- {apache_airflow_providers_snowflake-6.5.1 → apache_airflow_providers_snowflake-6.5.2rc1}/src/airflow/providers/snowflake/transfers/__init__.py +0 -0
- {apache_airflow_providers_snowflake-6.5.1 → apache_airflow_providers_snowflake-6.5.2rc1}/src/airflow/providers/snowflake/transfers/copy_into_snowflake.py +0 -0
- {apache_airflow_providers_snowflake-6.5.1 → apache_airflow_providers_snowflake-6.5.2rc1}/src/airflow/providers/snowflake/triggers/__init__.py +0 -0
- {apache_airflow_providers_snowflake-6.5.1 → apache_airflow_providers_snowflake-6.5.2rc1}/src/airflow/providers/snowflake/triggers/snowflake_trigger.py +0 -0
- {apache_airflow_providers_snowflake-6.5.1 → apache_airflow_providers_snowflake-6.5.2rc1}/src/airflow/providers/snowflake/utils/__init__.py +0 -0
- {apache_airflow_providers_snowflake-6.5.1 → apache_airflow_providers_snowflake-6.5.2rc1}/src/airflow/providers/snowflake/utils/common.py +0 -0
- {apache_airflow_providers_snowflake-6.5.1 → apache_airflow_providers_snowflake-6.5.2rc1}/src/airflow/providers/snowflake/utils/openlineage.py +0 -0
- {apache_airflow_providers_snowflake-6.5.1 → apache_airflow_providers_snowflake-6.5.2rc1}/src/airflow/providers/snowflake/utils/snowpark.py +0 -0
- {apache_airflow_providers_snowflake-6.5.1 → apache_airflow_providers_snowflake-6.5.2rc1}/src/airflow/providers/snowflake/utils/sql_api_generate_jwt.py +0 -0
- {apache_airflow_providers_snowflake-6.5.1 → apache_airflow_providers_snowflake-6.5.2rc1}/src/airflow/providers/snowflake/version_compat.py +0 -0
- {apache_airflow_providers_snowflake-6.5.1 → apache_airflow_providers_snowflake-6.5.2rc1}/tests/conftest.py +0 -0
- {apache_airflow_providers_snowflake-6.5.1 → apache_airflow_providers_snowflake-6.5.2rc1}/tests/system/__init__.py +0 -0
- {apache_airflow_providers_snowflake-6.5.1 → apache_airflow_providers_snowflake-6.5.2rc1}/tests/system/snowflake/__init__.py +0 -0
- {apache_airflow_providers_snowflake-6.5.1 → apache_airflow_providers_snowflake-6.5.2rc1}/tests/system/snowflake/example_copy_into_snowflake.py +0 -0
- {apache_airflow_providers_snowflake-6.5.1 → apache_airflow_providers_snowflake-6.5.2rc1}/tests/system/snowflake/example_snowflake.py +0 -0
- {apache_airflow_providers_snowflake-6.5.1 → apache_airflow_providers_snowflake-6.5.2rc1}/tests/system/snowflake/example_snowflake_snowflake_op_template_file.sql +0 -0
- {apache_airflow_providers_snowflake-6.5.1 → apache_airflow_providers_snowflake-6.5.2rc1}/tests/system/snowflake/example_snowpark_decorator.py +0 -0
- {apache_airflow_providers_snowflake-6.5.1 → apache_airflow_providers_snowflake-6.5.2rc1}/tests/system/snowflake/example_snowpark_operator.py +0 -0
- {apache_airflow_providers_snowflake-6.5.1 → apache_airflow_providers_snowflake-6.5.2rc1}/tests/unit/__init__.py +0 -0
- {apache_airflow_providers_snowflake-6.5.1 → apache_airflow_providers_snowflake-6.5.2rc1}/tests/unit/snowflake/__init__.py +0 -0
- {apache_airflow_providers_snowflake-6.5.1 → apache_airflow_providers_snowflake-6.5.2rc1}/tests/unit/snowflake/decorators/__init__.py +0 -0
- {apache_airflow_providers_snowflake-6.5.1 → apache_airflow_providers_snowflake-6.5.2rc1}/tests/unit/snowflake/decorators/test_snowpark.py +0 -0
- {apache_airflow_providers_snowflake-6.5.1 → apache_airflow_providers_snowflake-6.5.2rc1}/tests/unit/snowflake/hooks/__init__.py +0 -0
- {apache_airflow_providers_snowflake-6.5.1 → apache_airflow_providers_snowflake-6.5.2rc1}/tests/unit/snowflake/hooks/test_snowflake.py +0 -0
- {apache_airflow_providers_snowflake-6.5.1 → apache_airflow_providers_snowflake-6.5.2rc1}/tests/unit/snowflake/hooks/test_snowflake_sql_api.py +0 -0
- {apache_airflow_providers_snowflake-6.5.1 → apache_airflow_providers_snowflake-6.5.2rc1}/tests/unit/snowflake/hooks/test_sql.py +0 -0
- {apache_airflow_providers_snowflake-6.5.1 → apache_airflow_providers_snowflake-6.5.2rc1}/tests/unit/snowflake/operators/__init__.py +0 -0
- {apache_airflow_providers_snowflake-6.5.1 → apache_airflow_providers_snowflake-6.5.2rc1}/tests/unit/snowflake/operators/test_snowflake_sql.py +0 -0
- {apache_airflow_providers_snowflake-6.5.1 → apache_airflow_providers_snowflake-6.5.2rc1}/tests/unit/snowflake/operators/test_snowpark.py +0 -0
- {apache_airflow_providers_snowflake-6.5.1 → apache_airflow_providers_snowflake-6.5.2rc1}/tests/unit/snowflake/transfers/__init__.py +0 -0
- {apache_airflow_providers_snowflake-6.5.1 → apache_airflow_providers_snowflake-6.5.2rc1}/tests/unit/snowflake/transfers/test_copy_into_snowflake.py +0 -0
- {apache_airflow_providers_snowflake-6.5.1 → apache_airflow_providers_snowflake-6.5.2rc1}/tests/unit/snowflake/triggers/__init__.py +0 -0
- {apache_airflow_providers_snowflake-6.5.1 → apache_airflow_providers_snowflake-6.5.2rc1}/tests/unit/snowflake/triggers/test_snowflake.py +0 -0
- {apache_airflow_providers_snowflake-6.5.1 → apache_airflow_providers_snowflake-6.5.2rc1}/tests/unit/snowflake/utils/__init__.py +0 -0
- {apache_airflow_providers_snowflake-6.5.1 → apache_airflow_providers_snowflake-6.5.2rc1}/tests/unit/snowflake/utils/test_common.py +0 -0
- {apache_airflow_providers_snowflake-6.5.1 → apache_airflow_providers_snowflake-6.5.2rc1}/tests/unit/snowflake/utils/test_openlineage.py +0 -0
- {apache_airflow_providers_snowflake-6.5.1 → apache_airflow_providers_snowflake-6.5.2rc1}/tests/unit/snowflake/utils/test_snowpark.py +0 -0
- {apache_airflow_providers_snowflake-6.5.1 → apache_airflow_providers_snowflake-6.5.2rc1}/tests/unit/snowflake/utils/test_sql_api_generate_jwt.py +0 -0
{apache_airflow_providers_snowflake-6.5.1 → apache_airflow_providers_snowflake-6.5.2rc1}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: apache-airflow-providers-snowflake
|
|
3
|
-
Version: 6.5.
|
|
3
|
+
Version: 6.5.2rc1
|
|
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>
|
|
@@ -20,9 +20,9 @@ Classifier: Programming Language :: Python :: 3.11
|
|
|
20
20
|
Classifier: Programming Language :: Python :: 3.12
|
|
21
21
|
Classifier: Programming Language :: Python :: 3.13
|
|
22
22
|
Classifier: Topic :: System :: Monitoring
|
|
23
|
-
Requires-Dist: apache-airflow>=2.10.
|
|
24
|
-
Requires-Dist: apache-airflow-providers-common-compat>=1.6.
|
|
25
|
-
Requires-Dist: apache-airflow-providers-common-sql>=1.
|
|
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.5rc1
|
|
26
26
|
Requires-Dist: pandas>=2.1.2; python_version <"3.13"
|
|
27
27
|
Requires-Dist: pandas>=2.2.3; python_version >="3.13"
|
|
28
28
|
Requires-Dist: pyarrow>=16.1.0; python_version < '3.13'
|
|
@@ -31,10 +31,10 @@ Requires-Dist: snowflake-connector-python>=3.7.1
|
|
|
31
31
|
Requires-Dist: snowflake-sqlalchemy>=1.4.0
|
|
32
32
|
Requires-Dist: snowflake-snowpark-python>=1.17.0;python_version<'3.12'
|
|
33
33
|
Requires-Dist: snowflake-snowpark-python>=1.27.0,<9999;python_version>='3.12' and python_version<'3.13'
|
|
34
|
-
Requires-Dist: apache-airflow-providers-openlineage>=2.3.
|
|
34
|
+
Requires-Dist: apache-airflow-providers-openlineage>=2.3.0rc1 ; extra == "openlineage"
|
|
35
35
|
Project-URL: Bug Tracker, https://github.com/apache/airflow/issues
|
|
36
|
-
Project-URL: Changelog, https://airflow.apache.org/docs/apache-airflow-providers-snowflake/6.5.
|
|
37
|
-
Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-snowflake/6.5.
|
|
36
|
+
Project-URL: Changelog, https://airflow.staged.apache.org/docs/apache-airflow-providers-snowflake/6.5.2/changelog.html
|
|
37
|
+
Project-URL: Documentation, https://airflow.staged.apache.org/docs/apache-airflow-providers-snowflake/6.5.2
|
|
38
38
|
Project-URL: Mastodon, https://fosstodon.org/@airflow
|
|
39
39
|
Project-URL: Slack Chat, https://s.apache.org/airflow-slack
|
|
40
40
|
Project-URL: Source Code, https://github.com/apache/airflow
|
|
@@ -66,7 +66,7 @@ Provides-Extra: openlineage
|
|
|
66
66
|
|
|
67
67
|
Package ``apache-airflow-providers-snowflake``
|
|
68
68
|
|
|
69
|
-
Release: ``6.5.
|
|
69
|
+
Release: ``6.5.2``
|
|
70
70
|
|
|
71
71
|
Release Date: ``|PypiReleaseDate|``
|
|
72
72
|
|
|
@@ -80,7 +80,7 @@ This is a provider package for ``snowflake`` provider. All classes for this prov
|
|
|
80
80
|
are in ``airflow.providers.snowflake`` python package.
|
|
81
81
|
|
|
82
82
|
You can find package information and changelog for the provider
|
|
83
|
-
in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-snowflake/6.5.
|
|
83
|
+
in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-snowflake/6.5.2/>`_.
|
|
84
84
|
|
|
85
85
|
Installation
|
|
86
86
|
------------
|
|
@@ -132,5 +132,5 @@ Dependent package
|
|
|
132
132
|
================================================================================================================== =================
|
|
133
133
|
|
|
134
134
|
The changelog for the provider package can be found in the
|
|
135
|
-
`changelog <https://airflow.apache.org/docs/apache-airflow-providers-snowflake/6.5.
|
|
135
|
+
`changelog <https://airflow.apache.org/docs/apache-airflow-providers-snowflake/6.5.2/changelog.html>`_.
|
|
136
136
|
|
{apache_airflow_providers_snowflake-6.5.1 → apache_airflow_providers_snowflake-6.5.2rc1}/README.rst
RENAMED
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
|
|
24
24
|
Package ``apache-airflow-providers-snowflake``
|
|
25
25
|
|
|
26
|
-
Release: ``6.5.
|
|
26
|
+
Release: ``6.5.2``
|
|
27
27
|
|
|
28
28
|
Release Date: ``|PypiReleaseDate|``
|
|
29
29
|
|
|
@@ -37,7 +37,7 @@ This is a provider package for ``snowflake`` provider. All classes for this prov
|
|
|
37
37
|
are in ``airflow.providers.snowflake`` python package.
|
|
38
38
|
|
|
39
39
|
You can find package information and changelog for the provider
|
|
40
|
-
in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-snowflake/6.5.
|
|
40
|
+
in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-snowflake/6.5.2/>`_.
|
|
41
41
|
|
|
42
42
|
Installation
|
|
43
43
|
------------
|
|
@@ -89,4 +89,4 @@ Dependent package
|
|
|
89
89
|
================================================================================================================== =================
|
|
90
90
|
|
|
91
91
|
The changelog for the provider package can be found in the
|
|
92
|
-
`changelog <https://airflow.apache.org/docs/apache-airflow-providers-snowflake/6.5.
|
|
92
|
+
`changelog <https://airflow.apache.org/docs/apache-airflow-providers-snowflake/6.5.2/changelog.html>`_.
|
|
@@ -27,6 +27,17 @@
|
|
|
27
27
|
Changelog
|
|
28
28
|
---------
|
|
29
29
|
|
|
30
|
+
6.5.2
|
|
31
|
+
.....
|
|
32
|
+
|
|
33
|
+
Bug Fixes
|
|
34
|
+
~~~~~~~~~
|
|
35
|
+
|
|
36
|
+
* ``Fix SnowflakeCheckOperator and SnowflakeValueCheckOperator to use parameters arg correctly (#53837)``
|
|
37
|
+
|
|
38
|
+
.. Below changes are excluded from the changelog. Move them to
|
|
39
|
+
appropriate section above if needed. Do not delete the lines(!):
|
|
40
|
+
|
|
30
41
|
6.5.1
|
|
31
42
|
.....
|
|
32
43
|
|
|
@@ -78,7 +78,7 @@ apache-airflow-providers-snowflake package
|
|
|
78
78
|
`Snowflake <https://www.snowflake.com/>`__
|
|
79
79
|
|
|
80
80
|
|
|
81
|
-
Release: 6.5.
|
|
81
|
+
Release: 6.5.2
|
|
82
82
|
|
|
83
83
|
Release Date: ``|PypiReleaseDate|``
|
|
84
84
|
|
|
@@ -143,5 +143,5 @@ Downloading official packages
|
|
|
143
143
|
You can download officially released packages and verify their checksums and signatures from the
|
|
144
144
|
`Official Apache Download site <https://downloads.apache.org/airflow/providers/>`_
|
|
145
145
|
|
|
146
|
-
* `The apache-airflow-providers-snowflake 6.5.
|
|
147
|
-
* `The apache-airflow-providers-snowflake 6.5.
|
|
146
|
+
* `The apache-airflow-providers-snowflake 6.5.2 sdist package <https://downloads.apache.org/airflow/providers/apache_airflow_providers_snowflake-6.5.2.tar.gz>`_ (`asc <https://downloads.apache.org/airflow/providers/apache_airflow_providers_snowflake-6.5.2.tar.gz.asc>`__, `sha512 <https://downloads.apache.org/airflow/providers/apache_airflow_providers_snowflake-6.5.2.tar.gz.sha512>`__)
|
|
147
|
+
* `The apache-airflow-providers-snowflake 6.5.2 wheel package <https://downloads.apache.org/airflow/providers/apache_airflow_providers_snowflake-6.5.2-py3-none-any.whl>`_ (`asc <https://downloads.apache.org/airflow/providers/apache_airflow_providers_snowflake-6.5.2-py3-none-any.whl.asc>`__, `sha512 <https://downloads.apache.org/airflow/providers/apache_airflow_providers_snowflake-6.5.2-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: 1754503520
|
|
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.2
|
|
31
32
|
- 6.5.1
|
|
32
33
|
- 6.5.0
|
|
33
34
|
- 6.4.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.5.
|
|
28
|
+
version = "6.5.2rc1"
|
|
29
29
|
description = "Provider package apache-airflow-providers-snowflake for Apache Airflow"
|
|
30
30
|
readme = "README.rst"
|
|
31
31
|
authors = [
|
|
@@ -57,9 +57,9 @@ requires-python = ">=3.10"
|
|
|
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.10.
|
|
61
|
-
"apache-airflow-providers-common-compat>=1.6.
|
|
62
|
-
"apache-airflow-providers-common-sql>=1.
|
|
60
|
+
"apache-airflow>=2.10.0rc1",
|
|
61
|
+
"apache-airflow-providers-common-compat>=1.6.0rc1",
|
|
62
|
+
"apache-airflow-providers-common-sql>=1.27.5rc1",
|
|
63
63
|
'pandas>=2.1.2; python_version <"3.13"',
|
|
64
64
|
'pandas>=2.2.3; python_version >="3.13"',
|
|
65
65
|
"pyarrow>=16.1.0; python_version < '3.13'",
|
|
@@ -76,7 +76,7 @@ dependencies = [
|
|
|
76
76
|
# Any change in the dependencies is preserved when the file is regenerated
|
|
77
77
|
[project.optional-dependencies]
|
|
78
78
|
"openlineage" = [
|
|
79
|
-
"apache-airflow-providers-openlineage>=2.3.
|
|
79
|
+
"apache-airflow-providers-openlineage>=2.3.0rc1"
|
|
80
80
|
]
|
|
81
81
|
|
|
82
82
|
[dependency-groups]
|
|
@@ -117,8 +117,8 @@ apache-airflow-providers-common-sql = {workspace = true}
|
|
|
117
117
|
apache-airflow-providers-standard = {workspace = true}
|
|
118
118
|
|
|
119
119
|
[project.urls]
|
|
120
|
-
"Documentation" = "https://airflow.apache.org/docs/apache-airflow-providers-snowflake/6.5.
|
|
121
|
-
"Changelog" = "https://airflow.apache.org/docs/apache-airflow-providers-snowflake/6.5.
|
|
120
|
+
"Documentation" = "https://airflow.staged.apache.org/docs/apache-airflow-providers-snowflake/6.5.2"
|
|
121
|
+
"Changelog" = "https://airflow.staged.apache.org/docs/apache-airflow-providers-snowflake/6.5.2/changelog.html"
|
|
122
122
|
"Bug Tracker" = "https://github.com/apache/airflow/issues"
|
|
123
123
|
"Source Code" = "https://github.com/apache/airflow"
|
|
124
124
|
"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.5.
|
|
32
|
+
__version__ = "6.5.2"
|
|
33
33
|
|
|
34
34
|
if packaging.version.parse(packaging.version.parse(airflow_version).base_version) < packaging.version.parse(
|
|
35
35
|
"2.10.0"
|
|
@@ -435,7 +435,7 @@ class SnowflakeSqlApiHook(SnowflakeHook):
|
|
|
435
435
|
:param url: The URL for the API endpoint.
|
|
436
436
|
:param headers: The headers to include in the API call.
|
|
437
437
|
:param params: (Optional) The query parameters to include in the API call.
|
|
438
|
-
:param
|
|
438
|
+
:param json: (Optional) The data to include in the API call.
|
|
439
439
|
:return: The response object from the API call.
|
|
440
440
|
"""
|
|
441
441
|
with requests.Session() as session:
|
|
@@ -76,8 +76,6 @@ class SnowflakeCheckOperator(SQLCheckOperator):
|
|
|
76
76
|
Template references are recognized by str ending in '.sql'
|
|
77
77
|
:param snowflake_conn_id: Reference to
|
|
78
78
|
:ref:`Snowflake connection id<howto/connection:snowflake>`
|
|
79
|
-
:param autocommit: if True, each command is automatically committed.
|
|
80
|
-
(default value: True)
|
|
81
79
|
:param parameters: (optional) the parameters to render the SQL query with.
|
|
82
80
|
:param warehouse: name of warehouse (will overwrite any warehouse
|
|
83
81
|
defined in the connection's extra JSON)
|
|
@@ -109,8 +107,6 @@ class SnowflakeCheckOperator(SQLCheckOperator):
|
|
|
109
107
|
sql: str,
|
|
110
108
|
snowflake_conn_id: str = "snowflake_default",
|
|
111
109
|
parameters: Iterable | Mapping[str, Any] | None = None,
|
|
112
|
-
autocommit: bool = True,
|
|
113
|
-
do_xcom_push: bool = True,
|
|
114
110
|
warehouse: str | None = None,
|
|
115
111
|
database: str | None = None,
|
|
116
112
|
role: str | None = None,
|
|
@@ -179,8 +175,6 @@ class SnowflakeValueCheckOperator(SQLValueCheckOperator):
|
|
|
179
175
|
tolerance: Any = None,
|
|
180
176
|
snowflake_conn_id: str = "snowflake_default",
|
|
181
177
|
parameters: Iterable | Mapping[str, Any] | None = None,
|
|
182
|
-
autocommit: bool = True,
|
|
183
|
-
do_xcom_push: bool = True,
|
|
184
178
|
warehouse: str | None = None,
|
|
185
179
|
database: str | None = None,
|
|
186
180
|
role: str | None = None,
|
|
@@ -202,7 +196,12 @@ class SnowflakeValueCheckOperator(SQLValueCheckOperator):
|
|
|
202
196
|
**hook_params,
|
|
203
197
|
}
|
|
204
198
|
super().__init__(
|
|
205
|
-
sql=sql,
|
|
199
|
+
sql=sql,
|
|
200
|
+
pass_value=pass_value,
|
|
201
|
+
tolerance=tolerance,
|
|
202
|
+
conn_id=snowflake_conn_id,
|
|
203
|
+
parameters=parameters,
|
|
204
|
+
**kwargs,
|
|
206
205
|
)
|
|
207
206
|
self.query_ids: list[str] = []
|
|
208
207
|
|
|
@@ -259,9 +258,6 @@ class SnowflakeIntervalCheckOperator(SQLIntervalCheckOperator):
|
|
|
259
258
|
date_filter_column: str = "ds",
|
|
260
259
|
days_back: SupportsAbs[int] = -7,
|
|
261
260
|
snowflake_conn_id: str = "snowflake_default",
|
|
262
|
-
parameters: Iterable | Mapping[str, Any] | None = None,
|
|
263
|
-
autocommit: bool = True,
|
|
264
|
-
do_xcom_push: bool = True,
|
|
265
261
|
warehouse: str | None = None,
|
|
266
262
|
database: str | None = None,
|
|
267
263
|
role: str | None = None,
|
|
@@ -18,11 +18,13 @@
|
|
|
18
18
|
from __future__ import annotations
|
|
19
19
|
|
|
20
20
|
from unittest import mock
|
|
21
|
+
from unittest.mock import call
|
|
21
22
|
|
|
22
23
|
import pendulum
|
|
23
24
|
import pytest
|
|
24
25
|
|
|
25
26
|
from airflow.exceptions import AirflowException, TaskDeferred
|
|
27
|
+
from airflow.models import Connection
|
|
26
28
|
from airflow.models.dag import DAG
|
|
27
29
|
from airflow.models.dagrun import DagRun
|
|
28
30
|
from airflow.models.taskinstance import TaskInstance
|
|
@@ -34,7 +36,7 @@ from airflow.providers.snowflake.operators.snowflake import (
|
|
|
34
36
|
SnowflakeValueCheckOperator,
|
|
35
37
|
)
|
|
36
38
|
from airflow.providers.snowflake.triggers.snowflake_trigger import SnowflakeSqlApiTrigger
|
|
37
|
-
from airflow.utils import timezone
|
|
39
|
+
from airflow.utils import timezone # type: ignore[attr-defined]
|
|
38
40
|
from airflow.utils.types import DagRunType
|
|
39
41
|
|
|
40
42
|
from tests_common.test_utils.version_compat import AIRFLOW_V_3_0_PLUS
|
|
@@ -107,25 +109,80 @@ class TestSnowflakeOperatorForParams:
|
|
|
107
109
|
)
|
|
108
110
|
|
|
109
111
|
|
|
110
|
-
@pytest.
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
(
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
112
|
+
@pytest.fixture(autouse=True)
|
|
113
|
+
def setup_connections(create_connection_without_db):
|
|
114
|
+
create_connection_without_db(
|
|
115
|
+
Connection(
|
|
116
|
+
conn_id="snowflake_default",
|
|
117
|
+
conn_type="snowflake",
|
|
118
|
+
host="test_host",
|
|
119
|
+
port=443,
|
|
120
|
+
schema="test_schema",
|
|
121
|
+
login="test_user",
|
|
122
|
+
password="test_password",
|
|
123
|
+
)
|
|
124
|
+
)
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
class TestSnowflakeCheckOperator:
|
|
128
|
+
@mock.patch("airflow.providers.common.sql.operators.sql.SQLCheckOperator.get_db_hook")
|
|
120
129
|
def test_get_db_hook(
|
|
121
130
|
self,
|
|
122
131
|
mock_get_db_hook,
|
|
123
|
-
operator_class,
|
|
124
|
-
kwargs,
|
|
125
132
|
):
|
|
126
|
-
operator =
|
|
127
|
-
|
|
128
|
-
|
|
133
|
+
operator = SnowflakeCheckOperator(
|
|
134
|
+
task_id="snowflake_check",
|
|
135
|
+
snowflake_conn_id="snowflake_default",
|
|
136
|
+
sql="Select * from test_table",
|
|
137
|
+
parameters={"param1": "value1"},
|
|
138
|
+
)
|
|
139
|
+
operator.execute({})
|
|
140
|
+
mock_get_db_hook.assert_has_calls(
|
|
141
|
+
[call().get_first("Select * from test_table", {"param1": "value1"})]
|
|
142
|
+
)
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
class TestSnowflakeValueCheckOperator:
|
|
146
|
+
@mock.patch("airflow.providers.common.sql.operators.sql.SQLValueCheckOperator.get_db_hook")
|
|
147
|
+
@mock.patch("airflow.providers.common.sql.operators.sql.SQLValueCheckOperator.check_value")
|
|
148
|
+
def test_get_db_hook(
|
|
149
|
+
self,
|
|
150
|
+
mock_check_value,
|
|
151
|
+
mock_get_db_hook,
|
|
152
|
+
):
|
|
153
|
+
mock_get_db_hook.return_value.get_first.return_value = ["test_value"]
|
|
154
|
+
|
|
155
|
+
operator = SnowflakeValueCheckOperator(
|
|
156
|
+
task_id="snowflake_check",
|
|
157
|
+
sql="Select * from test_table",
|
|
158
|
+
pass_value=95,
|
|
159
|
+
parameters={"param1": "value1"},
|
|
160
|
+
)
|
|
161
|
+
operator.execute({})
|
|
162
|
+
mock_get_db_hook.assert_has_calls(
|
|
163
|
+
[call().get_first("Select * from test_table", {"param1": "value1"})]
|
|
164
|
+
)
|
|
165
|
+
assert mock_check_value.call_args == call(["test_value"])
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
class TestSnowflakeIntervalCheckOperator:
|
|
169
|
+
@mock.patch("airflow.providers.common.sql.operators.sql.SQLIntervalCheckOperator.__init__")
|
|
170
|
+
def test_get_db_hook(
|
|
171
|
+
self,
|
|
172
|
+
mock_snowflake_interval_check_operator,
|
|
173
|
+
):
|
|
174
|
+
SnowflakeIntervalCheckOperator(
|
|
175
|
+
task_id="snowflake_check", table="test-table-id", metrics_thresholds={"COUNT(*)": 1.5}
|
|
176
|
+
)
|
|
177
|
+
assert mock_snowflake_interval_check_operator.call_args == mock.call(
|
|
178
|
+
table="test-table-id",
|
|
179
|
+
metrics_thresholds={"COUNT(*)": 1.5},
|
|
180
|
+
date_filter_column="ds",
|
|
181
|
+
days_back=-7,
|
|
182
|
+
conn_id="snowflake_default",
|
|
183
|
+
task_id="snowflake_check",
|
|
184
|
+
default_args={},
|
|
185
|
+
)
|
|
129
186
|
|
|
130
187
|
|
|
131
188
|
@pytest.mark.parametrize(
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|