A versatile Python package for uploading files to multiple storage backends including local, S3, Azure ADLS, and Blob storage. Supports ZIP file extraction and multiple file uploads.
Project description
File Uploader
A Python package for seamlessly uploading files to various storage backends (Local, S3, Azure Blob, ADLS) with job tracking, error logging, and comprehensive file management capabilities.
Features
- Multiple storage backend support:
- Local filesystem
- AWS S3
- Azure Blob Storage
- Azure Data Lake Storage (ADLS)
- Robust job tracking with SQLite database
- Detailed error logging and exception handling
- Intelligent folder structure with date-based organization
- Advanced ZIP file support with safety checks:
- File size validation (100MB per file limit)
- Total uncompressed size limit (200MB)
- Zip file integrity verification
- Custom date handling for file organization
- Comprehensive error handling and custom exceptions
- Support for file metadata tracking
Installation
pip install pyspfileuploader
Configuration
The package uses environment variables for configuration. Create a .env file with the required variables based on your chosen storage type:
Local Storage
STORAGE_TYPE=local
BASE_PATH=/path/to/storage
AWS S3
STORAGE_TYPE=s3
AWS_BUCKET_NAME=your-bucket
AWS_ACCESS_KEY_ID=your-access-key
AWS_SECRET_ACCESS_KEY=your-secret-key
REGION_NAME=us-east-1 # optional
Azure Blob Storage
STORAGE_TYPE=blob
BLOB_CONNECTION_STRING=your-connection-string
BLOB_CONTAINER_NAME=your-container
Azure Data Lake Storage
STORAGE_TYPE=adls
ADLS_ACCOUNT_NAME=your-account
ADLS_FILE_SYSTEM_NAME=your-filesystem
ADLS_CREDENTIAL=your-credential
Usage
Command Line
pyspfileuploader /path/to/file [job_id] [storage_type] [created_date]
Python API
from file_uploader import upload_file, display_job_details
# Simple upload with automatic job ID generation
job_id = upload_file("/path/to/file")
# Upload with custom job ID and storage type
job_id = upload_file("/path/to/file", job_id="CUSTOM_JOB_ID_001", storage_type="s3")
# Upload with specific created date
job_id = upload_file("/path/to/file", created_date="14-07-2025")
# Upload ZIP file (will be automatically extracted and validated)
job_id = upload_file("/path/to/archive.zip")
# Get status for a given file upload
# Default output format set to JSON mode
display_job_details(job_id=job_id, output_format='dataframe')
Storage Backend Selection
The storage backend is determined by the STORAGE_TYPE environment variable. If not specified, it defaults to "local" storage. You can also override the storage type per upload using the storage_type parameter.
File Size Limits
- Individual file size limit: 100MB
- Total uncompressed size limit for ZIP files: 200MB
Job Tracking
Each upload operation is assigned a unique job ID, which can be used to:
- Track the upload status
- Retrieve file metadata
- Access uploaded file locations
Development
- Clone the repository
- Install poetry:
pip install poetry - Install dependencies:
poetry install - Run tests:
poetry run pytest
Contributing
- Fork the repository
- Create a feature branch
- Make your changes
- Run tests
- Submit a pull request
License
MIT License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pyspfileuploader-1.0.4.tar.gz.
File metadata
- Download URL: pyspfileuploader-1.0.4.tar.gz
- Upload date:
- Size: 14.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.3 CPython/3.10.6 Windows/10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
421a8d004170dafab29286b9fa9e96cdad0e85d2c5e437e48d9a6f098be171da
|
|
| MD5 |
3c251abe851da9be78492ddf598cc77d
|
|
| BLAKE2b-256 |
6def64df1bb2ff771d56e863d5c01a16bceb86f1c716245463ae4789127748f4
|
File details
Details for the file pyspfileuploader-1.0.4-py3-none-any.whl.
File metadata
- Download URL: pyspfileuploader-1.0.4-py3-none-any.whl
- Upload date:
- Size: 20.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.3 CPython/3.10.6 Windows/10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
69de88ef4f7069f032a0880102a6a9b304bd4dbc9134ffaa95f90e75d6e4b393
|
|
| MD5 |
d8a42ba188f8a2fc92eda4452888339c
|
|
| BLAKE2b-256 |
c6bfdeaa1d606f691f231d1d5c7e35210bad4a52dc3b5bfaa6568340b13c2b4a
|