Пример #1
0
def main(prog: str = None,
         subcommand_overrides: Dict[str, Subcommand] = {}) -> None:
    """
    The :mod:`~allennlp.run` command only knows about the registered classes in the ``allennlp``
    codebase. In particular, once you start creating your own ``Model`` s and so forth, it won't
    work for them, unless you use the ``--include-package`` flag.
    """

    parser = ArgumentParserWithDefaults(description="Run AllenNLP",
                                        usage="%(prog)s",
                                        prog=prog)
    parser.add_argument("--version",
                        action="version",
                        version="%(prog)s " + __version__)

    subparsers = parser.add_subparsers(title="Commands", metavar="")

    subcommands = {
        # Default commands
        "configure": Configure(),
        "train": Train(),
        "evaluate": Evaluate(),
        "predict": Predict(),
        "make-vocab": MakeVocab(),
        "elmo": Elmo(),
        "fine-tune": FineTune(),
        "dry-run": DryRun(),
        "test-install": TestInstall(),
        "find-lr": FindLearningRate(),
        "print-results": PrintResults(),
        # Superseded by overrides
        **subcommand_overrides,
    }

    for name, subcommand in subcommands.items():
        subparser = subcommand.add_subparser(name, subparsers)
        # configure doesn't need include-package because it imports
        # whatever classes it needs.
        if name != "configure":
            subparser.add_argument(
                "--include-package",
                type=str,
                action="append",
                default=[],
                help="additional packages to include",
            )

    args = parser.parse_args()

    # If a subparser is triggered, it adds its work as `args.func`.
    # So if no such attribute has been added, no subparser was triggered,
    # so give the user some help.
    if "func" in dir(args):
        # Import any additional modules needed (to register custom classes).
        for package_name in getattr(args, "include_package", ()):
            import_submodules(package_name)
        args.func(args)
    else:
        parser.print_help()
Пример #2
0
def main(prog: str = None,
         model_overrides: Dict[str, DemoModel] = {},
         predictor_overrides: Dict[str, str] = {},
         subcommand_overrides: Dict[str, Subcommand] = {}) -> None:
    """
    The :mod:`~allennlp.run` command only knows about the registered classes in the ``allennlp``
    codebase. In particular, once you start creating your own ``Model`` s and so forth, it won't
    work for them, unless you use the ``--include-package`` flag available for most commands.
    """
    # pylint: disable=dangerous-default-value

    # TODO(mattg): document and/or remove the `predictor_overrides` and `model_overrides` commands.
    # The `--predictor` option for the `predict` command largely removes the need for
    # `predictor_overrides`, and I think the simple server largely removes the need for
    # `model_overrides`, and maybe the whole `serve` command as a public API (we only need that
    # path for demo.allennlp.org, and it's not likely anyone else would host that particular demo).

    parser = argparse.ArgumentParser(description="Run AllenNLP",
                                     usage='%(prog)s',
                                     prog=prog)

    subparsers = parser.add_subparsers(title='Commands', metavar='')

    subcommands = {
        # Default commands
        "train": Train(),
        "evaluate": Evaluate(),
        "predict": Predict(predictor_overrides),
        "serve": Serve(model_overrides),
        "make-vocab": MakeVocab(),
        "elmo": Elmo(),
        "fine-tune": FineTune(),

        # Superseded by overrides
        **subcommand_overrides
    }

    for name, subcommand in subcommands.items():
        subparser = subcommand.add_subparser(name, subparsers)
        subparser.add_argument('--include-package',
                               type=str,
                               action='append',
                               default=[],
                               help='additional packages to include')

    args = parser.parse_args()

    # Import any additional modules needed (to register custom classes).
    for package_name in args.include_package:
        import_submodules(package_name)

    # If a subparser is triggered, it adds its work as `args.func`.
    # So if no such attribute has been added, no subparser was triggered,
    # so give the user some help.
    if 'func' in dir(args):
        args.func(args)
    else:
        parser.print_help()
