🫰 Thanos - Eliminate half of all files with a snap. Perfectly balanced, as all things should be.
Project description
🫰 Thanos
"Perfectly balanced, as all things should be."
A Python CLI tool that randomly eliminates half of the files in a directory with a snap. Inspired by Marvel's Thanos and his infamous snap.
⚠️ Warning
This tool permanently deletes files! Use --dry-run first to preview what would be deleted. Deleted files cannot be
recovered. Use at your own risk!
✨ Features
- 🗑️ Trash Mode: Optionally move files to the system trash/recycle bin instead of permanent deletion.
- ⚖️ Weighted Selection: Configure probabilities based on file age, size, or extension.
- 🛡️ Smart Protections: Automatically protects
.git,node_modules,venv, and system files. - 🚫 Custom Ignore: Support for
.thanosignoreusing gitignore syntax. - 🎲 Reproducibility: Use seeds to ensure the exact same files are selected every time.
- 📁 Recursive Support: Optionally include files in subdirectories.
📦 Installation
Using uv (recommended)
uv add thanos-cli
uv pip install thanos-cli # <- if you don't have pyproject.toml
Using pip
pip install thanos-cli
🚀 Quick Start
1. Initialize Configuration
Create default .thanosignore and .thanosrc.json files in your project:
thanos init
2. Preview the Snap
Always start with a dry run to see the "dead" files without deleting them:
thanos snap --dry-run
3. Execute
When you are ready to restore balance:
# Permanent deletion (Standard Snap)
thanos snap
# Safer Snap (Move to Trash)
thanos snap --trash
⚙️ Configuration
Thanos supports advanced configuration to control the chaos.
.thanosignore
Protect specific files or folders from being snapped (gitignore syntax):
# Protect specific folders
src/
important_docs/
!debug.log
.thanosrc.json
Define weights (0.0 to 1.0) to make specific files more or less likely to be eliminated.
- 0.0: Never eliminate
- 0.5: Neutral (Default)
- 1.0: Always eliminate
Supported weight types:
- by_extension — e.g., target
.tmpor.logfiles - by_age_days — e.g., target files older than
30+days - by_size_mb — e.g., target files larger than
100+MB
See docs/configuration.md for the full schema.
📖 Commands
The CLI structure:
thanos init— Generate configuration files.thanos snap [DIRECTORY] [OPTIONS]— Main command to eliminate files.
Options:
-t, --trash— Move files to system trash instead of permanent deletion.-r, --recursive— Include subdirectories-d, --dry-run— Preview without deleting--seed <INT>— Set seed for reproducibility--no-protect— Disable protections (dangerous)
For detailed usage, see docs/usage.md.
📝 License
This project is licensed under the MIT License - see the LICENSE file for details.
🤔 FAQ
Q: Can I recover deleted files? A: If you use the --trash flag, YES, you can restore them from your system's Recycle Bin/Trash. If you run the standard command without that flag, files are permanently deleted.
Q: How are files selected?
A: Randomly, but you can bias the selection using weights in .thanosrc.json.
Q: What is protected by default?
A: .git, .svn, node_modules, venv, __pycache__, .env, and more.
Q: What if I have an odd number of files? A: If you have 11 files, 5 will be deleted (11 // 2 = 5) and 6 will remain.
🙏 Acknowledgments
- Inspired by the Marvel Cinematic Universe
Remember: With great power comes great responsibility. Use Thanos wisely! 🫰
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
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 thanos_cli-0.3.0.tar.gz.
File metadata
- Download URL: thanos_cli-0.3.0.tar.gz
- Upload date:
- Size: 73.9 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.17
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
565b0851138fe72bca2b894c09f8a14666bab3c15113c80319400de75e381b90
|
|
| MD5 |
4f6d44f748bf96eb17dc715bde24d7be
|
|
| BLAKE2b-256 |
ae80ed1d322a8308cab94342ffda84e95408ac4839885e1c4c56aa0d11381aea
|
File details
Details for the file thanos_cli-0.3.0-py3-none-any.whl.
File metadata
- Download URL: thanos_cli-0.3.0-py3-none-any.whl
- Upload date:
- Size: 13.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.17
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
db56e1c2cfdcc464ef84e9c498798f726b18a55f60e0c02f0bfeb62157f4c37b
|
|
| MD5 |
289c069f07a7f2d4ce57e007066a9725
|
|
| BLAKE2b-256 |
4e72c913416706d12c8561e166254d54ba6d54ea58e88560a9edd7574a3b9830
|