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,10 +1,21 @@
#compdef genpass
_arguments \
'--length[-l]:password length:' \
'--count[-n]:number of passwords:' \
'--lower[use lowercase letters]' \
'--upper[use uppercase letters]' \
'--digits[use digits]' \
'--symbols[use symbols]' \
'--symbol-set[custom symbol set]' \
'--no-ensure[do not enforce each type]'
'-h[show help]' \
'--help[show help]' \
'-l[password length]:length:' \
'--length[password length]:length:' \
'-n[number of passwords]:count:' \
'--count[number of passwords]:count:' \
'--lower[include lowercase letters]' \
'--upper[include uppercase letters]' \
'--digits[include digits]' \
'--symbols[include symbols]' \
'--symbol-set[custom symbol set]:symbols:' \
'--no-ensure[disable ensure-each-type rule]' \
'--no-ambiguous[exclude ambiguous characters (l, 1, I, O, 0)]' \
'--entropy[show password entropy]' \
'-c[copy to clipboard]' \
'--clipboard[copy to clipboard]' \
'--format[output format]:format:(plain json delimited)' \
'--config[show current configuration]' \
'--save-config[save options as defaults]'