Skip to content

Commit

Permalink
📝 Update references to Typer CLI in docs
Browse files Browse the repository at this point in the history
  • Loading branch information
tiangolo committed Mar 11, 2020
1 parent e96b8af commit ef742a2
Show file tree
Hide file tree
Showing 5 changed files with 52 additions and 10 deletions.
8 changes: 4 additions & 4 deletions docs/features.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,20 +44,20 @@ The resulting CLI apps created with **Typer** have the nice features of many "pr

* Automatic help options for the main CLI program and all the its subcommands.
* Automatic command and subcommand structure handling (you will see more about subcommands in the Tutorial - User Guide).
* Automatic autocompletion for the CLI app in all operating systems, in all the shells (Bash, Zsh, Fish, PowerShell), so that the final user of your app can just hit <kbd>TAB</kbd> and get the available options or subcommands. *
* Automatic completion for the CLI app in all operating systems, in all the shells (Bash, Zsh, Fish, PowerShell), so that the final user of your app can just hit <kbd>TAB</kbd> and get the available options or subcommands. *

!!! note "* Autocompletion"
!!! note "* Auto completion"
For the autocompletion to work on all shells you also need to add the dependency `click-completion`.

Just that. And **Typer** does the rest.

If **Typer** detects `click-completion` installed, it will automatically create 2 *CLI options*:

* `--install-completion`: Install completion for the current shell.
* `--show-completion`: Show completion for the current shell, to copy it or customize the installation.

Then you can tell the user to run that command and the rest will just work.

It works when you create a package (installable with `pip`). Or when using [Typer CLI](typer-cli.md){.internal-link target=_blank}.

## The power of Click

<a href="https://click.palletsprojects.com" class="external-link" target="_blank">Click</a> is one of the most popular tools for building CLIs in Python.
Expand Down
9 changes: 6 additions & 3 deletions docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ The key features are:
* **Easy to use**: It's easy to use for the final users. Automatic help, and (optional) automatic completion for all shells.
* **Short**: Minimize code duplication. Multiple features from each parameter declaration. Fewer bugs.
* **Start simple**: The simplest example adds only 2 lines of code to your app: **1 import, 1 function call**.
* **Grow large**: Grow in complexity as much as you want, create arbitrarily complex trees of commands and groups subcommands, with options and arguments.
* **Grow large**: Grow in complexity as much as you want, create arbitrarily complex trees of commands and groups of subcommands, with options and arguments.

## Requirements

Expand Down Expand Up @@ -98,7 +98,7 @@ Options:
--show-completion Show completion for the current shell, to copy it or customize the installation.
--help Show this message and exit.

// You get ✨ auto completion ✨ for free, installed with --install-completion
// When you create a package you get ✨ auto completion ✨ for free, installed with --install-completion

// Now pass the NAME argument
$ python main.py Camila
Expand All @@ -110,6 +110,8 @@ Hello Camila

</div>

**Note**: Auto completion works when you create a Python package and run it with `--install-completion` or when you use <a href="https://typer.tiangolo.com/typer-cli/" class="internal-link" target="_blank">Typer CLI</a>.

## Example upgrade

This was the simplest example possible.
Expand Down Expand Up @@ -241,7 +243,7 @@ And similarly for **files**, **paths**, **enums** (choices), etc. And there are

**You get**: great editor support, including **completion** and **type checks** everywhere.

**Your users get**: automatic **`--help`**, (optional) **autocompletion** in their terminal (Bash, Zsh, Fish, PowerShell).
**Your users get**: automatic **`--help`**, (optional) **auto completion** in their terminal (Bash, Zsh, Fish, PowerShell) when they install your package or when using <a href="https://typer.tiangolo.com/typer-cli/" class="internal-link" target="_blank">Typer CLI</a>.

For a more complete example including more features, see the <a href="https://typer.tiangolo.com/tutorial/">Tutorial - User Guide</a>.

Expand All @@ -267,6 +269,7 @@ For example:
* <a href="https://github.com/click-contrib/click-spinner" class="external-link" target="_blank"><code>click-spinner</code></a>: to show the user that you are loading data. A Click plug-in.
* There are several other Click plug-ins at <a href="https://github.com/click-contrib" class="external-link" target="_blank">click-contrib</a> that you can explore.
* <a href="https://pypi.org/project/tabulate/" class="external-link" target="_blank"><code>tabulate</code></a>: to automatically display tabular data nicely. Independent of Click or typer.
* <a href="https://github.com/tqdm/tqdm" class="external-link" target="_blank"><code>tqdm</code></a>: a fast, extensible progress bar, alternative to Typer's own `typer.progressbar()`.
* etc... you can re-use many of the great available tools for building CLIs.

## License
Expand Down
39 changes: 39 additions & 0 deletions docs/tutorial/first-steps.md
Original file line number Diff line number Diff line change
Expand Up @@ -436,3 +436,42 @@ We'll use ***CLI argument*** to refer to those *CLI parameters* that depend on a
And we'll use ***CLI option*** to refer to those *CLI parameters* that depend on a name that starts with `--` (like `--lastname`). That are **optional** by default.

We will use ***CLI parameter*** to refer to both, *CLI arguments* and *CLI options*.

## **Typer CLI**

Now that you know the basics of **Typer**, you might want to install and use [Typer CLI](../typer-cli.md){.internal-link target=_blank}.

**Typer CLI** is a tool to run your **Typer** scripts giving you ✨ auto completion ✨ in your terminal.

As an alternative to running with Python:

<div class="termy">

```console
$ python main.py

Hello World
```

</div>

You can run with **Typer CLI**:

<div class="termy">

```console
$ typer main.py run

Hello World
```

</div>

...and it will give you auto completion in your terminal when you hit <kbd>TAB</kbd> for all your code.

So you can use it to have auto completion as you continue with the tutorial.

!!! tip
Your CLI application built with **Typer** won't need [Typer CLI](../typer-cli.md){.internal-link target=_blank} to have auto completion once you create a Python package.

But for short scripts and for learning, before creating a Python package, it might be useful.
4 changes: 2 additions & 2 deletions docs/tutorial/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,9 +57,9 @@ You can learn a lot more by running some examples and playing around with them t

---

## Install Typer
## Install **Typer**

The first step is to install Typer.
The first step is to install **Typer**.

For the tutorial, you might want to install it with all the optional dependencies and features:

Expand Down
2 changes: 1 addition & 1 deletion mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ nav:
- Progress Bar: 'tutorial/progressbar.md'
- CLI Application Directory: 'tutorial/app-dir.md'
- Launching Applications: 'tutorial/launch.md'
- Typer CLI - the CLI tool for Typer: 'typer-cli.md'
- Typer CLI - completion for small scripts: 'typer-cli.md'
- Alternatives, Inspiration and Comparisons: 'alternatives.md'
- Help Typer - Get Help: 'help-typer.md'
- Development - Contributing: 'contributing.md'
Expand Down

1 comment on commit ef742a2

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please sign in to comment.