Skip to content

v0.3.0

Choose a tag to compare

@tobiashochguertel tobiashochguertel released this 14 Mar 11:49
· 117 commits to main since this release

v0.3.0 (2026-03-14)

Bug Fixes

  • Always run poetry install regardless of cache hit (34937c1)

The conditional poetry install was causing CI failures: when the venv cache exists but is broken (wrong Python version, stale), poetry recreates an empty venv but the install step is skipped. poetry install is idempotent so running it unconditionally is safe and ensures the env is always complete.

Co-authored-by: Copilot 223556219+Copilot@users.noreply.github.com

python-semantic-release v9 breaking changes:

  • commit_parser: 'conventional_commits' → 'conventional'
  • Restructure config: branch/upload_to_pypi/upload_to_release/changelog_sections
    removed; replaced with sub-sections branches/changelog/publish
  • major_on_zero = false added

readthedocs: switch from custom poetry commands to standard python.install using docs/requirements.txt (myst-parser lives there, not in pyproject extras)

cd.yml: remove conditional poetry install (same fix as CI)

Co-authored-by: Copilot 223556219+Copilot@users.noreply.github.com

  • Default argument callable raise InvalidArgument (11f1c51)

  • Don't adjust priority for processing raise_keyboard_interrupt in (eaba616)

  • Force re-render on choices retrieval finish (4bce4df)

  • Green CI — update pre-commit hooks, fix tests in CI, drop EOL Py 3.9 (d144cbb)

  • Update .pre-commit-config.yaml: black 22→24.8, isort 5.10→5.13.2,
    pydocstyle 6.1→6.3 (fixes poetry-core validation failure in CI)

  • Add tests/conftest.py: use create_app_session(PipeInput, DummyOutput)
    as autouse fixture to avoid 'Stdin is not a terminal' in CI (all 209
    tests now pass without a real TTY)

  • Apply black 24.8 reformatting to 19 source files

  • Drop Python 3.9 from CI matrix (EOL Oct 2025; Poetry 2.3.x fails to
    install on 3.9 runners)

  • Add pyyaml>=6.0.1 to dev deps; poetry.lock resolves to 6.0.3 (fixes
    PEP 517 build failure on Python 3.12)

Co-authored-by: Copilot 223556219+Copilot@users.noreply.github.com

  • Inconsistant color background for long_instruction (b947f78)

  • Multiselect kazhala#25 (a35ca26)

  • No error thrown when invalid argument is provided (8f52a16)

  • Suppress pre-existing pyright override errors from upstream (8147b28)

Suppress reportIncompatibleMethodOverride, reportIncompatibleVariableOverride, and reportGeneralTypeIssues in pyrightconfig.json. These 19 errors are pre-existing in the upstream codebase (method signature mismatches, return type inconsistencies). They are tracked for future cleanup but should not block CI green.

Co-authored-by: Copilot 223556219+Copilot@users.noreply.github.com

  • Typing (6915996)

  • Undefined movement (6451af5)

  • Update poetry.lock, use dev group syntax, add pyright dep (21b20eb)

  • Regenerate poetry.lock with updated dev dependencies

  • Migrate [tool.poetry.dev-dependencies] → [tool.poetry.group.dev.dependencies]
    (poetry 2.x syntax, silences deprecation warning)

  • Add pyright ^1.1 as dev dependency (was previously installed via npm in CI)

  • Add pytest, pytest-cov, python-semantic-release as dev dependencies

  • CI now installs everything via poetry install (no npm needed)

Co-authored-by: Copilot 223556219+Copilot@users.noreply.github.com

Chores

  • Add doc dependencies (5761613)

  • Added requirements.txt for examples (dab7055)

  • Complete Phase 1 fork setup — rename to InquirerPrompt (799b3f0)

  • Rename PyPI package from InquirerPy to InquirerPrompt

  • Update repository/documentation URLs to fork URLs

  • Drop Python 3.7/3.8 (EOL), support 3.9–3.12

  • Update dev dependencies: bump black, isort, pre-commit; add pytest,
    pytest-cov, python-semantic-release; remove coveralls

  • Enable upload_to_pypi in semantic_release config

  • Remove superseded lint.yml and test.yml (replaced by ci.yml)

  • Update .readthedocs.yaml with Poetry-based build commands

  • Update docs/conf.py: project name InquirerPrompt, add fork co-maintainer

  • Update docs/index.md: fork clone URL, pip install InquirerPrompt

  • Update README: correct PyPI package name and RTD docs URL

  • Fix Codecov action to v5

Co-authored-by: Copilot 223556219+Copilot@users.noreply.github.com

  • Reformat (9966597)

  • Removing tooling config for fzy file (ea734e2)

  • Set up community fork infrastructure (e07e2dd)

  • Add modernized CI workflow (Python 3.9-3.12, Codecov, caching)

  • Add CD workflow with python-semantic-release and PyPI publish

  • Add Taskfile.yml with lint, format, test, coverage, release, docs tasks

  • Add fork preamble to README.md with upstream attribution

  • Add FORK_SETUP_NOTES.md to .gitignore (contains credentials/setup info)

  • Add python-semantic-release config to pyproject.toml

Co-authored-by: Copilot 223556219+Copilot@users.noreply.github.com

Code Style

  • Change the wording from argument to parameter when it make sense (65511f3)

Continuous Integration

Documentation

Replace leftover inquirerpy.readthedocs.io links with InquirerPrompt.readthedocs.io throughout README.md.