Пример #3
0
def main(prog: str = None,
         subcommand_overrides: Dict[str, Subcommand] = {}) -> None:
    """
    The :mod:`~allennlp.run` command only knows about the registered classes in the ``allennlp``
    codebase. In particular, once you start creating your own ``Model`` s and so forth, it won't
    work for them, unless you use the ``--include-package`` flag.
    """
    # pylint: disable=dangerous-default-value
    parser = argparse.ArgumentParser(description="Run AllenNLP", usage='%(prog)s', prog=prog)
    parser.add_argument('--version', action='version', version='%(prog)s ' + __version__)

    subparsers = parser.add_subparsers(title='Commands', metavar='')

    subcommands = {
            # Default commands
            "configure": Configure(),
            "train": Train(),
            "train_multitask": TrainMultiTask(),  # includes the auxillary citation section prediction task
            "train_multitask_2": TrainMultiTask2(),  # includes both tasks
            "evaluate": Evaluate(),
            "predict": Predict(),
            "make-vocab": MakeVocab(),
            "elmo": Elmo(),
            "fine-tune": FineTune(),
            "dry-run": DryRun(),
            "test-install": TestInstall(),

            # Superseded by overrides
            **subcommand_overrides
    }

    for name, subcommand in subcommands.items():
        subparser = subcommand.add_subparser(name, subparsers)
        # configure doesn't need include-package because it imports
        # whatever classes it needs.
        if name != "configure":
            subparser.add_argument('--include-package',
                                   type=str,
                                   action='append',
                                   default=[],
                                   help='additional packages to include')

    args = parser.parse_args()


    # If a subparser is triggered, it adds its work as `args.func`.
    # So if no such attribute has been added, no subparser was triggered,
    # so give the user some help.
    if 'func' in dir(args):
        # Import any additional modules needed (to register custom classes).
        for package_name in getattr(args, 'include_package', ()):
            try:
                import_submodules(package_name)
            except TypeError:
                import pdb; pdb.set_trace()
        args.func(args)
    else:
        parser.print_help()
Пример #4
0
 def test_make_vocab_args(self):
     parser = argparse.ArgumentParser(description="Testing")
     subparsers = parser.add_subparsers(title='Commands', metavar='')
     MakeVocab().add_subparser('make-vocab', subparsers)
     for serialization_arg in ["-s", "--serialization-dir"]:
         raw_args = ["make-vocab", "path/to/params", serialization_arg, "serialization_dir"]
         args = parser.parse_args(raw_args)
         assert args.func == make_vocab_from_args  # pylint: disable=comparison-with-callable
         assert args.param_path == "path/to/params"
         assert args.serialization_dir == "serialization_dir"
Пример #5
0
def main(prog: str = None,
         model_overrides: Dict[str, DemoModel] = {},
         predictor_overrides: Dict[str, str] = {},
         subcommand_overrides: Dict[str, Subcommand] = {}) -> None:
    """
    The :mod:`~allennlp.run` command only knows about the registered classes
    in the ``allennlp`` codebase. In particular, once you start creating your own
    ``Model`` s and so forth, it won't work for them. However, ``allennlp.run`` is
    simply a wrapper around this function. To use the command line interface with your
    own custom classes, just create your own script that imports all of the classes you want
    and then calls ``main()``.

    The default models for ``serve`` and the default predictors for ``predict`` are
    defined above. If you'd like to add more or use different ones, the
    ``model_overrides`` and ``predictor_overrides`` arguments will take precedence over the defaults.
    """
    # pylint: disable=dangerous-default-value

    parser = argparse.ArgumentParser(description="Run AllenNLP", usage='%(prog)s [command]', prog=prog)
    subparsers = parser.add_subparsers(title='Commands', metavar='')

    subcommands = {
            # Default commands
            "train": Train(),
            "evaluate": Evaluate(),
            "predict": Predict(predictor_overrides),
            "serve": Serve(model_overrides),
            "make-vocab": MakeVocab(),
            "elmo": Elmo(),

            # Superseded by overrides
            **subcommand_overrides
    }

    for name, subcommand in subcommands.items():
        subcommand.add_subparser(name, subparsers)

    # Check and warn for deprecated args.
    for arg in sys.argv[1:]:
        if arg in DEPRECATED_FLAGS:
            logger.warning("Argument name %s is deprecated (and will likely go away at some point), "
                           "please use %s instead",
                           arg,
                           DEPRECATED_FLAGS[arg])

    args = parser.parse_args()

    # If a subparser is triggered, it adds its work as `args.func`.
    # So if no such attribute has been added, no subparser was triggered,
    # so give the user some help.
    if 'func' in dir(args):
        args.func(args)
    else:
        parser.print_help()
