apache-airflow-providers-sftp 5.2.0__tar.gz → 5.2.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.
Files changed (48) hide show
  1. {apache_airflow_providers_sftp-5.2.0 → apache_airflow_providers_sftp-5.2.1rc1}/PKG-INFO +8 -8
  2. {apache_airflow_providers_sftp-5.2.0 → apache_airflow_providers_sftp-5.2.1rc1}/README.rst +3 -3
  3. {apache_airflow_providers_sftp-5.2.0 → apache_airflow_providers_sftp-5.2.1rc1}/docs/changelog.rst +11 -0
  4. {apache_airflow_providers_sftp-5.2.0 → apache_airflow_providers_sftp-5.2.1rc1}/docs/commits.rst +13 -1
  5. {apache_airflow_providers_sftp-5.2.0 → apache_airflow_providers_sftp-5.2.1rc1}/docs/index.rst +3 -3
  6. {apache_airflow_providers_sftp-5.2.0 → apache_airflow_providers_sftp-5.2.1rc1}/provider.yaml +2 -1
  7. {apache_airflow_providers_sftp-5.2.0 → apache_airflow_providers_sftp-5.2.1rc1}/pyproject.toml +5 -5
  8. {apache_airflow_providers_sftp-5.2.0 → apache_airflow_providers_sftp-5.2.1rc1}/src/airflow/providers/sftp/__init__.py +1 -1
  9. {apache_airflow_providers_sftp-5.2.0 → apache_airflow_providers_sftp-5.2.1rc1}/src/airflow/providers/sftp/hooks/sftp.py +8 -9
  10. {apache_airflow_providers_sftp-5.2.0 → apache_airflow_providers_sftp-5.2.1rc1}/tests/unit/sftp/hooks/test_sftp.py +5 -8
  11. {apache_airflow_providers_sftp-5.2.0 → apache_airflow_providers_sftp-5.2.1rc1}/docs/.latest-doc-only-change.txt +0 -0
  12. {apache_airflow_providers_sftp-5.2.0 → apache_airflow_providers_sftp-5.2.1rc1}/docs/conf.py +0 -0
  13. {apache_airflow_providers_sftp-5.2.0 → apache_airflow_providers_sftp-5.2.1rc1}/docs/connections/sftp.rst +0 -0
  14. {apache_airflow_providers_sftp-5.2.0 → apache_airflow_providers_sftp-5.2.1rc1}/docs/installing-providers-from-sources.rst +0 -0
  15. {apache_airflow_providers_sftp-5.2.0 → apache_airflow_providers_sftp-5.2.1rc1}/docs/integration-logos/SFTP.png +0 -0
  16. {apache_airflow_providers_sftp-5.2.0 → apache_airflow_providers_sftp-5.2.1rc1}/docs/security.rst +0 -0
  17. {apache_airflow_providers_sftp-5.2.0 → apache_airflow_providers_sftp-5.2.1rc1}/docs/sensors/sftp_sensor.rst +0 -0
  18. {apache_airflow_providers_sftp-5.2.0 → apache_airflow_providers_sftp-5.2.1rc1}/src/airflow/__init__.py +0 -0
  19. {apache_airflow_providers_sftp-5.2.0 → apache_airflow_providers_sftp-5.2.1rc1}/src/airflow/providers/__init__.py +0 -0
  20. {apache_airflow_providers_sftp-5.2.0 → apache_airflow_providers_sftp-5.2.1rc1}/src/airflow/providers/sftp/LICENSE +0 -0
  21. {apache_airflow_providers_sftp-5.2.0 → apache_airflow_providers_sftp-5.2.1rc1}/src/airflow/providers/sftp/decorators/__init__.py +0 -0
  22. {apache_airflow_providers_sftp-5.2.0 → apache_airflow_providers_sftp-5.2.1rc1}/src/airflow/providers/sftp/decorators/sensors/__init__.py +0 -0
  23. {apache_airflow_providers_sftp-5.2.0 → apache_airflow_providers_sftp-5.2.1rc1}/src/airflow/providers/sftp/decorators/sensors/sftp.py +0 -0
  24. {apache_airflow_providers_sftp-5.2.0 → apache_airflow_providers_sftp-5.2.1rc1}/src/airflow/providers/sftp/get_provider_info.py +0 -0
  25. {apache_airflow_providers_sftp-5.2.0 → apache_airflow_providers_sftp-5.2.1rc1}/src/airflow/providers/sftp/hooks/__init__.py +0 -0
  26. {apache_airflow_providers_sftp-5.2.0 → apache_airflow_providers_sftp-5.2.1rc1}/src/airflow/providers/sftp/operators/__init__.py +0 -0
  27. {apache_airflow_providers_sftp-5.2.0 → apache_airflow_providers_sftp-5.2.1rc1}/src/airflow/providers/sftp/operators/sftp.py +0 -0
  28. {apache_airflow_providers_sftp-5.2.0 → apache_airflow_providers_sftp-5.2.1rc1}/src/airflow/providers/sftp/sensors/__init__.py +0 -0
  29. {apache_airflow_providers_sftp-5.2.0 → apache_airflow_providers_sftp-5.2.1rc1}/src/airflow/providers/sftp/sensors/sftp.py +0 -0
  30. {apache_airflow_providers_sftp-5.2.0 → apache_airflow_providers_sftp-5.2.1rc1}/src/airflow/providers/sftp/triggers/__init__.py +0 -0
  31. {apache_airflow_providers_sftp-5.2.0 → apache_airflow_providers_sftp-5.2.1rc1}/src/airflow/providers/sftp/triggers/sftp.py +0 -0
  32. {apache_airflow_providers_sftp-5.2.0 → apache_airflow_providers_sftp-5.2.1rc1}/src/airflow/providers/sftp/version_compat.py +0 -0
  33. {apache_airflow_providers_sftp-5.2.0 → apache_airflow_providers_sftp-5.2.1rc1}/tests/conftest.py +0 -0
  34. {apache_airflow_providers_sftp-5.2.0 → apache_airflow_providers_sftp-5.2.1rc1}/tests/system/__init__.py +0 -0
  35. {apache_airflow_providers_sftp-5.2.0 → apache_airflow_providers_sftp-5.2.1rc1}/tests/system/sftp/__init__.py +0 -0
  36. {apache_airflow_providers_sftp-5.2.0 → apache_airflow_providers_sftp-5.2.1rc1}/tests/system/sftp/example_sftp_sensor.py +0 -0
  37. {apache_airflow_providers_sftp-5.2.0 → apache_airflow_providers_sftp-5.2.1rc1}/tests/unit/__init__.py +0 -0
  38. {apache_airflow_providers_sftp-5.2.0 → apache_airflow_providers_sftp-5.2.1rc1}/tests/unit/sftp/__init__.py +0 -0
  39. {apache_airflow_providers_sftp-5.2.0 → apache_airflow_providers_sftp-5.2.1rc1}/tests/unit/sftp/decorators/__init__.py +0 -0
  40. {apache_airflow_providers_sftp-5.2.0 → apache_airflow_providers_sftp-5.2.1rc1}/tests/unit/sftp/decorators/sensors/__init__.py +0 -0
  41. {apache_airflow_providers_sftp-5.2.0 → apache_airflow_providers_sftp-5.2.1rc1}/tests/unit/sftp/decorators/sensors/test_sftp.py +0 -0
  42. {apache_airflow_providers_sftp-5.2.0 → apache_airflow_providers_sftp-5.2.1rc1}/tests/unit/sftp/hooks/__init__.py +0 -0
  43. {apache_airflow_providers_sftp-5.2.0 → apache_airflow_providers_sftp-5.2.1rc1}/tests/unit/sftp/operators/__init__.py +0 -0
  44. {apache_airflow_providers_sftp-5.2.0 → apache_airflow_providers_sftp-5.2.1rc1}/tests/unit/sftp/operators/test_sftp.py +0 -0
  45. {apache_airflow_providers_sftp-5.2.0 → apache_airflow_providers_sftp-5.2.1rc1}/tests/unit/sftp/sensors/__init__.py +0 -0
  46. {apache_airflow_providers_sftp-5.2.0 → apache_airflow_providers_sftp-5.2.1rc1}/tests/unit/sftp/sensors/test_sftp.py +0 -0
  47. {apache_airflow_providers_sftp-5.2.0 → apache_airflow_providers_sftp-5.2.1rc1}/tests/unit/sftp/triggers/__init__.py +0 -0
  48. {apache_airflow_providers_sftp-5.2.0 → apache_airflow_providers_sftp-5.2.1rc1}/tests/unit/sftp/triggers/test_sftp.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: apache-airflow-providers-sftp
