added a flask venv
This commit is contained in:
@@ -0,0 +1,94 @@
|
||||
# coding: utf-8
|
||||
#
|
||||
# Copyright © 2010—2014 Andrey Mikhaylenko and contributors
|
||||
#
|
||||
# This file is part of Argh.
|
||||
#
|
||||
# Argh is free software under terms of the GNU Lesser
|
||||
# General Public License version 3 (LGPLv3) as published by the Free
|
||||
# Software Foundation. See the file README.rst for copying conditions.
|
||||
#
|
||||
"""
|
||||
Shell completion
|
||||
~~~~~~~~~~~~~~~~
|
||||
|
||||
Command and argument completion is a great way to reduce the number of
|
||||
keystrokes and improve user experience.
|
||||
|
||||
To display suggestions when you press :kbd:`tab`, a shell must obtain choices
|
||||
from your program. It calls the program in a specific environment and expects
|
||||
it to return a list of relevant choices.
|
||||
|
||||
`Argparse` does not support completion out of the box. However, there are
|
||||
3rd-party apps that do the job, such as argcomplete_ and
|
||||
python-selfcompletion_.
|
||||
|
||||
`Argh` supports only argcomplete_ which doesn't require subclassing
|
||||
the parser and monkey-patches it instead. Combining `Argh`
|
||||
with python-selfcompletion_ isn't much harder though: simply use
|
||||
`SelfCompletingArgumentParser` instead of vanilla `ArgumentParser`.
|
||||
|
||||
See installation details and gotchas in the documentation of the 3rd-party app
|
||||
you've chosen for the completion backend.
|
||||
|
||||
`Argh` automatically enables completion if argcomplete_ is available
|
||||
(see :attr:`COMPLETION_ENABLED`). If completion is undesirable in given app by
|
||||
design, it can be turned off by setting ``completion=False``
|
||||
in :func:`argh.dispatching.dispatch`.
|
||||
|
||||
Note that you don't *have* to add completion via `Argh`; it doesn't matter
|
||||
whether you let it do it for you or use the underlying API.
|
||||
|
||||
.. _argcomplete: https://github.com/kislyuk/argcomplete
|
||||
.. _python-selfcompletion: https://github.com/dbarnett/python-selfcompletion
|
||||
|
||||
Argument-level completion
|
||||
-------------------------
|
||||
|
||||
Argcomplete_ supports custom "completers". The documentation suggests adding
|
||||
the completer as an attribute of the argument parser action::
|
||||
|
||||
parser.add_argument("--env-var1").completer = EnvironCompleter
|
||||
|
||||
However, this doesn't fit the normal `Argh`-assisted workflow.
|
||||
It is recommended to use the :func:`~argh.decorators.arg` decorator::
|
||||
|
||||
@arg('--env-var1', completer=EnvironCompleter)
|
||||
def func(...):
|
||||
...
|
||||
|
||||
"""
|
||||
import logging
|
||||
import os
|
||||
|
||||
|
||||
COMPLETION_ENABLED = False
|
||||
"""
|
||||
Dynamically set to `True` on load if argcomplete_ was successfully imported.
|
||||
"""
|
||||
|
||||
try:
|
||||
import argcomplete
|
||||
except ImportError:
|
||||
pass
|
||||
else:
|
||||
COMPLETION_ENABLED = True
|
||||
|
||||
|
||||
__all__ = ['autocomplete', 'COMPLETION_ENABLED']
|
||||
|
||||
|
||||
logger = logging.getLogger(__package__)
|
||||
|
||||
|
||||
def autocomplete(parser):
|
||||
"""
|
||||
Adds support for shell completion via argcomplete_ by patching given
|
||||
`argparse.ArgumentParser` (sub)class.
|
||||
|
||||
If completion is not enabled, logs a debug-level message.
|
||||
"""
|
||||
if COMPLETION_ENABLED:
|
||||
argcomplete.autocomplete(parser)
|
||||
elif 'bash' in os.getenv('SHELL', ''):
|
||||
logger.debug('Bash completion not available. Install argcomplete.')
|
||||
Reference in New Issue
Block a user