Comments (2)
Here is one way (overriding get_usage
from the default TyperGroup
cls):
You could also use the format_usage
.
import click
import typer
from typer.core import TyperGroup as TyperGroupBase
class TyperGroup(TyperGroupBase):
"""Custom TyperGroup class."""
def get_usage(self, ctx: click.Context) -> str:
"""Override get_usage."""
usage = super().get_usage(ctx)
message = (
'Message Above.\n'
+ usage
+ '\nMessage Below.'
)
return message
app = typer.Typer(
name='myapp',
help='MyApp cli actions.',
no_args_is_help=True,
context_settings={"help_option_names": ["-h", "--help"]},
invoke_without_command=True,
options_metavar="[OPTIONS]",
cls=TyperGroup,
)
@app.callback(invoke_without_command=True)
def get_version(
version: bool = typer.Option(
False,
"--version",
"-v",
help="Print version and exit.",
),
) -> None:
"""Display the version."""
if version:
typer.echo(f"myapp 0.0.1")
raise typer.Exit()
if __name__ == '__main__':
app()
Message Above.
Usage: app.py [OPTIONS] COMMAND [ARGS]...
Message Below.
MyApp cli actions.
╭─ Options ────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ --version -v Print version and exit. │
│ --install-completion Install completion for the current shell. │
│ --show-completion Show completion for the current shell, to copy it or customize the installation. │
│ --help -h Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
from typer.
Maybe this needs to be a separate ticket, but I would like to be able to call a custom function in either prolog or epilog. The reason is that I use rich to create a table of data sources that can be accessed by various commands; I can't just dump that table into a decorator (as far as I know). Ideally I could just add a @prolog or @epilog decorator to a function, and let it do whatever it wants.
from typer.
Related Issues (20)
- How do I pass the None value explicitly? HOT 2
- Documentation is misleading. new `typer.run` behavior HOT 2
- See if rich 13.x is compatible HOT 4
- Using `some_type | None` syntax for type annotations causes error in python 3.11 HOT 16
- unlimited argument for an option with comma spliter HOT 2
- TAB completion is giving local directory files where command is called. HOT 8
- Support for bytes in Options and Arguments HOT 3
- Get the typer output with html format to provide it to termynal HOT 5
- how to use typer on class method __init__ with self argument, got this error: Error: Missing argument 'SELF'. HOT 2
- Support for localization of messages HOT 1
- Auto-completion when application works in 2 modes (GUI, CLI) HOT 1
- DOC: Documentation of passing multiple values in "option" vs "argument" isn't sufficiently explicit HOT 2
- SIGINT from docker is ignored HOT 4
- 🚀 Roadmap HOT 4
- Source distribution of 0.11.0 is missing the `docs_src` folder HOT 1
- 🐛 Upgrading from `typer<0.12.0` to `typer==0.12.0` breaks the install by partially removing the package/module files HOT 4
- Rich markup in generated Markdown docs HOT 1
- Add CI configs to run tests on Windows and MacOS
- Rich markup in Zsh completion help lines HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from typer.