[X] I added a very descriptive title to this issue.
[X] I used the GitHub search to find a similar issue and didn't find it.
[X] I searched the Typer documentation, with the integrated search.
[X] I already searched in Google "How to X in Typer" and didn't find any information.
[X] I already read and followed all the tutorial in the docs and didn't find an answer.
[X] I already checked if it is not related to Typer but to Click.
Commit to Help
[X] I commit to help with one of those options 👆
Example Code
import typer
valid_names = ["Camila", "Carlos", "Sebastian"]
def complete_name(incomplete: str):
completion = []
for name in valid_names:
if name.startswith(incomplete):
completion.append(name)
return completion
def main(
name: str = typer.Option(
"World", help="The name to say hi to.", autocompletion=complete_name
)
):
typer.echo(f"Hello {name}")
if __name__ == "__main__":
typer.run(main)
Description
The intro example from the documentation fails in powershell if you start an incomplete name. For example typer ./main.py run --name Ca[TAB][TAB] fails to suggest completions, tho typer ./main.py run --name [TAB][TAB] does.
The powershell completion set args to the full list of arguments including the incomplete word, e.g. args = ['--name', 'Ca'], incomplete='Ca' unlike the bash completion which drops the incomplete word, e.g. args = ['--name'], incomplete='Ca'.
It looks straightforward to use the $cursorPosition
variable to figure out where to truncate the string and take all but the last arg up to that point. I'll experiment and make a PR.
First Check
Commit to Help
Example Code
Description
The intro example from the documentation fails in powershell if you start an incomplete name. For example
typer ./main.py run --name Ca[TAB][TAB]
fails to suggest completions, thotyper ./main.py run --name [TAB][TAB]
does.The powershell completion set
args
to the full list of arguments including the incomplete word, e.g.args = ['--name', 'Ca'], incomplete='Ca'
unlike the bash completion which drops the incomplete word, e.g.args = ['--name'], incomplete='Ca'
.It looks straightforward to use the
$cursorPosition
variable to figure out where to truncate the string and take all but the last arg up to that point. I'll experiment and make a PR.Operating System
Windows
Operating System Details
Windows 11, powershell 7
Typer Version
0.4.0
Python Version
3.7.12
Additional Context
No response