Skip to content

Stoupy51/stouputils

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

188 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ› οΈ Project Badges

GitHub PyPI - Downloads Documentation Lint Generated by github-dependents-info

Tests 3.12 Tests 3.13 Tests 3.14 Tests 3.15
Tests 3.13t Tests 3.14t Tests 3.15t

πŸ“š Project Overview

Stouputils is a collection of utility modules designed to simplify and enhance the development process.
It includes a range of tools for tasks such as execution of doctests, display utilities, decorators, as well as context managers.
Start now by installing the package: pip install stouputils.

πŸ“– Want to see examples? Check out our Google Colab notebook with practical usage examples!

πŸš€ CLI Quick Reference

Stouputils provides a powerful command-line interface. Here's a quick example for each subcommand:

# Show version information of polars with dependency tree of depth 3
stouputils --version polars -t 3

# Run all doctests in a directory with pattern filter (fnmatch)
stouputils all_doctests "./src" "*_test"

# Repair a corrupted/obstructed zip archive
stouputils repair "./input.zip" "./output.zip"

# Create a delta backup
stouputils backup delta "./source" "./backups"

# Build and publish to PyPI (with minor version bump and no stubs)
stouputils build minor --no_stubs

# Generate changelog from git history (since a specific date, with commit URLs from origin remote, output to file)
stouputils changelog date "2026-01-01" -r origin -o "CHANGELOG.md"

# Redirect (move) a folder and create a junction/symlink at the original location
stouputils redirect "C:/Games/MyGame" "D:/Games/" --hardlink

πŸ“– See the Extensive CLI Documentation section below for detailed usage and all available options.

πŸš€ Project File Tree

