Skip to content

required=True support [typer.Option] #361

Description

@kmcminn

First Check

  • I added a very descriptive title to this issue.
  • I used the GitHub search to find a similar issue and didn't find it.
  • I searched the Typer documentation, with the integrated search.
  • I already searched in Google "How to X in Typer" and didn't find any information.
  • I already read and followed all the tutorial in the docs and didn't find an answer.
  • I already checked if it is not related to Typer but to Click.

Commit to Help

  • I commit to help with one of those options 👆

Example Code

import typer
app = typer.Typer()

# currently required options look like this:
@app.command()
def main(
    username: str = typer.Option(..., help="A Username")
):
    <code>

Description

Please make typer.Option required arguments conform to a more readable syntax than ellipsis.

From the function param:

username: str = typer.Option(..., help="A Username")

unless you have working knowledge of this library you wouldn't be able to know if:

  • the default value for username is ellipsis
  • would be confused why the default value doesnt form to the type str
  • would probably not know without inspecing typer.Option's signature that the first argument is a default value
  • would not know that an ellipsis as a default would invoke additional option logic

Please consider moving this feature to a kwarg in typer.Option.

Wanted Solution

typer.Option supports a new kwarg: required: bool

Wanted Code

import typer
app = typer.Typer()

# This is a more expressive and readable
@app.command()
def main(
    username: str = typer.Option("", help="A Username", required=True)
):
    <code>

Alternatives

N/A

Operating System

Linux

Operating System Details

No response

Typer Version

0.4.0

Python Version

3.9+

Additional Context

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions