feat: add type hints, new CLI features, and improve project structure

chore: add uv.lock to gitignore

Major changes:
- Add type hints and docstrings to all functions (PEP 484)
- Add __main__.py for module execution (python -m genpass)
- Expose public API in __init__.py
- Add config file support (~/.genpass/config.json)
- Add entropy calculation (--entropy)
- Add clipboard support (--clipboard/-c)
- Add ambiguous characters exclusion (--no-ambiguous)
- Add output formats: plain, json, delimited (--format)
- Add sensible defaults (all character types enabled by default)
- Add input validation for length and count
- Update shell completions for all new options
- Add pre-commit config with ruff, mypy, black
- Update pyproject.toml with dev dependencies and tool configs
- Add requirements.txt and requirements-dev.txt
- Update README.md with comprehensive examples

BREAKING CHANGE: Default behavior now includes all character types
This commit is contained in:
kilyabin
2026-03-10 00:42:16 +04:00
parent c11345d576
commit eeca690c0a
13 changed files with 969 additions and 67 deletions

View File

@@ -1,8 +1,15 @@
complete -c genpass -l length -s l -d "Password length"
complete -c genpass -l count -s n -d "Number of passwords"
complete -c genpass -l lower -d "Lowercase letters"
complete -c genpass -l upper -d "Uppercase letters"
complete -c genpass -l digits -d "Digits"
complete -c genpass -l symbols -d "Symbols"
complete -c genpass -l symbol-set -d "Custom symbol set"
complete -c genpass -l no-ensure -d "Disable character guarantees"
complete -c genpass -s h -l help -d "Show help message"
complete -c genpass -s l -l length -d "Password length" -r
complete -c genpass -s n -l count -d "Number of passwords" -r
complete -c genpass -l lower -d "Include lowercase letters"
complete -c genpass -l upper -d "Include uppercase letters"
complete -c genpass -l digits -d "Include digits"
complete -c genpass -l symbols -d "Include symbols"
complete -c genpass -l symbol-set -d "Custom symbol set" -r
complete -c genpass -l no-ensure -d "Disable ensure-each-type rule"
complete -c genpass -l no-ambiguous -d "Exclude ambiguous characters"
complete -c genpass -l entropy -d "Show password entropy"
complete -c genpass -s c -l clipboard -d "Copy to clipboard"
complete -c genpass -l format -d "Output format" -r -f -a "plain json delimited"
complete -c genpass -l config -d "Show current configuration"
complete -c genpass -l save-config -d "Save options as defaults"