import click from werkzeug.serving import run_simple from coolmagic import make_app @click.group() def cli(): pass @cli.command() @click.option("-h", "--hostname", type=str, default="localhost", help="localhost") @click.option("-p", "--port", type=int, default=5000, help="5000") @click.option("--no-reloader", is_flag=True, default=False) @click.option("--debugger", is_flag=True) @click.option("--no-evalex", is_flag=True, default=False) @click.option("--threaded", is_flag=True) @click.option("--processes", type=int, default=1, help="1") def runserver(hostname, port, no_reloader, debugger, no_evalex, threaded, processes): """Start a new development server.""" app = make_app() reloader = not no_reloader evalex = not no_evalex run_simple( hostname, port, app, use_reloader=reloader, use_debugger=debugger, use_evalex=evalex, threaded=threaded, processes=processes, ) @cli.command() @click.option("--no-ipython", is_flag=True, default=False) def shell(no_ipython): """Start a new interactive python session.""" banner = "Interactive Werkzeug Shell" namespace = dict() if not no_ipython: try: try: from IPython.frontend.terminal.embed import InteractiveShellEmbed sh = InteractiveShellEmbed.instance(banner1=banner) except ImportError: from IPython.Shell import IPShellEmbed sh = IPShellEmbed(banner=banner) except ImportError: pass else: sh(local_ns=namespace) return from code import interact interact(banner, local=namespace) if __name__ == "__main__": cli()