Skip to main content

FTP filesystem for PyFilesystem2

Project description

miarec_ftpfs

Actions

MiaRec FTPFS is a PyFilesystem interface to FTP/FTPS storage.

This a fork of the builtin FTPFS class from PyFileSystem2 project, written by Will McGugan (email willmcgugan@gmail.com).

The code was modified by MiaRec team to fullfill our needs.

Notable differences between miarec_ftpfs.FTPFS and fs.FTPFS

  1. Requires Python 3.6+. A support of Python 2.7 is removed.

  2. Opener protocol prefixes are mftp:// and mftps:// for FTP and FTP-over-TLS respectively (instead of the original ftp:// and ftps://)

  3. Add Implicit TLS support

  4. Fix bugs in Explicit TLS implementation

  5. Automatically try to re-open FTP connection on the next operation in case of network issues. Previously, the FTPFS object was stuck in error state, and any operations on the file system instance, like openbin(), listdir(), etc, were failing infinitely.

  6. Better error handling. All FTP protocol-specific and SSL errors are converted into corresponding FSError exception

Installing

You can install FTPFS from pip as follows:

pip install miarec_ftpfs

This will install the most recent stable version.

Alternatively, if you want the cutting edge code, you can check out the GitHub repos at https://github.com/miarec/miarec_ftpfs

Opening a FTPFS

Open an FTPFS by explicitly using the constructor:

from fs.ftpfs import FTPFS
FTPFS("demo.wftpserver.com")

Or via an FS URL:

ftp_fs = fs.open_fs('mftp://test.rebex.net')

Or via an FS URL, using TLS:

ftp_fs = fs.open_fs('mftps://demo.wftpserver.com')

You can also use a non-anonymous username, and optionally a password, even within a FS URL:

ftp_fs = FTPFS("test.rebex.net", user="demo", passwd="password")
ftp_fs = fs.open_fs('mftp://demo:password@test.rebex.net')

Connecting via a proxy is supported. If using a FS URL, the proxy URL will need to be added as a URL parameter:

ftp_fs = FTPFS("ftp.ebi.ac.uk", proxy="test.rebex.net")
ftp_fs = fs.open_fs('mftp://ftp.ebi.ac.uk/?proxy=test.rebex.net')

Testing

Automated unit tests are run on GitHub Actions

To run the tests locally, do the following.

Create activate python virtual environment:

python -m vevn venv
source venv\bin\activate

Install the project and test dependencies:

pip install -e ".[test]"

Run tests:

pytest

Documentation

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

miarec_ftpfs-2025.5.27.tar.gz (24.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

miarec_ftpfs-2025.5.27-py2.py3-none-any.whl (17.6 kB view details)

Uploaded Python 2Python 3

File details

Details for the file miarec_ftpfs-2025.5.27.tar.gz.

File metadata

  • Download URL: miarec_ftpfs-2025.5.27.tar.gz
  • Upload date:
  • Size: 24.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for miarec_ftpfs-2025.5.27.tar.gz
Algorithm Hash digest
SHA256 c72e0c8a7088f6c76b3a804e03d615a9598b15b93d30c9cff32e6100baba6db3
MD5 a7ba44d66ddf84ae7627aa7f0f3b3bd9
BLAKE2b-256 885d5c999c66b4f1e4182d2de92a38d18432c4d191ab244ebd6228129cf00b34

See more details on using hashes here.

File details

Details for the file miarec_ftpfs-2025.5.27-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for miarec_ftpfs-2025.5.27-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 e6713e35ee0a42c3717f5bbe976c9dd7a3fc8c90f217bcabd8ccc13e9363e439
MD5 e8f2df4535374e62f466bf45bae6eb10
BLAKE2b-256 e89616cc6c0e97c5d9d6eec2f50cea181f2d2fd959c31a79fe9142f456cc03c3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page