apache-airflow-providers-postgres 6.4.0__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.
Files changed (41) hide show
  1. apache_airflow_providers_postgres-6.5.2rc1/NOTICE +5 -0
  2. {apache_airflow_providers_postgres-6.4.0 → apache_airflow_providers_postgres-6.5.2rc1}/PKG-INFO +20 -15
  3. {apache_airflow_providers_postgres-6.4.0 → apache_airflow_providers_postgres-6.5.2rc1}/README.rst +7 -6
  4. {apache_airflow_providers_postgres-6.4.0 → apache_airflow_providers_postgres-6.5.2rc1}/docs/changelog.rst +60 -5
  5. {apache_airflow_providers_postgres-6.4.0 → apache_airflow_providers_postgres-6.5.2rc1}/docs/index.rst +6 -6
  6. {apache_airflow_providers_postgres-6.4.0 → apache_airflow_providers_postgres-6.5.2rc1}/provider.yaml +5 -1
  7. {apache_airflow_providers_postgres-6.4.0 → apache_airflow_providers_postgres-6.5.2rc1}/pyproject.toml +13 -9
  8. {apache_airflow_providers_postgres-6.4.0 → apache_airflow_providers_postgres-6.5.2rc1}/src/airflow/providers/postgres/__init__.py +3 -3
  9. {apache_airflow_providers_postgres-6.4.0 → apache_airflow_providers_postgres-6.5.2rc1}/src/airflow/providers/postgres/dialects/postgres.py +2 -2
  10. {apache_airflow_providers_postgres-6.4.0 → apache_airflow_providers_postgres-6.5.2rc1}/src/airflow/providers/postgres/hooks/postgres.py +21 -17
  11. {apache_airflow_providers_postgres-6.4.0 → apache_airflow_providers_postgres-6.5.2rc1}/tests/unit/postgres/assets/test_postgres.py +1 -1
  12. {apache_airflow_providers_postgres-6.4.0 → apache_airflow_providers_postgres-6.5.2rc1}/tests/unit/postgres/hooks/test_postgres.py +13 -14
  13. {apache_airflow_providers_postgres-6.4.0/src/airflow/providers/postgres → apache_airflow_providers_postgres-6.5.2rc1}/LICENSE +0 -0
  14. {apache_airflow_providers_postgres-6.4.0 → apache_airflow_providers_postgres-6.5.2rc1}/docs/.latest-doc-only-change.txt +0 -0
  15. {apache_airflow_providers_postgres-6.4.0 → apache_airflow_providers_postgres-6.5.2rc1}/docs/commits.rst +0 -0
  16. {apache_airflow_providers_postgres-6.4.0 → apache_airflow_providers_postgres-6.5.2rc1}/docs/conf.py +0 -0
  17. {apache_airflow_providers_postgres-6.4.0 → apache_airflow_providers_postgres-6.5.2rc1}/docs/configurations-ref.rst +0 -0
  18. {apache_airflow_providers_postgres-6.4.0 → apache_airflow_providers_postgres-6.5.2rc1}/docs/connections/postgres.rst +0 -0
  19. {apache_airflow_providers_postgres-6.4.0 → apache_airflow_providers_postgres-6.5.2rc1}/docs/dialects.rst +0 -0
  20. {apache_airflow_providers_postgres-6.4.0 → apache_airflow_providers_postgres-6.5.2rc1}/docs/installing-providers-from-sources.rst +0 -0
  21. {apache_airflow_providers_postgres-6.4.0 → apache_airflow_providers_postgres-6.5.2rc1}/docs/integration-logos/Postgres.png +0 -0
  22. {apache_airflow_providers_postgres-6.4.0 → apache_airflow_providers_postgres-6.5.2rc1}/docs/operators.rst +0 -0
  23. {apache_airflow_providers_postgres-6.4.0 → apache_airflow_providers_postgres-6.5.2rc1}/docs/redirects.txt +0 -0
  24. {apache_airflow_providers_postgres-6.4.0 → apache_airflow_providers_postgres-6.5.2rc1}/docs/security.rst +0 -0
  25. {apache_airflow_providers_postgres-6.4.0 → apache_airflow_providers_postgres-6.5.2rc1}/src/airflow/__init__.py +0 -0
  26. {apache_airflow_providers_postgres-6.4.0 → apache_airflow_providers_postgres-6.5.2rc1}/src/airflow/providers/__init__.py +0 -0
  27. {apache_airflow_providers_postgres-6.4.0 → apache_airflow_providers_postgres-6.5.2rc1}/src/airflow/providers/postgres/assets/__init__.py +0 -0
  28. {apache_airflow_providers_postgres-6.4.0 → apache_airflow_providers_postgres-6.5.2rc1}/src/airflow/providers/postgres/assets/postgres.py +0 -0
  29. {apache_airflow_providers_postgres-6.4.0 → apache_airflow_providers_postgres-6.5.2rc1}/src/airflow/providers/postgres/dialects/__init__.py +0 -0
  30. {apache_airflow_providers_postgres-6.4.0 → apache_airflow_providers_postgres-6.5.2rc1}/src/airflow/providers/postgres/get_provider_info.py +0 -0
  31. {apache_airflow_providers_postgres-6.4.0 → apache_airflow_providers_postgres-6.5.2rc1}/src/airflow/providers/postgres/hooks/__init__.py +0 -0
  32. {apache_airflow_providers_postgres-6.4.0 → apache_airflow_providers_postgres-6.5.2rc1}/tests/conftest.py +0 -0
  33. {apache_airflow_providers_postgres-6.4.0 → apache_airflow_providers_postgres-6.5.2rc1}/tests/system/__init__.py +0 -0
  34. {apache_airflow_providers_postgres-6.4.0 → apache_airflow_providers_postgres-6.5.2rc1}/tests/system/postgres/__init__.py +0 -0
  35. {apache_airflow_providers_postgres-6.4.0 → apache_airflow_providers_postgres-6.5.2rc1}/tests/system/postgres/example_postgres.py +0 -0
  36. {apache_airflow_providers_postgres-6.4.0 → apache_airflow_providers_postgres-6.5.2rc1}/tests/unit/__init__.py +0 -0
  37. {apache_airflow_providers_postgres-6.4.0 → apache_airflow_providers_postgres-6.5.2rc1}/tests/unit/postgres/__init__.py +0 -0
  38. {apache_airflow_providers_postgres-6.4.0 → apache_airflow_providers_postgres-6.5.2rc1}/tests/unit/postgres/assets/__init__.py +0 -0
  39. {apache_airflow_providers_postgres-6.4.0 → apache_airflow_providers_postgres-6.5.2rc1}/tests/unit/postgres/dialects/__init__.py +0 -0
  40. {apache_airflow_providers_postgres-6.4.0 → apache_airflow_providers_postgres-6.5.2rc1}/tests/unit/postgres/dialects/test_postgres.py +0 -0
  41. {apache_airflow_providers_postgres-6.4.0 → apache_airflow_providers_postgres-6.5.2rc1}/tests/unit/postgres/hooks/__init__.py +0 -0
