Source code for ymp.cli
import click
import click_completion
import ymp
from ymp.cli.env import env
from ymp.cli.make import make, submit
from ymp.cli.shared_options import group
from ymp.cli.stage import stage
from ymp.cli.show import show
from ymp.cli.init import init
click_completion.init()
[docs]def install_completion(ctx, attr, value):
"""Installs click_completion tab expansion into users shell"""
if not value or ctx.resilient_parsing:
return value
shell, path = click_completion.install()
click.echo('%s completion installed in %s' % (shell, path))
exit(0)
[docs]def install_profiler(ctx, attr, value):
if not value or ctx.resilient_parsing:
return value
import yappi
import atexit
def dump_profile():
profile = yappi.get_func_stats()
profile.sort("ttot")
profile.print_all(out=value, columns={
0: ("name", 120),
1: ("ncall", 10),
2: ("tsub", 8),
3: ("ttot", 8),
4: ("tavg", 8)})
yappi.start()
atexit.register(dump_profile)
@group()
@click.version_option(version=ymp.__version__)
@click.option(
'--install-completion', is_flag=True,
callback=install_completion, expose_value=False,
help="Install command completion for the current shell. "
"Make sure to have psutil installed.")
@click.option(
'--profile', type=click.File(mode="w"),
callback=install_profiler, expose_value=False,
help="Profile execution time using Yappi"
)
def main(**kwargs):
"""
Welcome to YMP!
Please find the full manual at https://ymp.readthedocs.io
"""
main.add_command(make)
main.add_command(submit)
main.add_command(env)
main.add_command(stage)
main.add_command(show)
main.add_command(init)