apache-airflow-providers-common-sql 2.2.0rc1__tar.gz → 2.3.0__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 (107) hide show
  1. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/PKG-INFO +12 -13
  2. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/README.rst +5 -5
  3. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/docs/changelog.rst +27 -0
  4. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/docs/index.rst +4 -4
  5. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/docs/operators.rst +59 -1
  6. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/provider.yaml +2 -1
  7. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/pyproject.toml +8 -9
  8. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/src/airflow/providers/common/sql/__init__.py +1 -1
  9. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/src/airflow/providers/common/sql/config.py +3 -0
  10. apache_airflow_providers_common_sql-2.3.0/src/airflow/providers/common/sql/datafusion/engine.py +404 -0
  11. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/src/airflow/providers/common/sql/datafusion/object_storage_provider.py +34 -2
  12. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/src/airflow/providers/common/sql/example_dags/example_analytics.py +13 -0
  13. apache_airflow_providers_common_sql-2.3.0/tests/unit/common/sql/datafusion/test_engine.py +892 -0
  14. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/tests/unit/common/sql/datafusion/test_object_storage_provider.py +48 -0
  15. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/tests/unit/common/sql/test_config.py +1 -0
  16. apache_airflow_providers_common_sql-2.2.0rc1/src/airflow/providers/common/sql/datafusion/engine.py +0 -219
  17. apache_airflow_providers_common_sql-2.2.0rc1/tests/unit/common/sql/datafusion/test_engine.py +0 -445
  18. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/.gitignore +0 -0
  19. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/LICENSE +0 -0
  20. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/NOTICE +0 -0
  21. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/docs/.latest-doc-only-change.txt +0 -0
  22. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/docs/commits.rst +0 -0
  23. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/docs/conf.py +0 -0
  24. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/docs/connections.rst +0 -0
  25. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/docs/dataframes.rst +0 -0
  26. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/docs/dialects.rst +0 -0
  27. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/docs/installing-providers-from-sources.rst +0 -0
  28. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/docs/integration-logos/sql.png +0 -0
  29. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/docs/security.rst +0 -0
  30. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/docs/supported-database-types.rst +0 -0
  31. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/src/airflow/__init__.py +0 -0
  32. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/src/airflow/providers/__init__.py +0 -0
  33. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/src/airflow/providers/common/__init__.py +0 -0
  34. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/src/airflow/providers/common/sql/README_API.md +0 -0
  35. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/src/airflow/providers/common/sql/datafusion/__init__.py +0 -0
  36. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/src/airflow/providers/common/sql/datafusion/base.py +0 -0
  37. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/src/airflow/providers/common/sql/datafusion/exceptions.py +0 -0
  38. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/src/airflow/providers/common/sql/datafusion/format_handlers.py +0 -0
  39. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/src/airflow/providers/common/sql/decorators/__init__.py +0 -0
  40. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/src/airflow/providers/common/sql/decorators/analytics.py +0 -0
  41. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/src/airflow/providers/common/sql/decorators/sql.py +0 -0
  42. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/src/airflow/providers/common/sql/dialects/__init__.py +0 -0
  43. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/src/airflow/providers/common/sql/dialects/dialect.py +0 -0
  44. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/src/airflow/providers/common/sql/dialects/dialect.pyi +0 -0
  45. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/src/airflow/providers/common/sql/doc/adr/0001-record-architecture-decisions.md +0 -0
  46. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/src/airflow/providers/common/sql/doc/adr/0002-return-common-data-structure-from-dbapihook-derived-hooks.md +0 -0
  47. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/src/airflow/providers/common/sql/doc/adr/0003-introduce-notion-of-dialects-in-dbapihook.md +0 -0
  48. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/src/airflow/providers/common/sql/example_dags/__init__.py +0 -0
  49. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/src/airflow/providers/common/sql/get_provider_info.py +0 -0
  50. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/src/airflow/providers/common/sql/get_provider_info.pyi +0 -0
  51. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/src/airflow/providers/common/sql/hooks/__init__.py +0 -0
  52. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/src/airflow/providers/common/sql/hooks/handlers.py +0 -0
  53. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/src/airflow/providers/common/sql/hooks/handlers.pyi +0 -0
  54. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/src/airflow/providers/common/sql/hooks/lineage.py +0 -0
  55. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/src/airflow/providers/common/sql/hooks/lineage.pyi +0 -0
  56. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/src/airflow/providers/common/sql/hooks/sql.py +0 -0
  57. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/src/airflow/providers/common/sql/hooks/sql.pyi +0 -0
  58. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/src/airflow/providers/common/sql/operators/__init__.py +0 -0
  59. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/src/airflow/providers/common/sql/operators/analytics.py +0 -0
  60. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/src/airflow/providers/common/sql/operators/generic_transfer.py +0 -0
  61. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/src/airflow/providers/common/sql/operators/generic_transfer.pyi +0 -0
  62. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/src/airflow/providers/common/sql/operators/sql.py +0 -0
  63. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/src/airflow/providers/common/sql/sensors/__init__.py +0 -0
  64. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/src/airflow/providers/common/sql/sensors/sql.py +0 -0
  65. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/src/airflow/providers/common/sql/sensors/sql.pyi +0 -0
  66. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/src/airflow/providers/common/sql/triggers/__init__.py +0 -0
  67. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/src/airflow/providers/common/sql/triggers/sql.py +0 -0
  68. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/src/airflow/providers/common/sql/triggers/sql.pyi +0 -0
  69. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/src/airflow/providers/common/sql/version_compat.py +0 -0
  70. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/tests/conftest.py +0 -0
  71. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/tests/system/__init__.py +0 -0
  72. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/tests/system/common/__init__.py +0 -0
  73. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/tests/system/common/sql/__init__.py +0 -0
  74. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/tests/system/common/sql/example_generic_transfer.py +0 -0
  75. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/tests/system/common/sql/example_sql_bulk_load.py +0 -0
  76. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/tests/system/common/sql/example_sql_column_table_check.py +0 -0
  77. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/tests/system/common/sql/example_sql_execute_query.py +0 -0
  78. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/tests/system/common/sql/example_sql_insert_rows.py +0 -0
  79. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/tests/system/common/sql/example_sql_threshold_check.py +0 -0
  80. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/tests/system/common/sql/example_sql_value_check.py +0 -0
  81. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/tests/unit/__init__.py +0 -0
  82. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/tests/unit/common/__init__.py +0 -0
  83. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/tests/unit/common/sql/__init__.py +0 -0
  84. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/tests/unit/common/sql/datafusion/__init__.py +0 -0
  85. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/tests/unit/common/sql/datafusion/test_base.py +0 -0
  86. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/tests/unit/common/sql/datafusion/test_exceptions.py +0 -0
  87. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/tests/unit/common/sql/datafusion/test_format_handlers.py +0 -0
  88. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/tests/unit/common/sql/decorators/__init__.py +0 -0
  89. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/tests/unit/common/sql/decorators/test_analytics.py +0 -0
  90. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/tests/unit/common/sql/decorators/test_sql.py +0 -0
  91. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/tests/unit/common/sql/dialects/__init__.py +0 -0
  92. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/tests/unit/common/sql/dialects/test_dialect.py +0 -0
  93. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/tests/unit/common/sql/hooks/__init__.py +0 -0
  94. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/tests/unit/common/sql/hooks/test_dbapi.py +0 -0
  95. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/tests/unit/common/sql/hooks/test_handlers.py +0 -0
  96. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/tests/unit/common/sql/hooks/test_lineage.py +0 -0
  97. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/tests/unit/common/sql/hooks/test_sql.py +0 -0
  98. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/tests/unit/common/sql/hooks/test_sqlparse.py +0 -0
  99. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/tests/unit/common/sql/operators/__init__.py +0 -0
  100. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/tests/unit/common/sql/operators/test_analytics.py +0 -0
  101. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/tests/unit/common/sql/operators/test_generic_transfer.py +0 -0
  102. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/tests/unit/common/sql/operators/test_sql.py +0 -0
  103. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/tests/unit/common/sql/operators/test_sql_execute.py +0 -0
  104. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/tests/unit/common/sql/sensors/__init__.py +0 -0
  105. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/tests/unit/common/sql/sensors/test_sql.py +0 -0
  106. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/tests/unit/common/sql/triggers/__init__.py +0 -0
  107. {apache_airflow_providers_common_sql-2.2.0rc1 → apache_airflow_providers_common_sql-2.3.0}/tests/unit/common/sql/triggers/test_sql.py +0 -0
