ms3.skeleton — ms3 0.1.2.post0.dev2+g9d887e1.dirty documentation

# Source code for ms3.skeleton

    # -*- coding: utf-8 -*-
    """
    This is a skeleton file that can serve as a starting point for a Python
    console script. To run this script uncomment the following lines in the
    [options.entry_points] section in setup.cfg:

        console_scripts =
             fibonacci = ms3.skeleton:run

    Then run `python setup.py install` which will install the command `fibonacci`
    inside your current environment.
    Besides console scripts, the header (i.e. until _logger...) of this file can
    also be used as template for Python modules.

    Note: This skeleton file can be safely removed if not needed!
    """

    import argparse
    import sys
    import logging

    from ms3 import __version__

    __author__ = "johentsch"
    __copyright__ = "johentsch"
    __license__ = "gpl3"

    _logger = logging.getLogger(__name__)

    def fib(n):
        """Fibonacci example function

        Args:
          n (int): integer

        Returns:
          int: n-th Fibonacci number
        """
        assert n > 0
        a, b = 1, 1
        for i in range(n-1):
            a, b = b, a+b
        return a

    def parse_args(args):
        """Parse command line parameters

        Args:
          args ([str]): command line parameters as list of strings

        Returns:
          :obj:`argparse.Namespace`: command line parameters namespace
        """
        parser = argparse.ArgumentParser(
            description="Just a Fibonacci demonstration")
        parser.add_argument(
            "--version",
            action="version",
            version="ms3 {ver}".format(ver=__version__))
        parser.add_argument(
            dest="n",
            help="n-th Fibonacci number",
            type=int,
            metavar="INT")
        parser.add_argument(
            "-v",
            "--verbose",
            dest="loglevel",
            help="set loglevel to INFO",
            action="store_const",
            const=logging.INFO)
        parser.add_argument(
            "-vv",
            "--very-verbose",
            dest="loglevel",
            help="set loglevel to DEBUG",
            action="store_const",
            const=logging.DEBUG)
        return parser.parse_args(args)

    def setup_logging(loglevel):
        """Setup basic logging

        Args:
          loglevel (int): minimum loglevel for emitting messages
        """
        logformat = "[%(asctime)s] %(levelname)s:%(name)s:%(message)s"
        logging.basicConfig(level=loglevel, stream=sys.stdout,
                            format=logformat, datefmt="%Y-%m-%d %H:%M:%S")

    def main(args):
        """Main entry point allowing external calls

        Args:
          args ([str]): command line parameter list
        """
        args = parse_args(args)
        setup_logging(args.loglevel)
        _logger.debug("Starting crazy calculations...")
        print("The {}-th Fibonacci number is {}".format(args.n, fib(args.n)))
        _logger.info("Script ends here")

    def run():
        """Entry point for console_scripts
        """
        main(sys.argv[1:])

    class score():
        pass

    if __name__ == "__main__":
        run()