tflink
A simple and easy-to-use Python library for uploading files to tmpfile.link and retrieving download links.
📦 View on PyPI | 📖 Documentation | 🐛 Report Issues
Features
- 🚀 Simple API - Upload files with just 3 lines of code
- 🔒 Anonymous & Authenticated - Support for both upload modes
- 📦 Dual Download Links - Standard and URL-encoded formats
- 🎯 Type Hints - Full type annotations for better IDE experience
- ✅ Fully Tested - Comprehensive test coverage
- 🐍 Python 3.8+ - Modern Python support
Quick Start
Installation
pip install tflink
Upload a File
from tflink import TFLinkClient
# Create client and upload
client = TFLinkClient()
result = client.upload('document.pdf')
# Get download link
print(f"Download: {result.download_link}")
That's it! 🎉
Examples
Anonymous Upload
from tflink import TFLinkClient
client = TFLinkClient()
result = client.upload('document.pdf')
print(f"File: {result.file_name}")
print(f"Size: {result.size:,} bytes")
print(f"Link: {result.download_link}")
Authenticated Upload
from tflink import TFLinkClient
client = TFLinkClient(
user_id='YOUR_USER_ID',
auth_token='YOUR_AUTH_TOKEN'
)
result = client.upload('document.pdf')
print(f"Download: {result.download_link}")
Error Handling
from tflink import TFLinkClient
from tflink.exceptions import TFLinkError
client = TFLinkClient()
try:
result = client.upload('document.pdf')
print(f"Success: {result.download_link}")
except TFLinkError as e:
print(f"Error: {e}")
Download Links
tflink provides two download link formats:
download_link- Human-readable, perfect for sharing with usersdownload_link_encoded- URL-safe, ideal for API integrations
result = client.upload('file.pdf')
# For users
print(result.download_link)
# https://d.tmpfile.link/public/2025-07-31/uuid/file.pdf
# For APIs
print(result.download_link_encoded)
# https://d.tmpfile.link/public%2F2025-07-31%2Fuuid%2Ffile.pdf
Both links point to the same file. Use download_link for most cases.
Documentation
- 📖 Getting Started Guide - Detailed tutorials and examples
- 📚 API Reference - Complete API documentation
- 🛠️ Developer Guide - For contributors and maintainers
API Overview
TFLinkClient
TFLinkClient(
user_id: str | None = None,
auth_token: str | None = None,
base_url: str = "https://tmpfile.link",
timeout: int = 300,
max_file_size: int = 104857600 # 100MB default
)
Methods:
upload(file_path, filename=None)- Upload a file (max 100MB by default)is_authenticated()- Check authentication status
File Size Limit:
- Default: 100MB (104,857,600 bytes)
- Files exceeding the limit are rejected before upload
- Saves time and bandwidth
UploadResult
Attributes:
file_name- Uploaded file namedownload_link- Standard download URLdownload_link_encoded- URL-encoded download URLsize- File size in bytesfile_type- MIME typeuploaded_to- Upload destination
Exceptions
TFLinkError- Base exceptionFileNotFoundError- File not foundUploadError- Upload failedAuthenticationError- Invalid credentialsNetworkError- Network request failed
Development
Install Development Dependencies
pip install -e ".[dev]"
Run Tests
make test # Run tests
make test-cov # Run with coverage
make quick-test # Quick functionality test
Code Quality
make format # Format code with black
make lint # Run linters (flake8, mypy)
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Changelog
See CHANGELOG.md for version history and changes.
License
MIT License - see LICENSE file for details.
Links
- PyPI: https://pypi.org/project/tflink/
- GitHub: https://github.com/tflink-tmpfile/tflink
- Documentation: https://github.com/tflink-tmpfile/tflink/tree/main/docs
- tmpfile.link: https://tmpfile.link
- Issues: https://github.com/tflink-tmpfile/tflink/issues
- Email: pypi@tmpfile.link
Support
- 📧 Email: pypi@tmpfile.link
- 🐛 Issues: GitHub Issues
- 📖 Docs: Documentation
Made with ❤️ for the tmpfile.link community
Metadata
Release files for tflink 0.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| tflink-0.2.1.tar.gz | 10.0 kB | Without provenance | Details for tflink-0.2.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| tflink-0.2.1-py3-none-any.whl | Python 3 | none | any | Details for tflink-0.2.1-py3-none-any.whl |
Total release size: 18.7 kB
Release files / tflink-0.2.1.tar.gz
| Download URL | tflink-0.2.1.tar.gz |
|---|---|
| Size | 10.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0b613475d85193b26b5d4d5e80ec2ee7f3c276bf4a20390bd61ab35ea72dc4be
|
|
BLAKE2b-256 checksum How to use checksums |
8ffc0e7f407cedb8e1d4178feab4296b494574ad8cba22ca1869927ff36f08ad
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.0
|
Release files / tflink-0.2.1-py3-none-any.whl
| Download URL | tflink-0.2.1-py3-none-any.whl |
|---|---|
| Size | 8.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ea79e528e420890f3f339ceaafa66787f20fb22933a38f67b1ec417e65b196e4
|
|
BLAKE2b-256 checksum How to use checksums |
beea598ec9cdf5a8b97b8c2bf06384e820f2624ac4ab707d1c432151cdfe01fb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.0
|
Security for tflink 0.2.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.