3
- Version: 5.2.0
3
+ Version: 5.2.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>
@@ -20,15 +20,15 @@ Classifier: Programming Language :: Python :: 3.10
20
20
  Classifier: Programming Language :: Python :: 3.11
21
21
  Classifier: Programming Language :: Python :: 3.12
22
22
  Classifier: Topic :: System :: Monitoring
23
- Requires-Dist: apache-airflow>=2.9.0
24
- Requires-Dist: apache-airflow-providers-ssh>=2.1.0
23
+ Requires-Dist: apache-airflow>=2.9.0rc0
24
+ Requires-Dist: apache-airflow-providers-ssh>=2.1.0rc0
25
25
  Requires-Dist: paramiko>=2.9.0
26
26
  Requires-Dist: asyncssh>=2.12.0
27
27
  Requires-Dist: apache-airflow-providers-common-compat ; extra == "common-compat"
28
28
  Requires-Dist: apache-airflow-providers-openlineage ; extra == "openlineage"
29
29
  Project-URL: Bug Tracker, https://github.com/apache/airflow/issues
30
- Project-URL: Changelog, https://airflow.apache.org/docs/apache-airflow-providers-sftp/5.2.0/changelog.html
31
- Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-sftp/5.2.0
30
+ Project-URL: Changelog, https://airflow.apache.org/docs/apache-airflow-providers-sftp/5.2.1/changelog.html
31
+ Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-sftp/5.2.1
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: openlineage
61
61
 
