#!/usr/bin/env python
# coding: utf-8
"""Use of \'noargdoc\' function decorator

The :func:`~sphinxcontrib.argdoc.ext.noargdoc` function decorator tells
:obj:`sphinxcontrib.argdoc` to ignore a command-line script, leaving
its ``:automodule:`` output unchanged.

-----------------

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean feugiat
tempor diam sed condimentum. Mauris aliquam interdum libero, ut aliquet
erat malesuada sed. Mauris nec venenatis sapien, a feugiat neque. Sed
pulvinar erat sit amet posuere aliquet. Phasellus non quam tincidunt,
semper velit vitae, eleifend ante. Nam finibus vulputate diam. Fusce sit
amet leo aliquam magna gravida fringilla et eu justo. Pellentesque vulputate
elit id dignissim vehicula. Sed tempor interdum lacus, in dapibus magna
interdum eu. Fusce lacinia turpis vel risus porta, eget dapibus nisi
eleifend. Maecenas dictum nec nisi sit amet dignissim. Duis vestibulum
ipsum a vestibulum placerat. Vestibulum ante ipsum primis in faucibus orci
luctus et ultrices posuere cubilia Curae; Nullam consequat nulla quis quam
interdum, eu auctor ante molestie.

Here is a table, to show that we can have rich formatting:

    =============  ======================================================
    **Column 1**   **Column 2**
    -------------  ------------------------------------------------------
     Some item     Some other item.

     Table row 2.  Table row 2 column 2.

     Another row.  Row with a link to `Python <https://www.python.org>`_
    =============  ======================================================
 
See also
--------
A definition list
    The purpose of this `See also` section is just to show that we can use
    a number of reStructuredText structures, and still have the argument
    descriptions appended below.

Here is another item
    To show that our test works
"""
import argparse
import sys
from sphinxcontrib.argdoc import noargdoc

helptext = {
    "short" : "one-line help text",
    "long"  : "this is very, very long help text which should span multiple lines and thus require special parsing. We'll also add `special` *chars* (default: 513251324)",
}

choices = {
    "single" : ["one_choice"],
    "multi"  : ["one","two","three","four"],
}

