Example #1
0
def test_inputs_AttrParserArgs_type_default():
    SC = attr.make_class("SC", {"x": attr.ib()})
    attr_parser_type = AttrParserArgs(attr.fields(SC).x).type
    assert type(attr_parser_type) is functools.partial
    assert attr_parser_type.func == AttrParserArgs.value_from_str
    assert attr_parser_type.args == ()
    assert attr_parser_type.keywords == dict(v_type=attr.fields(SC).x.type)
Example #2
0
def test_attr_parser_args_action_specified():
    SC = attr.make_class(
        "SC", {
            "x":
            attr.ib(default=None,
                    metadata={METADATA_ARGPARSER: dict(action='someaction')})
        })
    assert AttrParserArgs(attr.fields(SC).x).action == 'someaction'
Example #3
0
def test_ParserFiller_fill_parser_with_no_metadata_argparser():
    parser = argparse.ArgumentParser()
    SC = attr.make_class("SC", {"y": attr.ib(default=123, type=int)})
    ParserFiller.fill_parser(SC, parser)

    with pytest.raises(SystemExit) as excinfo:
        parser.parse_args(['--y', 'some-value'])

    assert excinfo.value.code == 2
Example #4
0
def test_attr_parser_args_kwargs_keys_for_store_const():
    SC = attr.make_class(
        "SC", {
            "x":
            attr.ib(type=int,
                    metadata={METADATA_ARGPARSER: dict(action='store_const')})
        })
    assert set(AttrParserArgs(attr.fields(SC).x).kwargs.keys()) == set(
        ('action', 'metavar', 'default', 'help'))
Example #5
0
def test_attr_parser_args_kwargs_keys_with_choices():
    SC = attr.make_class(
        "SC", {
            "x":
            attr.ib(type=str,
                    default='123',
                    metadata={METADATA_ARGPARSER: dict(choices='somechoices')})
        })
    assert set(AttrParserArgs(attr.fields(SC).x).kwargs.keys()) == set(
        ('action', 'metavar', 'default', 'help', 'type', 'choices'))
Example #6
0
def test_attr_parser_args_const_from_metadata_for_optional():
    SC = attr.make_class(
        "SC", {
            "x":
            attr.ib(type=str,
                    metadata={
                        METADATA_ARGPARSER: {
                            'const': 'someconst'
                        },
                    })
        })
    assert AttrParserArgs(attr.fields(SC).x).const == 'someconst'
Example #7
0
def test_ParserFiller_extract_positional_args_default_is_not_NOTHING():
    SC = attr.make_class(
        "SC", {
            "x":
            attr.ib(default=123,
                    metadata={METADATA_ARGPARSER: {
                        'help': 'some help'
                    }},
                    type=int)
        })
    ret = ParserFiller.extract_positional_args(SC, attr.fields_dict(SC))
    assert ret == ([], attr.fields_dict(SC))
Example #8
0
def test_inputs_AttrParserArgs_help_from_metadata_for_optional():
    SC = attr.make_class(
        "SC", {
            "x":
            attr.ib(type=str,
                    metadata={
                        METADATA_ARGPARSER: {
                            'help': 'some help'
                        },
                    })
        })
    assert AttrParserArgs(attr.fields(SC).x).help == 'some help'
Example #9
0
def test_inputs_AttrParserArgs_metavar_from_metadata_for_optional():
    SC = attr.make_class(
        "SC", {
            "x":
            attr.ib(type=str,
                    metadata={
                        METADATA_ARGPARSER: {
                            'metavar': 'SOME-METAVAR'
                        },
                    },
                    default='123')
        })
    assert AttrParserArgs(attr.fields(SC).x).metavar == 'SOME-METAVAR'
Example #10
0
def test_ParserFiller_fill_parser_with_no_action_in_metadata():
    parser = argparse.ArgumentParser()
    SC = attr.make_class(
        "SC", {
            "y":
            attr.ib(default=123,
                    metadata={METADATA_ARGPARSER: {
                        'help': 'some help'
                    }},
                    type=int)
        })
    ParserFiller.fill_parser(SC, parser)
    args = parser.parse_args(['--y', 'some-value'])
    assert args.y == 'some-value'
Example #11
0
def test_ParserFiller_extract_positional_args_happy_path():
    SC = attr.make_class(
        "SC", {
            "x":
            attr.ib(metadata={
                METADATA_ARGPARSER: {
                    'action': 'store_bool',
                    'help': 'some help'
                }
            },
                    type=int)
        })
    ret = ParserFiller.extract_positional_args(SC, attr.fields_dict(SC))
    assert ret == ([attr.fields(SC).x], {})
