Skip to main content

A system to sort your files

Project description

wisort :magic_wand:

Your file-sorting wizard :mage: that manages your file magically :crystal_ball:

Requirements

  • python >=3.14
  • uv (heavily recommended)
  • a UNIX OS

Installation

wisort is published on PyPi

# using uv (recommended)
uv tool install wisort

# or with pip
pip install wisort

if you want to just try out and run the project you can use uvx wisort. Make sure to copy the default config.json to $XDG_CONFIG_HOME(fallback to $HOME/.config).

Concept and features

wisort is supposed to be a file sorting cli. Below can be seen my ideas for the project even if they might not be fully implemented yet. To see the progress go read the ROADMAP It has different characters:

  • apprentice
  • magician (coming soon)
  • witch
  • dragon (coming soon)

These are different magical users so they clean your file system differently. The apprentice is unsure about his work so he leave the most things to you to manually handle (confirmations when deleting etc.). The magician works way more autonomously but is very calm and doesn't destroy anything. This means a lot of capabilties with a good amount of safety. The witch is a brazen sorcerer not afraid of destruction. She cleans your filesystem very very thoroughly.

(As of now magician and witch are not implemented)

The :sparkles: magic :sparkles:

  • smart unzip: archives can be automatically unpacked before being moved. they get moved into a new folder or directly to the destination depending on the content
  • file duplicate removal strategies
    • replace the (older) duplicate by symlink
    • matching exact contents
    • diffing contents
    • intentional duplicate recognition -> diffing file names
  • auto-remove empty files
  • automatic move conflict resolution when the programm wants to move a file somewhere where a file with the same name already exist it can handle that automatically

Config

Configuration is done through config.json file in $XDG_CONFIG_HOME/wisort/

Example:

{
	"runes": {
		"images": ["png", "jpeg", "jpg"]
	},
	"libraries": {
		"pics": {
			"destination": "~/Pictures/",
			"filetypes": "@images",
			"flatten": true
		}
	},
	"orders": {
		"recurse": true,
		"honor_gitignore": true,
		"ignore_dotfiles": true
	},
	"args": {
		"quiet": true,
		"force": false
	}
}

"runes"

Runes are like a key-value store for your config file to create shorthands like above. This works with all filetypes supported by json as values.

"orders" - Specify wisort's behaviour

Order Default Description
"recurse" true Enables recursion through subdirectories of the target directory
"dedupe_strategy" "portal" Specifies how to resolve duplicates. "portal" replaces the duplicate files by symlinks to the original. "remove" deletes the duplicates.
"move_strategy" "flatten" By default this flattens out the file structure in the destination and doesn't preserve the file structure
"honor_gitignore" true This option specifies wether to ignore files as specified in the respective .gitignore files
"delete_empty_files true Wether to delete empty files on deduplication or not

"args" - Default overwrite for CLI arguments

Argument Default Description
"quiet" false Disable dialog and non critical messages
"force" false Overwrites move_conflict_strategy to remove
"verbose" false Shows more information

Usage

For the exact CLI usage do wisort --help

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

wisort-0.2.4.tar.gz (23.1 kB view details)

Uploaded Source

Built Distribution

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

wisort-0.2.4-py3-none-any.whl (11.9 kB view details)

Uploaded Python 3

File details

Details for the file wisort-0.2.4.tar.gz.

File metadata

  • Download URL: wisort-0.2.4.tar.gz
  • Upload date:
  • Size: 23.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for wisort-0.2.4.tar.gz
Algorithm Hash digest
SHA256 e4c828d93f3326734b2bb27a46a2f31a2b2cd5ebe5acef93d14b637f78e51073
MD5 f7518ca0d567525d12d93e06aaf58c71
BLAKE2b-256 9ce8b5727e830e426c66c5021fafc357dd4d6860d95758255fc02ab139db1b3b

See more details on using hashes here.

Provenance

The following attestation bundles were made for wisort-0.2.4.tar.gz:

Publisher: release.yml on vividsystem/wisort

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

File details

Details for the file wisort-0.2.4-py3-none-any.whl.

File metadata

  • Download URL: wisort-0.2.4-py3-none-any.whl
  • Upload date:
  • Size: 11.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for wisort-0.2.4-py3-none-any.whl
Algorithm Hash digest
SHA256 e8e7d86366bdf2737f95e822162ef4a103366d3861cf826d83a3d78612c59324
MD5 5c1b04d863cd4ecc8dd4a90671be1c40
BLAKE2b-256 434f558e679f2759fc9c29e15913f4867755f89f7b9069339051282b3c8944d3

See more details on using hashes here.

Provenance

The following attestation bundles were made for wisort-0.2.4-py3-none-any.whl:

Publisher: release.yml on vividsystem/wisort

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

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