Example #1
0
    def test_custom_param_help(self):
        class CustParam(parser.OptionParameter):
            def show_help(self, desc, after, f, cols):
                cols.append('I am', 'a custom parameter!')
                f.append("There is stuff after me.")
                f.append(desc)
                f.extend(after)

        func = f("*, param: a",
                 locals={'a': parser.use_class(named=CustParam)})
        func.__doc__ = """
            param: Param desc

            After param

            _:_

        """
        r = runner.Clize(func)
        self._do_test(
            r, ['func --param=STR', USAGE_HELP], """
            Usage: func [OPTIONS]

            Options:
                I am    a custom parameter!

            There is stuff after me.

            Param desc

            After param

            Other actions:
                -h, --help  Show the help
        """)
Example #2
0
    def test_custom_param_help(self):
        class CustParam(parser.OptionParameter):
            def show_help(self, desc, after, f, cols):
                cols.append('I am', 'a custom parameter!')
                f.append("There is stuff after me.")
                f.append(desc)
                f.extend(after)
        func = f(
            "*, param: a",
            locals={'a': parser.use_class(named=CustParam)})
        func.__doc__ = """
            param: Param desc

            After param

            _:_

        """
        r = runner.Clize(func)
        self._do_test(r, ['func --param=STR', USAGE_HELP], """
            Usage: func [OPTIONS]

            Options:
                I am    a custom parameter!

            There is stuff after me.

            Param desc

            After param

            Other actions:
                -h, --help  Show the help
        """)
Example #3
0
def multi(min=0, max=None):
    """For option parameters, allows the parameter to be repeated on the
    command-line with an optional minimum or maximum. For ``*args``-like
    parameters, just adds the optional bounds.

    .. literalinclude:: /../examples/multi.py
        :lines: 5-13
    """

    return parser.use_class(
        named=MultiOptionParameter, varargs=parser.ExtraPosArgsParameter, kwargs={"min": min, "max": max}
    )
Example #4
0
def value_inserter(value_factory):
    """Create an annotation that hides a parameter from the command-line
    and always gives it the result of a function.

    :param function value_factory: Called to determine the value to provide
        for the parameter. The current `.parser.CliBoundArguments` instance
        is passed as argument, ie. ``value_factory(ba)``.
    """
    uc = parser.use_class(pos=InserterPositionalParameter,
                          named=InserterNamedParameter,
                          kwargs={'value_factory': value_factory})
    update_wrapper(uc, value_factory)
    return uc
Example #5
0
def value_inserter(value_factory):
    """Create an annotation that hides a parameter from the command-line
    and always gives it the result of a function.

    :param function value_factory: Called to determine the value to provide
        for the parameter. The current `.parser.CliBoundArguments` instance
        is passed as argument, ie. ``value_factory(ba)``.
    """
    uc = parser.use_class(
        pos=InserterPositionalParameter, named=InserterNamedParameter, kwargs={"value_factory": value_factory}
    )
    update_wrapper(uc, value_factory)
    return uc
Example #6
0
def multi(min=0, max=None):
    """For option parameters, allows the parameter to be repeated on the
    command-line with an optional minimum or maximum. For ``*args``-like
    parameters, just adds the optional bounds.

    .. literalinclude:: /../examples/multi.py
        :lines: 4-10
    """

    return parser.use_class(
        named=MultiOptionParameter, varargs=parser.ExtraPosArgsParameter,
        kwargs={
            'min': min,
            'max': max,
        }, name="multi")
Example #7
0
def value_inserter(value_factory):
    """Create an annotation that hides a parameter from the command-line
    and always gives it the result of a function.

    :param function value_factory: Called to determine the value to provide
        for the parameter. The current `.parser.CliBoundArguments` instance
        is passed as argument, ie. ``value_factory(ba)``.
    """
    try:
        name = value_factory.__name__
    except AttributeError:
        name = repr(value_factory)
    uc = parser.use_class(
        pos=InserterPositionalParameter, named=InserterNamedParameter,
        kwargs={'value_factory': value_factory},
        name='value_inserter({})'.format(name))
    update_wrapper(uc, value_factory)
    return uc
Example #8
0
    def __init__(self, conv, value=logging.INFO, **kwargs):
        super(LogLevelParameter, self).__init__(
            conv=loglevel, value=value, **kwargs)

    def help_parens(self):
        if self.default is not util.UNSET:
            for k, v in levels.items():
                if v == self.default:
                    default = k
                    break
            else:
                default = self.default
            yield 'default: {0}'.format(default)


log_level = parser.use_class(named=LogLevelParameter)


def try_log(logger):
    logger.debug("Debug")
    logger.info("Info")
    logger.warning("Warning")
    logger.error("Error")
    logger.critical("Critical")


@wrappers.decorator
def with_logger(wrapped, *args, log:log_level=logging.CRITICAL, **kwargs):
    """
    Logging options:
Example #9
0
        super(LogLevelParameter, self).__init__(conv=loglevel,
                                                value=value,
                                                **kwargs)

    def help_parens(self):
        if self.default is not util.UNSET:
            for k, v in levels.items():
                if v == self.default:
                    default = k
                    break
            else:
                default = self.default
            yield 'default: {0}'.format(default)


log_level = parser.use_class(named=LogLevelParameter)


def try_log(logger):
    logger.debug("Debug")
    logger.info("Info")
    logger.warning("Warning")
    logger.error("Error")
    logger.critical("Critical")


@wrappers.decorator
def with_logger(wrapped, *args, log: log_level = logging.CRITICAL, **kwargs):
    """
    Logging options:
Example #10
0
def multi(min=0, max=None):
    return parser.use_class(named=MultiOptionParameter, kwargs={
            'min': min,
            'max': max,
        })