Python library to build pretty command line user prompts ✨Easy to use multi-select lists, confirmations, free text prompts ...

Overview

Questionary

Version License Continuous Integration Coverage Supported Python Versions Documentation

Questionary is a Python library for effortlessly building pretty command line interfaces

Example

import questionary

questionary.text("What's your first name").ask()
questionary.password("What's your secret?").ask()
questionary.confirm("Are you amazed?").ask()

questionary.select(
    "What do you want to do?",
    choices=["Order a pizza", "Make a reservation", "Ask for opening hours"],
).ask()

questionary.rawselect(
    "What do you want to do?",
    choices=["Order a pizza", "Make a reservation", "Ask for opening hours"],
).ask()

questionary.checkbox(
    "Select toppings", choices=["foo", "bar", "bazz"]
).ask()

questionary.path("Path to the projects version file").ask()

Used and supported by

Features

Questionary supports the following input prompts:

There is also a helper to print formatted text for when you want to spice up your printed messages a bit.

Installation

Use the package manager pip to install Questionary:

$ pip install questionary
✨🎂✨

Usage

import questionary

questionary.select(
    "What do you want to do?",
    choices=[
        'Order a pizza',
        'Make a reservation',
        'Ask for opening hours'
    ]).ask()  # returns value of selection

That's all it takes to create a prompt! Have a look at the documentation for some more examples.

Documentation

Documentation for Questionary is available here.

Support

Please open an issue with enough information for us to reproduce your problem. A minimal, reproducible example would be very helpful.

Contributing

Contributions are very much welcomed and appreciated. Head over to the documentation on how to contribute.

Authors and Acknowledgment

Questionary is written and maintained by Tom Bocklisch and Kian Cross.

It is based on the great work by Oyetoke Toby and Mark Fink.

License

Licensed under the MIT License. Copyright 2021 Tom Bocklisch.

