Metadata-Version: 2.0
Name: miniconfig-argparse
Version: 0.0.2
Summary: argparser factory for miniconfig
Home-page: https://github.com/podhmo/miniconfig-argparse
Author: podhmo
Author-email: UNKNOWN
License: mit
Keywords: miniconfig,argparse
Platform: UNKNOWN
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: Implementation :: CPython
Requires-Dist: miniconfig
Requires-Dist: cached-property
Requires-Dist: handofcats
Provides-Extra: docs
Provides-Extra: testing

miniconfig-argparse
========================================

argparse settings with miniconfig

code
----------------------------------------

.. code-block:: python

   from miniconfig_argparse import get_configurator


   config = get_configurator()
   config.include("yourmodule")
   config.include("yourmodule.extra")

   args = config.make_args()
   # using args

in yourmodule, using config like a below.

.. code-block:: python

   def includeme(config):
       parser = config.parser

       parser.add_argument(
           '-v', '--verbose', action='count', default=0,
           help="(default option: increment logging level(default is WARNING))"
       )
       parser.add_argument(
           '-q', '--quiet', action='count', default=0,
           help="(default option: decrement logging level(default is WARNING))"
       )

       def setup_closure(args):
           logging_level = logging.WARN + 10 * args.quiet - 10 * args.verbose
           logging.basicConfig(level=logging_level)
           return args

       parser.add_callback(setup_closure)

default directives
----------------------------------------

- make_parser
- replace_parser
- call_function_as_command

make_parser(fn) + call_function_as_command
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Using `make_parser()` and `call_function_as_command()` combinations are useful, sometimes.

- `make_parser(fn)` -- creating parser from a function definition.
- `call_function_as_command` -- call function using parsed argument object.

Such as below.

.. code-block:: python

   def greeting(message, is_surprised=False, name="foo"):
       """ greeting message

       :param message: message of greeting
       :param is_surprised: surprised or not (default=False)
       :param name: name of actor
       """
       suffix = "!" if is_surprised else ""
       print("{name}: {message}{suffix}".format(name=name, message=message, suffix=suffix))


   def includeme(config):
       parser = config.make_parser(greeting)
       config.replace_parser(parser)


   if __name__ == "__main__":
       from miniconfig_argparse import get_configurator
       config = get_configurator()
       config.include(includeme)

       args = config.make_args()
       config.call_function_as_command(greeting, args)






