Extra utils for click library
Project description
ClickUtils
Extra utils for click library
Examples
Loading click groups and commands from filepath or directory
Directory structure
_ cwd
|_ __init__.py (contains code below)
|_ plugins/
|_ group_or_command_folder
|_ *groups (this folder must exists to find click groups or commands)
|_ __init__.py (any click groups or commands will be pulled from this location)
...
import os
import click
from clickutils import click_loader
@click.group()
@click.option('--verbose', '-v', type=bool, is_flag=True, default=False,
help='Print more verbose output')
def cli(verbose: bool):
'''click_plugins'''
click_loader.load(plugins_group, os.path.dirname(os.path.abspath(__file__)), verbose=verbose)
@click.group()
def plugins_group():
'''click_plugins test plugins'''
pass
cli.add_command(plugins_group, name='plugins')
if __name__ == '__main__':
cli()
Same example using decorator
import os
import click
from clickutils import click_loader
@click.group()
def cli(verbose: bool):
'''click_plugins'''
@click_loader.group(os.path.dirname(os.path.abspath(__file__)), name='plugins')
def plugins_group():
'''click_plugins test plugins'''
pass
cli.add_command(plugins_group)
if __name__ == '__main__':
cli()
Early example of ClickViewset
import click
from clickutils.viewsets import AbstractClickViewset, clickmixins
from clickutils.viewsets import AbstractClickViewset, clickmixins
class UserDictViewset(AbstractClickViewset):
Name = 'DictionaryViewset'
Version = '1.0.0'
Viewset = {'users': ['user1', 'user2', 'user3']}
commands = ('list', 'version', 'another_command', 'echo')
hidden_commands = ('echo', )
@clickmixins.command(name='another_command')
def another_command(self):
print('defined another user command that can interact with object (self) which contains Viewset attributes')
"""
overloading convert function in BaseClickViewset;
this is a custom way to add the Viewset into the command class attributes
"""
def convert(self):
if isinstance(self.Viewset, dict):
for key, value in self.Viewset.items():
setattr(self, key, value)
@UserDictViewset(name='test_command2')
def test_command_group2():
"""Test command2 plugin"""
pass
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
clickutils-0.1.6.tar.gz
(8.2 kB
view hashes)