Comments
  • Added in `default=

    Added in `default="1"` for `Choice(title="bleh",value="1")`

    the way "default" is handled currently isnt very intuitive. you need to pass a Choice object to it if you want it to use that choice's value

    this PR lets you supply the default as just the "value" of the choice.

    as per

    https://github.com/tmbo/questionary/issues/124 and https://github.com/tmbo/questionary/issues/57

    (sorry not sure how to add tests for it, still noob)

    opened by WilliamStam 15
  • Pre-selected value in list

    Pre-selected value in list

    Hi. I'm sorry if this has already been answered before...And thank you for questionary btw.

    Is it possible in a select to have a preselected option? I have found the default-settings but it doesn't behave the way I would expect.

    image Here review is the default, but the marker stays on test. And if the user hits enter he will select test and not review.

    In my scenario I will cache the last environment the user worked on and let him hit enter next time, instead of having to select from the list each time.

    Duplicate 
    opened by lazee 14
  • How to write tests for applications that use questionary?

    How to write tests for applications that use questionary?

    Dear @tmbo ,

    I am trying to test an python application of mine which uses questionary. However, I am lost when trying to test the application.

    from click.testing import CliRunner runner = CliRunner() result = runner.invoke(myapplicationfunction, input='\n')

    The code above should call myapplicationfunction which opens questionary prompts and then simply enter once, which is equivalent to \n. The same thing works when running echo -e "\n" | python filewhichcallsmyapplicationfunction.py

    However, when running it via the runner it does not work. Reason being: it just passes stdin.

    The error message is:

    E               io.UnsupportedOperation: Stdin is not a terminal.
    
    bla/site-packages/prompt_toolkit/input/vt100.py:57: UnsupportedOperation
    

    How do I test such scripts, which simply open questionary prompts? Do you have a pytest example?

    opened by Zethson 11
  • How to use rawselect without CPR?

    How to use rawselect without CPR?

    I love questionary! It is certainly the right way forward in the command line dialogs space.

    I tried out the rawselect.py example and have problems on simple terminals (TERM=dumb or TERM=unkown) which do not cater for CPRs (cursor position requests). In this case questionary prints out

    WARNING: your terminal doesn't support cursor position requests (CPR).
    

    The warning comes from prompt_toolkit I suspect, but is there a way to tell questionary to simplify the prompting so that no CPRs are required? After all the user just will type a number to select an option!

    Enhancement Awaiting response 
    opened by halloleo 10
  • RunTime Error 'Application.run_async' was never awaited

    RunTime Error 'Application.run_async' was never awaited

    Hallo Questionary, I have been using questionary for a while now, but when I started linking an additional lib, a runtime warning/error gets triggered. (Although it is a warning it leads to immediate failure) In the traceback there is mention of the ask_unsafe function. I wonder, can one from the python.api switch between the multiple ask functions that are available in question.py?

    A short test script:

    #!/usr/bin/python3
    import subprocess
    from questionary import prompt, Separator
    from datalad import api as datalad
    
    question = [{'type': 'list', 'name': 'choice', 'message': 'Menu', 'choices': ['Red pill','Blue pill']}]
    print("You have to take four pills")
    for i in range(4):
      answer = prompt(question)
      name =  answer['choice'].replace(' ','_')+str(i)
      print("Create path: "+name)
      ds = datalad.create(name, cfg_proc='text2git')
    

    The trace is

    Traceback (most recent call last):
      File "short.py", line 9, in <module>
        answer = prompt(question)
      File "/usr/local/lib/python3.8/dist-packages/questionary/prompt.py", line 97, in prompt
        answer = question.unsafe_ask(patch_stdout)
      File "/usr/local/lib/python3.8/dist-packages/questionary/question.py", line 59, in unsafe_ask
        return self.application.run()
      File "/usr/local/lib/python3.8/dist-packages/prompt_toolkit/application/application.py", line 816, in run
        return loop.run_until_complete(
      File "/usr/lib/python3.8/asyncio/base_events.py", line 591, in run_until_complete
        self._check_closed()
      File "/usr/lib/python3.8/asyncio/base_events.py", line 508, in _check_closed
        raise RuntimeError('Event loop is closed')
    RuntimeError: Event loop is closed
    sys:1: RuntimeWarning: coroutine 'Application.run_async' was never awaited
    
    opened by SteffenBrinckmann 9
  • Synchronous questionary calls in an async function

    Synchronous questionary calls in an async function

    Hello, Is there a way to run synchronous questionary calls in an async function? I need to make something like this work:

    import asyncio
    import questionary
    
    async def main() -> None:
        questionary.select(
            "What do you want to do?",
            choices=[
                "Order a pizza",
                "Make a reservation",
                "Ask for opening hours",
            ],
        ).ask()
    
    asyncio.run(main())
    

    In my application I'm not calling questionary directly (the test above is an oversimplified example): I need to support different toolkits, so I created a wrapper around questionary. I know questionary has an async API, but I'd need to expose it in the wrapper and add await to every call, without any real need for an async API: only to make it work.

    Thank you, cheers

    Question 
    opened by davnat 8
  • Document multiline input for devs and users

    Document multiline input for devs and users

    For devs, this feature, that was already working, is now documented.

    For users, a default instruction text appears when using multiline mode.

    Fix #54.

    Enhancement Documentation 
    opened by yajo 8
  • Add print question type to dictionary style prompt

    Add print question type to dictionary style prompt

    Describe the problem

    With version 1.10.0 when I want to use both prompt with dictionary and print question type, I need to call several prompts and to merge answers:

    from pprint import pprint
    from questionary import Separator, prompt
    from questionary import print as qprint
    
    
    def ask_dictstyle(**kwargs):
        questions = [
            {
                "type": "text",
                "name": "first",
                "message": "Your first message:",
            },
            {
                "type": "text",
                "name": "second",
                "message": "Your second message",
            },
        ]
    
        answers = prompt(questions)
        qprint("Oh! I need to give somme fancy explanations about what’s next!🦄", style="bold italic fg:darkred")
        questions = [
            {
                "type": "select",
                "name": "third",
                "message": "Select item",
                "choices": ["item1", "item2", Separator(), "other"],
            },
        ]
        answers.update(prompt(questions))
        return answers
    
    
    if __name__ == "__main__":
        pprint(ask_dictstyle())
    
    

    Describe the solution

    Adding print type to prompt dictionary would resolve the issue:

    from pprint import pprint
    from questionary import Separator, prompt
    
    
    def ask_dictstyle(**kwargs):
        questions = [
            {
                "type": "text",
                "name": "first",
                "message": "Your first message:",
            },
            {
                "type": "text",
                "name": "second",
                "message": "Your second message",
            },
            {
                "type": "print",
                "name": "help", #  Do I need a name?
                "message": "Oh! I need to give somme fancy explanations about what’s next!🦄",
                "style": "bold italic fg:darkred",
            },
            {
                "type": "select",
                "name": "third",
                "message": "Select item",
                "choices": ["item1", "item2", Separator(), "other"],
            },
        ]
        return prompt(questions)
    
    
    if __name__ == "__main__":
        pprint(ask_dictstyle())
    

    Alternatives considered

    No response

    Enhancement 
    opened by PhML 7
  • Less restrictive python 3 dependency

    Less restrictive python 3 dependency

    Using this new version specifier is equivalent to >=3.6,<4.0.0, which allows other projects using this same specifier work with yours.

    I have this in my project, and when trying to add the master commit from questionary, poetry fails (correctly) with:

      SolverProblemError
    
      The current project's Python requirement (>=3.6.1,<4.0.0) is not compatible with some of the required packages Python requirement:
        - questionary requires Python >=3.6,<3.9, so it will not be satisfied for Python >=3.9,<4.0.0
    
      Because copier depends on questionary (1.6.0 git rev text-custom-lexer) which requires Python >=3.6,<3.9, version solving failed.
    
      at ~/.local/pipx/venvs/poetry/lib64/python3.8/site-packages/poetry/puzzle/solver.py:241 in _solve
          237│             packages = result.packages
          238│         except OverrideNeeded as e:
          239│             return self.solve_in_compatibility_mode(e.overrides, use_latest=use_latest)
          240│         except SolveFailure as e:
        → 241│             raise SolverProblemError(e)
          242│
          243│         results = dict(
          244│             depth_first_search(
          245│                 PackageNode(self._package, packages), aggregate_package_nodes
    
      • Check your dependencies Python requirement: The Python requirement can be specified via the `python` or `markers` properties
    
        For questionary, a possible solution would be to set the `python` property to ">=3.6.1,<3.9"
    
        https://python-poetry.org/docs/dependency-specification/#python-restricted-dependencies,
        https://python-poetry.org/docs/dependency-specification/#using-environment-markers
    

    Unless there's a strong reason to block python 3.9, I would advise to use this easier version specifier.

    It's a matter of opinion of course, you're not forced to accept this.

    Enhancement 
    opened by yajo 7
  • Add additional styling

    Add additional styling

    This PR adds a several new methods of styling the select and checkbox prompts

    • Add flag to disable drawing of the pointer character
    • Add highlighted token to style the choice being pointed to
      • This style will only be applied when use_pointer is False
    • Add text token to style ordinary text
    • Add disabled token to style disabled choices
    • Disabled value is no longer displayed if it is a bool
    • Choice titles can now be a list of token tuples to support custom styling
      • The answer displayed after the prompt is closed will use the answer token
      • This type of styling means that selected and highlighted tokens will have no effect

    I originally thought that use_indicator would serve the same purpose as use_pointer in this PR, but for select it turns on the checkbox style checkbox symbol. I suggest removing this option from the select prompt as well, but I wanted to discuss before making that change. https://github.com/tmbo/questionary/blob/da7a2f9687d09e1eb7abbfb5500ff028634b3c4b/questionary/prompts/select.py#L53-L55

    This PR supersedes #12 and #13

    opened by CrazyIvan359 7
  • Feature Request: Validation

    Feature Request: Validation

    I understand questionary as a growing up Python-equivalent of inquirerer.js. Since the landscape of available CLI modules seems to be somewhat scattered around unresolved dependency updates (e.g. like with whaaaaat, pyinquirer ...), I pretty much like what questionary aims at. However, one of the features I currently miss in general is input validation since I would like to prevent the user from proceeding to the next question if the input of the last question is invalid.

    Enhancement 
    opened by AlbertEmil 7
  • Bump Gr1N/setup-poetry from 7 to 8

    Bump Gr1N/setup-poetry from 7 to 8

    Bumps Gr1N/setup-poetry from 7 to 8.

    Release notes

    Sourced from Gr1N/setup-poetry's releases.

    v8

    • Action updated to use Node 16
    • Support for Python 3.10 and 3.11
    • Breaking Change, removed support for Python 3.6
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies github_actions 
    opened by dependabot[bot] 0
  • Bump pre-commit from 2.20.0 to 2.21.0

    Bump pre-commit from 2.20.0 to 2.21.0

    Bumps pre-commit from 2.20.0 to 2.21.0.

    Release notes

    Sourced from pre-commit's releases.

    pre-commit v2.21.0

    Features

    Fixes

    Changelog

    Sourced from pre-commit's changelog.

    2.21.0 - 2022-12-25

    Features

    Fixes

    Commits
    • 40c5bda v2.21.0
    • bb27ea3 Merge pull request #2642 from rkm/fix/dotnet-nuget-config
    • c38e0c7 dotnet: ignore nuget source during tool install
    • bce513f Merge pull request #2641 from rkm/fix/dotnet-tool-prefix
    • e904628 fix dotnet hooks with prefixes
    • d7b8b12 Merge pull request #2646 from pre-commit/pre-commit-ci-update-config
    • 94b6178 [pre-commit.ci] pre-commit autoupdate
    • b474a83 Merge pull request #2643 from pre-commit/pre-commit-ci-update-config
    • a179808 [pre-commit.ci] pre-commit autoupdate
    • 3aa6206 Merge pull request #2605 from lorenzwalthert/r/fix-exe
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies python 
    opened by dependabot[bot] 0
  • Bump certifi from 2021.10.8 to 2022.12.7

    Bump certifi from 2021.10.8 to 2022.12.7

    Bumps certifi from 2021.10.8 to 2022.12.7.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the Security Alerts page.
    dependencies python 
    opened by dependabot[bot] 0
  • Strange result

    Strange result

    Question

    Tried this one:

    import questionary
    
    questionary.select(
        "What do you want to do?",
        choices=[
            'Order a pizza',
            'Make a reservation',
            'Ask for opening hours'
        ]).ask()  # returns value of selection
    

    When executing this happened:

    ============ RESTART: /Users/ewust/Documents/Python Code/question.py ===========
    [?2004h[?1l[?25l[?7l? What do you want to do? (Use arrow keys)[?7h[?25l[?7l? What do you want to do? (Use arrow keys)
    [?7h[?12l[?25h[?2004lTraceback (most recent call last):
      File "/Users/ewust/Documents/Python Code/question.py", line 9, in <module>
        ]).ask()  # returns value of selection
      File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/questionary/question.py", line 70, in ask
        return self.unsafe_ask(patch_stdout)
      File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/questionary/question.py", line 92, in unsafe_ask
        return self.application.run()
      File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/prompt_toolkit/application/application.py", line 978, in run
        return loop.run_until_complete(
      File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/asyncio/base_events.py", line 650, in run_until_complete
        return future.result()
      File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/prompt_toolkit/application/application.py", line 885, in run_async
        return await _run_async(f)
      File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/prompt_toolkit/application/application.py", line 750, in _run_async
        result = await f
    EOFError
    

    What have you already tried?

    Already switched back to Python 3.9. Same result. Working on Mac OS 12.6

    Active Python at the moment:

    Python 3.11.0 (v3.11.0:deaf509e8f, Oct 24 2022, 14:43:23) [Clang 13.0.0 (clang-1300.0.29.30)] on darwin
    Type "help", "copyright", "credits" or "license()" for more information.
    

    Can you tell me what i am doing wrong.

    Thanks in advance,

    Eugène Wüst Amsterdam

    Read the documentation

    • [X] I have checked to ensure that my question is not answered by the documentation.
    Bug 
    opened by EugeneWust 3
  • Bump sphinx-rtd-theme from 1.0.0 to 1.1.1

    Bump sphinx-rtd-theme from 1.0.0 to 1.1.1

    Bumps sphinx-rtd-theme from 1.0.0 to 1.1.1.

    Changelog

    Sourced from sphinx-rtd-theme's changelog.

    1.1.1

    Fixes

    • Fix wrapping bug on cross references (#1368)

    .. _release-1.1.0:

    1.1.0

    Dependency Changes

    Many documentation projects depend on sphinx-rtd-theme without specifying a version of the theme (unpinned) while also depending on unpinned versions of Sphinx. The latest version of sphinx-rtd-theme ideally always supports the latest version of Sphinx, but this is now guaranteed.

    This release adds upper bounds to direct dependencies Sphinx and docutils which will safeguard from mixing with possibly incompatible future versions of Sphinx & docutils.

    • Sphinx versions supported: 1.6 to 5.2.x
    • Sphinx<6 (#1332)
    • docutils<0.18 (unchanged, but will be bumped in an upcoming release)

    Features

    • Nicer styles for (#967)
    • New styling for breadcrumbs (#1073)

    Fixes

    • Suffixes in Sphinx version caused build errors (#1345)
    • Table cells with multiple paragraphs gets wrong formatting (#289)
    • Definition lists rendered wrongly in api docs (#1052)
    • Citation not styled properly (#1078)
    • Long URLs did not wrap (#1193)

    Minor Changes

    • Sphinx 5.2 added to test matrix (#1348)
    • Python 3.10 added to test matrix (#1334)
    • Supplemental Docker setup for development (#1319)
    • Most of setup.py migrated to setup.cfg (#1116)
    • Jinja2 context variable sphinx_version_info is now (major, minor, -1), the patch component is always -1. Reason: It's complicated. (#1345)

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies python 
    opened by dependabot[bot] 0
  • Bump sphinx from 5.1.1 to 5.3.0

    Bump sphinx from 5.1.1 to 5.3.0

    Bumps sphinx from 5.1.1 to 5.3.0.

    Release notes

    Sourced from sphinx's releases.

    v5.3.0

    Changelog: https://www.sphinx-doc.org/en/master/changes.html

    v5.2.3

    Changelog: https://www.sphinx-doc.org/en/master/changes.html

    v5.2.2

    Changelog: https://www.sphinx-doc.org/en/master/changes.html

    v5.2.1

    Changelog: https://www.sphinx-doc.org/en/master/changes.html

    v5.2.0

    Changelog: https://www.sphinx-doc.org/en/master/changes.html

    Changelog

    Sourced from sphinx's changelog.

    Release 5.3.0 (released Oct 16, 2022)

    • #10759: LaTeX: add :confval:latex_table_style and support the 'booktabs', 'borderless', and 'colorrows' styles. (thanks to Stefan Wiehler for initial pull requests #6666, #6671)
    • #10840: One can cross-reference including an option value like :option:`--module=foobar```, :option:--module[=foobar]``` or ``:option:--module foobar```. Patch by Martin Liska.
    • #10881: autosectionlabel: Record the generated section label to the debug log.
    • #10268: Correctly URI-escape image filenames.
    • #10887: domains: Allow sections in all the content of all object description directives (e.g. :rst:dir:py:function). Patch by Adam Turner

    Release 5.2.3 (released Sep 30, 2022)

    • #10878: Fix base64 image embedding in sphinx.ext.imgmath
    • #10886: Add :nocontentsentry: flag and global domain table of contents entry control option. Patch by Adam Turner

    Release 5.2.2 (released Sep 27, 2022)

    • #10872: Restore link targets for autodoc modules to the top of content. Patch by Dominic Davis-Foster.

    Release 5.2.1 (released Sep 25, 2022)

    Bugs fixed

    • #10861: Always normalise the pycon3 lexer to pycon.
    • Fix using sphinx.ext.autosummary with modules containing titles in the module-level docstring.

    Release 5.2.0.post0 (released Sep 24, 2022)

    • Recreated source tarballs for Debian maintainers.

    Release 5.2.0 (released Sep 24, 2022)

    Dependencies

    • #10356: Sphinx now uses declarative metadata with pyproject.toml to create packages, using PyPA's flit project as a build backend. Patch by

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies python 
    opened by dependabot[bot] 0
Owner
Tom Bocklisch
Full time Director of Engineering @RasaHQ and Fun time Co Founder @scalableminds
Tom Bocklisch
Color text streams with a polished command line interface

colout(1) -- Color Up Arbitrary Command Output Synopsis colout [-h] [-r RESOURCE] colout [-g] [-c] [-l min,max] [-a] [-t] [-T DIR] [-P DIR] [-d COLORM

nojhan 1.1k Dec 21, 2022
Library for building powerful interactive command line applications in Python

Python Prompt Toolkit prompt_toolkit is a library for building powerful interactive command line applications in Python. Read the documentation on rea

prompt-toolkit 8.1k Dec 30, 2022
prompt_toolkit is a library for building powerful interactive command line applications in Python.

Python Prompt Toolkit prompt_toolkit is a library for building powerful interactive command line applications in Python. Read the documentation on rea

prompt-toolkit 8.1k Jan 4, 2023
Typer, build great CLIs. Easy to code. Based on Python type hints.

Typer, build great CLIs. Easy to code. Based on Python type hints. Documentation: https://typer.tiangolo.com Source Code: https://github.com/tiangolo/

Sebastián Ramírez 10.1k Jan 2, 2023
Python composable command line interface toolkit

$ click_ Click is a Python package for creating beautiful command line interfaces in a composable way with as little code as necessary. It's the "Comm

The Pallets Projects 13.3k Dec 31, 2022
Python Command-line Application Tools

Clint: Python Command-line Interface Tools Clint is a module filled with a set of awesome tools for developing commandline applications. C ommand L in

Kenneth Reitz Archive 82 Dec 28, 2022
Corgy allows you to create a command line interface in Python, without worrying about boilerplate code

corgy Elegant command line parsing for Python. Corgy allows you to create a command line interface in Python, without worrying about boilerplate code.

Jayanth Koushik 7 Nov 17, 2022
Command line animations based on the state of the system

shell-emotions Command line animations based on the state of the system for Linux or Windows 10 The ascii animations were created using a modified ver

Simon Malave 63 Nov 12, 2022
Cleo allows you to create beautiful and testable command-line interfaces.

Cleo Create beautiful and testable command-line interfaces. Cleo is mostly a higher level wrapper for CliKit, so a lot of the components and utilities

Sébastien Eustace 984 Jan 2, 2023
Pythonic command line arguments parser, that will make you smile

docopt creates beautiful command-line interfaces Video introduction to docopt: PyCon UK 2012: Create *beautiful* command-line interfaces with Python N

null 7.7k Dec 30, 2022
A minimal and ridiculously good looking command-line-interface toolkit

Proper CLI Proper CLI is a Python package for creating beautiful, composable, and ridiculously good looking command-line-user-interfaces without havin

Juan-Pablo Scaletti 2 Dec 22, 2022
Textual is a TUI (Text User Interface) framework for Python using Rich as a renderer.

Textual is a TUI (Text User Interface) framework for Python using Rich as a renderer. The end goal is to be able to rapidly create rich termin

Will McGugan 17k Jan 2, 2023
Rich is a Python library for rich text and beautiful formatting in the terminal.

Rich 中文 readme • lengua española readme • Läs på svenska Rich is a Python library for rich text and beautiful formatting in the terminal. The Rich API

Will McGugan 41.4k Jan 2, 2023
sane is a command runner made simple.

sane is a command runner made simple.

Miguel M. 22 Jan 3, 2023
Simple cross-platform colored terminal text in Python

Colorama Makes ANSI escape character sequences (for producing colored terminal text and cursor positioning) work under MS Windows. PyPI for releases |

Jonathan Hartley 3k Jan 1, 2023
A cross platform package to do curses-like operations, plus higher level APIs and widgets to create text UIs and ASCII art animations

ASCIIMATICS Asciimatics is a package to help people create full-screen text UIs (from interactive forms to ASCII animations) on any platform. It is li

null 3.2k Jan 9, 2023
Python library that measures the width of unicode strings rendered to a terminal

Introduction This library is mainly for CLI programs that carefully produce output for Terminals, or make pretend to be an emulator. Problem Statement

Jeff Quast 305 Dec 25, 2022
Terminalcmd - a Python library which can help you to make your own terminal program with high-intellegence instruments

Terminalcmd - a Python library which can help you to make your own terminal program with high-intellegence instruments, that will make your code clear and readable.

Dallas 0 Jun 19, 2022
A simple terminal Christmas tree made with Python

Python Christmas Tree A simple CLI Christmas tree made with Python Installation Just clone the repository and run $ python terminal_tree.py More opti

Francisco B. 64 Dec 27, 2022