- Mark help parser with `_is_help_command=True` so CLI renders as `program help`. - Add TLDR examples to `Exit` and `History` commands. - Normalize help TLDR/tag docs to short forms `-T` (tldr) and `-t [TAG]`. - Also propagate submenu exit help text TLDRs when set. - Disallow defaults for `HELP`, `TLDR`, `COUNT`, and boolean store actions. - Enforce list defaults for `APPEND`/`EXTEND` and any `nargs` in `{int, "*", "+"}`; coerce to list when `nargs == 1`. - Validate default(s) against `choices` (lists must be subset). - Strengthen `choices` checking at parse-time for both scalars and lists; track invalid-choice state for UX. - New `_resolve_posix_bundling()` with context: - Won’t split negative numbers or dash-prefixed positional/path values. - Uses the *last seen flag’s type/action* to decide if a dash token is a value vs. bundle. - Add `_is_valid_dash_token_positional_value()` and `_find_last_flag_argument()` helpers. - Completions overhaul - Track `consumed_position` and `has_invalid_choice` per-arg (via new `ArgumentState.set_consumed()` / `reset()`). - Add `_is_mid_value()` and `_value_suggestions_for_arg()` to produce value suggestions while typing. - Persist value context for multi-value args (`nargs="*"`, `"+"`) for each call to parse_args - Suppress suggestions when a choice is currently invalid, then recover as the prefix becomes valid. - Respect `cursor_at_end_of_token`; do not mutate the user’s prefix; improve path suggestions (`"."` vs prefix). - Better behavior after a space: suggest remaining flags when appropriate. - Consistent `index` naming (vs `i`) and propagate `base_index` into positional consumption to mark positions accurately. - Return value tweaks for `find_argument_by_dest()` and minor readability changes. - Replace the minimal completion test with a comprehensive suite covering: - Basics (defaults, option parsing, lists, booleans). - Validation edges (default/choices, `nargs` list requirements). - POSIX bundling (flags only; negative values; dash-prefixed paths). - Completions for flags/values/mid-value/path/`nargs="*"` persistence. - `store_bool_optional` (feature / no-feature, last one wins). - Invalid choice suppression & recovery. - Repeated keywords (last one wins) and completion context follows the last. - File-system-backed path suggestions. - Bumped version to 0.1.83.
49 lines
1.2 KiB
TOML
49 lines
1.2 KiB
TOML
[tool.poetry]
|
|
name = "falyx"
|
|
version = "0.1.83"
|
|
description = "Reliable and introspectable async CLI action framework."
|
|
authors = ["Roland Thomas Jr <roland@rtj.dev>"]
|
|
license = "MIT"
|
|
readme = "README.md"
|
|
packages = [{ include = "falyx" }]
|
|
|
|
[tool.poetry.dependencies]
|
|
python = ">=3.10"
|
|
prompt_toolkit = "^3.0"
|
|
rich = "^14.0"
|
|
pydantic = "^2.0"
|
|
python-json-logger = "^3.3.0"
|
|
toml = "^0.10"
|
|
pyyaml = "^6.0"
|
|
aiohttp = "^3.11"
|
|
python-dateutil = "^2.8"
|
|
|
|
[tool.poetry.group.dev.dependencies]
|
|
pytest = "^8.3.5"
|
|
pytest-asyncio = "^0.20"
|
|
ruff = "^0.3"
|
|
toml = "^0.10"
|
|
black = { version = "^25.0", allow-prereleases = true }
|
|
mypy = { version = "^1.0", allow-prereleases = true }
|
|
isort = { version = "^5.0", allow-prereleases = true }
|
|
pytest-cov = "^4.0"
|
|
mkdocs = "^1.6.1"
|
|
mkdocs-material = "^9.6.14"
|
|
mkdocstrings = {extras = ["python"], version = "^0.29.1"}
|
|
mike = "^2.1.3"
|
|
|
|
[tool.poetry.scripts]
|
|
falyx = "falyx.__main__:main"
|
|
|
|
[build-system]
|
|
requires = ["poetry-core>=1.0.0"]
|
|
build-backend = "poetry.core.masonry.api"
|
|
|
|
[tool.pytest.ini_options]
|
|
testpaths = ["tests"]
|
|
asyncio_mode = "auto"
|
|
#asyncio_default_fixture_loop_scope = "function"
|
|
|
|
[tool.pylint."MESSAGES CONTROL"]
|
|
disable = ["broad-exception-caught"]
|