Exemplo n.º 1
0
    def test_with_optional(self):
        parser = NmArgumentParser(OptionalExample)

        expected = argparse.ArgumentParser()
        expected.add_argument("--foo", default=None, type=int)
        expected.add_argument("--bar", default=None, type=float, help="help message")
        expected.add_argument("--baz", default=None, type=str)
        expected.add_argument("--ces", nargs="+", default=[], type=str)
        expected.add_argument("--des", nargs="+", default=[], type=int)
        self.argparsersEqual(parser, expected)

        args = parser.parse_args([])
        self.assertEqual(args, Namespace(foo=None, bar=None, baz=None, ces=[], des=[]))

        args = parser.parse_args(
            "--foo 12 --bar 3.14 --baz 42 --ces parser expected_parser "
            "c --des 1 2 3".split()
        )
        self.assertEqual(
            args,
            Namespace(
                foo=12,
                bar=3.14,
                baz="42",
                ces=["parser", "expected_parser", "c"],
                des=[1, 2, 3],
            ),
        )
Exemplo n.º 2
0
    def test_with_default_bool(self):
        parser = NmArgumentParser(WithDefaultBoolExample)

        expected = argparse.ArgumentParser()
        expected.add_argument(
            "--foo", type=string_to_bool, default=False, const=True, nargs="?"
        )
        expected.add_argument("--no-baz", action="store_false", dest="baz")
        expected.add_argument(
            "--baz", type=string_to_bool, default=True, const=True, nargs="?"
        )
        expected.add_argument("--opt", type=string_to_bool, default=None)
        self.argparsersEqual(parser, expected)

        args = parser.parse_args([])
        self.assertEqual(args, Namespace(foo=False, baz=True, opt=None))

        args = parser.parse_args(["--foo", "--no-baz"])
        self.assertEqual(args, Namespace(foo=True, baz=False, opt=None))

        args = parser.parse_args(["--foo", "--baz"])
        self.assertEqual(args, Namespace(foo=True, baz=True, opt=None))

        args = parser.parse_args(["--foo", "True", "--baz", "True", "--opt", "True"])
        self.assertEqual(args, Namespace(foo=True, baz=True, opt=True))

        args = parser.parse_args(["--foo", "False", "--baz", "False", "--opt", "False"])
        self.assertEqual(args, Namespace(foo=False, baz=False, opt=False))
Exemplo n.º 3
0
    def test_with_enum(self):
        parser = NmArgumentParser(EnumExample)

        expected = argparse.ArgumentParser()
        expected.add_argument(
            "--foo", default="toto", choices=["titi", "toto"], type=str
        )
        self.argparsersEqual(parser, expected)

        args = parser.parse_args([])
        self.assertEqual(args.foo, "toto")
        enum_ex = parser.parse_args_into_dataclasses([])[0]
        self.assertEqual(enum_ex.foo, BasicEnum.toto)

        args = parser.parse_args(["--foo", "titi"])
        self.assertEqual(args.foo, "titi")
        enum_ex = parser.parse_args_into_dataclasses(["--foo", "titi"])[0]
        self.assertEqual(enum_ex.foo, BasicEnum.titi)
Exemplo n.º 4
0
    def test_with_list(self):
        parser = NmArgumentParser(ListExample)

        expected = argparse.ArgumentParser()
        expected.add_argument("--foo-int", nargs="+", default=[], type=int)
        expected.add_argument("--bar-int", nargs="+", default=[1, 2, 3], type=int)
        expected.add_argument(
            "--foo-str", nargs="+", default=["Hallo", "Bonjour", "Hello"], type=str
        )
        expected.add_argument(
            "--foo-float", nargs="+", default=[0.1, 0.2, 0.3], type=float
        )

        self.argparsersEqual(parser, expected)

        args = parser.parse_args([])
        self.assertEqual(
            args,
            Namespace(
                foo_int=[],
                bar_int=[1, 2, 3],
                foo_str=["Hallo", "Bonjour", "Hello"],
                foo_float=[0.1, 0.2, 0.3],
            ),
        )

        args = parser.parse_args(
            "--foo-int 1 --bar-int 2 3 --foo-str parser expected_parser "
            "c --foo-float 0.1 0.7".split()
        )
        self.assertEqual(
            args,
            Namespace(
                foo_int=[1],
                bar_int=[2, 3],
                foo_str=["parser", "expected_parser", "c"],
                foo_float=[0.1, 0.7],
            ),
        )
Exemplo n.º 5
0
    def test_non_hyphenated(self):
        parser = NmArgumentParser(dataclass_types=NonHyphenatedExample)
        args = parser.parse_args("--non_hyphenated 1".split())

        self.assertEqual(args, Namespace(non_hyphenated=1))