added a flask venv
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
# 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.
|
||||
#
|
||||
"""
|
||||
Utilities
|
||||
~~~~~~~~~
|
||||
"""
|
||||
import argparse
|
||||
import inspect
|
||||
|
||||
from argh import compat
|
||||
|
||||
|
||||
def get_subparsers(parser, create=False):
|
||||
"""
|
||||
Returns the :class:`argparse._SubParsersAction` instance for given
|
||||
:class:`ArgumentParser` instance as would have been returned by
|
||||
:meth:`ArgumentParser.add_subparsers`. The problem with the latter is that
|
||||
it only works once and raises an exception on the second attempt, and the
|
||||
public API seems to lack a method to get *existing* subparsers.
|
||||
|
||||
:param create:
|
||||
If `True`, creates the subparser if it does not exist. Default if
|
||||
`False`.
|
||||
|
||||
"""
|
||||
# note that ArgumentParser._subparsers is *not* what is returned by
|
||||
# ArgumentParser.add_subparsers().
|
||||
if parser._subparsers:
|
||||
actions = [a for a in parser._actions
|
||||
if isinstance(a, argparse._SubParsersAction)]
|
||||
assert len(actions) == 1
|
||||
return actions[0]
|
||||
else:
|
||||
if create:
|
||||
return parser.add_subparsers()
|
||||
|
||||
|
||||
def get_arg_spec(function):
|
||||
"""
|
||||
Returns argument specification for given function. Omits special
|
||||
arguments of instance methods (`self`) and static methods (usually `cls`
|
||||
or something like this).
|
||||
"""
|
||||
spec = compat.getargspec(function)
|
||||
if inspect.ismethod(function):
|
||||
spec = spec._replace(args=spec.args[1:])
|
||||
return spec
|
||||
Reference in New Issue
Block a user