62
62
  Package ``apache-airflow-providers-sftp``
63
63
 
64
- Release: ``5.2.0``
64
+ Release: ``5.2.1``
65
65
 
66
66
 
67
67
  `SSH File Transfer Protocol (SFTP) <https://tools.ietf.org/wg/secsh/draft-ietf-secsh-filexfer/>`__
@@ -74,7 +74,7 @@ This is a provider package for ``sftp`` provider. All classes for this provider
74
74
  are in ``airflow.providers.sftp`` 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-sftp/5.2.0/>`_.
77
+ in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-sftp/5.2.1/>`_.
78
78
 
79
79
  Installation
80
80
  ------------
@@ -119,5 +119,5 @@ Dependent package
119
119
  ================================================================================================================== =================
120
120
 
121
121
  The changelog for the provider package can be found in the
122
- `changelog <https://airflow.apache.org/docs/apache-airflow-providers-sftp/5.2.0/changelog.html>`_.
122
+ `changelog <https://airflow.apache.org/docs/apache-airflow-providers-sftp/5.2.1/changelog.html>`_.
123
123
 
@@ -23,7 +23,7 @@
23
23
 
24
24
  Package ``apache-airflow-providers-sftp``
25
25
 
26
- Release: ``5.2.0``
26
+ Release: ``5.2.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.2.0/>`_.
39
+ in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-sftp/5.2.1/>`_.
40
40
 
41
41
  Installation
42
42
  ------------
@@ -81,4 +81,4 @@ Dependent package
81
81
  ================================================================================================================== =================
82
82
 
83
83
  The changelog for the provider package can be found in the
84
- `changelog <https://airflow.apache.org/docs/apache-airflow-providers-sftp/5.2.0/changelog.html>`_.
84
+ `changelog <https://airflow.apache.org/docs/apache-airflow-providers-sftp/5.2.1/changelog.html>`_.
@@ -27,6 +27,17 @@
27
27
  Changelog
28
28
  ---------
29
29
 