@@ -1,11 +1,11 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: apache-airflow-providers-common-sql
3
- Version: 2.2.0rc1
3
+ Version: 2.3.0
4
4
  Summary: Provider package apache-airflow-providers-common-sql for Apache Airflow
5
5
  Keywords: airflow-provider,common.sql,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.10
8
+ Requires-Python: >=3.11
9
9
  Description-Content-Type: text/x-rst
10
10
  License-Expression: Apache-2.0
11
11
  Classifier: Development Status :: 5 - Production/Stable
@@ -15,7 +15,6 @@ Classifier: Intended Audience :: Developers
15
15
  Classifier: Intended Audience :: System Administrators
16
16
  Classifier: Framework :: Apache Airflow
17
17
  Classifier: Framework :: Apache Airflow :: Provider
18
- Classifier: Programming Language :: Python :: 3.10
19
18
  Classifier: Programming Language :: Python :: 3.11
20
19
  Classifier: Programming Language :: Python :: 3.12
21
20
  Classifier: Programming Language :: Python :: 3.13
@@ -23,8 +22,8 @@ Classifier: Programming Language :: Python :: 3.14
23
22
  Classifier: Topic :: System :: Monitoring
24
23
  License-File: LICENSE
25
24
  License-File: NOTICE
26
- Requires-Dist: apache-airflow>=2.11.0rc1
27
- Requires-Dist: apache-airflow-providers-common-compat>=1.14.1rc1
25
+ Requires-Dist: apache-airflow>=2.11.0
26
+ Requires-Dist: apache-airflow-providers-common-compat>=1.14.1
28
27
  Requires-Dist: sqlparse>=0.5.1
