apache-airflow-providers-sftp 5.4.2__tar.gz → 5.5.1rc1__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_sftp-5.4.2 → apache_airflow_providers_sftp-5.5.1rc1}/PKG-INFO +11 -11
- {apache_airflow_providers_sftp-5.4.2 → apache_airflow_providers_sftp-5.5.1rc1}/README.rst +5 -5
- {apache_airflow_providers_sftp-5.4.2 → apache_airflow_providers_sftp-5.5.1rc1}/docs/changelog.rst +32 -2
- {apache_airflow_providers_sftp-5.4.2 → apache_airflow_providers_sftp-5.5.1rc1}/docs/index.rst +6 -6
- {apache_airflow_providers_sftp-5.4.2 → apache_airflow_providers_sftp-5.5.1rc1}/provider.yaml +3 -1
- {apache_airflow_providers_sftp-5.4.2 → apache_airflow_providers_sftp-5.5.1rc1}/pyproject.toml +6 -6
- {apache_airflow_providers_sftp-5.4.2 → apache_airflow_providers_sftp-5.5.1rc1}/src/airflow/providers/sftp/__init__.py +3 -3
- {apache_airflow_providers_sftp-5.4.2 → apache_airflow_providers_sftp-5.5.1rc1}/src/airflow/providers/sftp/exceptions.py +1 -1
- {apache_airflow_providers_sftp-5.4.2 → apache_airflow_providers_sftp-5.5.1rc1}/src/airflow/providers/sftp/hooks/sftp.py +20 -14
- {apache_airflow_providers_sftp-5.4.2 → apache_airflow_providers_sftp-5.5.1rc1}/src/airflow/providers/sftp/operators/sftp.py +1 -2
- {apache_airflow_providers_sftp-5.4.2 → apache_airflow_providers_sftp-5.5.1rc1}/src/airflow/providers/sftp/sensors/sftp.py +1 -2
- {apache_airflow_providers_sftp-5.4.2 → apache_airflow_providers_sftp-5.5.1rc1}/src/airflow/providers/sftp/triggers/sftp.py +1 -1
- {apache_airflow_providers_sftp-5.4.2 → apache_airflow_providers_sftp-5.5.1rc1}/tests/unit/sftp/hooks/test_sftp.py +62 -1
- {apache_airflow_providers_sftp-5.4.2 → apache_airflow_providers_sftp-5.5.1rc1}/tests/unit/sftp/operators/test_sftp.py +1 -1
- {apache_airflow_providers_sftp-5.4.2 → apache_airflow_providers_sftp-5.5.1rc1}/tests/unit/sftp/sensors/test_sftp.py +1 -1
- {apache_airflow_providers_sftp-5.4.2 → apache_airflow_providers_sftp-5.5.1rc1}/tests/unit/sftp/triggers/test_sftp.py +1 -1
- {apache_airflow_providers_sftp-5.4.2 → apache_airflow_providers_sftp-5.5.1rc1}/LICENSE +0 -0
- {apache_airflow_providers_sftp-5.4.2 → apache_airflow_providers_sftp-5.5.1rc1}/NOTICE +0 -0
- {apache_airflow_providers_sftp-5.4.2 → apache_airflow_providers_sftp-5.5.1rc1}/docs/.latest-doc-only-change.txt +0 -0
- {apache_airflow_providers_sftp-5.4.2 → apache_airflow_providers_sftp-5.5.1rc1}/docs/commits.rst +0 -0
- {apache_airflow_providers_sftp-5.4.2 → apache_airflow_providers_sftp-5.5.1rc1}/docs/conf.py +0 -0
- {apache_airflow_providers_sftp-5.4.2 → apache_airflow_providers_sftp-5.5.1rc1}/docs/connections/sftp.rst +0 -0
- {apache_airflow_providers_sftp-5.4.2 → apache_airflow_providers_sftp-5.5.1rc1}/docs/installing-providers-from-sources.rst +0 -0
- {apache_airflow_providers_sftp-5.4.2 → apache_airflow_providers_sftp-5.5.1rc1}/docs/integration-logos/SFTP.png +0 -0
- {apache_airflow_providers_sftp-5.4.2 → apache_airflow_providers_sftp-5.5.1rc1}/docs/security.rst +0 -0
- {apache_airflow_providers_sftp-5.4.2 → apache_airflow_providers_sftp-5.5.1rc1}/docs/sensors/sftp_sensor.rst +0 -0
- {apache_airflow_providers_sftp-5.4.2 → apache_airflow_providers_sftp-5.5.1rc1}/src/airflow/__init__.py +0 -0
- {apache_airflow_providers_sftp-5.4.2 → apache_airflow_providers_sftp-5.5.1rc1}/src/airflow/providers/__init__.py +0 -0
- {apache_airflow_providers_sftp-5.4.2 → apache_airflow_providers_sftp-5.5.1rc1}/src/airflow/providers/sftp/decorators/__init__.py +0 -0
- {apache_airflow_providers_sftp-5.4.2 → apache_airflow_providers_sftp-5.5.1rc1}/src/airflow/providers/sftp/decorators/sensors/__init__.py +0 -0
- {apache_airflow_providers_sftp-5.4.2 → apache_airflow_providers_sftp-5.5.1rc1}/src/airflow/providers/sftp/decorators/sensors/sftp.py +0 -0
- {apache_airflow_providers_sftp-5.4.2 → apache_airflow_providers_sftp-5.5.1rc1}/src/airflow/providers/sftp/get_provider_info.py +0 -0
- {apache_airflow_providers_sftp-5.4.2 → apache_airflow_providers_sftp-5.5.1rc1}/src/airflow/providers/sftp/hooks/__init__.py +0 -0
- {apache_airflow_providers_sftp-5.4.2 → apache_airflow_providers_sftp-5.5.1rc1}/src/airflow/providers/sftp/operators/__init__.py +0 -0
- {apache_airflow_providers_sftp-5.4.2 → apache_airflow_providers_sftp-5.5.1rc1}/src/airflow/providers/sftp/sensors/__init__.py +0 -0
- {apache_airflow_providers_sftp-5.4.2 → apache_airflow_providers_sftp-5.5.1rc1}/src/airflow/providers/sftp/triggers/__init__.py +0 -0
- {apache_airflow_providers_sftp-5.4.2 → apache_airflow_providers_sftp-5.5.1rc1}/src/airflow/providers/sftp/version_compat.py +0 -0
- {apache_airflow_providers_sftp-5.4.2 → apache_airflow_providers_sftp-5.5.1rc1}/tests/conftest.py +0 -0
- {apache_airflow_providers_sftp-5.4.2 → apache_airflow_providers_sftp-5.5.1rc1}/tests/system/__init__.py +0 -0
- {apache_airflow_providers_sftp-5.4.2 → apache_airflow_providers_sftp-5.5.1rc1}/tests/system/sftp/__init__.py +0 -0
- {apache_airflow_providers_sftp-5.4.2 → apache_airflow_providers_sftp-5.5.1rc1}/tests/system/sftp/example_sftp_sensor.py +0 -0
- {apache_airflow_providers_sftp-5.4.2 → apache_airflow_providers_sftp-5.5.1rc1}/tests/unit/__init__.py +0 -0
- {apache_airflow_providers_sftp-5.4.2 → apache_airflow_providers_sftp-5.5.1rc1}/tests/unit/sftp/__init__.py +0 -0
- {apache_airflow_providers_sftp-5.4.2 → apache_airflow_providers_sftp-5.5.1rc1}/tests/unit/sftp/decorators/__init__.py +0 -0
- {apache_airflow_providers_sftp-5.4.2 → apache_airflow_providers_sftp-5.5.1rc1}/tests/unit/sftp/decorators/sensors/__init__.py +0 -0
- {apache_airflow_providers_sftp-5.4.2 → apache_airflow_providers_sftp-5.5.1rc1}/tests/unit/sftp/decorators/sensors/test_sftp.py +0 -0
- {apache_airflow_providers_sftp-5.4.2 → apache_airflow_providers_sftp-5.5.1rc1}/tests/unit/sftp/hooks/__init__.py +0 -0
- {apache_airflow_providers_sftp-5.4.2 → apache_airflow_providers_sftp-5.5.1rc1}/tests/unit/sftp/operators/__init__.py +0 -0
- {apache_airflow_providers_sftp-5.4.2 → apache_airflow_providers_sftp-5.5.1rc1}/tests/unit/sftp/sensors/__init__.py +0 -0
- {apache_airflow_providers_sftp-5.4.2 → apache_airflow_providers_sftp-5.5.1rc1}/tests/unit/sftp/triggers/__init__.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: apache-airflow-providers-sftp
|
|
3
|
-
Version: 5.
|
|
3
|
+
Version: 5.5.1rc1
|
|
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>
|
|
@@ -22,16 +22,16 @@ Classifier: Programming Language :: Python :: 3.13
|
|
|
22
22
|
Classifier: Topic :: System :: Monitoring
|
|
23
23
|
License-File: LICENSE
|
|
24
24
|
License-File: NOTICE
|
|
25
|
-
Requires-Dist: apache-airflow>=2.
|
|
26
|
-
Requires-Dist: apache-airflow-providers-ssh>=4.0.
|
|
27
|
-
Requires-Dist: apache-airflow-providers-common-compat>=1.
|
|
25
|
+
Requires-Dist: apache-airflow>=2.11.0rc1
|
|
26
|
+
Requires-Dist: apache-airflow-providers-ssh>=4.0.0rc1
|
|
27
|
+
Requires-Dist: apache-airflow-providers-common-compat>=1.10.1rc1
|
|
28
28
|
Requires-Dist: paramiko>=2.9.0,<4.0.0
|
|
29
29
|
Requires-Dist: asyncssh>=2.12.0
|
|
30
30
|
Requires-Dist: apache-airflow-providers-common-compat ; extra == "common-compat"
|
|
31
31
|
Requires-Dist: apache-airflow-providers-openlineage ; extra == "openlineage"
|
|
32
32
|
Project-URL: Bug Tracker, https://github.com/apache/airflow/issues
|
|
33
|
-
Project-URL: Changelog, https://airflow.apache.org/docs/apache-airflow-providers-sftp/5.
|
|
34
|
-
Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-sftp/5.
|
|
33
|
+
Project-URL: Changelog, https://airflow.staged.apache.org/docs/apache-airflow-providers-sftp/5.5.1/changelog.html
|
|
34
|
+
Project-URL: Documentation, https://airflow.staged.apache.org/docs/apache-airflow-providers-sftp/5.5.1
|
|
35
35
|
Project-URL: Mastodon, https://fosstodon.org/@airflow
|
|
36
36
|
Project-URL: Slack Chat, https://s.apache.org/airflow-slack
|
|
37
37
|
Project-URL: Source Code, https://github.com/apache/airflow
|
|
@@ -64,7 +64,7 @@ Provides-Extra: openlineage
|
|
|
64
64
|
|
|
65
65
|
Package ``apache-airflow-providers-sftp``
|
|
66
66
|
|
|
67
|
-
Release: ``5.
|
|
67
|
+
Release: ``5.5.1``
|
|
68
68
|
|
|
69
69
|
|
|
70
70
|
`SSH File Transfer Protocol (SFTP) <https://tools.ietf.org/wg/secsh/draft-ietf-secsh-filexfer/>`__
|
|
@@ -77,7 +77,7 @@ This is a provider package for ``sftp`` provider. All classes for this provider
|
|
|
77
77
|
are in ``airflow.providers.sftp`` python package.
|
|
78
78
|
|
|
79
79
|
You can find package information and changelog for the provider
|
|
80
|
-
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.1/>`_.
|
|
81
81
|
|
|
82
82
|
Installation
|
|
83
83
|
------------
|
|
@@ -94,9 +94,9 @@ Requirements
|
|
|
94
94
|
========================================== ==================
|
|
95
95
|
PIP package Version required
|
|
96
96
|
========================================== ==================
|
|
97
|
-
``apache-airflow`` ``>=2.
|
|
97
|
+
``apache-airflow`` ``>=2.11.0``
|
|
98
98
|
``apache-airflow-providers-ssh`` ``>=4.0.0``
|
|
99
|
-
``apache-airflow-providers-common-compat`` ``>=1.
|
|
99
|
+
``apache-airflow-providers-common-compat`` ``>=1.10.1``
|
|
100
100
|
``paramiko`` ``>=2.9.0,<4.0.0``
|
|
101
101
|
``asyncssh`` ``>=2.12.0``
|
|
102
102
|
========================================== ==================
|
|
@@ -133,5 +133,5 @@ Extra Dependencies
|
|
|
133
133
|
================= ==========================================
|
|
134
134
|
|
|
135
135
|
The changelog for the provider package can be found in the
|
|
136
|
-
`changelog <https://airflow.apache.org/docs/apache-airflow-providers-sftp/5.
|
|
136
|
+
`changelog <https://airflow.apache.org/docs/apache-airflow-providers-sftp/5.5.1/changelog.html>`_.
|
|
137
137
|
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
|
|
24
24
|
Package ``apache-airflow-providers-sftp``
|
|
25
25
|
|
|
26
|
-
Release: ``5.
|
|
26
|
+
Release: ``5.5.1``
|
|
27
27
|
|
|
28
28
|
|
|
29
29
|
`SSH File Transfer Protocol (SFTP) <https://tools.ietf.org/wg/secsh/draft-ietf-secsh-filexfer/>`__
|
|
@@ -36,7 +36,7 @@ This is a provider package for ``sftp`` provider. All classes for this provider
|
|
|
36
36
|
are in ``airflow.providers.sftp`` 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-sftp/5.
|
|
39
|
+
in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-sftp/5.5.1/>`_.
|
|
40
40
|
|
|
41
41
|
Installation
|
|
42
42
|
------------
|
|
@@ -53,9 +53,9 @@ Requirements
|
|
|
53
53
|
========================================== ==================
|
|
54
54
|
PIP package Version required
|
|
55
55
|
========================================== ==================
|
|
56
|
-
``apache-airflow`` ``>=2.
|
|
56
|
+
``apache-airflow`` ``>=2.11.0``
|
|
57
57
|
``apache-airflow-providers-ssh`` ``>=4.0.0``
|
|
58
|
-
``apache-airflow-providers-common-compat`` ``>=1.
|
|
58
|
+
``apache-airflow-providers-common-compat`` ``>=1.10.1``
|
|
59
59
|
``paramiko`` ``>=2.9.0,<4.0.0``
|
|
60
60
|
``asyncssh`` ``>=2.12.0``
|
|
61
61
|
========================================== ==================
|
|
@@ -92,4 +92,4 @@ Extra Dependencies
|
|
|
92
92
|
================= ==========================================
|
|
93
93
|
|
|
94
94
|
The changelog for the provider package can be found in the
|
|
95
|
-
`changelog <https://airflow.apache.org/docs/apache-airflow-providers-sftp/5.
|
|
95
|
+
`changelog <https://airflow.apache.org/docs/apache-airflow-providers-sftp/5.5.1/changelog.html>`_.
|
{apache_airflow_providers_sftp-5.4.2 → apache_airflow_providers_sftp-5.5.1rc1}/docs/changelog.rst
RENAMED
|
@@ -27,6 +27,38 @@
|
|
|
27
27
|
Changelog
|
|
28
28
|
---------
|
|
29
29
|
|
|
30
|
+
5.5.1
|
|
31
|
+
.....
|
|
32
|
+
|
|
33
|
+
Bug Fixes
|
|
34
|
+
~~~~~~~~~
|
|
35
|
+
|
|
36
|
+
* ``fix(sftp): add default port to SFTPHookAsync (#58945)``
|
|
37
|
+
|
|
38
|
+
Misc
|
|
39
|
+
~~~~
|
|
40
|
+
|
|
41
|
+
* ``Add backcompat for exceptions in providers (#58727)``
|
|
42
|
+
|
|
43
|
+
.. Below changes are excluded from the changelog. Move them to
|
|
44
|
+
appropriate section above if needed. Do not delete the lines(!):
|
|
45
|
+
|
|
46
|
+
5.5.0
|
|
47
|
+
.....
|
|
48
|
+
|
|
49
|
+
.. note::
|
|
50
|
+
This release of provider is only available for Airflow 2.11+ as explained in the
|
|
51
|
+
Apache Airflow providers support policy <https://github.com/apache/airflow/blob/main/PROVIDERS.rst#minimum-supported-version-of-airflow-for-community-managed-providers>_.
|
|
52
|
+
|
|
53
|
+
Misc
|
|
54
|
+
~~~~
|
|
55
|
+
|
|
56
|
+
* ``Bump minimum Airflow version in providers to Airflow 2.11.0 (#58612)``
|
|
57
|
+
|
|
58
|
+
.. Below changes are excluded from the changelog. Move them to
|
|
59
|
+
appropriate section above if needed. Do not delete the lines(!):
|
|
60
|
+
* ``Updates to release process of providers (#58316)``
|
|
61
|
+
|
|
30
62
|
5.4.2
|
|
31
63
|
.....
|
|
32
64
|
|
|
@@ -77,8 +109,6 @@ Bug Fixes
|
|
|
77
109
|
.. Below changes are excluded from the changelog. Move them to
|
|
78
110
|
appropriate section above if needed. Do not delete the lines(!):
|
|
79
111
|
* ``Switch pre-commit to prek (#54258)``
|
|
80
|
-
|
|
81
|
-
.. Review and move the new changes to one of the sections above:
|
|
82
112
|
* ``Fix Airflow 2 reference in README/index of providers (#55240)``
|
|
83
113
|
|
|
84
114
|
5.3.4
|
{apache_airflow_providers_sftp-5.4.2 → apache_airflow_providers_sftp-5.5.1rc1}/docs/index.rst
RENAMED
|
@@ -70,7 +70,7 @@ apache-airflow-providers-sftp package
|
|
|
70
70
|
`SSH File Transfer Protocol (SFTP) <https://tools.ietf.org/wg/secsh/draft-ietf-secsh-filexfer/>`__
|
|
71
71
|
|
|
72
72
|
|
|
73
|
-
Release: 5.
|
|
73
|
+
Release: 5.5.1
|
|
74
74
|
|
|
75
75
|
Provider package
|
|
76
76
|
----------------
|
|
@@ -88,14 +88,14 @@ For the minimum Airflow version supported, see ``Requirements`` below.
|
|
|
88
88
|
Requirements
|
|
89
89
|
------------
|
|
90
90
|
|
|
91
|
-
The minimum Apache Airflow version supported by this provider distribution is ``2.
|
|
91
|
+
The minimum Apache Airflow version supported by this provider distribution is ``2.11.0``.
|
|
92
92
|
|
|
93
93
|
========================================== ==================
|
|
94
94
|
PIP package Version required
|
|
95
95
|
========================================== ==================
|
|
96
|
-
``apache-airflow`` ``>=2.
|
|
96
|
+
``apache-airflow`` ``>=2.11.0``
|
|
97
97
|
``apache-airflow-providers-ssh`` ``>=4.0.0``
|
|
98
|
-
``apache-airflow-providers-common-compat`` ``>=1.
|
|
98
|
+
``apache-airflow-providers-common-compat`` ``>=1.10.1``
|
|
99
99
|
``paramiko`` ``>=2.9.0,<4.0.0``
|
|
100
100
|
``asyncssh`` ``>=2.12.0``
|
|
101
101
|
========================================== ==================
|
|
@@ -127,5 +127,5 @@ Downloading official packages
|
|
|
127
127
|
You can download officially released packages and verify their checksums and signatures from the
|
|
128
128
|
`Official Apache Download site <https://downloads.apache.org/airflow/providers/>`_
|
|
129
129
|
|
|
130
|
-
* `The apache-airflow-providers-sftp 5.
|
|
131
|
-
* `The apache-airflow-providers-sftp 5.
|
|
130
|
+
* `The apache-airflow-providers-sftp 5.5.1 sdist package <https://downloads.apache.org/airflow/providers/apache_airflow_providers_sftp-5.5.1.tar.gz>`_ (`asc <https://downloads.apache.org/airflow/providers/apache_airflow_providers_sftp-5.5.1.tar.gz.asc>`__, `sha512 <https://downloads.apache.org/airflow/providers/apache_airflow_providers_sftp-5.5.1.tar.gz.sha512>`__)
|
|
131
|
+
* `The apache-airflow-providers-sftp 5.5.1 wheel package <https://downloads.apache.org/airflow/providers/apache_airflow_providers_sftp-5.5.1-py3-none-any.whl>`_ (`asc <https://downloads.apache.org/airflow/providers/apache_airflow_providers_sftp-5.5.1-py3-none-any.whl.asc>`__, `sha512 <https://downloads.apache.org/airflow/providers/apache_airflow_providers_sftp-5.5.1-py3-none-any.whl.sha512>`__)
|
{apache_airflow_providers_sftp-5.4.2 → apache_airflow_providers_sftp-5.5.1rc1}/provider.yaml
RENAMED
|
@@ -22,12 +22,14 @@ description: |
|
|
|
22
22
|
`SSH File Transfer Protocol (SFTP) <https://tools.ietf.org/wg/secsh/draft-ietf-secsh-filexfer/>`__
|
|
23
23
|
|
|
24
24
|
state: ready
|
|
25
|
-
source-date-epoch:
|
|
25
|
+
source-date-epoch: 1765299399
|
|
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
|
+
- 5.5.1
|
|
32
|
+
- 5.5.0
|
|
31
33
|
- 5.4.2
|
|
32
34
|
- 5.4.1
|
|
33
35
|
- 5.4.0
|
{apache_airflow_providers_sftp-5.4.2 → apache_airflow_providers_sftp-5.5.1rc1}/pyproject.toml
RENAMED
|
@@ -25,7 +25,7 @@ build-backend = "flit_core.buildapi"
|
|
|
25
25
|
|
|
26
26
|
[project]
|
|
27
27
|
name = "apache-airflow-providers-sftp"
|
|
28
|
-
version = "5.
|
|
28
|
+
version = "5.5.1rc1"
|
|
29
29
|
description = "Provider package apache-airflow-providers-sftp for Apache Airflow"
|
|
30
30
|
readme = "README.rst"
|
|
31
31
|
license = "Apache-2.0"
|
|
@@ -58,9 +58,9 @@ requires-python = ">=3.10"
|
|
|
58
58
|
# Make sure to run ``prek update-providers-dependencies --all-files``
|
|
59
59
|
# After you modify the dependencies, and rebuild your Breeze CI image with ``breeze ci-image build``
|
|
60
60
|
dependencies = [
|
|
61
|
-
"apache-airflow>=2.
|
|
62
|
-
"apache-airflow-providers-ssh>=4.0.
|
|
63
|
-
"apache-airflow-providers-common-compat>=1.
|
|
61
|
+
"apache-airflow>=2.11.0rc1",
|
|
62
|
+
"apache-airflow-providers-ssh>=4.0.0rc1",
|
|
63
|
+
"apache-airflow-providers-common-compat>=1.10.1rc1",
|
|
64
64
|
# TODO: Bump to >= 4.0.0 once https://github.com/apache/airflow/issues/54079 is handled
|
|
65
65
|
"paramiko>=2.9.0,<4.0.0",
|
|
66
66
|
"asyncssh>=2.12.0",
|
|
@@ -113,8 +113,8 @@ apache-airflow-providers-common-sql = {workspace = true}
|
|
|
113
113
|
apache-airflow-providers-standard = {workspace = true}
|
|
114
114
|
|
|
115
115
|
[project.urls]
|
|
116
|
-
"Documentation" = "https://airflow.apache.org/docs/apache-airflow-providers-sftp/5.
|
|
117
|
-
"Changelog" = "https://airflow.apache.org/docs/apache-airflow-providers-sftp/5.
|
|
116
|
+
"Documentation" = "https://airflow.staged.apache.org/docs/apache-airflow-providers-sftp/5.5.1"
|
|
117
|
+
"Changelog" = "https://airflow.staged.apache.org/docs/apache-airflow-providers-sftp/5.5.1/changelog.html"
|
|
118
118
|
"Bug Tracker" = "https://github.com/apache/airflow/issues"
|
|
119
119
|
"Source Code" = "https://github.com/apache/airflow"
|
|
120
120
|
"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__ = "5.
|
|
32
|
+
__version__ = "5.5.1"
|
|
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
|
)
|
|
@@ -34,12 +34,10 @@ from typing import IO, TYPE_CHECKING, Any, cast
|
|
|
34
34
|
|
|
35
35
|
import asyncssh
|
|
36
36
|
from asgiref.sync import sync_to_async
|
|
37
|
+
from paramiko.config import SSH_PORT
|
|
37
38
|
|
|
38
|
-
from airflow.exceptions import
|
|
39
|
-
|
|
40
|
-
AirflowProviderDeprecationWarning,
|
|
41
|
-
)
|
|
42
|
-
from airflow.providers.common.compat.sdk import BaseHook, Connection
|
|
39
|
+
from airflow.exceptions import AirflowProviderDeprecationWarning
|
|
40
|
+
from airflow.providers.common.compat.sdk import AirflowException, BaseHook, Connection
|
|
43
41
|
from airflow.providers.sftp.exceptions import ConnectionNotOpenedException
|
|
44
42
|
from airflow.providers.ssh.hooks.ssh import SSHHook
|
|
45
43
|
|
|
@@ -703,10 +701,10 @@ class SFTPHookAsync(BaseHook):
|
|
|
703
701
|
def __init__( # nosec: B107
|
|
704
702
|
self,
|
|
705
703
|
sftp_conn_id: str = default_conn_name,
|
|
706
|
-
host: str =
|
|
707
|
-
port: int =
|
|
708
|
-
username: str =
|
|
709
|
-
password: str =
|
|
704
|
+
host: str | None = None,
|
|
705
|
+
port: int | None = None,
|
|
706
|
+
username: str | None = None,
|
|
707
|
+
password: str | None = None,
|
|
710
708
|
known_hosts: str = default_known_hosts,
|
|
711
709
|
key_file: str = "",
|
|
712
710
|
passphrase: str = "",
|
|
@@ -762,11 +760,19 @@ class SFTPHookAsync(BaseHook):
|
|
|
762
760
|
if conn.extra is not None:
|
|
763
761
|
self._parse_extras(conn) # type: ignore[arg-type]
|
|
764
762
|
|
|
765
|
-
|
|
766
|
-
"
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
763
|
+
def _get_value(self_val, conn_val, default=None):
|
|
764
|
+
"""Return the first non-None value among self, conn, default."""
|
|
765
|
+
if self_val is not None:
|
|
766
|
+
return self_val
|
|
767
|
+
if conn_val is not None:
|
|
768
|
+
return conn_val
|
|
769
|
+
return default
|
|
770
|
+
|
|
771
|
+
conn_config = {
|
|
772
|
+
"host": _get_value(self.host, conn.host),
|
|
773
|
+
"port": _get_value(self.port, conn.port, SSH_PORT),
|
|
774
|
+
"username": _get_value(self.username, conn.login),
|
|
775
|
+
"password": _get_value(self.password, conn.password),
|
|
770
776
|
}
|
|
771
777
|
if self.key_file:
|
|
772
778
|
conn_config.update(client_keys=self.key_file)
|
|
@@ -27,8 +27,7 @@ from typing import Any
|
|
|
27
27
|
|
|
28
28
|
import paramiko
|
|
29
29
|
|
|
30
|
-
from airflow.
|
|
31
|
-
from airflow.providers.common.compat.sdk import BaseOperator
|
|
30
|
+
from airflow.providers.common.compat.sdk import AirflowException, BaseOperator
|
|
32
31
|
from airflow.providers.sftp.hooks.sftp import SFTPHook
|
|
33
32
|
|
|
34
33
|
|
|
@@ -27,8 +27,7 @@ from typing import TYPE_CHECKING, Any
|
|
|
27
27
|
from paramiko.sftp import SFTP_NO_SUCH_FILE
|
|
28
28
|
|
|
29
29
|
from airflow.configuration import conf
|
|
30
|
-
from airflow.
|
|
31
|
-
from airflow.providers.common.compat.sdk import BaseSensorOperator, PokeReturnValue
|
|
30
|
+
from airflow.providers.common.compat.sdk import AirflowException, BaseSensorOperator, PokeReturnValue
|
|
32
31
|
from airflow.providers.sftp.hooks.sftp import SFTPHook
|
|
33
32
|
from airflow.providers.sftp.triggers.sftp import SFTPTrigger
|
|
34
33
|
from airflow.utils.timezone import convert_to_utc, parse
|
|
@@ -24,7 +24,7 @@ from typing import Any
|
|
|
24
24
|
|
|
25
25
|
from dateutil.parser import parse as parse_date
|
|
26
26
|
|
|
27
|
-
from airflow.
|
|
27
|
+
from airflow.providers.common.compat.sdk import AirflowException
|
|
28
28
|
from airflow.providers.sftp.hooks.sftp import SFTPHookAsync
|
|
29
29
|
from airflow.triggers.base import BaseTrigger, TriggerEvent
|
|
30
30
|
from airflow.utils.timezone import convert_to_utc
|
|
@@ -31,8 +31,8 @@ from asyncssh.sftp import SFTPName
|
|
|
31
31
|
from paramiko.client import SSHClient
|
|
32
32
|
from paramiko.sftp_client import SFTPClient
|
|
33
33
|
|
|
34
|
-
from airflow.exceptions import AirflowException
|
|
35
34
|
from airflow.models import Connection
|
|
35
|
+
from airflow.providers.common.compat.sdk import AirflowException
|
|
36
36
|
from airflow.providers.sftp.hooks.sftp import SFTPHook, SFTPHookAsync
|
|
37
37
|
|
|
38
38
|
|
|
@@ -886,6 +886,67 @@ class TestSFTPHookAsync:
|
|
|
886
886
|
|
|
887
887
|
mock_connect.assert_called_with(**expected_connection_details)
|
|
888
888
|
|
|
889
|
+
@pytest.mark.asyncio
|
|
890
|
+
@patch("asyncssh.connect", new_callable=AsyncMock)
|
|
891
|
+
@patch("airflow.providers.sftp.hooks.sftp.SFTPHookAsync.get_connection")
|
|
892
|
+
async def test_connection_port_default_to_22(self, mock_get_connection, mock_connect):
|
|
893
|
+
from unittest.mock import Mock, call
|
|
894
|
+
|
|
895
|
+
mock_get_connection.return_value = Mock(
|
|
896
|
+
host="localhost",
|
|
897
|
+
port=None,
|
|
898
|
+
login="username",
|
|
899
|
+
password="password",
|
|
900
|
+
extra="{}",
|
|
901
|
+
extra_dejson={},
|
|
902
|
+
)
|
|
903
|
+
|
|
904
|
+
hook = SFTPHookAsync()
|
|
905
|
+
await hook._get_conn()
|
|
906
|
+
assert mock_connect.mock_calls == [
|
|
907
|
+
call(
|
|
908
|
+
host="localhost",
|
|
909
|
+
# Even if the port is not specified in conn_config, it should still default to 22.
|
|
910
|
+
# This behavior is consistent with STPHook.
|
|
911
|
+
port=22,
|
|
912
|
+
username="username",
|
|
913
|
+
password="password",
|
|
914
|
+
known_hosts=None,
|
|
915
|
+
),
|
|
916
|
+
]
|
|
917
|
+
|
|
918
|
+
@pytest.mark.asyncio
|
|
919
|
+
@patch("asyncssh.connect", new_callable=AsyncMock)
|
|
920
|
+
@patch("airflow.providers.sftp.hooks.sftp.SFTPHookAsync.get_connection")
|
|
921
|
+
async def test_init_argument_not_ignored(self, mock_get_connection, mock_connect):
|
|
922
|
+
from unittest.mock import Mock, call
|
|
923
|
+
|
|
924
|
+
mock_get_connection.return_value = Mock(
|
|
925
|
+
host="localhost",
|
|
926
|
+
port=None,
|
|
927
|
+
login="username",
|
|
928
|
+
password="password",
|
|
929
|
+
extra="{}",
|
|
930
|
+
extra_dejson={},
|
|
931
|
+
)
|
|
932
|
+
|
|
933
|
+
hook = SFTPHookAsync(
|
|
934
|
+
host="localhost-from-init",
|
|
935
|
+
port=25,
|
|
936
|
+
username="username-from-init",
|
|
937
|
+
password="password-from-init",
|
|
938
|
+
)
|
|
939
|
+
await hook._get_conn()
|
|
940
|
+
assert mock_connect.mock_calls == [
|
|
941
|
+
call(
|
|
942
|
+
host="localhost-from-init",
|
|
943
|
+
port=25,
|
|
944
|
+
username="username-from-init",
|
|
945
|
+
password="password-from-init",
|
|
946
|
+
known_hosts=None,
|
|
947
|
+
),
|
|
948
|
+
]
|
|
949
|
+
|
|
889
950
|
@patch("airflow.providers.sftp.hooks.sftp.SFTPHookAsync._get_conn")
|
|
890
951
|
@pytest.mark.asyncio
|
|
891
952
|
async def test_list_directory_path_does_not_exist(self, mock_hook_get_conn):
|
|
@@ -26,9 +26,9 @@ from unittest import mock
|
|
|
26
26
|
import paramiko
|
|
27
27
|
import pytest
|
|
28
28
|
|
|
29
|
-
from airflow.exceptions import AirflowException
|
|
30
29
|
from airflow.models import DAG, Connection
|
|
31
30
|
from airflow.providers.common.compat.openlineage.facet import Dataset
|
|
31
|
+
from airflow.providers.common.compat.sdk import AirflowException
|
|
32
32
|
from airflow.providers.sftp.hooks.sftp import SFTPHook
|
|
33
33
|
from airflow.providers.sftp.operators.sftp import SFTPOperation, SFTPOperator
|
|
34
34
|
from airflow.providers.ssh.hooks.ssh import SSHHook
|
|
@@ -25,7 +25,7 @@ import pytest
|
|
|
25
25
|
from paramiko.sftp import SFTP_FAILURE
|
|
26
26
|
from pendulum import datetime as pendulum_datetime, timezone
|
|
27
27
|
|
|
28
|
-
from airflow.
|
|
28
|
+
from airflow.providers.common.compat.sdk import AirflowException
|
|
29
29
|
from airflow.providers.sftp.sensors.sftp import SFTPSensor
|
|
30
30
|
from airflow.sensors.base import PokeReturnValue
|
|
31
31
|
|
|
@@ -24,7 +24,7 @@ from unittest import mock
|
|
|
24
24
|
import pytest
|
|
25
25
|
from asyncssh.sftp import SFTPAttrs, SFTPName
|
|
26
26
|
|
|
27
|
-
from airflow.
|
|
27
|
+
from airflow.providers.common.compat.sdk import AirflowException
|
|
28
28
|
from airflow.providers.sftp.triggers.sftp import SFTPTrigger
|
|
29
29
|
from airflow.triggers.base import TriggerEvent
|
|
30
30
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{apache_airflow_providers_sftp-5.4.2 → apache_airflow_providers_sftp-5.5.1rc1}/docs/commits.rst
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{apache_airflow_providers_sftp-5.4.2 → apache_airflow_providers_sftp-5.5.1rc1}/docs/security.rst
RENAMED
|
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
|
{apache_airflow_providers_sftp-5.4.2 → apache_airflow_providers_sftp-5.5.1rc1}/tests/conftest.py
RENAMED
|
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
|