30
+ 5.2.1
31
+ .....
32
+
33
+ Misc
34
+ ~~~~
35
+
36
+ * ``remove superfluous else block (#49199)``
37
+
38
+ .. Below changes are excluded from the changelog. Move them to
39
+ appropriate section above if needed. Do not delete the lines(!):
40
+
30
41
  5.2.0
31
42
  .....
32
43
 
@@ -34,14 +34,26 @@ For high-level changelog, see :doc:`package information including changelog <ind
34
34
 
35
35
 
36
36
 
37
+ 5.2.1
38
+ .....
39
+
40
+ Latest change: 2025-04-14
41
+
42
+ ================================================================================================== =========== ==========================================
43
+ Commit Committed Subject
44
+ ================================================================================================== =========== ==========================================
45
+ `cb295c351a <https://github.com/apache/airflow/commit/cb295c351a016c0a10cab07f2a628b865cff3ca3>`__ 2025-04-14 ``remove superfluous else block (#49199)``
46
+ ================================================================================================== =========== ==========================================
47
+
37
48
  5.2.0
38
49
  .....
39
50
 
40
- Latest change: 2025-04-08
51
+ Latest change: 2025-04-10
41
52
 
42
53
  ================================================================================================== =========== ==================================================================================
43
54
  Commit Committed Subject
44
55
  ================================================================================================== =========== ==================================================================================
56
+ `4a8567b20b <https://github.com/apache/airflow/commit/4a8567b20bdd6555cbdc936d6674bf4fa390b0d5>`__ 2025-04-10 ``Prepare docs for Apr 2nd wave of providers (#49051)``
45
57
  `7612f4ba68 <https://github.com/apache/airflow/commit/7612f4ba68b7a6d767107f35accb9910776590ad>`__ 2025-04-08 ``Implement concurrent directory transfer in SFTPOperator (#47533)``
46
58
  `7b2ec33c7a <https://github.com/apache/airflow/commit/7b2ec33c7ad4998d9c9735b79593fcdcd3b9dd1f>`__ 2025-04-08 ``Remove unnecessary entries in get_provider_info and update the schema (#48849)``
47
59
  `86d5b27f92 <https://github.com/apache/airflow/commit/86d5b27f92207571ebe0c29a42c42abbf6f8cb8c>`__ 2025-04-08 ``Make '@task' import from airflow.sdk (#48896)``
@@ -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.2.0
73
+ Release: 5.2.1
74
74
 
75
75
  Provider package
76
76
  ----------------
@@ -126,5 +126,5 @@ Downloading official packages
126
126
  You can download officially released packages and verify their checksums and signatures from the
127
127
  `Official Apache Download site <https://downloads.apache.org/airflow/providers/>`_
128
128
 
129
- * `The apache-airflow-providers-sftp 5.2.0 sdist package <https://downloads.apache.org/airflow/providers/apache_airflow_providers_sftp-5.2.0.tar.gz>`_ (`asc <https://downloads.apache.org/airflow/providers/apache_airflow_providers_sftp-5.2.0.tar.gz.asc>`__, `sha512 <https://downloads.apache.org/airflow/providers/apache_airflow_providers_sftp-5.2.0.tar.gz.sha512>`__)
130
- * `The apache-airflow-providers-sftp 5.2.0 wheel package <https://downloads.apache.org/airflow/providers/apache_airflow_providers_sftp-5.2.0-py3-none-any.whl>`_ (`asc <https://downloads.apache.org/airflow/providers/apache_airflow_providers_sftp-5.2.0-py3-none-any.whl.asc>`__, `sha512 <https://downloads.apache.org/airflow/providers/apache_airflow_providers_sftp-5.2.0-py3-none-any.whl.sha512>`__)
129
+ * `The apache-airflow-providers-sftp 5.2.1 sdist package <https://downloads.apache.org/airflow/providers/apache_airflow_providers_sftp-5.2.1.tar.gz>`_ (`asc <https://downloads.apache.org/airflow/providers/apache_airflow_providers_sftp-5.2.1.tar.gz.asc>`__, `sha512 <https://downloads.apache.org/airflow/providers/apache_airflow_providers_sftp-5.2.1.tar.gz.sha512>`__)
130
+ * `The apache-airflow-providers-sftp 5.2.1 wheel package <https://downloads.apache.org/airflow/providers/apache_airflow_providers_sftp-5.2.1-py3-none-any.whl>`_ (`asc <https://downloads.apache.org/airflow/providers/apache_airflow_providers_sftp-5.2.1-py3-none-any.whl.asc>`__, `sha512 <https://downloads.apache.org/airflow/providers/apache_airflow_providers_sftp-5.2.1-py3-none-any.whl.sha512>`__)
@@ -22,9 +22,10 @@ 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: 1744282480
25
+ source-date-epoch: 1744792349
26
26
  # note that those versions are maintained by release manager - do not update them manually
27
27
  versions:
28
+ - 5.2.1
28
29
  - 5.2.0
29
30
  - 5.1.2
30
31
  - 5.1.1
@@ -25,7 +25,7 @@ build-backend = "flit_core.buildapi"
25
25
 
26
26
  [project]
27
27
  name = "apache-airflow-providers-sftp"
28
- version = "5.2.0"
28
+ version = "5.2.1.rc1"
29
29
  description = "Provider package apache-airflow-providers-sftp for Apache Airflow"
30
30
  readme = "README.rst"
31
31
  authors = [
@@ -57,8 +57,8 @@ requires-python = "~=3.9"
57
57
  # Make sure to run ``breeze static-checks --type update-providers-dependencies --all-files``
58
58
  # After you modify the dependencies, and rebuild your Breeze CI image with ``breeze ci-image build``
59
59
  dependencies = [
60
- "apache-airflow>=2.9.0",
61
- "apache-airflow-providers-ssh>=2.1.0",
60
+ "apache-airflow>=2.9.0rc0",
61
+ "apache-airflow-providers-ssh>=2.1.0rc0",
62
62
  "paramiko>=2.9.0",
63
63
  "asyncssh>=2.12.0",
64
64
  ]
@@ -110,8 +110,8 @@ apache-airflow-providers-common-sql = {workspace = true}
110
110
  apache-airflow-providers-standard = {workspace = true}
111
111
 
112
112
  [project.urls]
113
- "Documentation" = "https://airflow.apache.org/docs/apache-airflow-providers-sftp/5.2.0"
114
- "Changelog" = "https://airflow.apache.org/docs/apache-airflow-providers-sftp/5.2.0/changelog.html"
113
+ "Documentation" = "https://airflow.apache.org/docs/apache-airflow-providers-sftp/5.2.1"
114
+ "Changelog" = "https://airflow.apache.org/docs/apache-airflow-providers-sftp/5.2.1/changelog.html"
115
115
  "Bug Tracker" = "https://github.com/apache/airflow/issues"
116
116
  "Source Code" = "https://github.com/apache/airflow"
117
117
  "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__ = "5.2.0"
32
+ __version__ = "5.2.1"
33
33
 
34
34
  if packaging.version.parse(packaging.version.parse(airflow_version).base_version) < packaging.version.parse(
35
35
  "2.9.0"
@@ -244,16 +244,15 @@ class SFTPHook(SSHHook):
244
244
  if self.isdir(path):
245
245
  self.log.info("%s already exists", path)
246
246
  return
247
- elif self.isfile(path):
247
+ if self.isfile(path):
248
248
  raise AirflowException(f"{path} already exists and is a file")
249
- else:
250
- dirname, basename = os.path.split(path)
251
- if dirname and not self.isdir(dirname):
252
- self.create_directory(dirname, mode)
253
- if basename:
254
- self.log.info("Creating %s", path)
255
- with self.get_managed_conn() as conn:
256
- conn.mkdir(path, mode=mode)
249
+ dirname, basename = os.path.split(path)
250
+ if dirname and not self.isdir(dirname):
251
+ self.create_directory(dirname, mode)
252
+ if basename:
253
+ self.log.info("Creating %s", path)
254
+ with self.get_managed_conn() as conn:
255
+ conn.mkdir(path, mode=mode)
257
256
 
258
257
  def delete_directory(self, path: str, include_files: bool = False) -> None:
259
258
  """
@@ -587,22 +587,19 @@ class MockSFTPClient:
587
587
  async def listdir(self, path: str):
588
588
  if path == "/path/does_not/exist/":
589
589
  raise SFTPNoSuchFile("File does not exist")
590
- else:
591
- return ["..", ".", "file"]
590
+ return ["..", ".", "file"]
592
591
 
593
592
  async def readdir(self, path: str):
594
593
  if path == "/path/does_not/exist/":
595
594
  raise SFTPNoSuchFile("File does not exist")
596
- else:
597
- return [SFTPName(".."), SFTPName("."), SFTPName("file")]
595
+ return [SFTPName(".."), SFTPName("."), SFTPName("file")]
598
596
 
599
597
  async def stat(self, path: str):
600
598
  if path == "/path/does_not/exist/":
601
599
  raise SFTPNoSuchFile("No files matching")
602
- else:
603
- sftp_obj = SFTPAttrs()
604
- sftp_obj.mtime = 1667302566
605
- return sftp_obj
600
+ sftp_obj = SFTPAttrs()
601
+ sftp_obj.mtime = 1667302566
602
+ return sftp_obj
606
603
 
607
604
 
608
605
  class MockSSHClient: