Skip to main content

Filepass Package

Filepass package is a comprehensive Python package designed to facilitate the transfer of the files across different locations and protocols with ease. It supports SFTP, SMB, and LOCAL file systems, and offers functionalities like file renaming (in single file mode) and selective file transfer based on assigned filter. It also offeres advanced file management features such as conditional deletion of files. With support for both custom handler and local logging, 'Filepass' ensures that you can keep a detailed log of your file trasnfers, making troubleshooting and monitoring a breeze.

This package is available as:

  • A PyPI library, which can be installed via pip.
  • A GitHub Container Registry (GHCR) package, allowing you to pull and run it via docker.

Features

  • Multiple Protocols Support: Seamlessly transfer files using SFTP, SMB, and LOCAL file systems.

  • Flexible File Selection: Use 'from_filter' parameter to specify exactly which files to transfer, supporting both specific filenames and wildcards for multiple files.

  • File Renaming (in single file transfer mode) Easily rename files during single file transfer mode.

  • Connection Objects: Utilize the pre-defined connnection objects for efficient and secure connections to server.

  • Conditional File Deletion: Automatically delete older files at the destination before transfer using 'to_delete', or remove source files after a successful transfer using 'from_delete'.

  • Advanced Logging: Enable custom logging handler by defining the server name, port number and adding the handler to the logger defined. Otherwise, default to local logging to stdout for monitoring and troubleshooting.

Installation

From PyPI

To install the package from PyPI, run:

pip install filepass

From GitHub Container Registry

To pull and run the image using Docker, run:

docker pull ghcr.io/cityofkamloops/filepass:latest

docker run ghcr.io/cityofkamloops/filepass:latest

Quick Start

  1. Import Filepass package: e.g.: from filepass import file_pass, ConnectionDetails, FilepassMethod

  2. Set up connection - create a connection object (ConnectionDetails) based on your protocol of choice. FilepassMethod offers three protocols: SFTP, SMB, and LOCAL. e.g.:

sourceServer = ConnectionDetails(
method=FilepassMethod.SMB,
user="user",
password="password",
server="servername",
port="portnumber",
dir="directory/folder",
share="SMB share",
)
destinationServer = ConnectionDetails(
    method=FilepassMethod.SFTP,
    user="user",
    password="password",
    server="servername",
    port="portnumber",
    dir="directory/folder",
)
  1. Configure Logging:(Optional) If you want to enable custom handler logging, such as Graylog logging. Set the server details as follows: Example: Graylog
  • Import the required library for custom logging - import graypy
  • Add the handler to your defined logger:
handler = graypy. graypy.GELFTCPHandler(
    ("servername"), int("portnumber")
)

If you want to simply use local logging:

  • Import python logging package.
  • Define the logger and handler.
      • E.g., handler = logging.StreamHandler(sys.stdout)
  • Add the handler to your defined logger.
  1. Define the required parameters for file transfer:
  • from_filter = "filename/wildcard" e.g.
from_filter = "*.txt"  #transfers all files in the directory, with .txt extension.
from_filter = "transfer_file.csv"  #transfers the selected file.
  • to_delete = "yes or no".
  • from_delete = "yes or no".
  • logger = set custom handler or local handler.
  1. Rename file in single file transfer mode: Rename a file during transfer by specifying the new_filename parameter such as:
  • e.g.,
new_filename = "newfilename"

Defaults to 'None', if parameter is not defined.

  1. Transfer Files: Use the file_pass method to move files to move files from one location to another.
  • e.g.,
file_pass(
    logger,
    from_conn,
    to_conn,
    from_filter,
    to_delete,
    from_delete,
    new_filename,
)

Support

If you encounter any issues or have questions, please file an issue on our GitHub Issues Page

Contributing

Contributions to Filepass are welcome! Please refer to our Contribution Guidelines

Ways to Contribute

  • Submit bug reports and feature requests.
  • Write and improve documentation.
  • Write code for new features and bug fixes.
  • Review pull requests.
  • Enhance the package's test coverage.

Code of Conduct

  • Participation in this project is governed by The City of Kamloops Code of Conduct. We expect everyone to uphold the principles of respect, kindness and cooperation.

How to submit contributions

  • Reporting bugs:
  • Use the issue tracker to report bugs.
  • Describe the bug and include steps to reproduce.
  • Feature Requests:
  • Submit feature requests using the issue tracker.
  • Please include an explanation why the feature would be useful, and how it should work if possible.
  • Pull Requests:
  • Fork the repository and create your branch from 'main'.
  • If you have added code, please include tests.
  • Ensure your project lints and follows the project's coding conventions.
  • Write a clear and descriptive commit message.
  • Open a pull request with a clear title and description.

Thank you!!

Happy file transferring!

Download files

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

Source Distribution

filepass-1.0.5.tar.gz (12.7 kB view details)

Uploaded Source

Built Distribution

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

filepass-1.0.5-py3-none-any.whl (10.9 kB view details)

Uploaded Python 3

File details

Details for the file filepass-1.0.5.tar.gz.

File metadata

  • Download URL: filepass-1.0.5.tar.gz
  • Upload date:
  • Size: 12.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for filepass-1.0.5.tar.gz
Algorithm Hash digest
SHA256 f43499bc809237911493dd26e9a6c246060266370a01fbba85a5fcf969879281
MD5 dd616076b93432adabd2cc486d42882a
BLAKE2b-256 e885e007a30f061e01ba95c1aeb18ad044fae2819eb863980d36ae39381a63e5

See more details on using hashes here.

Provenance

The following attestation bundles were made for filepass-1.0.5.tar.gz:

Publisher: publish.yml on cityofkamloops/filepass

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file filepass-1.0.5-py3-none-any.whl.

File metadata

  • Download URL: filepass-1.0.5-py3-none-any.whl
  • Upload date:
  • Size: 10.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for filepass-1.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 a77717defc3ed99cb457cff32594e09bae5597f43876cae71badddde1ab86caa
MD5 10208be5e725f520ab4da98ea9835cb5
BLAKE2b-256 9dc71f042038e0af0428e59e60bccbff7f2d4485be68e923d0074f6ead784a9e

See more details on using hashes here.

Provenance

The following attestation bundles were made for filepass-1.0.5-py3-none-any.whl:

Publisher: publish.yml on cityofkamloops/filepass

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

1.0.5 This release

2 files

1.0.4

2 files

1.0.3

2 files

1.0.2

2 files

1.0.1

2 files

1.0.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page