Example #12
0
def test_inputs_AttrParserArgs_type_custom():
    def some_fun(value):
        pass

    SC = attr.make_class(
        "SC", {
            "x":
            attr.ib(type=str,
                    metadata={
                        METADATA_ARGPARSER: {
                            'type': some_fun
                        },
                    },
                    default='123')
        })
    assert AttrParserArgs(attr.fields(SC).x).type == some_fun
Example #13
0
def test_inputs_copy_attr_verify_attrs():
    some_cls = attr.make_class(
        "some_cls", {
            "some_attr":
            attr.ib(default=123,
                    validator=None,
                    metadata={'metadata_key': 1},
                    repr=False,
                    hash=None,
                    init=True,
                    type=str,
                    converter=None,
                    kw_only=True)
        })

    read_attr = attr.fields(some_cls).some_attr

    copied_attr = inputs.copy_attr(read_attr)

    assert copied_attr == read_attr
Example #14
0
def test_ParserFiller_fill_parser_when_action_is_store_bool():
    parser = argparse.ArgumentParser()
    SC = attr.make_class(
        "SC", {
            "y":
            attr.ib(default=123,
                    metadata={
                        METADATA_ARGPARSER: {
                            'action': 'store_bool',
                            'help': 'some help'
                        }
                    },
                    type=int)
        })
    ParserFiller.fill_parser(SC, parser)
    args = parser.parse_args(['--y', '--noy'])
    assert not args.y

    args = parser.parse_args(['--y'])
    assert args.y

    args = parser.parse_args(['--noy'])
    assert not args.y
Example #15
0
def test_ParserFiller_extract_positional_args_no_metadata_argparser():
    SC = attr.make_class("SC",
                         {"x": attr.ib(type=int, repr=False, init=False)})
    ret = ParserFiller.extract_positional_args(SC, attr.fields_dict(SC))
    assert ret == ([], attr.fields_dict(SC))
Example #16
0
def test_inputs_AttrParserArgs_kwargs_keys_by_default():
    SC = attr.make_class("SC", {"x": attr.ib(type=str, default='123')})
    assert set(AttrParserArgs(attr.fields(SC).x).kwargs.keys()) == set(
        ('action', 'metavar', 'default', 'help', 'type'))
Example #17
0
def test_attr_parser_args_name_for_optional():
    SC = attr.make_class("SC", {"x": attr.ib(default=None)})
    assert AttrParserArgs(attr.fields(SC).x).name == '--x'
Example #18
0
def test_inputs_AttrParserArgs_default_not_set():
    SC = attr.make_class("SC", {"x": attr.ib()})
    assert AttrParserArgs(attr.fields(SC).x).name == 'x'
    assert AttrParserArgs(attr.fields(SC).x).default is None
Example #19
0
def test_inputs_AttrParserArgs_name_for_optional_with_underscore():
    SC = attr.make_class("SC", {"x_y": attr.ib(default=None)})
    assert AttrParserArgs(attr.fields(SC).x_y).name == '--x-y'
Example #20
0
def test_inputs_AttrParserArgs_action_by_default():
    SC = attr.make_class("SC", {"x": attr.ib(default=None)})
    assert AttrParserArgs(attr.fields(SC).x).action == 'store'
Example #21
0
def test_inputs_AttrParserArgs_help_by_default_for_optional():
    SC = attr.make_class("SC", {"x": attr.ib(type=str, default='123')})
    assert AttrParserArgs(attr.fields(SC).x).help == ''
Example #22
0
def test_attr_parser_args_kwargs_keys_for_boolean():
    SC = attr.make_class("SC", {"x": attr.ib(type=bool, default=False)})
    assert set(AttrParserArgs(attr.fields(SC).x).kwargs.keys()) == set(
        ('action', 'help'))
Example #23
0
def test_inputs_AttrParserArgs_no_metavar_for_positional():
    SC = attr.make_class("SC", {"x": attr.ib()})
    assert AttrParserArgs(attr.fields(SC).x).metavar is None
Example #24
0
def test_inputs_AttrParserArgs_action_for_boolean():
    SC = attr.make_class("SC", {"x": attr.ib(default=None, type=bool)})
    assert AttrParserArgs(attr.fields(SC).x).action == 'store_true'
Example #25
0
def test_inputs_AttrParserArgs_name_for_positional():
    SC = attr.make_class("SC", {"x": attr.ib()})
    assert AttrParserArgs(attr.fields(SC).x).name == 'x'
Example #26
0
def test_attr_parser_args_default_set():
    SC = attr.make_class("SC", {"x": attr.ib(default=123)})
    assert AttrParserArgs(attr.fields(SC).x).name == '--x'
    assert AttrParserArgs(attr.fields(SC).x).default == 123