Comments (5)
You have to also provide the Command class, like:
import typer
from click_help_colors import HelpColorsGroup, HelpColorsCommand
class CustomHelpColorsGroup(HelpColorsGroup):
def __init__(self, *args, **kwargs) -> None:
super().__init__(*args, **kwargs)
self.help_headers_color = "blue"
self.help_options_color = "yellow"
class CustomHelpColorsCommand(HelpColorsCommand):
def __init__(self, *args, **kwargs) -> None:
super().__init__(*args, **kwargs)
self.help_headers_color = "blue"
self.help_options_color = "yellow"
app = typer.Typer(cls=CustomHelpColorsGroup)
@app.command(cls=CustomHelpColorsCommand)
def test_function(
name: str = typer.Option("World", "--name", "-n", help="name to say hello")
) -> None:
typer.echo(f"Hello {name}!")
@app.command(cls=CustomHelpColorsCommand)
def other() -> None:
typer.echo("other")
if __name__ == "__main__":
app()
This is because HelpColorsGroup
defines its own method command
that overrides the default command
method from Click, to provide its own HelpColorsCommand
class instead of the default Command
class.
But Typer doesn't modify nor use Click classes directly, when you use @app.command()
that is not the same as with a Click @cli.command()
.
Typer doesn't modify the function to replace it with an instance of a class, instead, it registers the function to use and the class to use, and then it creates the specific objects when you call it. But doing it as described above should work fine (I just tested it 😄 ).
from typer.
Just wanted to add, if you want to avoid having to add the cls
to every command and/or Typer, you can just subclass them. So adding onto @tiangolo, it would be something like this:
class LootMarshalTyper(typer.Typer):
def __init__(self, *args, cls=CustomHelpColorsGroup, **kwargs) -> None:
super().__init__(*args, cls=cls, **kwargs)
def command(self, *args, cls=CustomHelpColorsCommand, **kwargs) -> typer.Typer.command:
return super().command(*args, cls=cls, **kwargs)
Hope this helps.
from typer.
Assuming the original issue was solved, it will be automatically closed now. But feel free to add more comments or create new issues.
from typer.
Here is a full example I found of using click-help-color with typer https://github.com/daddycocoaman/AzDummy/blob/78438183c95102c5aed5af3578af31601bd7f423/azdummy/core/typer.py#L2
from typer.
Apparently typer is no longer compatible with click-help-colors since 0.7
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 12
- unlimited argument for an option with comma spliter HOT 1
- TAB completion is giving local directory files where command is called. HOT 2
- Support for bytes in Options and Arguments HOT 2
- Is it possible to include a Prolog in `--help` HOT 2
- Get the typer output with html format to provide it to termynal HOT 4
- 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 1
- SIGINT from docker is ignored HOT 4
- 🚀 Roadmap HOT 2
- 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
- Add CI configs to run tests on Windows and MacOS
- Rich markup in Zsh completion help lines
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.