apache-airflow-providers-common-compat 1.12.0rc1__tar.gz → 1.13.0rc1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {apache_airflow_providers_common_compat-1.12.0rc1 → apache_airflow_providers_common_compat-1.13.0rc1}/PKG-INFO +6 -6
- {apache_airflow_providers_common_compat-1.12.0rc1 → apache_airflow_providers_common_compat-1.13.0rc1}/README.rst +3 -3
- {apache_airflow_providers_common_compat-1.12.0rc1 → apache_airflow_providers_common_compat-1.13.0rc1}/docs/changelog.rst +27 -0
- {apache_airflow_providers_common_compat-1.12.0rc1 → apache_airflow_providers_common_compat-1.13.0rc1}/docs/index.rst +3 -3
- {apache_airflow_providers_common_compat-1.12.0rc1 → apache_airflow_providers_common_compat-1.13.0rc1}/provider.yaml +2 -1
- {apache_airflow_providers_common_compat-1.12.0rc1 → apache_airflow_providers_common_compat-1.13.0rc1}/pyproject.toml +3 -3
- {apache_airflow_providers_common_compat-1.12.0rc1 → apache_airflow_providers_common_compat-1.13.0rc1}/src/airflow/providers/common/compat/__init__.py +1 -1
- {apache_airflow_providers_common_compat-1.12.0rc1 → apache_airflow_providers_common_compat-1.13.0rc1}/src/airflow/providers/common/compat/sdk.py +4 -2
- {apache_airflow_providers_common_compat-1.12.0rc1 → apache_airflow_providers_common_compat-1.13.0rc1}/src/airflow/providers/common/compat/standard/operators.py +45 -0
- {apache_airflow_providers_common_compat-1.12.0rc1 → apache_airflow_providers_common_compat-1.13.0rc1}/src/airflow/providers/common/compat/version_compat.py +2 -0
- {apache_airflow_providers_common_compat-1.12.0rc1 → apache_airflow_providers_common_compat-1.13.0rc1}/.pre-commit-config.yaml +0 -0
- {apache_airflow_providers_common_compat-1.12.0rc1 → apache_airflow_providers_common_compat-1.13.0rc1}/LICENSE +0 -0
- {apache_airflow_providers_common_compat-1.12.0rc1 → apache_airflow_providers_common_compat-1.13.0rc1}/NOTICE +0 -0
- {apache_airflow_providers_common_compat-1.12.0rc1 → apache_airflow_providers_common_compat-1.13.0rc1}/docs/.latest-doc-only-change.txt +0 -0
- {apache_airflow_providers_common_compat-1.12.0rc1 → apache_airflow_providers_common_compat-1.13.0rc1}/docs/commits.rst +0 -0
- {apache_airflow_providers_common_compat-1.12.0rc1 → apache_airflow_providers_common_compat-1.13.0rc1}/docs/conf.py +0 -0
- {apache_airflow_providers_common_compat-1.12.0rc1 → apache_airflow_providers_common_compat-1.13.0rc1}/docs/installing-providers-from-sources.rst +0 -0
- {apache_airflow_providers_common_compat-1.12.0rc1 → apache_airflow_providers_common_compat-1.13.0rc1}/docs/security.rst +0 -0
- {apache_airflow_providers_common_compat-1.12.0rc1 → apache_airflow_providers_common_compat-1.13.0rc1}/src/airflow/__init__.py +0 -0
- {apache_airflow_providers_common_compat-1.12.0rc1 → apache_airflow_providers_common_compat-1.13.0rc1}/src/airflow/providers/__init__.py +0 -0
- {apache_airflow_providers_common_compat-1.12.0rc1 → apache_airflow_providers_common_compat-1.13.0rc1}/src/airflow/providers/common/__init__.py +0 -0
- {apache_airflow_providers_common_compat-1.12.0rc1 → apache_airflow_providers_common_compat-1.13.0rc1}/src/airflow/providers/common/compat/_compat_utils.py +0 -0
- {apache_airflow_providers_common_compat-1.12.0rc1 → apache_airflow_providers_common_compat-1.13.0rc1}/src/airflow/providers/common/compat/assets/__init__.py +0 -0
- {apache_airflow_providers_common_compat-1.12.0rc1 → apache_airflow_providers_common_compat-1.13.0rc1}/src/airflow/providers/common/compat/check.py +0 -0
- {apache_airflow_providers_common_compat-1.12.0rc1 → apache_airflow_providers_common_compat-1.13.0rc1}/src/airflow/providers/common/compat/connection/__init__.py +0 -0
- {apache_airflow_providers_common_compat-1.12.0rc1 → apache_airflow_providers_common_compat-1.13.0rc1}/src/airflow/providers/common/compat/get_provider_info.py +0 -0
- {apache_airflow_providers_common_compat-1.12.0rc1 → apache_airflow_providers_common_compat-1.13.0rc1}/src/airflow/providers/common/compat/lineage/__init__.py +0 -0
- {apache_airflow_providers_common_compat-1.12.0rc1 → apache_airflow_providers_common_compat-1.13.0rc1}/src/airflow/providers/common/compat/lineage/entities.py +0 -0
- {apache_airflow_providers_common_compat-1.12.0rc1 → apache_airflow_providers_common_compat-1.13.0rc1}/src/airflow/providers/common/compat/lineage/hook.py +0 -0
- {apache_airflow_providers_common_compat-1.12.0rc1 → apache_airflow_providers_common_compat-1.13.0rc1}/src/airflow/providers/common/compat/module_loading/__init__.py +0 -0
- {apache_airflow_providers_common_compat-1.12.0rc1 → apache_airflow_providers_common_compat-1.13.0rc1}/src/airflow/providers/common/compat/notifier/__init__.py +0 -0
- {apache_airflow_providers_common_compat-1.12.0rc1 → apache_airflow_providers_common_compat-1.13.0rc1}/src/airflow/providers/common/compat/openlineage/__init__.py +0 -0
- {apache_airflow_providers_common_compat-1.12.0rc1 → apache_airflow_providers_common_compat-1.13.0rc1}/src/airflow/providers/common/compat/openlineage/check.py +0 -0
- {apache_airflow_providers_common_compat-1.12.0rc1 → apache_airflow_providers_common_compat-1.13.0rc1}/src/airflow/providers/common/compat/openlineage/facet.py +0 -0
- {apache_airflow_providers_common_compat-1.12.0rc1 → apache_airflow_providers_common_compat-1.13.0rc1}/src/airflow/providers/common/compat/openlineage/utils/__init__.py +0 -0
- {apache_airflow_providers_common_compat-1.12.0rc1 → apache_airflow_providers_common_compat-1.13.0rc1}/src/airflow/providers/common/compat/openlineage/utils/spark.py +0 -0
- {apache_airflow_providers_common_compat-1.12.0rc1 → apache_airflow_providers_common_compat-1.13.0rc1}/src/airflow/providers/common/compat/openlineage/utils/sql.py +0 -0
- {apache_airflow_providers_common_compat-1.12.0rc1 → apache_airflow_providers_common_compat-1.13.0rc1}/src/airflow/providers/common/compat/openlineage/utils/utils.py +0 -0
- {apache_airflow_providers_common_compat-1.12.0rc1 → apache_airflow_providers_common_compat-1.13.0rc1}/src/airflow/providers/common/compat/security/__init__.py +0 -0
- {apache_airflow_providers_common_compat-1.12.0rc1 → apache_airflow_providers_common_compat-1.13.0rc1}/src/airflow/providers/common/compat/security/permissions.py +0 -0
- {apache_airflow_providers_common_compat-1.12.0rc1 → apache_airflow_providers_common_compat-1.13.0rc1}/src/airflow/providers/common/compat/sqlalchemy/__init__.py +0 -0
- {apache_airflow_providers_common_compat-1.12.0rc1 → apache_airflow_providers_common_compat-1.13.0rc1}/src/airflow/providers/common/compat/sqlalchemy/orm.py +0 -0
- {apache_airflow_providers_common_compat-1.12.0rc1 → apache_airflow_providers_common_compat-1.13.0rc1}/src/airflow/providers/common/compat/standard/__init__.py +0 -0
- {apache_airflow_providers_common_compat-1.12.0rc1 → apache_airflow_providers_common_compat-1.13.0rc1}/src/airflow/providers/common/compat/standard/triggers.py +0 -0
- {apache_airflow_providers_common_compat-1.12.0rc1 → apache_airflow_providers_common_compat-1.13.0rc1}/src/airflow/providers/common/compat/standard/utils.py +0 -0
- {apache_airflow_providers_common_compat-1.12.0rc1 → apache_airflow_providers_common_compat-1.13.0rc1}/tests/conftest.py +0 -0
- {apache_airflow_providers_common_compat-1.12.0rc1 → apache_airflow_providers_common_compat-1.13.0rc1}/tests/unit/__init__.py +0 -0
- {apache_airflow_providers_common_compat-1.12.0rc1 → apache_airflow_providers_common_compat-1.13.0rc1}/tests/unit/common/__init__.py +0 -0
- {apache_airflow_providers_common_compat-1.12.0rc1 → apache_airflow_providers_common_compat-1.13.0rc1}/tests/unit/common/compat/__init__.py +0 -0
- {apache_airflow_providers_common_compat-1.12.0rc1 → apache_airflow_providers_common_compat-1.13.0rc1}/tests/unit/common/compat/connection/__init__.py +0 -0
- {apache_airflow_providers_common_compat-1.12.0rc1 → apache_airflow_providers_common_compat-1.13.0rc1}/tests/unit/common/compat/connection/test_connection.py +0 -0
- {apache_airflow_providers_common_compat-1.12.0rc1 → apache_airflow_providers_common_compat-1.13.0rc1}/tests/unit/common/compat/lineage/__init__.py +0 -0
- {apache_airflow_providers_common_compat-1.12.0rc1 → apache_airflow_providers_common_compat-1.13.0rc1}/tests/unit/common/compat/lineage/test_hook.py +0 -0
- {apache_airflow_providers_common_compat-1.12.0rc1 → apache_airflow_providers_common_compat-1.13.0rc1}/tests/unit/common/compat/openlineage/__init__.py +0 -0
- {apache_airflow_providers_common_compat-1.12.0rc1 → apache_airflow_providers_common_compat-1.13.0rc1}/tests/unit/common/compat/openlineage/test_check.py +0 -0
- {apache_airflow_providers_common_compat-1.12.0rc1 → apache_airflow_providers_common_compat-1.13.0rc1}/tests/unit/common/compat/openlineage/test_facet.py +0 -0
- {apache_airflow_providers_common_compat-1.12.0rc1 → apache_airflow_providers_common_compat-1.13.0rc1}/tests/unit/common/compat/openlineage/utils/__init__.py +0 -0
- {apache_airflow_providers_common_compat-1.12.0rc1 → apache_airflow_providers_common_compat-1.13.0rc1}/tests/unit/common/compat/openlineage/utils/test_spark.py +0 -0
- {apache_airflow_providers_common_compat-1.12.0rc1 → apache_airflow_providers_common_compat-1.13.0rc1}/tests/unit/common/compat/openlineage/utils/test_sql.py +0 -0
- {apache_airflow_providers_common_compat-1.12.0rc1 → apache_airflow_providers_common_compat-1.13.0rc1}/tests/unit/common/compat/openlineage/utils/test_utils.py +0 -0
- {apache_airflow_providers_common_compat-1.12.0rc1 → apache_airflow_providers_common_compat-1.13.0rc1}/tests/unit/common/compat/security/__init__.py +0 -0
- {apache_airflow_providers_common_compat-1.12.0rc1 → apache_airflow_providers_common_compat-1.13.0rc1}/tests/unit/common/compat/security/test_permissions.py +0 -0
- {apache_airflow_providers_common_compat-1.12.0rc1 → apache_airflow_providers_common_compat-1.13.0rc1}/tests/unit/common/compat/sqlalchemy/__init__.py +0 -0
- {apache_airflow_providers_common_compat-1.12.0rc1 → apache_airflow_providers_common_compat-1.13.0rc1}/tests/unit/common/compat/sqlalchemy/test_orm.py +0 -0
- {apache_airflow_providers_common_compat-1.12.0rc1 → apache_airflow_providers_common_compat-1.13.0rc1}/tests/unit/common/compat/test__compat_utils.py +0 -0
- {apache_airflow_providers_common_compat-1.12.0rc1 → apache_airflow_providers_common_compat-1.13.0rc1}/tests/unit/common/compat/test_check.py +0 -0
- {apache_airflow_providers_common_compat-1.12.0rc1 → apache_airflow_providers_common_compat-1.13.0rc1}/tests/unit/common/compat/test_sdk.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: apache-airflow-providers-common-compat
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.13.0rc1
|
|
4
4
|
Summary: Provider package apache-airflow-providers-common-compat for Apache Airflow
|
|
5
5
|
Keywords: airflow-provider,common.compat,airflow,integration
|
|
6
6
|
Author-email: Apache Software Foundation <dev@airflow.apache.org>
|
|
@@ -27,8 +27,8 @@ Requires-Dist: asgiref>=2.3.0
|
|
|
27
27
|
Requires-Dist: apache-airflow-providers-openlineage ; extra == "openlineage"
|
|
28
28
|
Requires-Dist: apache-airflow-providers-standard ; extra == "standard"
|
|
29
29
|
Project-URL: Bug Tracker, https://github.com/apache/airflow/issues
|
|
30
|
-
Project-URL: Changelog, https://airflow.staged.apache.org/docs/apache-airflow-providers-common-compat/1.
|
|
31
|
-
Project-URL: Documentation, https://airflow.staged.apache.org/docs/apache-airflow-providers-common-compat/1.
|
|
30
|
+
Project-URL: Changelog, https://airflow.staged.apache.org/docs/apache-airflow-providers-common-compat/1.13.0/changelog.html
|
|
31
|
+
Project-URL: Documentation, https://airflow.staged.apache.org/docs/apache-airflow-providers-common-compat/1.13.0
|
|
32
32
|
Project-URL: Mastodon, https://fosstodon.org/@airflow
|
|
33
33
|
Project-URL: Slack Chat, https://s.apache.org/airflow-slack
|
|
34
34
|
Project-URL: Source Code, https://github.com/apache/airflow
|
|
@@ -61,7 +61,7 @@ Provides-Extra: standard
|
|
|
61
61
|
|
|
62
62
|
Package ``apache-airflow-providers-common-compat``
|
|
63
63
|
|
|
64
|
-
Release: ``1.
|
|
64
|
+
Release: ``1.13.0``
|
|
65
65
|
|
|
66
66
|
|
|
67
67
|
Common Compatibility Provider - providing compatibility code for previous Airflow versions
|
|
@@ -74,7 +74,7 @@ This is a provider package for ``common.compat`` provider. All classes for this
|
|
|
74
74
|
are in ``airflow.providers.common.compat`` python package.
|
|
75
75
|
|
|
76
76
|
You can find package information and changelog for the provider
|
|
77
|
-
in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-common-compat/1.
|
|
77
|
+
in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-common-compat/1.13.0/>`_.
|
|
78
78
|
|
|
79
79
|
Installation
|
|
80
80
|
------------
|
|
@@ -125,5 +125,5 @@ Extra Dependencies
|
|
|
125
125
|
=============== ========================================
|
|
126
126
|
|
|
127
127
|
The changelog for the provider package can be found in the
|
|
128
|
-
`changelog <https://airflow.apache.org/docs/apache-airflow-providers-common-compat/1.
|
|
128
|
+
`changelog <https://airflow.apache.org/docs/apache-airflow-providers-common-compat/1.13.0/changelog.html>`_.
|
|
129
129
|
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
|
|
24
24
|
Package ``apache-airflow-providers-common-compat``
|
|
25
25
|
|
|
26
|
-
Release: ``1.
|
|
26
|
+
Release: ``1.13.0``
|
|
27
27
|
|
|
28
28
|
|
|
29
29
|
Common Compatibility Provider - providing compatibility code for previous Airflow versions
|
|
@@ -36,7 +36,7 @@ This is a provider package for ``common.compat`` provider. All classes for this
|
|
|
36
36
|
are in ``airflow.providers.common.compat`` 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-compat/1.
|
|
39
|
+
in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-common-compat/1.13.0/>`_.
|
|
40
40
|
|
|
41
41
|
Installation
|
|
42
42
|
------------
|
|
@@ -87,4 +87,4 @@ Extra Dependencies
|
|
|
87
87
|
=============== ========================================
|
|
88
88
|
|
|
89
89
|
The changelog for the provider package can be found in the
|
|
90
|
-
`changelog <https://airflow.apache.org/docs/apache-airflow-providers-common-compat/1.
|
|
90
|
+
`changelog <https://airflow.apache.org/docs/apache-airflow-providers-common-compat/1.13.0/changelog.html>`_.
|
|
@@ -25,6 +25,33 @@
|
|
|
25
25
|
Changelog
|
|
26
26
|
---------
|
|
27
27
|
|
|
28
|
+
1.13.0
|
|
29
|
+
......
|
|
30
|
+
|
|
31
|
+
.. note::
|
|
32
|
+
The new feature ``Add support for async callables in ''PythonOperator''`` will only work on Airflow 3.2.
|
|
33
|
+
|
|
34
|
+
Features
|
|
35
|
+
~~~~~~~~
|
|
36
|
+
|
|
37
|
+
* ``Add support for async callables in ''PythonOperator'' (#60268)``
|
|
38
|
+
|
|
39
|
+
Bug Fixes
|
|
40
|
+
~~~~~~~~~
|
|
41
|
+
|
|
42
|
+
* ``Fix BaseAsyncOperator in common-compat provider for Airflow 2.x (#60663)``
|
|
43
|
+
|
|
44
|
+
Misc
|
|
45
|
+
~~~~
|
|
46
|
+
|
|
47
|
+
* ``Option to disable exporting of legacy metric names (#53722)``
|
|
48
|
+
* ``Define 'TaskInstanceKey' in task-sdk to support client server separation (#60776)``
|
|
49
|
+
|
|
50
|
+
.. Below changes are excluded from the changelog. Move them to
|
|
51
|
+
appropriate section above if needed. Do not delete the lines(!):
|
|
52
|
+
* ``Move lineage from airflow core to task sdk (#60968)``
|
|
53
|
+
* ``Revert "Move lineage from airflow core to task sdk (#60968)" (#61151)``
|
|
54
|
+
|
|
28
55
|
1.12.0
|
|
29
56
|
......
|
|
30
57
|
|
|
@@ -62,7 +62,7 @@ apache-airflow-providers-common-compat package
|
|
|
62
62
|
Common Compatibility Provider - providing compatibility code for previous Airflow versions
|
|
63
63
|
|
|
64
64
|
|
|
65
|
-
Release: 1.
|
|
65
|
+
Release: 1.13.0
|
|
66
66
|
|
|
67
67
|
Provider package
|
|
68
68
|
----------------
|
|
@@ -114,5 +114,5 @@ Downloading official packages
|
|
|
114
114
|
You can download officially released packages and verify their checksums and signatures from the
|
|
115
115
|
`Official Apache Download site <https://downloads.apache.org/airflow/providers/>`_
|
|
116
116
|
|
|
117
|
-
* `The apache-airflow-providers-common-compat 1.
|
|
118
|
-
* `The apache-airflow-providers-common-compat 1.
|
|
117
|
+
* `The apache-airflow-providers-common-compat 1.13.0 sdist package <https://downloads.apache.org/airflow/providers/apache_airflow_providers_common_compat-1.13.0.tar.gz>`_ (`asc <https://downloads.apache.org/airflow/providers/apache_airflow_providers_common_compat-1.13.0.tar.gz.asc>`__, `sha512 <https://downloads.apache.org/airflow/providers/apache_airflow_providers_common_compat-1.13.0.tar.gz.sha512>`__)
|
|
118
|
+
* `The apache-airflow-providers-common-compat 1.13.0 wheel package <https://downloads.apache.org/airflow/providers/apache_airflow_providers_common_compat-1.13.0-py3-none-any.whl>`_ (`asc <https://downloads.apache.org/airflow/providers/apache_airflow_providers_common_compat-1.13.0-py3-none-any.whl.asc>`__, `sha512 <https://downloads.apache.org/airflow/providers/apache_airflow_providers_common_compat-1.13.0-py3-none-any.whl.sha512>`__)
|
|
@@ -22,12 +22,13 @@ description: |
|
|
|
22
22
|
Common Compatibility Provider - providing compatibility code for previous Airflow versions
|
|
23
23
|
|
|
24
24
|
state: ready
|
|
25
|
-
source-date-epoch:
|
|
25
|
+
source-date-epoch: 1769460821
|
|
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
|
+
- 1.13.0
|
|
31
32
|
- 1.12.0
|
|
32
33
|
- 1.11.0
|
|
33
34
|
- 1.10.1
|
|
@@ -25,7 +25,7 @@ build-backend = "flit_core.buildapi"
|
|
|
25
25
|
|
|
26
26
|
[project]
|
|
27
27
|
name = "apache-airflow-providers-common-compat"
|
|
28
|
-
version = "1.
|
|
28
|
+
version = "1.13.0rc1"
|
|
29
29
|
description = "Provider package apache-airflow-providers-common-compat for Apache Airflow"
|
|
30
30
|
readme = "README.rst"
|
|
31
31
|
license = "Apache-2.0"
|
|
@@ -107,8 +107,8 @@ apache-airflow-providers-common-sql = {workspace = true}
|
|
|
107
107
|
apache-airflow-providers-standard = {workspace = true}
|
|
108
108
|
|
|
109
109
|
[project.urls]
|
|
110
|
-
"Documentation" = "https://airflow.staged.apache.org/docs/apache-airflow-providers-common-compat/1.
|
|
111
|
-
"Changelog" = "https://airflow.staged.apache.org/docs/apache-airflow-providers-common-compat/1.
|
|
110
|
+
"Documentation" = "https://airflow.staged.apache.org/docs/apache-airflow-providers-common-compat/1.13.0"
|
|
111
|
+
"Changelog" = "https://airflow.staged.apache.org/docs/apache-airflow-providers-common-compat/1.13.0/changelog.html"
|
|
112
112
|
"Bug Tracker" = "https://github.com/apache/airflow/issues"
|
|
113
113
|
"Source Code" = "https://github.com/apache/airflow"
|
|
114
114
|
"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__ = "1.
|
|
32
|
+
__version__ = "1.13.0"
|
|
33
33
|
|
|
34
34
|
if packaging.version.parse(packaging.version.parse(airflow_version).base_version) < packaging.version.parse(
|
|
35
35
|
"2.11.0"
|
|
@@ -69,6 +69,7 @@ if TYPE_CHECKING:
|
|
|
69
69
|
teardown as teardown,
|
|
70
70
|
)
|
|
71
71
|
from airflow.sdk._shared.listeners import hookimpl as hookimpl
|
|
72
|
+
from airflow.sdk._shared.observability.metrics.stats import Stats as Stats
|
|
72
73
|
from airflow.sdk.bases.decorator import (
|
|
73
74
|
DecoratedMappedOperator as DecoratedMappedOperator,
|
|
74
75
|
DecoratedOperator as DecoratedOperator,
|
|
@@ -96,7 +97,6 @@ if TYPE_CHECKING:
|
|
|
96
97
|
)
|
|
97
98
|
from airflow.sdk.listener import get_listener_manager as get_listener_manager
|
|
98
99
|
from airflow.sdk.log import redact as redact
|
|
99
|
-
from airflow.sdk.observability.stats import Stats as Stats
|
|
100
100
|
from airflow.sdk.plugins_manager import AirflowPlugin as AirflowPlugin
|
|
101
101
|
|
|
102
102
|
# Airflow 3-only exceptions (conditionally imported)
|
|
@@ -111,6 +111,7 @@ if TYPE_CHECKING:
|
|
|
111
111
|
)
|
|
112
112
|
from airflow.sdk.execution_time.timeout import timeout as timeout
|
|
113
113
|
from airflow.sdk.execution_time.xcom import XCom as XCom
|
|
114
|
+
from airflow.sdk.types import TaskInstanceKey as TaskInstanceKey
|
|
114
115
|
|
|
115
116
|
|
|
116
117
|
from airflow.providers.common.compat._compat_utils import create_module_getattr
|
|
@@ -185,6 +186,7 @@ _IMPORT_MAP: dict[str, str | tuple[str, ...]] = {
|
|
|
185
186
|
# Operator Links & Task Groups
|
|
186
187
|
# ============================================================================
|
|
187
188
|
"BaseOperatorLink": ("airflow.sdk", "airflow.models.baseoperatorlink"),
|
|
189
|
+
"TaskInstanceKey": ("airflow.sdk.types", "airflow.models.taskinstancekey"),
|
|
188
190
|
"TaskGroup": ("airflow.sdk", "airflow.utils.task_group"),
|
|
189
191
|
# ============================================================================
|
|
190
192
|
# Operator Utilities (chain, cross_downstream, etc.)
|
|
@@ -250,7 +252,7 @@ _IMPORT_MAP: dict[str, str | tuple[str, ...]] = {
|
|
|
250
252
|
# ============================================================================
|
|
251
253
|
# Observability
|
|
252
254
|
# ============================================================================
|
|
253
|
-
"Stats": ("airflow.sdk.observability.stats", "airflow.stats"),
|
|
255
|
+
"Stats": ("airflow.sdk._shared.observability.metrics.stats", "airflow.stats"),
|
|
254
256
|
# ============================================================================
|
|
255
257
|
# Secrets Masking
|
|
256
258
|
# ============================================================================
|
|
@@ -17,18 +17,63 @@
|
|
|
17
17
|
|
|
18
18
|
from __future__ import annotations
|
|
19
19
|
|
|
20
|
+
from typing import TYPE_CHECKING
|
|
21
|
+
|
|
20
22
|
from airflow.providers.common.compat._compat_utils import create_module_getattr
|
|
23
|
+
from airflow.providers.common.compat.version_compat import (
|
|
24
|
+
AIRFLOW_V_3_1_PLUS,
|
|
25
|
+
AIRFLOW_V_3_2_PLUS,
|
|
26
|
+
)
|
|
21
27
|
|
|
22
28
|
_IMPORT_MAP: dict[str, str | tuple[str, ...]] = {
|
|
23
29
|
# Re-export from sdk (which handles Airflow 2.x/3.x fallbacks)
|
|
24
30
|
"BaseOperator": "airflow.providers.common.compat.sdk",
|
|
31
|
+
"BaseAsyncOperator": "airflow.providers.common.compat.sdk",
|
|
25
32
|
"get_current_context": "airflow.providers.common.compat.sdk",
|
|
33
|
+
"is_async_callable": "airflow.providers.common.compat.sdk",
|
|
26
34
|
# Standard provider items with direct fallbacks
|
|
27
35
|
"PythonOperator": ("airflow.providers.standard.operators.python", "airflow.operators.python"),
|
|
28
36
|
"ShortCircuitOperator": ("airflow.providers.standard.operators.python", "airflow.operators.python"),
|
|
29
37
|
"_SERIALIZERS": ("airflow.providers.standard.operators.python", "airflow.operators.python"),
|
|
30
38
|
}
|
|
31
39
|
|
|
40
|
+
if TYPE_CHECKING:
|
|
41
|
+
from airflow.sdk.bases.decorator import is_async_callable
|
|
42
|
+
from airflow.sdk.bases.operator import BaseAsyncOperator
|
|
43
|
+
elif AIRFLOW_V_3_2_PLUS:
|
|
44
|
+
from airflow.sdk.bases.decorator import is_async_callable
|
|
45
|
+
from airflow.sdk.bases.operator import BaseAsyncOperator
|
|
46
|
+
else:
|
|
47
|
+
if AIRFLOW_V_3_1_PLUS:
|
|
48
|
+
from airflow.sdk import BaseOperator
|
|
49
|
+
else:
|
|
50
|
+
from airflow.models import BaseOperator
|
|
51
|
+
|
|
52
|
+
def is_async_callable(func) -> bool:
|
|
53
|
+
"""Detect if a callable is an async function."""
|
|
54
|
+
import inspect
|
|
55
|
+
from functools import partial
|
|
56
|
+
|
|
57
|
+
while isinstance(func, partial):
|
|
58
|
+
func = func.func
|
|
59
|
+
return inspect.iscoroutinefunction(func)
|
|
60
|
+
|
|
61
|
+
class BaseAsyncOperator(BaseOperator):
|
|
62
|
+
"""Stub for Airflow < 3.2 that raises a clear error."""
|
|
63
|
+
|
|
64
|
+
@property
|
|
65
|
+
def is_async(self) -> bool:
|
|
66
|
+
return True
|
|
67
|
+
|
|
68
|
+
async def aexecute(self, context):
|
|
69
|
+
raise NotImplementedError()
|
|
70
|
+
|
|
71
|
+
def execute(self, context):
|
|
72
|
+
raise RuntimeError(
|
|
73
|
+
"Async operators require Airflow 3.2+. Upgrade Airflow or use a synchronous callable."
|
|
74
|
+
)
|
|
75
|
+
|
|
76
|
+
|
|
32
77
|
__getattr__ = create_module_getattr(import_map=_IMPORT_MAP)
|
|
33
78
|
|
|
34
79
|
__all__ = sorted(_IMPORT_MAP.keys())
|
|
@@ -34,6 +34,7 @@ def get_base_airflow_version_tuple() -> tuple[int, int, int]:
|
|
|
34
34
|
|
|
35
35
|
AIRFLOW_V_3_0_PLUS: bool = get_base_airflow_version_tuple() >= (3, 0, 0)
|
|
36
36
|
AIRFLOW_V_3_1_PLUS: bool = get_base_airflow_version_tuple() >= (3, 1, 0)
|
|
37
|
+
AIRFLOW_V_3_2_PLUS: bool = get_base_airflow_version_tuple() >= (3, 2, 0)
|
|
37
38
|
|
|
38
39
|
# BaseOperator removed from version_compat to avoid circular imports
|
|
39
40
|
# Import it directly in files that need it instead
|
|
@@ -41,4 +42,5 @@ AIRFLOW_V_3_1_PLUS: bool = get_base_airflow_version_tuple() >= (3, 1, 0)
|
|
|
41
42
|
__all__ = [
|
|
42
43
|
"AIRFLOW_V_3_0_PLUS",
|
|
43
44
|
"AIRFLOW_V_3_1_PLUS",
|
|
45
|
+
"AIRFLOW_V_3_2_PLUS",
|
|
44
46
|
]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|