Co-authored-by: Copilot 223556219+Copilot@users.noreply.github.com

  • Update style doc (d8ee146)

  • Update titles and added dynamic page (1aea5b4)

  • Update titles and kb doc (07633a6)

  • Use literal import (2b1b38d)

  • Validator documentation (4269000)

  • base: Update complex prompt doc (11dbdd2)

  • changelog: raise_keyboard_interrupt (135d0ae)

  • changelog: Added reasons for checkbox prompt icon spacing changes (e84f3b9)

  • changelog: Choice and ExpandChoice (289970c)

  • exceptions: Docstring (013251b)

  • expand: Document the new parameter expand_help (0c048f5)

  • expand: New choice doc (6ab1dbe)

  • fuzzy: Exact match (35c879e)

  • fuzzy: Toggle-exact keybinding kazhala#34 (1adb55b)

  • number: Added examples and demo (d8b34c0)

  • number: Docstring (e6dd3a4)

  • number: Empty default value (cf04f9a)

  • number: Include dot kb (d93accf)

  • number: Internal docs (6eab367)

  • number: Note that its not yet released (13f0a2e)

  • number: Replace mode (1d9d578)

  • number: Replace_mode (0382ac9)

  • readme: Fix example (27ba8e2)

  • resolver: Docstring (8a8fc0f)

  • separator: Docstring style (a3dcc1b)

  • utils: Fix example (5a71825)

  • utils: Update docstring (802d911)

Features

  • Add formatter config files (9c70434)

  • Added long_instruction parameter for input prompts (28ef1fc)

  • Added ability to set error for PromptSession based propts (db7c5aa)

  • Added async support for alternate syntax kazhala#30 (75070c3)

  • Added async support for classic syntax (c4296ce)

  • Added Choice and ExpandChoice class for more pythonic way of (ceaa161)

  • Added keybinding customisation option for all prompts now (08eaec1)

  • Added option mandatory to control if a prompt can be skipped kazhala#10 (be3576d)

  • Allow movement (edc6f16)

  • Allow single dictionary keybinding binds (3cf99e6)

  • Border for list, rawlist, expand and checkbox prompt (7f97c62)

  • Dedicated instruction area (tips). kazhala#7 (e59548c)

  • Enable number prompt for the classic syntax (52a51cf)

  • Hide integral window if not float (c12daed)

  • Init number prompt (a34b920)

  • Option to configure event loop exception handler (bc1a29e)

  • Raise_keyboard_interrupt=false also checks mandatory (c7ce641)

  • Support dynamic invalid_message in list type prompts while using Validator (03e176d)

  • Support spinner in all list prompts (b81ebe9)

  • base: Add _choices_callback function (e38fa39)

  • base: Added option to skip question kazhala#10 (2abeaad)

  • base: Added optional spinner (4f03870)

  • base: Transform_async on the blocking choice_func (07a40b9)

  • base: Update control class to handle async (6ac5e4e)

  • expand: Added option expand_help to customise expand key and (74c6f13)

  • fuzzy: Added kb to toggle exact match (cd8450c)

  • fuzzy: Support exact match (a8cd060)

  • fuzzy: Support optional spinner (8736b7a)

  • kb: Grant more access to prompt_toolkit features (984bfca)

  • number: Added additional kb for dot (67036f9)

  • number: Added input buffers (c918cb0)

  • number: Additional customisation around replace mode (1b81023)

  • number: Allow customisation on decimal symbol (b0bde41)

  • number: Allow empty buffer default (adf9f93)

  • number: Allow zero decimal input (9d09a0f)

  • number: Auto adjust cursor position for negative toggle (318b2bf)

  • number: Enable full vi mode (bce0f00)

  • number: Fix sciencetific notation (da6ade3)

  • number: Force empty result when empty input (8536691)

  • number: Handle answer (108b134)

  • number: Handle increase and decrease (32a77b2)

  • number: Handle number input (f4103b9)

  • number: Handle sn on text change (a2175f4)

  • number: Replace mode by default if value is zero (8145c80)

  • number: Set default value (ab5a2ae)

  • number: Toggle negative (c7216bc)

  • style: Added long_instruction class (011586b)

  • utils: Added transform_async and ListChoices alias (1a4cb46)

Refactoring

  • Added raise_keyboard_interrupt to prompt initialisation option (1ac6314)

  • Adjust default keybinding for toggle multiple choices (0213079)

  • Dedicated container module (2234e8b)

  • Have tips window stay at the bottom, don't float kazhala#7 (51d113b)

  • Internal class args (5aaa092)

  • Keybinding typing alias (4558f9b)

  • Mirgrate to pfzy (ba215d1)

  • Move instruction window out of floating layout (5a7500a)

  • Move spinner to dedicated module (356a2ab)

  • Overload register_kb instead of creating new methods (42aa7f4)

  • Private attr (e1513ee)

  • Remove unused util function (4db519b)

  • Rename tips argument to long_instruction kazhala#7 (df4119e)

  • Rename InquirerPyUIControl to InquirerPyUIListControl (f2d4262)

  • Rename typing alias (75266bf)

  • Validation window (848564b)

  • Validation window (caef887)

  • base: Remove abstraction for _format_choices (9c0ab42)

  • base: Remove unused kb bind (91661ae)

  • checkbox: Use new unicode sequence and remove default spacing (164ad5f)

  • filepath: Typing alias and update test (f604321)

  • fuzzy: No border by default (88501fe)

  • fuzzy: Use _on_rendered instead of after_render (5e9dd52)

  • input: Better kb registration (5b712a1)

  • number: Disable replace_mode by default (e493793)

  • number: Move buffer detection logic (d2df65c)

  • number: On render (0052fc9)

  • number: Rename to replace mode (3b9d27c)

  • number: Use Decimal over float (7546971)

  • rawlist: Typings (37ebdde)

  • style: Color update (e38579b)

  • validator: Update validator attrs to private (30cbe7e)

Testing


Detailed Changes: v0.2.4...v0.3.0