apache-airflow-providers-sftp 5.4.1__py3-none-any.whl → 5.5.0__py3-none-any.whl
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.
- airflow/providers/sftp/__init__.py +3 -3
- airflow/providers/sftp/decorators/sensors/sftp.py +1 -10
- airflow/providers/sftp/get_provider_info.py +1 -0
- airflow/providers/sftp/hooks/sftp.py +1 -3
- airflow/providers/sftp/operators/sftp.py +1 -1
- airflow/providers/sftp/sensors/sftp.py +2 -6
- airflow/providers/sftp/version_compat.py +2 -12
- {apache_airflow_providers_sftp-5.4.1.dist-info → apache_airflow_providers_sftp-5.5.0.dist-info}/METADATA +20 -16
- apache_airflow_providers_sftp-5.5.0.dist-info/RECORD +21 -0
- apache_airflow_providers_sftp-5.5.0.dist-info/licenses/NOTICE +5 -0
- apache_airflow_providers_sftp-5.4.1.dist-info/RECORD +0 -20
- {apache_airflow_providers_sftp-5.4.1.dist-info → apache_airflow_providers_sftp-5.5.0.dist-info}/WHEEL +0 -0
- {apache_airflow_providers_sftp-5.4.1.dist-info → apache_airflow_providers_sftp-5.5.0.dist-info}/entry_points.txt +0 -0
- {airflow/providers/sftp → apache_airflow_providers_sftp-5.5.0.dist-info/licenses}/LICENSE +0 -0
|
@@ -29,11 +29,11 @@ from airflow import __version__ as airflow_version
|
|
|
29
29
|
|
|
30
30
|
__all__ = ["__version__"]
|
|
31
31
|
|
|
32
|
-
__version__ = "5.
|
|
32
|
+
__version__ = "5.5.0"
|
|
33
33
|
|
|
34
34
|
if packaging.version.parse(packaging.version.parse(airflow_version).base_version) < packaging.version.parse(
|
|
35
|
-
"2.
|
|
35
|
+
"2.11.0"
|
|
36
36
|
):
|
|
37
37
|
raise RuntimeError(
|
|
38
|
-
f"The package `apache-airflow-providers-sftp:{__version__}` needs Apache Airflow 2.
|
|
38
|
+
f"The package `apache-airflow-providers-sftp:{__version__}` needs Apache Airflow 2.11.0+"
|
|
39
39
|
)
|
|
@@ -19,16 +19,7 @@ from __future__ import annotations
|
|
|
19
19
|
|
|
20
20
|
from collections.abc import Callable, Sequence
|
|
21
21
|
|
|
22
|
-
from airflow.providers.
|
|
23
|
-
|
|
24
|
-
if AIRFLOW_V_3_0_PLUS:
|
|
25
|
-
from airflow.sdk.bases.decorator import TaskDecorator, get_unique_task_id, task_decorator_factory
|
|
26
|
-
else:
|
|
27
|
-
from airflow.decorators.base import ( # type: ignore[no-redef]
|
|
28
|
-
TaskDecorator,
|
|
29
|
-
get_unique_task_id,
|
|
30
|
-
task_decorator_factory,
|
|
31
|
-
)
|
|
22
|
+
from airflow.providers.common.compat.sdk import TaskDecorator, get_unique_task_id, task_decorator_factory
|
|
32
23
|
from airflow.providers.sftp.sensors.sftp import SFTPSensor
|
|
33
24
|
|
|
34
25
|
|
|
@@ -30,6 +30,7 @@ def get_provider_info():
|
|
|
30
30
|
{
|
|
31
31
|
"integration-name": "SSH File Transfer Protocol (SFTP)",
|
|
32
32
|
"external-doc-url": "https://tools.ietf.org/wg/secsh/draft-ietf-secsh-filexfer/",
|
|
33
|
+
"how-to-guide": ["/docs/apache-airflow-providers-sftp/sensors/sftp_sensor.rst"],
|
|
33
34
|
"logo": "/docs/integration-logos/SFTP.png",
|
|
34
35
|
"tags": ["protocol"],
|
|
35
36
|
}
|
|
@@ -39,8 +39,8 @@ from airflow.exceptions import (
|
|
|
39
39
|
AirflowException,
|
|
40
40
|
AirflowProviderDeprecationWarning,
|
|
41
41
|
)
|
|
42
|
+
from airflow.providers.common.compat.sdk import BaseHook, Connection
|
|
42
43
|
from airflow.providers.sftp.exceptions import ConnectionNotOpenedException
|
|
43
|
-
from airflow.providers.sftp.version_compat import BaseHook
|
|
44
44
|
from airflow.providers.ssh.hooks.ssh import SSHHook
|
|
45
45
|
|
|
46
46
|
if TYPE_CHECKING:
|
|
@@ -48,8 +48,6 @@ if TYPE_CHECKING:
|
|
|
48
48
|
from paramiko.sftp_attr import SFTPAttributes
|
|
49
49
|
from paramiko.sftp_client import SFTPClient
|
|
50
50
|
|
|
51
|
-
from airflow.models.connection import Connection
|
|
52
|
-
|
|
53
51
|
|
|
54
52
|
def handle_connection_management(func: Callable) -> Callable:
|
|
55
53
|
@functools.wraps(func)
|
|
@@ -28,8 +28,8 @@ from typing import Any
|
|
|
28
28
|
import paramiko
|
|
29
29
|
|
|
30
30
|
from airflow.exceptions import AirflowException
|
|
31
|
+
from airflow.providers.common.compat.sdk import BaseOperator
|
|
31
32
|
from airflow.providers.sftp.hooks.sftp import SFTPHook
|
|
32
|
-
from airflow.providers.sftp.version_compat import BaseOperator
|
|
33
33
|
|
|
34
34
|
|
|
35
35
|
class SFTPOperation:
|
|
@@ -28,17 +28,13 @@ from paramiko.sftp import SFTP_NO_SUCH_FILE
|
|
|
28
28
|
|
|
29
29
|
from airflow.configuration import conf
|
|
30
30
|
from airflow.exceptions import AirflowException
|
|
31
|
+
from airflow.providers.common.compat.sdk import BaseSensorOperator, PokeReturnValue
|
|
31
32
|
from airflow.providers.sftp.hooks.sftp import SFTPHook
|
|
32
33
|
from airflow.providers.sftp.triggers.sftp import SFTPTrigger
|
|
33
|
-
from airflow.providers.sftp.version_compat import BaseSensorOperator, PokeReturnValue
|
|
34
34
|
from airflow.utils.timezone import convert_to_utc, parse
|
|
35
35
|
|
|
36
36
|
if TYPE_CHECKING:
|
|
37
|
-
|
|
38
|
-
from airflow.sdk.definitions.context import Context
|
|
39
|
-
except ImportError:
|
|
40
|
-
# TODO: Remove once provider drops support for Airflow 2
|
|
41
|
-
from airflow.utils.context import Context
|
|
37
|
+
from airflow.providers.common.compat.sdk import Context
|
|
42
38
|
|
|
43
39
|
|
|
44
40
|
class SFTPSensor(BaseSensorOperator):
|
|
@@ -35,15 +35,5 @@ def get_base_airflow_version_tuple() -> tuple[int, int, int]:
|
|
|
35
35
|
AIRFLOW_V_3_0_PLUS = 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
37
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
else:
|
|
41
|
-
from airflow.hooks.base import BaseHook # type: ignore[attr-defined,no-redef]
|
|
42
|
-
|
|
43
|
-
if AIRFLOW_V_3_0_PLUS:
|
|
44
|
-
from airflow.sdk import BaseOperator, BaseSensorOperator, PokeReturnValue
|
|
45
|
-
else:
|
|
46
|
-
from airflow.models import BaseOperator
|
|
47
|
-
from airflow.sensors.base import BaseSensorOperator, PokeReturnValue # type: ignore[no-redef]
|
|
48
|
-
|
|
49
|
-
__all__ = ["AIRFLOW_V_3_0_PLUS", "BaseHook", "BaseOperator", "BaseSensorOperator", "PokeReturnValue"]
|
|
38
|
+
|
|
39
|
+
__all__ = ["AIRFLOW_V_3_0_PLUS", "AIRFLOW_V_3_1_PLUS"]
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: apache-airflow-providers-sftp
|
|
3
|
-
Version: 5.
|
|
3
|
+
Version: 5.5.0
|
|
4
4
|
Summary: Provider package apache-airflow-providers-sftp for Apache Airflow
|
|
5
5
|
Keywords: airflow-provider,sftp,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,21 +15,23 @@ 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
|
-
|
|
23
|
+
License-File: LICENSE
|
|
24
|
+
License-File: NOTICE
|
|
25
|
+
Requires-Dist: apache-airflow>=2.11.0
|
|
24
26
|
Requires-Dist: apache-airflow-providers-ssh>=4.0.0
|
|
27
|
+
Requires-Dist: apache-airflow-providers-common-compat>=1.8.0
|
|
25
28
|
Requires-Dist: paramiko>=2.9.0,<4.0.0
|
|
26
29
|
Requires-Dist: asyncssh>=2.12.0
|
|
27
30
|
Requires-Dist: apache-airflow-providers-common-compat ; extra == "common-compat"
|
|
28
31
|
Requires-Dist: apache-airflow-providers-openlineage ; extra == "openlineage"
|
|
29
32
|
Project-URL: Bug Tracker, https://github.com/apache/airflow/issues
|
|
30
|
-
Project-URL: Changelog, https://airflow.apache.org/docs/apache-airflow-providers-sftp/5.
|
|
31
|
-
Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-sftp/5.
|
|
33
|
+
Project-URL: Changelog, https://airflow.apache.org/docs/apache-airflow-providers-sftp/5.5.0/changelog.html
|
|
34
|
+
Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-sftp/5.5.0
|
|
32
35
|
Project-URL: Mastodon, https://fosstodon.org/@airflow
|
|
33
36
|
Project-URL: Slack Chat, https://s.apache.org/airflow-slack
|
|
34
37
|
Project-URL: Source Code, https://github.com/apache/airflow
|
|
@@ -61,7 +64,7 @@ Provides-Extra: openlineage
|
|
|
61
64
|
|
|
62
65
|
Package ``apache-airflow-providers-sftp``
|
|
63
66
|
|
|
64
|
-
Release: ``5.
|
|
67
|
+
Release: ``5.5.0``
|
|
65
68
|
|
|
66
69
|
|
|
67
70
|
`SSH File Transfer Protocol (SFTP) <https://tools.ietf.org/wg/secsh/draft-ietf-secsh-filexfer/>`__
|
|
@@ -74,7 +77,7 @@ This is a provider package for ``sftp`` provider. All classes for this provider
|
|
|
74
77
|
are in ``airflow.providers.sftp`` python package.
|
|
75
78
|
|
|
76
79
|
You can find package information and changelog for the provider
|
|
77
|
-
in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-sftp/5.
|
|
80
|
+
in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-sftp/5.5.0/>`_.
|
|
78
81
|
|
|
79
82
|
Installation
|
|
80
83
|
------------
|
|
@@ -88,14 +91,15 @@ The package supports the following python versions: 3.10,3.11,3.12,3.13
|
|
|
88
91
|
Requirements
|
|
89
92
|
------------
|
|
90
93
|
|
|
91
|
-
|
|
92
|
-
PIP package
|
|
93
|
-
|
|
94
|
-
``apache-airflow``
|
|
95
|
-
``apache-airflow-providers-ssh``
|
|
96
|
-
``
|
|
97
|
-
``
|
|
98
|
-
|
|
94
|
+
========================================== ==================
|
|
95
|
+
PIP package Version required
|
|
96
|
+
========================================== ==================
|
|
97
|
+
``apache-airflow`` ``>=2.11.0``
|
|
98
|
+
``apache-airflow-providers-ssh`` ``>=4.0.0``
|
|
99
|
+
``apache-airflow-providers-common-compat`` ``>=1.8.0``
|
|
100
|
+
``paramiko`` ``>=2.9.0,<4.0.0``
|
|
101
|
+
``asyncssh`` ``>=2.12.0``
|
|
102
|
+
========================================== ==================
|
|
99
103
|
|
|
100
104
|
Cross provider package dependencies
|
|
101
105
|
-----------------------------------
|
|
@@ -129,5 +133,5 @@ Extra Dependencies
|
|
|
129
133
|
================= ==========================================
|
|
130
134
|
|
|
131
135
|
The changelog for the provider package can be found in the
|
|
132
|
-
`changelog <https://airflow.apache.org/docs/apache-airflow-providers-sftp/5.
|
|
136
|
+
`changelog <https://airflow.apache.org/docs/apache-airflow-providers-sftp/5.5.0/changelog.html>`_.
|
|
133
137
|
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
airflow/providers/sftp/__init__.py,sha256=0lEZa-04EGS9xzkrUgUrF_UrIfI7xniRpBmrcBzUVMw,1493
|
|
2
|
+
airflow/providers/sftp/exceptions.py,sha256=Gz4mk1YkBUFE1ridk-C7dcu9Y3JPdkp5MUyQOwWOWyY,1011
|
|
3
|
+
airflow/providers/sftp/get_provider_info.py,sha256=qjHxUHBGnbyHCwXgKYbTNGNvKtc7l213wrVy7yjHf_c,3002
|
|
4
|
+
airflow/providers/sftp/version_compat.py,sha256=2mExLgLL122lERfq14OjfiylWzp1FJVdoTwov_DdyJA,1666
|
|
5
|
+
airflow/providers/sftp/decorators/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
|
|
6
|
+
airflow/providers/sftp/decorators/sensors/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
|
|
7
|
+
airflow/providers/sftp/decorators/sensors/sftp.py,sha256=3Zy1TUqoUuw0I3c8fQXH2DrQR5p4rk4X1GG17afE_lE,2882
|
|
8
|
+
airflow/providers/sftp/hooks/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
|
|
9
|
+
airflow/providers/sftp/hooks/sftp.py,sha256=_aF4J8Daw-fvXeFijGFFmNMzecgEHQwrX_zw0vswFns,34199
|
|
10
|
+
airflow/providers/sftp/operators/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
|
|
11
|
+
airflow/providers/sftp/operators/sftp.py,sha256=i3DsNYdZjv7E03chU58VKfkm2PxJqmU5WHWvRhBxCpA,13181
|
|
12
|
+
airflow/providers/sftp/sensors/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
|
|
13
|
+
airflow/providers/sftp/sensors/sftp.py,sha256=fRxp3Ap--sjjUbfnRrsXWPzDt1xCKu49ZClzSi9cvDw,8890
|
|
14
|
+
airflow/providers/sftp/triggers/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
|
|
15
|
+
airflow/providers/sftp/triggers/sftp.py,sha256=e_zdgyg2Y9T2bvCP57a2GZN0rBLW_R_t0V6kquvV2GY,6164
|
|
16
|
+
apache_airflow_providers_sftp-5.5.0.dist-info/entry_points.txt,sha256=Fa1IkUHV6qnIuwLd0U7tKoklbLXXVrbB2hhG6N7Q-zo,100
|
|
17
|
+
apache_airflow_providers_sftp-5.5.0.dist-info/licenses/LICENSE,sha256=gXPVwptPlW1TJ4HSuG5OMPg-a3h43OGMkZRR1rpwfJA,10850
|
|
18
|
+
apache_airflow_providers_sftp-5.5.0.dist-info/licenses/NOTICE,sha256=E3-_E02gwwSEFzeeWPKmnIjOoos3hW28CLISV6sYrbQ,168
|
|
19
|
+
apache_airflow_providers_sftp-5.5.0.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
|
|
20
|
+
apache_airflow_providers_sftp-5.5.0.dist-info/METADATA,sha256=Ocl4UEMGMZsw2t2OJej_XL2rUUrZTq5ucqEy0gis7K4,6289
|
|
21
|
+
apache_airflow_providers_sftp-5.5.0.dist-info/RECORD,,
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
airflow/providers/sftp/LICENSE,sha256=gXPVwptPlW1TJ4HSuG5OMPg-a3h43OGMkZRR1rpwfJA,10850
|
|
2
|
-
airflow/providers/sftp/__init__.py,sha256=76hvqk29Ph0E6KfFF4Kynyg8Q4PEFfwZhfE0F03cKwk,1493
|
|
3
|
-
airflow/providers/sftp/exceptions.py,sha256=Gz4mk1YkBUFE1ridk-C7dcu9Y3JPdkp5MUyQOwWOWyY,1011
|
|
4
|
-
airflow/providers/sftp/get_provider_info.py,sha256=_IqUGQ-rKpZsSAsXdTsGYzfzJ3X57duhn-2b0-rFOz0,2905
|
|
5
|
-
airflow/providers/sftp/version_compat.py,sha256=zRB-sKs65ic8Gl2QARSOaJ8ScjIRw58pt0kR6nOQPPY,2113
|
|
6
|
-
airflow/providers/sftp/decorators/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
|
|
7
|
-
airflow/providers/sftp/decorators/sensors/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
|
|
8
|
-
airflow/providers/sftp/decorators/sensors/sftp.py,sha256=O-rkLJ_-B49aRZ5W9vpHcCeMo5bA1DOm_iVdKp8lwLE,3134
|
|
9
|
-
airflow/providers/sftp/hooks/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
|
|
10
|
-
airflow/providers/sftp/hooks/sftp.py,sha256=5qpttnQVZ2_2ZsS_u72-ugy66GOC97CzcSSzyiMj7c8,34243
|
|
11
|
-
airflow/providers/sftp/operators/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
|
|
12
|
-
airflow/providers/sftp/operators/sftp.py,sha256=xOXEq0Wu6jQFyMc96pbhfgNvcjrUii7PXS8mfv65X58,13183
|
|
13
|
-
airflow/providers/sftp/sensors/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
|
|
14
|
-
airflow/providers/sftp/sensors/sftp.py,sha256=XXtwu3PzzYNcNlI-xhHhTT2SmIlIrA3r4NkDbYpW3Z0,9040
|
|
15
|
-
airflow/providers/sftp/triggers/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
|
|
16
|
-
airflow/providers/sftp/triggers/sftp.py,sha256=e_zdgyg2Y9T2bvCP57a2GZN0rBLW_R_t0V6kquvV2GY,6164
|
|
17
|
-
apache_airflow_providers_sftp-5.4.1.dist-info/entry_points.txt,sha256=Fa1IkUHV6qnIuwLd0U7tKoklbLXXVrbB2hhG6N7Q-zo,100
|
|
18
|
-
apache_airflow_providers_sftp-5.4.1.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
|
|
19
|
-
apache_airflow_providers_sftp-5.4.1.dist-info/METADATA,sha256=pn7Ji-sTx9plnXIPxvkwqHNbWAS2hHBCxR-J2kLHUhE,6081
|
|
20
|
-
apache_airflow_providers_sftp-5.4.1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|