:return: Option parsing object :: optparse.OptionParser

def option_parser():
    """
    :return: Option parsing object :: optparse.OptionParser
    """
    defaults = dict(template_paths=[], contexts=[], schema=None, output='-',
                    engine=None, list_engines=False, verbose=1)

    psr = argparse.ArgumentParser()
    psr.set_defaults(**defaults)

    psr.add_argument("template", type=str, nargs="?",
                     help="Template file path")
    psr.add_argument("-T", "--template-path", action="append",
                     dest="template_paths",
                     help="Template search path can be specified multiple "
                          "times. Note: Dir in which given template exists is "
                          "always included in the search paths (at the end of "
                          "the path list) regardless of this option. ")
    psr.add_argument("-C", "--context", action="append", dest="contexts",
                     help="Specify file path and optionally its filetype, to "
                          "provides context data to instantiate templates. "
                          " The option argument's format is "
                          " [type:]<file_name_or_path_or_glob_pattern>"
                          " ex. -C json:common.json -C ./specific.yaml -C "
                          "yaml:test.dat, -C yaml:/etc/foo.d/*.conf")
    psr.add_argument("-s", "--schema",
                     help="JSON schema file in any formats anyconfig "
                          "supports, to validate context files")
    psr.add_argument("-E", "--engine",
                     help="Specify template engine name such as 'jinja2'")
    psr.add_argument("-L", "--list-engines", action="store_true",
                     help="List supported template engines in your "
                          "environment")
    psr.add_argument("-o", "--output", help="Output filename [stdout]")
    psr.add_argument("-v", "--verbose", action="store_const", const=0,
                     help="Verbose mode")
    psr.add_argument("-q", "--quiet", action="store_const", const=2,
                     dest="verbose", help="Quiet mode")
    return psr