@noargdoc
def main(argv=sys.argv[1:]):
    """Command-line program for `simple_parser`"""
    parser = argparse.ArgumentParser(description=__doc__,
                                     formatter_class=argparse.RawDescriptionHelpFormatter)
    # positional arguments
    parser.add_argument("shortpos1")
    parser.add_argument("shortpos2",help=helptext["short"])
    parser.add_argument("shortpos3",help=helptext["long"])
    parser.add_argument("reallyreallyreallyreallyreallyreallyreallyreallylongpositionalargument1")
    parser.add_argument("reallyreallyreallyreallyreallyreallyreallyreallylongpositionalargument2",help=helptext["short"])
    parser.add_argument("reallyreallyreallyreallyreallyreallyreallyreallylongpositionalargument3",help=helptext["long"])
 
    # optional arguments, one arg
    parser.add_argument("-a",metavar="X")
    parser.add_argument("-b",help=helptext["short"],metavar="X")
    parser.add_argument("-c",help=helptext["long"],metavar="X")
    parser.add_argument("--double1",metavar="X")
    parser.add_argument("--double2",help=helptext["short"],metavar="X")
    parser.add_argument("--double3",help=helptext["long"],metavar="X")
    parser.add_argument("-d","--combo1",metavar="X")
    parser.add_argument("-e","--combo2",help=helptext["short"],metavar="X")
    parser.add_argument("-f","--combo3",help=helptext["long"],metavar="X")
    parser.add_argument("--reallyreallyreallyreallyreallyreallylong_double1",metavar="X")
    parser.add_argument("--reallyreallyreallyreallyreallyreallylong_double2",help=helptext["short"],metavar="X")
    parser.add_argument("--reallyreallyreallyreallyreallyreallylong_double3",help=helptext["long"],metavar="X")
    parser.add_argument("-g","--reallyreallyreallyreallyreallyreallylong_combo1",metavar="X")
    parser.add_argument("-i","--reallyreallyreallyreallyreallyreallylong_combo2",help=helptext["short"],metavar="X")
    parser.add_argument("-j","--reallyreallyreallyreallyreallyreallylong_combo3",help=helptext["long"],metavar="X")

    # optional arguments, 2 args
    parser.add_argument("-k",nargs=2,metavar="X")
    parser.add_argument("-l",help=helptext["short"],nargs=2,metavar="X")
    parser.add_argument("-m",help=helptext["long"],nargs=2,metavar="X")
    parser.add_argument("--double4",nargs=2,metavar="X")
    parser.add_argument("--double5",help=helptext["short"],nargs=2,metavar="X")
    parser.add_argument("--double6",help=helptext["long"],nargs=2,metavar="X")
    parser.add_argument("-n","--combo4",nargs=2,metavar="X")
    parser.add_argument("-o","--combo5",help=helptext["short"],nargs=2,metavar="X")
    parser.add_argument("-p","--combo6",help=helptext["long"],nargs=2,metavar="X")
    parser.add_argument("--reallyreallyreallyreallyreallyreallylong_double4",nargs=2,metavar="X")
    parser.add_argument("--reallyreallyreallyreallyreallyreallylong_double5",help=helptext["short"],nargs=2,metavar="X")
    parser.add_argument("--reallyreallyreallyreallyreallyreallylong_double6",help=helptext["long"],nargs=2,metavar="X")
    parser.add_argument("-q","--reallyreallyreallyreallyreallyreallylong_combo4",nargs=2,metavar="X")
    parser.add_argument("-r","--reallyreallyreallyreallyreallyreallylong_combo5",help=helptext["short"],nargs=2,metavar="X")
    parser.add_argument("-s","--reallyreallyreallyreallyreallyreallylong_combo6",help=helptext["long"],nargs=2,metavar="X")

    # optional arguments, + args
    parser.add_argument("-t",nargs='+',metavar="X")
    parser.add_argument("-u",help=helptext["short"],nargs='+',metavar="X")
    parser.add_argument("-v",help=helptext["long"],nargs='+',metavar="X")
    parser.add_argument("--double7",nargs='+',metavar="X")
    parser.add_argument("--double8",help=helptext["short"],nargs='+',metavar="X")
    parser.add_argument("--double9",help=helptext["long"],nargs='+',metavar="X")
    parser.add_argument("-w","--combo7",nargs='+',metavar="X")
    parser.add_argument("-x","--combo8",help=helptext["short"],nargs='+',metavar="X")
    parser.add_argument("-y","--combo9",help=helptext["long"],nargs='+',metavar="X")
    parser.add_argument("--reallyreallyreallyreallyreallyreallylong_double7",nargs='+',metavar="X")
    parser.add_argument("--reallyreallyreallyreallyreallyreallylong_double8",help=helptext["short"],nargs='+',metavar="X")
    parser.add_argument("--reallyreallyreallyreallyreallyreallylong_double9",help=helptext["long"],nargs='+',metavar="X")
    parser.add_argument("-z","--reallyreallyreallyreallyreallyreallylong_combo7",nargs='+',metavar="X")
    parser.add_argument("-A","--reallyreallyreallyreallyreallyreallylong_combo8",help=helptext["short"],nargs='+',metavar="X")
    parser.add_argument("-B","--reallyreallyreallyreallyreallyreallylong_combo9",help=helptext["long"],nargs='+',metavar="X")

    # optional arguments, ? args
    parser.add_argument("-C",nargs='?',metavar="X")
    parser.add_argument("-D",help=helptext["short"],nargs='?',metavar="X")
    parser.add_argument("-E",help=helptext["long"],nargs='?',metavar="X")
    parser.add_argument("--double10",nargs='?',metavar="X")
    parser.add_argument("--double11",help=helptext["short"],nargs='?',metavar="X")
    parser.add_argument("--double12",help=helptext["long"],nargs='?',metavar="X")
    parser.add_argument("-F","--combo10",nargs='?',metavar="X")
    parser.add_argument("-G","--combo11",help=helptext["short"],nargs='?',metavar="X")
    parser.add_argument("-H","--combo12",help=helptext["long"],nargs='?',metavar="X")
    parser.add_argument("--reallyreallyreallyreallyreallyreallylong_double10",nargs='?',metavar="X")
    parser.add_argument("--reallyreallyreallyreallyreallyreallylong_double11",help=helptext["short"],nargs='?',metavar="X")
    parser.add_argument("--reallyreallyreallyreallyreallyreallylong_double12",help=helptext["long"],nargs='?',metavar="X")
    parser.add_argument("-I","--reallyreallyreallyreallyreallyreallylong_combo10",nargs='?',metavar="X")
    parser.add_argument("-J","--reallyreallyreallyreallyreallyreallylong_combo11",help=helptext["short"],nargs='?',metavar="X")
    parser.add_argument("-K","--reallyreallyreallyreallyreallyreallylong_combo12",help=helptext["long"],nargs='?',metavar="X")

    # optional arguments, * args
    parser.add_argument("-L",nargs='*',metavar="X")
    parser.add_argument("-M",help=helptext["short"],nargs='*',metavar="X")
    parser.add_argument("-N",help=helptext["long"],nargs='*',metavar="X")
    parser.add_argument("--double13",nargs='*',metavar="X")
    parser.add_argument("--double14",help=helptext["short"],nargs='*',metavar="X")
    parser.add_argument("--double15",help=helptext["long"],nargs='*',metavar="X")
    parser.add_argument("-O","--combo13",nargs='*',metavar="X")
    parser.add_argument("-P","--combo14",help=helptext["short"],nargs='*',metavar="X")
    parser.add_argument("-Q","--combo15",help=helptext["long"],nargs='*',metavar="X")
    parser.add_argument("--reallyreallyreallyreallyreallyreallylong_double13",nargs='*',metavar="X")
    parser.add_argument("--reallyreallyreallyreallyreallyreallylong_double14",help=helptext["short"],nargs='*',metavar="X")
    parser.add_argument("--reallyreallyreallyreallyreallyreallylong_double15",help=helptext["long"],nargs='*',metavar="X")
    parser.add_argument("-R","--reallyreallyreallyreallyreallyreallylong_combo13",nargs='*',metavar="X")
    parser.add_argument("-S","--reallyreallyreallyreallyreallyreallylong_combo14",help=helptext["short"],nargs='*',metavar="X")
    parser.add_argument("-T","--reallyreallyreallyreallyreallyreallylong_combo15",help=helptext["long"],nargs='*',metavar="X")

    # optional arguments, single choices
    parser.add_argument("-U",choices=choices["single"],)
    parser.add_argument("-V",help=helptext["short"],choices=choices["single"],)
    parser.add_argument("-W",help=helptext["long"],choices=choices["single"],)
    parser.add_argument("--double16",choices=choices["single"],)
    parser.add_argument("--double17",help=helptext["short"],choices=choices["single"],)
    parser.add_argument("--double18",help=helptext["long"],choices=choices["single"],)
    parser.add_argument("-X","--combo16",choices=choices["single"],)
    parser.add_argument("-Y","--combo17",help=helptext["short"],choices=choices["single"],)
    parser.add_argument("-Z","--combo18",help=helptext["long"],choices=choices["single"],)
    parser.add_argument("--reallyreallyreallyreallyreallyreallylong_double16",choices=choices["single"],)
    parser.add_argument("--reallyreallyreallyreallyreallyreallylong_double17",help=helptext["short"],choices=choices["single"],)
    parser.add_argument("--reallyreallyreallyreallyreallyreallylong_double18",help=helptext["long"],choices=choices["single"],)
    parser.add_argument("-1","--reallyreallyreallyreallyreallyreallylong_combo16",choices=choices["single"],)
    parser.add_argument("-2","--reallyreallyreallyreallyreallyreallylong_combo17",help=helptext["short"],choices=choices["single"],)
    parser.add_argument("-3","--reallyreallyreallyreallyreallyreallylong_combo18",help=helptext["long"],choices=choices["single"],)

    # optional arguments, multi choices
    parser.add_argument("-4",choices=choices["multi"],)
    parser.add_argument("-5",help=helptext["short"],choices=choices["multi"],)
    parser.add_argument("-6",help=helptext["long"],choices=choices["multi"],)
    parser.add_argument("--double19",choices=choices["multi"],)
    parser.add_argument("--double20",help=helptext["short"],choices=choices["multi"],)
    parser.add_argument("--double21",help=helptext["long"],choices=choices["multi"],)
    parser.add_argument("-7","--combo19",choices=choices["multi"],)
    parser.add_argument("-8","--combo20",help=helptext["short"],choices=choices["multi"],)
    parser.add_argument("-9","--combo21",help=helptext["long"],choices=choices["multi"],)
    parser.add_argument("--reallyreallyreallyreallyreallyreallylong_double19",choices=choices["multi"],)
    parser.add_argument("--reallyreallyreallyreallyreallyreallylong_double20",help=helptext["short"],choices=choices["multi"],)
    parser.add_argument("--reallyreallyreallyreallyreallyreallylong_double21",help=helptext["long"],choices=choices["multi"],)
    parser.add_argument("-Â","--reallyreallyreallyreallyreallyreallylong_combo19",choices=choices["multi"],)
    parser.add_argument("-Ã","--reallyreallyreallyreallyreallyreallylong_combo20",help=helptext["short"],choices=choices["multi"],)
    parser.add_argument("-Ä","--reallyreallyreallyreallyreallyreallylong_combo21",help=helptext["long"],choices=choices["multi"],)

    args = parser.parse_args(argv)

if __name__ == "__main__":
    main()