Пример #6
0
 def test_make_vocab_args(self):
     parser = argparse.ArgumentParser(description=u"Testing")
     subparsers = parser.add_subparsers(title=u'Commands', metavar=u'')
     MakeVocab().add_subparser(u'make-vocab', subparsers)
     for serialization_arg in [u"-s", u"--serialization-dir"]:
         raw_args = [
             u"make-vocab", u"path/to/params", serialization_arg,
             u"serialization_dir"
         ]
         args = parser.parse_args(raw_args)
         assert args.func == make_vocab_from_args
         assert args.param_path == u"path/to/params"
         assert args.serialization_dir == u"serialization_dir"
Пример #7
0
 def test_make_vocab_args(self):
     parser = argparse.ArgumentParser(description="Testing")
     subparsers = parser.add_subparsers(title="Commands", metavar="")
     MakeVocab().add_subparser("make-vocab", subparsers)
     for serialization_arg in ["-s", "--serialization-dir"]:
         raw_args = [
             "make-vocab", "path/to/params", serialization_arg,
             "serialization_dir"
         ]
         args = parser.parse_args(raw_args)
         assert args.func == make_vocab_from_args
         assert args.param_path == "path/to/params"
         assert args.serialization_dir == "serialization_dir"
Пример #8
0
def create_parser(
    prog: str = None,
    subcommand_overrides: Dict[str,
                               Subcommand] = None) -> argparse.ArgumentParser:
    """
    Creates the argument parser for the main program.
    """
    if subcommand_overrides is None:
        subcommand_overrides = {}

    parser = ArgumentParserWithDefaults(description="Run AllenNLP",
                                        usage="%(prog)s",
                                        prog=prog)
    parser.add_argument("--version",
                        action="version",
                        version="%(prog)s " + __version__)

    subparsers = parser.add_subparsers(title="Commands", metavar="")

    subcommands = {
        # Default commands
        "configure": Configure(),
        "train": Train(),
        "evaluate": Evaluate(),
        "predict": Predict(),
        "make-vocab": MakeVocab(),
        "elmo": Elmo(),
        "fine-tune": FineTune(),
        "dry-run": DryRun(),
        "test-install": TestInstall(),
        "find-lr": FindLearningRate(),
        "print-results": PrintResults(),
        # Superseded by overrides
        **subcommand_overrides,
    }

    for name, subcommand in subcommands.items():
        subparser = subcommand.add_subparser(name, subparsers)
        # configure doesn't need include-package because it imports
        # whatever classes it needs.
        if name != "configure":
            subparser.add_argument(
                "--include-package",
                type=str,
                action="append",
                default=[],
                help="additional packages to include",
            )

    return parser
