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.
Files changed (73) hide show
  1. {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/PKG-INFO +23 -20
  2. {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/README.rst +11 -9
  3. {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/docs/changelog.rst +29 -0
  4. {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/docs/index.rst +10 -8
  5. {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/provider.yaml +2 -1
  6. {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/pyproject.toml +12 -15
  7. {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/src/airflow/providers/snowflake/__init__.py +1 -1
  8. {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/src/airflow/providers/snowflake/decorators/snowpark.py +2 -2
  9. {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/src/airflow/providers/snowflake/hooks/snowflake.py +14 -22
  10. {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
  11. {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/src/airflow/providers/snowflake/operators/snowflake.py +4 -0
  12. {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/src/airflow/providers/snowflake/operators/snowpark.py +2 -2
  13. {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
  14. {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/src/airflow/providers/snowflake/utils/openlineage.py +81 -18
  15. {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/src/airflow/providers/snowflake/utils/snowpark.py +2 -1
  16. {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/src/airflow/providers/snowflake/version_compat.py +10 -0
  17. {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/tests/unit/snowflake/decorators/test_snowpark.py +12 -13
  18. {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/tests/unit/snowflake/hooks/test_snowflake.py +21 -18
  19. apache_airflow_providers_snowflake-6.5.0rc1/tests/unit/snowflake/hooks/test_snowflake_sql_api.py +1422 -0
  20. {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/tests/unit/snowflake/operators/test_snowflake.py +7 -10
  21. {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/tests/unit/snowflake/operators/test_snowpark.py +8 -10
  22. {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
  23. apache_airflow_providers_snowflake-6.5.0rc1/tests/unit/snowflake/utils/test_openlineage.py +1401 -0
  24. apache_airflow_providers_snowflake-6.4.0/tests/unit/snowflake/hooks/test_snowflake_sql_api.py +0 -815
  25. apache_airflow_providers_snowflake-6.4.0/tests/unit/snowflake/utils/test_openlineage.py +0 -717
  26. {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/docs/.latest-doc-only-change.txt +0 -0
  27. {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/docs/commits.rst +0 -0
  28. {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/docs/conf.py +0 -0
  29. {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/docs/connections/snowflake.rst +0 -0
  30. {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/docs/decorators/index.rst +0 -0
  31. {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/docs/decorators/snowpark.rst +0 -0
  32. {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/docs/installing-providers-from-sources.rst +0 -0
  33. {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/docs/integration-logos/Snowflake.png +0 -0
  34. {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/docs/operators/copy_into_snowflake.rst +0 -0
  35. {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/docs/operators/index.rst +0 -0
  36. {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/docs/operators/snowflake.rst +0 -0
  37. {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/docs/operators/snowpark.rst +0 -0
  38. {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/docs/security.rst +0 -0
  39. {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/src/airflow/__init__.py +0 -0
  40. {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/src/airflow/providers/__init__.py +0 -0
  41. {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/src/airflow/providers/snowflake/LICENSE +0 -0
  42. {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/src/airflow/providers/snowflake/decorators/__init__.py +0 -0
  43. {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/src/airflow/providers/snowflake/get_provider_info.py +0 -0
  44. {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/src/airflow/providers/snowflake/hooks/__init__.py +0 -0
  45. {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/src/airflow/providers/snowflake/operators/__init__.py +0 -0
  46. {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/src/airflow/providers/snowflake/transfers/__init__.py +0 -0
  47. {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/src/airflow/providers/snowflake/triggers/__init__.py +0 -0
  48. {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/src/airflow/providers/snowflake/triggers/snowflake_trigger.py +0 -0
  49. {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/src/airflow/providers/snowflake/utils/__init__.py +0 -0
  50. {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/src/airflow/providers/snowflake/utils/common.py +0 -0
  51. {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
  52. {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/tests/conftest.py +0 -0
  53. {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/tests/system/__init__.py +0 -0
  54. {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/tests/system/snowflake/__init__.py +0 -0
  55. {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/tests/system/snowflake/example_copy_into_snowflake.py +0 -0
  56. {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/tests/system/snowflake/example_snowflake.py +0 -0
  57. {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
  58. {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/tests/system/snowflake/example_snowpark_decorator.py +0 -0
  59. {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/tests/system/snowflake/example_snowpark_operator.py +0 -0
  60. {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/tests/unit/__init__.py +0 -0
  61. {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/tests/unit/snowflake/__init__.py +0 -0
  62. {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/tests/unit/snowflake/decorators/__init__.py +0 -0
  63. {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/tests/unit/snowflake/hooks/__init__.py +0 -0
  64. {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/tests/unit/snowflake/hooks/test_sql.py +0 -0
  65. {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/tests/unit/snowflake/operators/__init__.py +0 -0
  66. {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/tests/unit/snowflake/operators/test_snowflake_sql.py +0 -0
  67. {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/tests/unit/snowflake/transfers/__init__.py +0 -0
  68. {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/tests/unit/snowflake/triggers/__init__.py +0 -0
  69. {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/tests/unit/snowflake/triggers/test_snowflake.py +0 -0
  70. {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/tests/unit/snowflake/utils/__init__.py +0 -0
  71. {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/tests/unit/snowflake/utils/test_common.py +0 -0
  72. {apache_airflow_providers_snowflake-6.4.0 → apache_airflow_providers_snowflake-6.5.0rc1}/tests/unit/snowflake/utils/test_snowpark.py +0 -0
  73. {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
@@ -1,11 +1,11 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: apache-airflow-providers-snowflake
3
- Version: 6.4.0
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.9
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.0
24
- Requires-Dist: apache-airflow-providers-common-compat>=1.6.0
25
- Requires-Dist: apache-airflow-providers-common-sql>=1.21.0
26
- Requires-Dist: pandas>=2.1.2,<2.2
27
- Requires-Dist: pyarrow>=14.0.1
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: apache-airflow-providers-openlineage>=2.3.0 ; extra == "openlineage"
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.4.0/changelog.html
34
- Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-snowflake/6.4.0
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.4.0``
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.4.0/>`_.
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.9,3.10,3.11,3.12
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,<2.2``
100
- ``pyarrow`` ``>=14.0.1``
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.4.0/changelog.html>`_.
131
+ `changelog <https://airflow.apache.org/docs/apache-airflow-providers-snowflake/6.5.0/changelog.html>`_.
129
132
 
@@ -23,7 +23,7 @@
23
23
 
24
24
  Package ``apache-airflow-providers-snowflake``
25
25
 
26
- Release: ``6.4.0``
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.4.0/>`_.
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.9,3.10,3.11,3.12
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,<2.2``
60
- ``pyarrow`` ``>=14.0.1``
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.4.0/changelog.html>`_.
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.4.0
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,<2.2``
108
- ``pyarrow`` ``>=14.0.1``
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.4.0 sdist package <https://downloads.apache.org/airflow/providers/apache_airflow_providers_snowflake-6.4.0.tar.gz>`_ (`asc <https://downloads.apache.org/airflow/providers/apache_airflow_providers_snowflake-6.4.0.tar.gz.asc>`__, `sha512 <https://downloads.apache.org/airflow/providers/apache_airflow_providers_snowflake-6.4.0.tar.gz.sha512>`__)
142
- * `The apache-airflow-providers-snowflake 6.4.0 wheel package <https://downloads.apache.org/airflow/providers/apache_airflow_providers_snowflake-6.4.0-py3-none-any.whl>`_ (`asc <https://downloads.apache.org/airflow/providers/apache_airflow_providers_snowflake-6.4.0-py3-none-any.whl.asc>`__, `sha512 <https://downloads.apache.org/airflow/providers/apache_airflow_providers_snowflake-6.4.0-py3-none-any.whl.sha512>`__)
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: 1749896974
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.4.0"
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.9"
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.0",
61
- "apache-airflow-providers-common-compat>=1.6.0",
62
- "apache-airflow-providers-common-sql>=1.21.0",
63
- # In pandas 2.2 minimal version of the sqlalchemy is 2.0
64
- # https://pandas.pydata.org/docs/whatsnew/v2.2.0.html#increased-minimum-versions-for-dependencies
65
- # However Airflow not fully supports it yet: https://github.com/apache/airflow/issues/28723
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.0"
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.4.0"
120
- "Changelog" = "https://airflow.apache.org/docs/apache-airflow-providers-snowflake/6.4.0/changelog.html"
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.4.0"
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, Callable
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, Callable, TypeVar, overload
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
- Generate OpenLineage metadata for a Snowflake task instance based on executed query IDs.
620
+ Emit separate OpenLineage events for each Snowflake query, based on executed query IDs.
621
621
 
622
- If a single query ID is present, attach an `ExternalQueryRunFacet` to the lineage metadata.
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.debug("openlineage: no snowflake query ids found.")
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