@@ -0,0 +1,5 @@
1
+ Apache Airflow
2
+ Copyright 2016-2026 The Apache Software Foundation
3
+
4
+ This product includes software developed at
5
+ The Apache Software Foundation (http://www.apache.org/).
@@ -1,12 +1,13 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: apache-airflow-providers-postgres
3
- Version: 6.4.0
3
+ Version: 6.5.2rc1
4
4
  Summary: Provider package apache-airflow-providers-postgres for Apache Airflow
5
5
  Keywords: airflow-provider,postgres,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
8
  Requires-Python: >=3.10
9
9
  Description-Content-Type: text/x-rst
10
+ License-Expression: Apache-2.0
10
11
  Classifier: Development Status :: 5 - Production/Stable
11
12
  Classifier: Environment :: Console
12
13
  Classifier: Environment :: Web Environment
@@ -14,28 +15,30 @@ Classifier: Intended Audience :: Developers
14
15
  Classifier: Intended Audience :: System Administrators
15
16
  Classifier: Framework :: Apache Airflow
16
17
  Classifier: Framework :: Apache Airflow :: Provider
17
- Classifier: License :: OSI Approved :: Apache Software License
18
18
  Classifier: Programming Language :: Python :: 3.10
19
19
  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.0
24
- Requires-Dist: apache-airflow-providers-common-compat>=1.8.0
25
- Requires-Dist: apache-airflow-providers-common-sql>=1.23.0
23
+ License-File: LICENSE
24
+ License-File: NOTICE
25
+ Requires-Dist: apache-airflow>=2.11.0rc1
26
+ Requires-Dist: apache-airflow-providers-common-compat>=1.12.0rc1
27
+ Requires-Dist: apache-airflow-providers-common-sql>=1.23.0rc1
26
28
  Requires-Dist: psycopg2-binary>=2.9.9; python_version < '3.13'
27
29
  Requires-Dist: psycopg2-binary>=2.9.10; python_version >= '3.13'
28
30
  Requires-Dist: asyncpg>=0.30.0
29
- Requires-Dist: apache-airflow-providers-amazon>=2.6.0 ; extra == "amazon"
30
- Requires-Dist: apache-airflow-providers-microsoft-azure ; extra == "microsoft-azure"
31
+ Requires-Dist: apache-airflow-providers-amazon>=2.6.0rc1 ; extra == "amazon"
32
+ Requires-Dist: apache-airflow-providers-microsoft-azure>=12.8.0rc1 ; extra == "microsoft-azure"
31
33
  Requires-Dist: apache-airflow-providers-openlineage ; extra == "openlineage"
32
34
  Requires-Dist: pandas>=2.1.2 ; extra == "pandas" and ( python_version <"3.13")
33
35
  Requires-Dist: pandas>=2.2.3 ; extra == "pandas" and ( python_version >="3.13")
34
36
  Requires-Dist: polars>=1.26.0 ; extra == "polars"
35
37
  Requires-Dist: psycopg[binary]>=3.2.9 ; extra == "psycopg"
38
+ Requires-Dist: sqlalchemy>=1.4.49 ; extra == "sqlalchemy"
36
39
  Project-URL: Bug Tracker, https://github.com/apache/airflow/issues
37
- Project-URL: Changelog, https://airflow.apache.org/docs/apache-airflow-providers-postgres/6.4.0/changelog.html
38
- Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-postgres/6.4.0
40
+ Project-URL: Changelog, https://airflow.staged.apache.org/docs/apache-airflow-providers-postgres/6.5.2/changelog.html
41
+ Project-URL: Documentation, https://airflow.staged.apache.org/docs/apache-airflow-providers-postgres/6.5.2
39
42
  Project-URL: Mastodon, https://fosstodon.org/@airflow
40
43
  Project-URL: Slack Chat, https://s.apache.org/airflow-slack
41
44
  Project-URL: Source Code, https://github.com/apache/airflow
@@ -46,6 +49,7 @@ Provides-Extra: openlineage
46
49
  Provides-Extra: pandas
47
50
  Provides-Extra: polars
48
51
  Provides-Extra: psycopg
52
+ Provides-Extra: sqlalchemy
49
53
 
50
54
 
51
55
  .. Licensed to the Apache Software Foundation (ASF) under one
@@ -72,7 +76,7 @@ Provides-Extra: psycopg
72
76
 
73
77
  Package ``apache-airflow-providers-postgres``
74
78
 
75
- Release: ``6.4.0``
79
+ Release: ``6.5.2``
76
80
 
77
81
 
78
82
  `PostgreSQL <https://www.postgresql.org/>`__
@@ -85,7 +89,7 @@ This is a provider package for ``postgres`` provider. All classes for this provi
85
89
  are in ``airflow.providers.postgres`` python package.
86
90
 
87
91
  You can find package information and changelog for the provider
88
- in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-postgres/6.4.0/>`_.
92
+ in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-postgres/6.5.2/>`_.
89
93
 
90
94
  Installation
91
95
  ------------
@@ -102,8 +106,8 @@ Requirements
102
106
  ========================================== ======================================
103
107
  PIP package Version required
104
108
  ========================================== ======================================
105
- ``apache-airflow`` ``>=2.10.0``
106
- ``apache-airflow-providers-common-compat`` ``>=1.8.0``
109
+ ``apache-airflow`` ``>=2.11.0``
110
+ ``apache-airflow-providers-common-compat`` ``>=1.10.1``
107
111
  ``apache-airflow-providers-common-sql`` ``>=1.23.0``
108
112
  ``psycopg2-binary`` ``>=2.9.9; python_version < "3.13"``
109
113
  ``psycopg2-binary`` ``>=2.9.10; python_version >= "3.13"``
@@ -139,8 +143,9 @@ Optional dependencies
139
143
  =================== =====================================================================================
140
144
  Extra Dependencies
141
145
  =================== =====================================================================================
146
+ ``sqlalchemy`` ``sqlalchemy>=1.4.49``
142
147
  ``amazon`` ``apache-airflow-providers-amazon>=2.6.0``
143
- ``microsoft.azure`` ``apache-airflow-providers-microsoft-azure``
148
+ ``microsoft.azure`` ``apache-airflow-providers-microsoft-azure>=12.8.0``
144
149
  ``openlineage`` ``apache-airflow-providers-openlineage``
145
150
  ``pandas`` ``pandas>=2.1.2; python_version <"3.13"``, ``pandas>=2.2.3; python_version >="3.13"``
146
151
  ``polars`` ``polars>=1.26.0``
@@ -148,5 +153,5 @@ Extra Dependencies
148
153
  =================== =====================================================================================
149
154
 
150
155
  The changelog for the provider package can be found in the
151
- `changelog <https://airflow.apache.org/docs/apache-airflow-providers-postgres/6.4.0/changelog.html>`_.
156
+ `changelog <https://airflow.apache.org/docs/apache-airflow-providers-postgres/6.5.2/changelog.html>`_.
152
157
 
@@ -23,7 +23,7 @@
23
23
 
24
24
  Package ``apache-airflow-providers-postgres``
25
25
 
26
- Release: ``6.4.0``
26
+ Release: ``6.5.2``
27
27
 
28
28
 
29
29
  `PostgreSQL <https://www.postgresql.org/>`__
@@ -36,7 +36,7 @@ This is a provider package for ``postgres`` provider. All classes for this provi
36
36
  are in ``airflow.providers.postgres`` 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-postgres/6.4.0/>`_.
39
+ in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-postgres/6.5.2/>`_.
40
40
 
41
41
  Installation
42
42
  ------------
@@ -53,8 +53,8 @@ Requirements
53
53
  ========================================== ======================================
54
54
  PIP package Version required
55
55
  ========================================== ======================================
56
- ``apache-airflow`` ``>=2.10.0``
57
- ``apache-airflow-providers-common-compat`` ``>=1.8.0``
56
+ ``apache-airflow`` ``>=2.11.0``
57
+ ``apache-airflow-providers-common-compat`` ``>=1.10.1``
58
58
  ``apache-airflow-providers-common-sql`` ``>=1.23.0``
59
59
  ``psycopg2-binary`` ``>=2.9.9; python_version < "3.13"``
60
60
  ``psycopg2-binary`` ``>=2.9.10; python_version >= "3.13"``
@@ -90,8 +90,9 @@ Optional dependencies
90
90
  =================== =====================================================================================
91
91
  Extra Dependencies
92
92
  =================== =====================================================================================
93
+ ``sqlalchemy`` ``sqlalchemy>=1.4.49``
93
94
  ``amazon`` ``apache-airflow-providers-amazon>=2.6.0``
94
- ``microsoft.azure`` ``apache-airflow-providers-microsoft-azure``
95
+ ``microsoft.azure`` ``apache-airflow-providers-microsoft-azure>=12.8.0``
95
96
  ``openlineage`` ``apache-airflow-providers-openlineage``
96
97
  ``pandas`` ``pandas>=2.1.2; python_version <"3.13"``, ``pandas>=2.2.3; python_version >="3.13"``
97
98
  ``polars`` ``polars>=1.26.0``
@@ -99,4 +100,4 @@ Extra Dependencies
99
100
  =================== =====================================================================================
100
101
 
101
102
  The changelog for the provider package can be found in the
102
- `changelog <https://airflow.apache.org/docs/apache-airflow-providers-postgres/6.4.0/changelog.html>`_.
103
+ `changelog <https://airflow.apache.org/docs/apache-airflow-providers-postgres/6.5.2/changelog.html>`_.
@@ -27,6 +27,64 @@
27
27
  Changelog
28
28
  ---------
29
29
 
30
+ 6.5.2
31
+ .....
32
+
33
+ Misc
34
+ ~~~~
35
+
36
+ * ``Consume ''AirflowOptionalProviderFeatureException'' from compat sdk in providers (#60335)``
37
+ * ``New year means updated Copyright notices (#60344)``
38
+ * ``Make SQLAlchemy optional for Postgres provider (#60257)``
39
+ * ``Migrate postgres provider to use airflow.sdk.configuration.conf (#59984)``
40
+
41
+ .. Below changes are excluded from the changelog. Move them to
42
+ appropriate section above if needed. Do not delete the lines(!):
43
+
44
+ 6.5.1
45
+ .....
46
+
47
+ Misc
48
+ ~~~~
49
+
50
+ * ``Add backcompat for exceptions in providers (#58727)``
51
+
52
+ .. Below changes are excluded from the changelog. Move them to
53
+ appropriate section above if needed. Do not delete the lines(!):
54
+
55
+ 6.5.0
56
+ .....
57
+
58
+ .. note::
59
+ This release of provider is only available for Airflow 2.11+ as explained in the
60
+ Apache Airflow providers support policy <https://github.com/apache/airflow/blob/main/PROVIDERS.rst#minimum-supported-version-of-airflow-for-community-managed-providers>_.
61
+
62
+ Misc
63
+ ~~~~
64
+
65
+ * ``Bump minimum Airflow version in providers to Airflow 2.11.0 (#58612)``
66
+
67
+ .. Below changes are excluded from the changelog. Move them to
68
+ appropriate section above if needed. Do not delete the lines(!):
69
+ * ``Updates to release process of providers (#58316)``
70
+ * ``Remove SDK reference for NOTSET in Airflow Core (#58258)``
71
+
72
+ 6.4.1
73
+ .....
74
+
75
+ Misc
76
+ ~~~~
77
+
78
+ * ``Convert all airflow distributions to be compliant with ASF requirements (#58138)``
79
+ * ``better error handling in SnowflakeHook and PostgresHook when old version of AzureBaseHook (#57184)``
80
+
81
+ .. Below changes are excluded from the changelog. Move them to
82
+ appropriate section above if needed. Do not delete the lines(!):
83
+ * ``Delete all unnecessary LICENSE Files (#58191)``
84
+ * ``Enable ruff PLW2101,PLW2901,PLW3301 rule (#57700)``
85
+ * ``Enable PT006 rule to postgres Provider test (#57934)``
86
+ * ``Fix code formatting via ruff preview (#57641)``
87
+
30
88
  6.4.0
31
89
  .....
32
90
 
@@ -79,8 +137,6 @@ Doc-only
79
137
  .. Below changes are excluded from the changelog. Move them to
80
138
  appropriate section above if needed. Do not delete the lines(!):
81
139
  * ``Switch pre-commit to prek (#54258)``
82
-
83
- .. Review and move the new changes to one of the sections above:
84
140
  * ``Fix Airflow 2 reference in README/index of providers (#55240)``
85
141
 
86
142
  6.2.3
@@ -256,8 +312,6 @@ Misc
256
312
  .. Below changes are excluded from the changelog. Move them to
257
313
  appropriate section above if needed. Do not delete the lines(!):
258
314
  * ``Use Python 3.9 as target version for Ruff & Black rules (#44298)``
259
-
260
- .. Review and move the new changes to one of the sections above:
261
315
  * ``Update path of example dags in docs (#45069)``
262
316
  * ``Allow configuration of sqlalchemy query parameter for JdbcHook and PostgresHook through extras (#44910)``
263
317
 
@@ -628,7 +682,8 @@ Misc
628
682
 
629
683
  * ``Add common-sql lower bound for common-sql (#25789)``
630
684
 
631
- .. Review and move the new changes to one of the sections above:
685
+ .. Below changes are excluded from the changelog. Move them to
686
+ appropriate section above if needed. Do not delete the lines(!):
632
687
  * ``Rename schema to database in 'PostgresHook' (#26436)``
633
688
  * ``Revert "Rename schema to database in 'PostgresHook' (#26436)" (#26734)``
634
689
  * ``Apply PEP-563 (Postponed Evaluation of Annotations) to non-core airflow (#26289)``
@@ -78,7 +78,7 @@ apache-airflow-providers-postgres package
78
78
  `PostgreSQL <https://www.postgresql.org/>`__
79
79
 
80
80
 
81
- Release: 6.4.0
81
+ Release: 6.5.2
82
82
 
83
83
  Provider package
84
84
  ----------------
@@ -96,13 +96,13 @@ For the minimum Airflow version supported, see ``Requirements`` below.
96
96
  Requirements
97
97
  ------------
98
98
 
99
- The minimum Apache Airflow version supported by this provider distribution is ``2.10.0``.
99
+ The minimum Apache Airflow version supported by this provider distribution is ``2.11.0``.
100
100
 
101
101
  ========================================== ======================================
102
102
  PIP package Version required
103
103
  ========================================== ======================================
104
- ``apache-airflow`` ``>=2.10.0``
105
- ``apache-airflow-providers-common-compat`` ``>=1.8.0``
104
+ ``apache-airflow`` ``>=2.11.0``
105
+ ``apache-airflow-providers-common-compat`` ``>=1.12.0``
106
106
  ``apache-airflow-providers-common-sql`` ``>=1.23.0``
107
107
  ``psycopg2-binary`` ``>=2.9.9; python_version < "3.13"``
108
108
  ``psycopg2-binary`` ``>=2.9.10; python_version >= "3.13"``
@@ -138,5 +138,5 @@ Downloading official packages
138
138
  You can download officially released packages and verify their checksums and signatures from the
139
139
  `Official Apache Download site <https://downloads.apache.org/airflow/providers/>`_
140
140
 
141
- * `The apache-airflow-providers-postgres 6.4.0 sdist package <https://downloads.apache.org/airflow/providers/apache_airflow_providers_postgres-6.4.0.tar.gz>`_ (`asc <https://downloads.apache.org/airflow/providers/apache_airflow_providers_postgres-6.4.0.tar.gz.asc>`__, `sha512 <https://downloads.apache.org/airflow/providers/apache_airflow_providers_postgres-6.4.0.tar.gz.sha512>`__)
142
- * `The apache-airflow-providers-postgres 6.4.0 wheel package <https://downloads.apache.org/airflow/providers/apache_airflow_providers_postgres-6.4.0-py3-none-any.whl>`_ (`asc <https://downloads.apache.org/airflow/providers/apache_airflow_providers_postgres-6.4.0-py3-none-any.whl.asc>`__, `sha512 <https://downloads.apache.org/airflow/providers/apache_airflow_providers_postgres-6.4.0-py3-none-any.whl.sha512>`__)
141
+ * `The apache-airflow-providers-postgres 6.5.2 sdist package <https://downloads.apache.org/airflow/providers/apache_airflow_providers_postgres-6.5.2.tar.gz>`_ (`asc <https://downloads.apache.org/airflow/providers/apache_airflow_providers_postgres-6.5.2.tar.gz.asc>`__, `sha512 <https://downloads.apache.org/airflow/providers/apache_airflow_providers_postgres-6.5.2.tar.gz.sha512>`__)
142
+ * `The apache-airflow-providers-postgres 6.5.2 wheel package <https://downloads.apache.org/airflow/providers/apache_airflow_providers_postgres-6.5.2-py3-none-any.whl>`_ (`asc <https://downloads.apache.org/airflow/providers/apache_airflow_providers_postgres-6.5.2-py3-none-any.whl.asc>`__, `sha512 <https://downloads.apache.org/airflow/providers/apache_airflow_providers_postgres-6.5.2-py3-none-any.whl.sha512>`__)
@@ -22,12 +22,16 @@ description: |
22
22
  `PostgreSQL <https://www.postgresql.org/>`__
23
23
 
24
24
  state: ready
25
- source-date-epoch: 1761117431
25
+ source-date-epoch: 1768335516
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
32
+ - 6.5.1
33
+ - 6.5.0
34
+ - 6.4.1
31
35
  - 6.4.0
32
36
  - 6.3.0
33
37
  - 6.2.3
@@ -25,9 +25,11 @@ build-backend = "flit_core.buildapi"
25
25
 
26
26
  [project]
27
27
  name = "apache-airflow-providers-postgres"
28
- version = "6.4.0"
28
+ version = "6.5.2rc1"
29
29
  description = "Provider package apache-airflow-providers-postgres for Apache Airflow"
30
30
  readme = "README.rst"
31
+ license = "Apache-2.0"
32
+ license-files = ['LICENSE', 'NOTICE']
31
33
  authors = [
32
34
  {name="Apache Software Foundation", email="dev@airflow.apache.org"},
33
35
  ]
@@ -43,7 +45,6 @@ classifiers = [
43
45
  "Intended Audience :: System Administrators",
44
46
  "Framework :: Apache Airflow",
45
47
  "Framework :: Apache Airflow :: Provider",
46
- "License :: OSI Approved :: Apache Software License",
47
48
  "Programming Language :: Python :: 3.10",
48
49
  "Programming Language :: Python :: 3.11",
49
50
  "Programming Language :: Python :: 3.12",
@@ -57,9 +58,9 @@ requires-python = ">=3.10"
57
58
  # Make sure to run ``prek update-providers-dependencies --all-files``
58
59
  # After you modify the dependencies, and rebuild your Breeze CI image with ``breeze ci-image build``
59
60
  dependencies = [
60
- "apache-airflow>=2.10.0",
61
- "apache-airflow-providers-common-compat>=1.8.0",
62
- "apache-airflow-providers-common-sql>=1.23.0",
61
+ "apache-airflow>=2.11.0rc1",
62
+ "apache-airflow-providers-common-compat>=1.12.0rc1",
63
+ "apache-airflow-providers-common-sql>=1.23.0rc1",
63
64
  "psycopg2-binary>=2.9.9; python_version < '3.13'",
64
65
  "psycopg2-binary>=2.9.10; python_version >= '3.13'",
65
66
  "asyncpg>=0.30.0",
@@ -68,11 +69,14 @@ dependencies = [
68
69
  # The optional dependencies should be modified in place in the generated file
69
70
  # Any change in the dependencies is preserved when the file is regenerated
70
71
  [project.optional-dependencies]
72
+ sqlalchemy = [
73
+ "sqlalchemy>=1.4.49"
74
+ ]
71
75
  "amazon" = [
72
- "apache-airflow-providers-amazon>=2.6.0",
76
+ "apache-airflow-providers-amazon>=2.6.0rc1",
73
77
  ]
74
78
  "microsoft.azure" = [
75
- "apache-airflow-providers-microsoft-azure"
79
+ "apache-airflow-providers-microsoft-azure>=12.8.0rc1"
76
80
  ]
77
81
  "openlineage" = [
78
82
  "apache-airflow-providers-openlineage"
@@ -130,8 +134,8 @@ apache-airflow-providers-common-sql = {workspace = true}
130
134
  apache-airflow-providers-standard = {workspace = true}
131
135
 
132
136
  [project.urls]
133
- "Documentation" = "https://airflow.apache.org/docs/apache-airflow-providers-postgres/6.4.0"
134
- "Changelog" = "https://airflow.apache.org/docs/apache-airflow-providers-postgres/6.4.0/changelog.html"
137
+ "Documentation" = "https://airflow.staged.apache.org/docs/apache-airflow-providers-postgres/6.5.2"
138
+ "Changelog" = "https://airflow.staged.apache.org/docs/apache-airflow-providers-postgres/6.5.2/changelog.html"
135
139
  "Bug Tracker" = "https://github.com/apache/airflow/issues"
136
140
  "Source Code" = "https://github.com/apache/airflow"
137
141
  "Slack Chat" = "https://s.apache.org/airflow-slack"
@@ -29,11 +29,11 @@ from airflow import __version__ as airflow_version
29
29
 
30
30
  __all__ = ["__version__"]
31
31
 
32
- __version__ = "6.4.0"
32
+ __version__ = "6.5.2"
33
33
 
34
34
  if packaging.version.parse(packaging.version.parse(airflow_version).base_version) < packaging.version.parse(
35
- "2.10.0"
35
+ "2.11.0"
36
36
  ):
37
37
  raise RuntimeError(
38
- f"The package `apache-airflow-providers-postgres:{__version__}` needs Apache Airflow 2.10.0+"
38
+ f"The package `apache-airflow-providers-postgres:{__version__}` needs Apache Airflow 2.11.0+"
39
39
  )
@@ -41,7 +41,7 @@ class PostgresDialect(Dialect):
41
41
  """
42
42
  if schema is None:
43
43
  table, schema = self.extract_schema_from_table(table)
44
- table = self.unescape_word(table)
44
+ table = self.unescape_word(table) or table
45
45
  schema = self.unescape_word(schema) if schema else None
46
46
  query = """
47
47
  select kcu.column_name
@@ -75,7 +75,7 @@ class PostgresDialect(Dialect):
75
75
  ) -> list[str] | None:
76
76
  if schema is None:
77
77
  table, schema = self.extract_schema_from_table(table)
78
- table = self.unescape_word(table)
78
+ table = self.unescape_word(table) or table
79
79
  schema = self.unescape_word(schema) if schema else None
80
80
  query = """
81
81
  select column_name,
@@ -24,18 +24,16 @@ from copy import deepcopy
24
24
  from typing import TYPE_CHECKING, Any, Literal, Protocol, TypeAlias, cast, overload
25
25
 
26
26
  import psycopg2
27
- import psycopg2.extensions
28
27
  import psycopg2.extras
29
28
  from more_itertools import chunked
30
29
  from psycopg2.extras import DictCursor, NamedTupleCursor, RealDictCursor, execute_batch
31
- from sqlalchemy.engine import URL
32
30
 
33
- from airflow.configuration import conf
34
- from airflow.exceptions import (
31
+ from airflow.providers.common.compat.sdk import (
35
32
  AirflowException,
36
33
  AirflowOptionalProviderFeatureException,
34
+ Connection,
35
+ conf,
37
36
  )
38
- from airflow.providers.common.compat.sdk import Connection
39
37
  from airflow.providers.common.sql.hooks.sql import DbApiHook
40
38
  from airflow.providers.postgres.dialects.postgres import PostgresDialect
41
39
 
@@ -59,6 +57,7 @@ if USE_PSYCOPG3:
59
57
  if TYPE_CHECKING:
60
58
  from pandas import DataFrame as PandasDataFrame
61
59
  from polars import DataFrame as PolarsDataFrame
60
+ from sqlalchemy.engine import URL
62
61
 
63
62
  from airflow.providers.common.sql.dialects.dialect import Dialect
64
63
  from airflow.providers.openlineage.sqlparser import DatabaseInfo
@@ -172,6 +171,13 @@ class PostgresHook(DbApiHook):
172
171
 
173
172
  @property
174
173
  def sqlalchemy_url(self) -> URL:
174
+ try:
175
+ from sqlalchemy.engine import URL
176
+ except (ImportError, ModuleNotFoundError) as err:
177
+ raise AirflowOptionalProviderFeatureException(
178
+ "SQLAlchemy is not installed. Please install it with "
179
+ "`pip install apache-airflow-providers-postgres[sqlalchemy]`."
180
+ ) from err
175
181
  conn = self.connection
176
182
  query = conn.extra_dejson.get("sqlalchemy_query", {})
177
183
  if not isinstance(query, dict):
@@ -458,7 +464,7 @@ class PostgresHook(DbApiHook):
458
464
  try:
459
465
  from airflow.providers.amazon.aws.hooks.base_aws import AwsBaseHook
460
466
  except ImportError:
461
- from airflow.exceptions import AirflowOptionalProviderFeatureException
467
+ from airflow.providers.common.compat.sdk import AirflowOptionalProviderFeatureException
462
468
 
463
469
  raise AirflowOptionalProviderFeatureException(
464
470
  "apache-airflow-providers-amazon not installed, run: "
@@ -522,19 +528,17 @@ class PostgresHook(DbApiHook):
522
528
  azure_conn = Connection.get(azure_conn_id)
523
529
  except AttributeError:
524
530
  azure_conn = Connection.get_connection_from_secrets(azure_conn_id) # type: ignore[attr-defined]
525
- azure_base_hook: AzureBaseHook = azure_conn.get_hook()
526
- scope = conf.get("postgres", "azure_oauth_scope", fallback=self.default_azure_oauth_scope)
527
531
  try:
528
- token = azure_base_hook.get_token(scope).token
529
- except AttributeError as e:
530
- if e.name == "get_token" and e.obj == azure_base_hook:
531
- raise AttributeError(
532
- "'AzureBaseHook' object has no attribute 'get_token'. "
533
- "Please upgrade apache-airflow-providers-microsoft-azure>=12.8.0",
534
- name=e.name,
535
- obj=e.obj,
532
+ azure_base_hook: AzureBaseHook = azure_conn.get_hook()
533
+ except TypeError as e:
534
+ if "required positional argument: 'sdk_client'" in str(e):
535
+ raise AirflowOptionalProviderFeatureException(
536
+ "Getting azure token is not supported by current version of 'AzureBaseHook'. "
537
+ "Please upgrade apache-airflow-providers-microsoft-azure>=12.8.0"
536
538
  ) from e
537
539
  raise
540
+ scope = conf.get("postgres", "azure_oauth_scope", fallback=self.default_azure_oauth_scope)
541
+ token = azure_base_hook.get_token(scope).token
538
542
  return cast("str", conn.login or azure_conn.login), token, conn.port or 5432
539
543
 
540
544
  def get_table_primary_key(self, table: str, schema: str | None = "public") -> list[str] | None:
@@ -568,7 +572,7 @@ class PostgresHook(DbApiHook):
568
572
  try:
569
573
  from airflow.providers.amazon.aws.hooks.base_aws import AwsBaseHook
570
574
  except ImportError:
571
- from airflow.exceptions import AirflowOptionalProviderFeatureException
575
+ from airflow.providers.common.compat.sdk import AirflowOptionalProviderFeatureException
572
576
 
573
577
  raise AirflowOptionalProviderFeatureException(
574
578
  "apache-airflow-providers-amazon not installed, run: "
@@ -25,7 +25,7 @@ from airflow.providers.postgres.assets.postgres import sanitize_uri
25
25
 
26
26
 
27
27
  @pytest.mark.parametrize(
28
- "original, normalized",
28
+ ("original", "normalized"),
29
29
  [
30
30
  pytest.param(
31
31
  "postgres://example.com:1234/database/schema/table",
@@ -27,14 +27,13 @@ import polars as pl
27
27
  import pytest
28
28
  import sqlalchemy
29
29
 
30
- from airflow.exceptions import AirflowException
31
30
  from airflow.models import Connection
31
+ from airflow.providers.common.compat.sdk import AirflowException, AirflowOptionalProviderFeatureException
32
32
  from airflow.providers.postgres.dialects.postgres import PostgresDialect
33
33
  from airflow.providers.postgres.hooks.postgres import CompatConnection, PostgresHook
34
- from airflow.utils.types import NOTSET
35
34
 
36
35
  from tests_common.test_utils.common_sql import mock_db_hook
37
- from tests_common.test_utils.version_compat import SQLALCHEMY_V_1_4
36
+ from tests_common.test_utils.version_compat import NOTSET, SQLALCHEMY_V_1_4
38
37
 
39
38
  INSERT_SQL_STATEMENT = "INSERT INTO connection (id, conn_id, conn_type, description, host, {}, login, password, port, is_encrypted, is_extra_encrypted, extra) VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)"
40
39
 
@@ -127,7 +126,7 @@ class TestPostgresHookConn:
127
126
  @pytest.mark.parametrize("aws_conn_id", [NOTSET, None, "mock_aws_conn"])
128
127
  @pytest.mark.parametrize("port", [5432, 5439, None])
129
128
  @pytest.mark.parametrize(
130
- "host,conn_cluster_identifier,expected_host",
129
+ ("host", "conn_cluster_identifier", "expected_host"),
131
130
  [
132
131
  (
133
132
  "cluster-identifier.ccdfre4hpd39h.us-east-1.redshift.amazonaws.com",
@@ -297,7 +296,7 @@ class TestPostgresHookConn:
297
296
  @pytest.mark.parametrize("aws_conn_id", [NOTSET, None, "mock_aws_conn"])
298
297
  @pytest.mark.parametrize("port", [5432, 5439, None])
299
298
  @pytest.mark.parametrize(
300
- "host,conn_cluster_identifier,expected_cluster_identifier",
299
+ ("host", "conn_cluster_identifier", "expected_cluster_identifier"),
301
300
  [
302
301
  (
303
302
  "cluster-identifier.ccdfre4hpd39h.us-east-1.redshift.amazonaws.com",
@@ -373,7 +372,7 @@ class TestPostgresHookConn:
373
372
  @pytest.mark.parametrize("aws_conn_id", [NOTSET, None, "mock_aws_conn"])
374
373
  @pytest.mark.parametrize("port", [5432, 5439, None])
375
374
  @pytest.mark.parametrize(
376
- "host,conn_workgroup_name,expected_workgroup_name",
375
+ ("host", "conn_workgroup_name", "expected_workgroup_name"),
377
376
  [
378
377
  (
379
378
  "serverless-workgroup.ccdfre4hpd39h.us-east-1.redshift.amazonaws.com",
@@ -471,22 +470,22 @@ class TestPostgresHookConn:
471
470
 
472
471
  assert mock_db_token in self.db_hook.sqlalchemy_url
473
472
 
474
- def test_get_azure_iam_token_expect_failure_on_get_token(self, mocker):
475
- """Test get_azure_iam_token method gets token from provided connection id"""
473
+ def test_get_azure_iam_token_expect_failure_on_older_azure_provider_package(self, mocker):
474
+ class MockAzureBaseHookOldVersion:
475
+ """Simulate an old version of AzureBaseHook where sdk_client is required."""
476
476
 
477
- class MockAzureBaseHookWithoutGetToken:
478
- def __init__(self):
477
+ def __init__(self, sdk_client, conn_id="azure_default"):
479
478
  pass
480
479
 
481
480
  azure_conn_id = "azure_test_conn"
482
481
  mock_connection_class = mocker.patch("airflow.providers.postgres.hooks.postgres.Connection")
483
- mock_connection_class.get.return_value.get_hook.return_value = MockAzureBaseHookWithoutGetToken()
482
+ mock_connection_class.get.return_value.get_hook = MockAzureBaseHookOldVersion
484
483
 
485
484
  self.connection.extra = json.dumps({"iam": True, "azure_conn_id": azure_conn_id})
486
485
  with pytest.raises(
487
- AttributeError,
486
+ AirflowOptionalProviderFeatureException,
488
487
  match=(
489
- "'AzureBaseHook' object has no attribute 'get_token'. "
488
+ "Getting azure token is not supported.*"
490
489
  "Please upgrade apache-airflow-providers-microsoft-azure>="
491
490
  ),
492
491
  ):
@@ -690,7 +689,7 @@ class TestPostgresHook:
690
689
  assert sorted(input_data) == sorted(results)
691
690
 
692
691
  @pytest.mark.parametrize(
693
- "df_type, expected_type",
692
+ ("df_type", "expected_type"),
694
693
  [
695
694
  ("pandas", pd.DataFrame),
696
695
  ("polars", pl.DataFrame),