Skip to main content

🫰 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 glove

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.

Test Python application Python 3.9+ Coverage Status License: MIT

⚠️ 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 .thanosignore using 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 pipx (recommended for CLI use)

pipx install thanos-cli

Installs thanos as an isolated CLI tool available system-wide without polluting your global Python environment.

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 .tmp or .log files
  • 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
  • -p, --percent <INT> — Percentage of files to eliminate (default: 50, range: 1–100)
  • --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

thanos_cli-0.4.0.tar.gz (85.1 kB view details)

Uploaded Source

Built Distribution

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

thanos_cli-0.4.0-py3-none-any.whl (13.8 kB view details)

Uploaded Python 3

File details

Details for the file thanos_cli-0.4.0.tar.gz.

File metadata

  • Download URL: thanos_cli-0.4.0.tar.gz
  • Upload date:
  • Size: 85.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.17

File hashes

Hashes for thanos_cli-0.4.0.tar.gz
Algorithm Hash digest
SHA256 983c27c207c78ae99a889e9db115cca8bf002c35e647e74df78a811560f43f70
MD5 9b4bbed4ce960ecb49b85b7f08fc08dc
BLAKE2b-256 388fb3cbf52e6bf2652fd1398a60d079e8ffd421f699151f9aa7da9109b6f634

See more details on using hashes here.

File details

Details for the file thanos_cli-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: thanos_cli-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 13.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.17

File hashes

Hashes for thanos_cli-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 83b7970a430e302554e3908787ed399cd88f31e7d1733ea07edcec8154049698
MD5 6534dd70d9d2c4529bdda92fcd64259b
BLAKE2b-256 adb8b6564528bde66ed489ce596422e73c0456a1cd57a64e96d24ee73e491ad3

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