Пример #9
0
def main(prog=None, subcommand_overrides={}):
    u"""
    The :mod:`~allennlp.run` command only knows about the registered classes in the ``allennlp``
    codebase. In particular, once you start creating your own ``Model`` s and so forth, it won't
    work for them, unless you use the ``--include-package`` flag.
    """
    # pylint: disable=dangerous-default-value
    parser = argparse.ArgumentParser(description=u"Run AllenNLP",
                                     usage=u'%(prog)s',
                                     prog=prog)
    parser.add_argument(u'--version', action=u'version', version=u'%(prog)s ')

    subparsers = parser.add_subparsers(title=u'Commands', metavar=u'')

    subcommands = {
        # Default commands
        u"configure": Configure(),
        u"train": Train(),
        u"evaluate": Evaluate(),
        u"predict": Predict(),
        u"make-vocab": MakeVocab(),
        u"elmo": Elmo(),
        u"fine-tune": FineTune(),
        u"dry-run": DryRun(),
        u"test-install": TestInstall(),
    }

    for name, subcommand in list(subcommands.items()):
        subparser = subcommand.add_subparser(name, subparsers)
        # configure doesn't need include-package because it imports
        # whatever classes it needs.
        if name != u"configure":
            subparser.add_argument(u'--include-package',
                                   type=unicode,
                                   action=u'append',
                                   default=[],
                                   help=u'additional packages to include')

    args = parser.parse_args()

    # If a subparser is triggered, it adds its work as `args.func`.
    # So if no such attribute has been added, no subparser was triggered,
    # so give the user some help.
    if u'func' in dir(args):
        # Import any additional modules needed (to register custom classes).
        for package_name in getattr(args, u'include_package', ()):
            import_submodules(package_name)
        args.func(args)
    else:
        parser.print_help()
Пример #10
0
def main(prog: str = None,
         subcommand_overrides: Dict[str, Subcommand] = {}) -> None:
    """
    The :mod:`~allennlp.run` command only knows about the registered classes in the ``allennlp``
    codebase. In particular, once you start creating your own ``Model`` s and so forth, it won't
    work for them, unless you use the ``--include-package`` flag.
    """
    # pylint: disable=dangerous-default-value
    parser = argparse.ArgumentParser(description="Run AllenNLP",
                                     usage='%(prog)s',
                                     prog=prog)

    subparsers = parser.add_subparsers(title='Commands', metavar='')

    subcommands = {
        # Default commands
        "train": Train(),
        "evaluate": Evaluate(),
        "predict": Predict(),
        "make-vocab": MakeVocab(),
        "elmo": Elmo(),
        "fine-tune": FineTune(),
        "dry-run": DryRun(),

        # Superseded by overrides
        **subcommand_overrides
    }

    for name, subcommand in subcommands.items():
        subparser = subcommand.add_subparser(name, subparsers)
        subparser.add_argument('--include-package',
                               type=str,
                               action='append',
                               default=[],
                               help='additional packages to include')

    args = parser.parse_args()

    # If a subparser is triggered, it adds its work as `args.func`.
    # So if no such attribute has been added, no subparser was triggered,
    # so give the user some help.
    if 'func' in dir(args):
        # Import any additional modules needed (to register custom classes).
        for package_name in args.include_package:
            import_submodules(package_name)
        # Run a command
        args.func(args)
    else:
        parser.print_help()
Пример #11
0
def main():
    prog = "python -m allennlp.run"
    subcommand_overrides = {}
    # pylint: disable=dangerous-default-value
    parser = argparse.ArgumentParser(description="Run AllenNLP",
                                     usage='%(prog)s',
                                     prog=prog)
    print(parser)

    subparsers = parser.add_subparsers(title='Commands', metavar='')

    subcommands = {
        # Default commands
        "train": Train(),
        "evaluate": Evaluate(),
        "evaluate_mlqa": Evaluate_MLQA(),
        "make-vocab": MakeVocab(),
        "fine-tune": FineTune(),
        # Superseded by overrides
        **subcommand_overrides
    }

    for name, subcommand in subcommands.items():
        subparser = subcommand.add_subparser(name, subparsers)
        subparser.add_argument('--include-package',
                               type=str,
                               action='append',
                               default=[],
                               help='additional packages to include')

    args = parser.parse_args()

    # If a subparser is triggered, it adds its work as `args.func`.
    # So if no such attribute has been added, no subparser was triggered,
    # so give the user some help.
    if 'func' in dir(args):
        # Import any additional modules needed (to register custom classes).
        for package_name in args.include_package:
            import_submodules(package_name)
        args.func(args)
    else:
        parser.print_help()