29
28
  Requires-Dist: more-itertools>=9.0.0
30
29
  Requires-Dist: methodtools>=0.4.7
@@ -37,10 +36,10 @@ Requires-Dist: pandas>=2.2.3 ; extra == "pandas" and ( python_version >="3.13" a
37
36
  Requires-Dist: pandas>=2.3.3 ; extra == "pandas" and ( python_version >="3.14")
38
37
  Requires-Dist: polars>=1.26.0 ; extra == "polars"
39
38
  Requires-Dist: pyiceberg-core>=0.8.0 ; extra == "pyiceberg-core"
40
- Requires-Dist: sqlalchemy>=1.4.54 ; extra == "sqlalchemy"
39
+ Requires-Dist: sqlalchemy>=1.4.54,!=2.1.0 ; extra == "sqlalchemy"
41
40
  Project-URL: Bug Tracker, https://github.com/apache/airflow/issues
42
- Project-URL: Changelog, https://airflow.staged.apache.org/docs/apache-airflow-providers-common-sql/2.2.0/changelog.html
43
- Project-URL: Documentation, https://airflow.staged.apache.org/docs/apache-airflow-providers-common-sql/2.2.0
41
+ Project-URL: Changelog, https://airflow.apache.org/docs/apache-airflow-providers-common-sql/2.3.0/changelog.html
42
+ Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-common-sql/2.3.0
44
43
  Project-URL: Mastodon, https://fosstodon.org/@airflow
45
44
  Project-URL: Slack Chat, https://s.apache.org/airflow-slack
46
45
  Project-URL: Source Code, https://github.com/apache/airflow
@@ -83,7 +82,7 @@ Import-Namespace: airflow.providers.common
83
82
 
84
83
  Package ``apache-airflow-providers-common-sql``
85
84
 
86
- Release: ``2.2.0``
85
+ Release: ``2.3.0``
87
86
 
88
87
 
89
88
  `Common SQL Provider <https://en.wikipedia.org/wiki/SQL>`__
@@ -96,7 +95,7 @@ This is a provider package for ``common.sql`` provider. All classes for this pro
96
95
  are in ``airflow.providers.common.sql`` python package.
97
96
 
98
97
  You can find package information and changelog for the provider
99
- in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-common-sql/2.2.0/>`_.
98
+ in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-common-sql/2.3.0/>`_.
100
99
 
101
100
  Installation
102
101
  ------------
@@ -105,7 +104,7 @@ You can install this package on top of an existing Airflow installation (see ``R
105
104
  for the minimum Airflow version supported) via
106
105
  ``pip install apache-airflow-providers-common-sql``
107
106
 
108
- The package supports the following python versions: 3.10,3.11,3.12,3.13,3.14
107
+ The package supports the following python versions: 3.11,3.12,3.13,3.14
109
108
 
110
109
  Requirements
111
110
  ------------
@@ -150,7 +149,7 @@ Extra Dependencies
150
149
  ``pandas`` ``pandas[sql-other]>=2.1.2; python_version <"3.13"``, ``pandas>=2.2.3; python_version >="3.13" and python_version <"3.14"``, ``pandas>=2.3.3; python_version >="3.14"``
151
150
  ``openlineage`` ``apache-airflow-providers-openlineage``
152
151
  ``polars`` ``polars>=1.26.0``
153
- ``sqlalchemy`` ``sqlalchemy>=1.4.54``
152
+ ``sqlalchemy`` ``sqlalchemy>=1.4.54,!=2.1.0``
154
153
  ``amazon`` ``apache-airflow-providers-amazon``
155
154
  ``datafusion`` ``datafusion>=50.0.0,<52.0.0``
156
155
  ``pyiceberg-core`` ``pyiceberg-core>=0.8.0``
@@ -158,5 +157,5 @@ Extra Dependencies
158
157
  ================== =======================================================================================================================================================================
159
158
 
160
159
  The changelog for the provider package can be found in the
161
- `changelog <https://airflow.apache.org/docs/apache-airflow-providers-common-sql/2.2.0/changelog.html>`_.
160
+ `changelog <https://airflow.apache.org/docs/apache-airflow-providers-common-sql/2.3.0/changelog.html>`_.
162
161
 
@@ -23,7 +23,7 @@
23
23
 
24
24
  Package ``apache-airflow-providers-common-sql``
25
25
 
26
- Release: ``2.2.0``
26
+ Release: ``2.3.0``
27
27
 
28
28
 
29
29
  `Common SQL Provider <https://en.wikipedia.org/wiki/SQL>`__
@@ -36,7 +36,7 @@ This is a provider package for ``common.sql`` provider. All classes for this pro
36
36
  are in ``airflow.providers.common.sql`` 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-common-sql/2.2.0/>`_.
39
+ in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-common-sql/2.3.0/>`_.
40
40
 
41
41
  Installation
42
42
  ------------
@@ -45,7 +45,7 @@ You can install this package on top of an existing Airflow installation (see ``R
45
45
  for the minimum Airflow version supported) via
46
46
  ``pip install apache-airflow-providers-common-sql``
47
47
 
48
- The package supports the following python versions: 3.10,3.11,3.12,3.13,3.14
48
+ The package supports the following python versions: 3.11,3.12,3.13,3.14
49
49
 
50
50
  Requirements
51
51
  ------------
@@ -90,7 +90,7 @@ Extra Dependencies
90
90
  ``pandas`` ``pandas[sql-other]>=2.1.2; python_version <"3.13"``, ``pandas>=2.2.3; python_version >="3.13" and python_version <"3.14"``, ``pandas>=2.3.3; python_version >="3.14"``
91
91
  ``openlineage`` ``apache-airflow-providers-openlineage``
92
92
  ``polars`` ``polars>=1.26.0``
93
- ``sqlalchemy`` ``sqlalchemy>=1.4.54``
93
+ ``sqlalchemy`` ``sqlalchemy>=1.4.54,!=2.1.0``
94
94
  ``amazon`` ``apache-airflow-providers-amazon``
95
95
  ``datafusion`` ``datafusion>=50.0.0,<52.0.0``
96
96
  ``pyiceberg-core`` ``pyiceberg-core>=0.8.0``
@@ -98,4 +98,4 @@ Extra Dependencies
98
98
  ================== =======================================================================================================================================================================
99
99
 
100
100
  The changelog for the provider package can be found in the
101
- `changelog <https://airflow.apache.org/docs/apache-airflow-providers-common-sql/2.2.0/changelog.html>`_.
101
+ `changelog <https://airflow.apache.org/docs/apache-airflow-providers-common-sql/2.3.0/changelog.html>`_.
@@ -25,6 +25,33 @@
25
25
  Changelog
26
26
  ---------
27
27
 
28
+ 2.3.0
29
+ .....
30
+
31
+ Features
32
+ ~~~~~~~~
33
+
34
+ * ``Add Azure Blob Storage support to the DataFusion object storage layer (#73374)``
35
+
36
+ Bug Fixes
37
+ ~~~~~~~~~
38
+
39
+ * ``Exclude SQLAlchemy 2.1.0 (#73865)``
40
+
41
+ Misc
42
+ ~~~~
43
+
44
+ * ``Drop support for Python 3.10 (#74157)``
45
+
46
+ Doc-only
47
+ ~~~~~~~~
48
+
49
+ * ``Update provider READMEs for the Python 3.11 baseline (#74158)``
50
+
51
+ .. Below changes are excluded from the changelog. Move them to
52
+ appropriate section above if needed. Do not delete the lines(!):
53
+ * ``[main] Upgrade important CI environment (#73629)``
54
+
28
55
  2.2.0
29
56
  .....
30
57
 
@@ -79,7 +79,7 @@ apache-airflow-providers-common-sql package
79
79
  `Common SQL Provider <https://en.wikipedia.org/wiki/SQL>`__
80
80
 
81
81
 
82
- Release: 2.2.0
82
+ Release: 2.3.0
83
83
 
84
84
  Provider package
85
85
  ----------------
@@ -147,7 +147,7 @@ Extra Dependencies
147
147
  ``pandas`` ``pandas[sql-other]>=2.1.2; python_version <"3.13"``, ``pandas>=2.2.3; python_version >="3.13" and python_version <"3.14"``, ``pandas>=2.3.3; python_version >="3.14"``
148
148
  ``openlineage`` ``apache-airflow-providers-openlineage``
149
149
  ``polars`` ``polars>=1.26.0``
150
- ``sqlalchemy`` ``sqlalchemy>=1.4.54``
150
+ ``sqlalchemy`` ``sqlalchemy>=1.4.54,!=2.1.0``
151
151
  ``amazon`` ``apache-airflow-providers-amazon``
152
152
  ``datafusion`` ``datafusion>=50.0.0,<52.0.0``
153
153
  ``pyiceberg-core`` ``pyiceberg-core>=0.8.0``
@@ -160,5 +160,5 @@ Downloading official packages
160
160
  You can download officially released packages and verify their checksums and signatures from the
161
161
  `Official Apache Download site <https://downloads.apache.org/airflow/providers/>`_
162
162
 
163
- * `The apache-airflow-providers-common-sql 2.2.0 sdist package <https://downloads.apache.org/airflow/providers/apache_airflow_providers_common_sql-2.2.0.tar.gz>`_ (`asc <https://downloads.apache.org/airflow/providers/apache_airflow_providers_common_sql-2.2.0.tar.gz.asc>`__, `sha512 <https://downloads.apache.org/airflow/providers/apache_airflow_providers_common_sql-2.2.0.tar.gz.sha512>`__)
164
- * `The apache-airflow-providers-common-sql 2.2.0 wheel package <https://downloads.apache.org/airflow/providers/apache_airflow_providers_common_sql-2.2.0-py3-none-any.whl>`_ (`asc <https://downloads.apache.org/airflow/providers/apache_airflow_providers_common_sql-2.2.0-py3-none-any.whl.asc>`__, `sha512 <https://downloads.apache.org/airflow/providers/apache_airflow_providers_common_sql-2.2.0-py3-none-any.whl.sha512>`__)
163
+ * `The apache-airflow-providers-common-sql 2.3.0 sdist package <https://downloads.apache.org/airflow/providers/apache_airflow_providers_common_sql-2.3.0.tar.gz>`_ (`asc <https://downloads.apache.org/airflow/providers/apache_airflow_providers_common_sql-2.3.0.tar.gz.asc>`__, `sha512 <https://downloads.apache.org/airflow/providers/apache_airflow_providers_common_sql-2.3.0.tar.gz.sha512>`__)
164
+ * `The apache-airflow-providers-common-sql 2.3.0 wheel package <https://downloads.apache.org/airflow/providers/apache_airflow_providers_common_sql-2.3.0-py3-none-any.whl>`_ (`asc <https://downloads.apache.org/airflow/providers/apache_airflow_providers_common_sql-2.3.0-py3-none-any.whl.asc>`__, `sha512 <https://downloads.apache.org/airflow/providers/apache_airflow_providers_common_sql-2.3.0-py3-none-any.whl.sha512>`__)
@@ -297,10 +297,11 @@ Supported Storage Systems
297
297
  -------------------------
298
298
  - S3
299
299
  - GCS
300
+ - Azure Blob Storage
300
301
  - Local File System
301
302
 
302
303
  .. note::
303
- Azure, HTTP, Delta are not yet supported but will be added in the future.
304
+ HTTP, Delta are not yet supported but will be added in the future.
304
305
 
305
306
 
306
307
 
@@ -362,6 +363,63 @@ resolved in this order:
362
363
  :start-after: [START howto_analytics_operator_with_gcs]
363
364
  :end-before: [END howto_analytics_operator_with_gcs]
364
365
 
366
+ Azure Storage
367
+ -------------
368
+ Use an ``az://`` URI with a ``conn_id`` pointing to a ``wasb`` connection.
369
+ ``abfs://`` and ``abfss://`` URIs are not recognized yet. The account name
370
+ comes from ``host`` (its first DNS label) when set, falling back to
371
+ ``login`` only when ``host`` is empty; only the public
372
+ ``*.blob.core.windows.net`` cloud is supported, since DataFusion's binding
373
+ otherwise has no endpoint override -- unless the worker sets
374
+ ``AZURE_STORAGE_ENDPOINT``/``AZURE_ENDPOINT`` for a real sovereign-cloud
375
+ hostname. A ``host:port`` address (the Azurite emulator's shape, e.g.
376
+ ``azurite:10000``) is never a real DNS hostname and always raises instead,
377
+ even with those variables set: put the account name in ``login`` with
378
+ ``host`` left empty for Azurite, alongside those same variables and
379
+ ``AZURE_ALLOW_HTTP=true``. ``client_secret_auth_config`` (the authority
380
+ override ``WasbHook`` honors) is not read here.
381
+
382
+ The connection supplies one of the following credentials, checked in this
383
+ order (matching ``WasbHook.get_conn``):
384
+
385
+ 1. Azure AD service principal -- ``tenant_id`` extra, with ``login`` as the
386
+ client ID and ``password`` as the client secret (both required together)
387
+ 2. Shared key -- the ``shared_access_key`` extra
388
+ 3. SAS token -- ``sas_token`` extra, as a query string
389
+ 4. Shared key -- ``password``, or the ``account_key`` extra
390
+ 5. None of the above -- ambient auth (see below)
391
+
392
+ **A worker environment variable can override the connection, but only from a
393
+ higher-priority tier.** DataFusion reads ``AZURE_*`` environment variables
394
+ first, and resolves credentials in this priority order:
395
+
396
+ 1. Bearer token
397
+ 2. Access key -- the shared-key connection's tier
398
+ 3. Workload identity
399
+ 4. Client secret -- the service-principal connection's tier
400
+ 5. SAS -- the SAS connection's tier
401
+
402
+ Only a complete credential from an earlier tier can override the
403
+ connection -- a single bearer or access-key variable, or every variable a
404
+ multi-field tier needs. This raises when found, naming the variables,
405
+ instead of silently using the wrong identity.
406
+
407
+ With no explicit credential, authentication falls back to ``AZURE_*``
408
+ environment variables, managed identity, or workload identity. Unlike
409
+ ``WasbHook`` (which tries ``az login`` automatically), DataFusion's
410
+ underlying ``object_store`` binding only tries the Azure CLI if
411
+ ``AZURE_USE_AZURE_CLI=true`` is set; otherwise it defaults straight to
412
+ IMDS managed identity.
413
+
414
+ ``connection_string``, ``managed_identity_client_id``, ``workload_identity_tenant_id``,
415
+ and a URL-form ``sas_token`` are not supported.
416
+
417
+ .. exampleinclude:: /../../sql/src/airflow/providers/common/sql/example_dags/example_analytics.py
418
+ :language: python
419
+ :dedent: 4
420
+ :start-after: [START howto_analytics_operator_with_azure]
421
+ :end-before: [END howto_analytics_operator_with_azure]
422
+
365
423
  Local File System Storage
366
424
  -------------------------
367
425
  .. exampleinclude:: /../../sql/src/airflow/providers/common/sql/example_dags/example_analytics.py
@@ -23,12 +23,13 @@ description: |
23
23
 
24
24
  state: ready
25
25
  lifecycle: production
26
- source-date-epoch: 1790023613
26
+ source-date-epoch: 1791328846
27
27
  # Note that those versions are maintained by release manager - do not update them manually
28
28
  # with the exception of case where other provider in sources has >= new provider version.
29
29
  # In such case adding >= NEW_VERSION and bumping to NEW_VERSION in a provider have
30
30
  # to be done in the same PR
31
31
  versions:
32
+ - 2.3.0
32
33
  - 2.2.0
33
34
  - 2.1.1
34
35
  - 2.1.0
@@ -20,12 +20,12 @@
20
20
  # IF YOU WANT TO MODIFY THIS FILE EXCEPT DEPENDENCIES, YOU SHOULD MODIFY THE TEMPLATE
21
21
  # `pyproject_TEMPLATE.toml.jinja2` IN the `dev/breeze/src/airflow_breeze/templates` DIRECTORY
22
22
  [build-system]
23
- requires = ["flit_core==4.0.2"]
23
+ requires = ["flit_core==4.1.0"]
24
24
  build-backend = "flit_core.buildapi"
25
25
 
26
26
  [project]
27
27
  name = "apache-airflow-providers-common-sql"
28
- version = "2.2.0rc1"
28
+ version = "2.3.0"
29
29
  description = "Provider package apache-airflow-providers-common-sql for Apache Airflow"
30
30
  readme = "README.rst"
31
31
  license = "Apache-2.0"
@@ -45,22 +45,21 @@ classifiers = [
45
45
  "Intended Audience :: System Administrators",
46
46
  "Framework :: Apache Airflow",
47
47
  "Framework :: Apache Airflow :: Provider",
48
- "Programming Language :: Python :: 3.10",
49
48
  "Programming Language :: Python :: 3.11",
50
49
  "Programming Language :: Python :: 3.12",
51
50
  "Programming Language :: Python :: 3.13",
52
51
  "Programming Language :: Python :: 3.14",
53
52
  "Topic :: System :: Monitoring",
54
53
  ]
55
- requires-python = ">=3.10"
54
+ requires-python = ">=3.11"
56
55
 
57
56
  # The dependencies should be modified in place in the generated file.
58
57
  # Any change in the dependencies is preserved when the file is regenerated
59
58
  # Make sure to run ``prek update-providers-dependencies --all-files``
60
59
  # After you modify the dependencies, and rebuild your Breeze CI image with ``breeze ci-image build``
61
60
  dependencies = [
62
- "apache-airflow>=2.11.0rc1",
63
- "apache-airflow-providers-common-compat>=1.14.1rc1",
61
+ "apache-airflow>=2.11.0",
62
+ "apache-airflow-providers-common-compat>=1.14.1",
64
63
  "sqlparse>=0.5.1",
65
64
  "more-itertools>=9.0.0",
66
65
  # The methodtools dependency is necessary since the introduction of dialects:
@@ -85,7 +84,7 @@ dependencies = [
85
84
  "polars>=1.26.0"
86
85
  ]
87
86
  "sqlalchemy" = [
88
- "sqlalchemy>=1.4.54",
87
+ "sqlalchemy>=1.4.54,!=2.1.0",
89
88
  ]
90
89
  "amazon" = [
91
90
  "apache-airflow-providers-amazon"
@@ -148,8 +147,8 @@ apache-airflow-providers-common-sql = {workspace = true}
148
147
  apache-airflow-providers-standard = {workspace = true}
149
148
 
150
149
  [project.urls]
151
- "Documentation" = "https://airflow.staged.apache.org/docs/apache-airflow-providers-common-sql/2.2.0"
152
- "Changelog" = "https://airflow.staged.apache.org/docs/apache-airflow-providers-common-sql/2.2.0/changelog.html"
150
+ "Documentation" = "https://airflow.apache.org/docs/apache-airflow-providers-common-sql/2.3.0"
151
+ "Changelog" = "https://airflow.apache.org/docs/apache-airflow-providers-common-sql/2.3.0/changelog.html"
153
152
  "Bug Tracker" = "https://github.com/apache/airflow/issues"
154
153
  "Source Code" = "https://github.com/apache/airflow"
155
154
  "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__ = "2.2.0"
32
+ __version__ = "2.3.0"
33
33
 
34
34
  if packaging.version.parse(packaging.version.parse(airflow_version).base_version) < packaging.version.parse(
35
35
  "2.11.0"
@@ -48,6 +48,7 @@ class StorageType(str, Enum):
48
48
 
49
49
  S3 = "s3"
50
50
  GCS = "gcs"
51
+ AZURE = "azure"
51
52
  LOCAL = "local"
52
53
 
53
54
 
@@ -117,6 +118,8 @@ class DataSourceConfig:
117
118
  return StorageType.S3
118
119
  if self.uri.startswith("gs://"):
119
120
  return StorageType.GCS
121
+ if self.uri.startswith("az://"):
122
+ return StorageType.AZURE
120
123
  if self.uri.startswith("file://"):
121
124
  return StorageType.LOCAL
122
125
  raise ValueError(f"Unsupported storage type for URI: {self.uri}")