<style> .code-tree { border-radius: 6px; padding: 16px; font-family: monospace; line-height: 1.45; overflow: auto; white-space: pre; background-color:rgb(43, 43, 43); color: #d4d4d4; } .code-tree a { color: #569cd6; text-decoration: none; } .code-tree a:hover { text-decoration: underline; } .code-tree .comment { color:rgb(231, 213, 48); } .code-tree .paren { color: orange; } </style>
stouputils/
β”œβ”€β”€ print         # πŸ–¨οΈ Utility functions for printing (info, debug, warning, error, whatisit, breakpoint, colored_for_loop, ...)
β”œβ”€β”€ decorators    # 🎯 Decorators (measure_time, handle_error, timeout, retry, simple_cache, abstract, deprecated, silent)
β”œβ”€β”€ ctx           # πŸ”‡ Context managers (LogToFile, MeasureTime, Muffle, DoNothing, SetMPStartMethod)
β”œβ”€β”€ io            # πŸ’Ύ Utilities for file management (json_dump, json_load, csv_dump, csv_load, read_file, super_copy, super_open, clean_path, redirect_folder, ...)
β”œβ”€β”€ parallel      # πŸ”€ Utility functions for parallel processing (multiprocessing, multithreading, run_in_subprocess)
β”œβ”€β”€ image         # πŸ–ΌοΈ Little utilities for image processing (image_resize, auto_crop, numpy_to_gif, numpy_to_obj)
β”œβ”€β”€ collections   # 🧰 Utilities for collection manipulation (unique_list, at_least_n, sort_dict_keys, upsert_in_dataframe, array_to_disk)
β”œβ”€β”€ typing        # πŸ“ Utilities for typing enhancements (IterAny, JsonDict, JsonList, ..., convert_to_serializable)
β”œβ”€β”€ all_doctests  # βœ… Run all doctests for all modules in a given directory (launch_tests, test_module_with_progress)
β”œβ”€β”€ backup        # πŸ’Ύ Utilities for backup management (delta backup, consolidate)
β”œβ”€β”€ lock          # πŸ”’ Inter-process FIFO locks (LockFifo, RLockFifo, RedisLockFifo)
β”œβ”€β”€ archive       # πŸ“¦ Functions for creating and managing archives (create, repair)
β”œβ”€β”€ config        # βš™οΈ Global configuration (StouputilsConfig: global options)
β”‚
β”œβ”€β”€ applications/
β”‚   β”œβ”€β”€ automatic_docs    # πŸ“š Documentation generation utilities (used to create this documentation)
β”‚   β”œβ”€β”€ upscaler          # πŸ”Ž Image & Video upscaler (configurable)
β”‚   └── ...
β”‚
β”œβ”€β”€ continuous_delivery/
β”‚   β”œβ”€β”€ cd_utils          # πŸ”§ Utilities for continuous delivery
β”‚   β”œβ”€β”€ git               # πŸ“œ Utilities for local git changelog generation
β”‚   β”œβ”€β”€ github            # πŸ“¦ Utilities for continuous delivery on GitHub (upload_to_github)
β”‚   β”œβ”€β”€ pypi              # πŸ“¦ Utilities for PyPI (pypi_full_routine)
β”‚   β”œβ”€β”€ pyproject         # πŸ“ Utilities for reading, writing and managing pyproject.toml files
β”‚   β”œβ”€β”€ stubs             # πŸ“ Utilities for generating stub files using stubgen
β”‚   └── ...
β”‚
β”œβ”€β”€ mlflow/
β”‚   β”œβ”€β”€ process_metrics_monitor    # πŸ“Š Monitor CPU, memory, I/O, and thread metrics for a specific process tree and log them to MLflow
β”‚   └── ...
β”‚
β”œβ”€β”€ installer/
β”‚   β”œβ”€β”€ common            # πŸ”§ Common functions used by the Linux and Windows installers modules
β”‚   β”œβ”€β”€ downloader        # ⬇️ Functions for downloading and installing programs from URLs
β”‚   β”œβ”€β”€ linux             # 🐧 Linux/macOS specific implementations for installation
β”‚   β”œβ”€β”€ main              # πŸš€ Core installation functions for installing programs from zip files or URLs
β”‚   β”œβ”€β”€ windows           # πŸ’» Windows specific implementations for installation
β”‚   └── ...
└── ...

πŸ”§ Installation

pip install stouputils

✨ Enable Tab Completion on Linux (Optional)

For a better CLI experience, enable bash tab completion:

# Option 1: Using argcomplete's global activation
activate-global-python-argcomplete --user

# Option 2: Manual setup for bash
register-python-argcomplete stouputils >> ~/.bashrc
source ~/.bashrc

After enabling completion, you can use <TAB> to autocomplete commands:

stouputils <TAB>        # Shows: --version, -v, all_doctests, backup
stouputils all_<TAB>    # Completes to: all_doctests

Note: Tab completion works best in bash, zsh, Git Bash, or WSL on Windows.

πŸ“– Extensive CLI Documentation

The stouputils CLI provides several powerful commands for common development tasks.

⚑ General Usage

stouputils <command> [options]

Running stouputils without arguments displays help with all available commands.


πŸ“Œ --version / -v β€” Show Version Information

Display the version of stouputils and its dependencies, along with the used Python version.

# Basic usage - show stouputils version
stouputils --version
stouputils -v

# Show version for a specific package
stouputils --version numpy
stouputils -v requests

# Show dependency tree (depth 3+)
stouputils --version -t 3
stouputils -v stouputils --tree 4

Options:

Option Description
[package] Optional package name to show version for (default: stouputils)
-t, --tree <depth> Show dependency tree with specified depth (≀2 for flat list, β‰₯3 for tree view)

βœ… all_doctests β€” Run Doctests

Execute all doctests in Python files within a directory.

# Run doctests in current directory
stouputils all_doctests

# Run doctests in specific directory
stouputils all_doctests ./src

# Run doctests with file pattern filter
stouputils all_doctests ./src "*image/*.py"
stouputils all_doctests . "*utils*"

Arguments:

Argument Description
[directory] Directory to search for Python files (default: .)
[pattern] Glob pattern to filter files (default: *)

Exit codes:

  • 0: All tests passed
  • 1: One or more tests failed

πŸ“¦ archive β€” Archive Utilities

Create and repair ZIP archives.

# Show archive help
stouputils archive --help

archive make β€” Create Archive

# Basic archive creation
stouputils archive make ./my_folder ./backup.zip

# Create archive with ignore patterns
stouputils archive make ./project ./project.zip --ignore "*.pyc,__pycache__,*.log"

# Create destination directory if needed
stouputils archive make ./source ./backups/archive.zip --create-dir

Arguments & Options:

Argument/Option Description
<source> Source directory to archive
<destination> Destination zip file path
--ignore <patterns> Comma-separated glob patterns to exclude
--create-dir Create destination directory if it doesn't exist

archive repair β€” Repair Corrupted ZIP

# Repair with auto-generated output name
stouputils archive repair ./corrupted.zip

# Repair with custom output name
stouputils archive repair ./corrupted.zip ./fixed.zip

Arguments:

Argument Description
<input_file> Path to the corrupted zip file
[output_file] Path for repaired file (default: adds _repaired suffix)

πŸ’Ύ backup β€” Backup Utilities

Create delta backups, consolidate existing backups, and manage backup retention.

# Show backup help
stouputils backup --help

backup delta β€” Create Delta Backup

Create an incremental backup containing only new or modified files since the last backup.

# Basic delta backup
stouputils backup delta ./my_project ./backups

# Delta backup with exclusions
stouputils backup delta ./project ./backups -x "*.pyc" "__pycache__/*" "node_modules/*"
stouputils backup delta ./source ./backups --exclude "*.log" "temp/*"

Arguments & Options:

Argument/Option Description
<source> Source directory or file to back up
<destination> Destination folder for backups
-x, --exclude <patterns> Glob patterns to exclude (space-separated)

backup consolidate β€” Consolidate Backups

Merge multiple delta backups into a single complete backup.

# Consolidate all backups up to latest.zip into one file
stouputils backup consolidate ./backups/latest.zip ./consolidated.zip

Arguments:

Argument Description
<backup_zip> Path to the latest backup ZIP file
<destination_zip> Path for the consolidated output file

backup limit β€” Limit Backup Count

Limit the number of delta backups by consolidating the oldest ones.

# Keep only the 5 most recent backups
stouputils backup limit 5 ./backups

# Allow deletion of the oldest backup (not recommended)
stouputils backup limit 5 ./backups --no-keep-oldest

Arguments & Options:

Argument/Option Description
<max_backups> Maximum number of backups to keep
<backup_folder> Path to the folder containing backups
--no-keep-oldest Allow deletion of the oldest backup (default: keep it)

πŸ—οΈ build β€” Build and Publish to PyPI

Build and publish a Python package to PyPI using the uv tool. This runs a complete routine including version bumping, stub generation, building, and publishing.

# Standard build and publish (bumps patch by default)
stouputils build

# Build without generating stubs and without bumping version
stouputils build --no_stubs --no_bump

# Bump minor version before build
stouputils build minor

# Bump major version before build
stouputils build major

Options:

Option Description
--no_stubs Skip stub file generation
--no_bump Skip version bumping (use current version)
minor Bump minor version (e.g., 1.2.0 β†’ 1.3.0)
major Bump major version (e.g., 1.2.0 β†’ 2.0.0)

πŸ“œ changelog β€” Generate Changelog

Generate a formatted changelog from local git history.

# Show changelog help
stouputils changelog --help
# Generate changelog since latest tag (default)
stouputils changelog

# Generate changelog since a specific tag
stouputils changelog tag v1.9.0

# Generate changelog since a specific date
stouputils changelog date 2026/01/05
stouputils changelog date "2026-01-15 14:30:00"

# Generate changelog since a specific commit
stouputils changelog commit 847b27e

# Include commit URLs from a remote
stouputils changelog --remote origin
stouputils changelog tag v2.0.0 -r origin

# Output to a file
stouputils changelog -o CHANGELOG.md
stouputils changelog tag v1.0.0 --output docs/CHANGELOG.md

Arguments & Options:

Argument/Option Description
[mode] Mode for selecting commits: tag, date, or commit (default: tag)
[value] Value for the mode (tag name, date, or commit SHA)
-r, --remote <name> Remote name for commit URLs (e.g., origin)
-o, --output <file> Output file path (default: stdout)

Supported date formats:

  • YYYY/MM/DD or YYYY-MM-DD
  • DD/MM/YYYY or DD-MM-YYYY
  • YYYY-MM-DD HH:MM:SS
  • ISO 8601: YYYY-MM-DDTHH:MM:SS

πŸ”— redirect β€” Redirect a Folder

Move a folder to a new location and create a junction or symlink at the original path. Useful for redirecting game installs, large data folders, etc. across drives.

# Show redirect help
stouputils redirect --help

# Redirect with auto-detected basename (destination ends with /)
stouputils redirect "C:/Games/MyGame" "D:/Games/" --hardlink

# Redirect with explicit destination name
stouputils redirect "C:/Games/MyGame" "D:/Storage/MyGame" --symlink

# Interactive mode (asks for link type)
stouputils redirect "./my_folder" "/mnt/external/"

Arguments & Options:

Argument/Option Description
<source> Source folder to redirect
<destination> Destination path (append / to auto-use source basename)
--hardlink / --junction Use NTFS junction (Windows) or fallback to symlink (Linux/macOS)
--symlink Use a symbolic link (may need admin on Windows)

Notes:

  • If --hardlink fails (e.g., unsupported OS), it automatically falls back to symlink
  • If the source is already a symlink or junction, the operation is skipped
  • On Linux/macOS, junctions are not available so --hardlink uses a symlink instead

πŸ“‹ Examples Summary

Command Description
stouputils -v Show version
stouputils -v numpy -t 3 Show numpy version with dependency tree
stouputils all_doctests ./src Run doctests in src directory
stouputils archive make ./proj ./proj.zip Create archive
stouputils archive repair ./bad.zip Repair corrupted zip
stouputils backup delta ./src ./bak -x "*.pyc" Create delta backup
stouputils backup consolidate ./bak/latest.zip ./full.zip Consolidate backups
stouputils backup limit 5 ./bak Keep only 5 backups
stouputils build minor Build with minor version bump
stouputils changelog tag v1.0.0 -r origin -o CHANGELOG.md Generate changelog to file
stouputils redirect "C:/Games/MyGame" "D:/Games/" --hardlink Redirect folder with junction

⭐ Star History

Star History Chart

About

Stouputils is a collection of utility modules designed to simplify and enhance the development process. It includes a range of tools for tasks such as execution of doctests, display utilities, decorators, as well as context managers.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages