Пример #1
0
def test_multiple_args():
    mappings = {
        'first_arg': {
            'type': 'str',
            'description': 'Some fancy description',
            'cli_arg': '--cli-option-name',
            'env_var': 'ENV_VAR_NAME',
            'default_value': 'first_default',
            'required': True,
        },
        'second_arg': {
            'type': 'tuple[int, bool, path]',
            'description': 'Some fancy description',
            'cli_arg': '--cli-option-name-for-tuple',
            'env_var': 'ENV_VAR_NAME_TUPLE',
            'default_value': '10 True .',
            'required': False,
        }
    }
    toml_file = NamedTemporaryFile(mode='w', delete=False)
    try:
        toml.dump(mappings, toml_file)
        toml_file.close()
        parser = ArgumentsParser.from_files(toml_file.name, [])
        for i, mapping in enumerate(mappings.items()):
            name, mapp = mapping
            assert_argument_values(name, mapp, asdict(parser.arguments[i]))
    finally:
        os.unlink(toml_file.name)
Пример #2
0
def test_yaml(toml_file_path):
    values = {
        'string_arg': 'some (not so) random string',
        'int_arg': 123,
        'int_arg_as_string': '123',
        'path_arg': '.',
        'list_arg': [123, 156, 1956],
        'list_of_tuples_arg': [[123, 156], [12, 14], [145, 140]],
    }
    yaml_file = NamedTemporaryFile(mode='w', delete=False)
    try:
        yaml.dump(values, yaml_file)
        yaml_file.close()
        parser = ArgumentsParser.from_files(toml_file_path, [],
                                            yaml_config=yaml_file.name)
        assert parser.user_values == values
    finally:
        os.unlink(yaml_file.name)
Пример #3
0
def test_default_required():
    mappings = {
        'first_arg': {
            'type': 'str',
            'description': 'Some fancy description',
            'cli_arg': '--cli-option-name',
            'env_var': 'ENV_VAR_NAME',
            'default_value': 'first_default',
        }
    }
    toml_file = NamedTemporaryFile(mode='w', delete=False)
    try:
        toml.dump(mappings, toml_file)
        toml_file.close()
        parser = ArgumentsParser.from_files(toml_file.name, [])
        mappings['first_arg']['required'] = False
        assert_argument_values('first_arg', mappings['first_arg'],
                               asdict(parser.arguments[0]))
    finally:
        os.unlink(toml_file.name)
Пример #4
0
def test_getattr_wrong_attr(toml_file_path):
    parser = ArgumentsParser.from_files(toml_file_path,
                                        ['--cli-option-name', 'value'])
    with pytest.raises(AttributeError) as exc:
        parser.not_existing_arg
    assert 'not_existing_arg' in str(exc)
Пример #5
0
def test_getattr(toml_file_path):
    parser = ArgumentsParser.from_files(toml_file_path,
                                        ['--cli-option-name', 'value'])
    assert parser.first_arg == 'value'
Пример #6
0
def test_not_required_not_present(toml_file_path_not_required):
    parser = ArgumentsParser.from_files(toml_file_path_not_required, [])
    assert parser.first_arg is None
Пример #7
0
def test_not_required_is_present(toml_file_path_not_required):
    parser = ArgumentsParser.from_files(toml_file_path_not_required,
                                        ['--cli-option-name', 'value'])
    assert parser.first_arg == 'value'
Пример #8
0
def test_is_required_not_present(toml_file_path_required):
    with pytest.raises(RuntimeError):
        ArgumentsParser.from_files(toml_file_path_required, [])
Пример #9
0
"""
Usage example.
"""

from dataclasses import dataclass

from script_args_parser import ArgumentsParser, dataclass_argument


@dataclass_argument
@dataclass
class MyDataClass:
    """
    Example dataclass used as argument.
    """

    value_1: str
    value_2: str


parser = ArgumentsParser.from_files('example-parameters.toml', yaml_config='example-config.yaml')
print(parser.arguments_values)
print(f'Favorite colors: {parser.favorite_colors}')
Пример #10
0
def test_setattr(toml_file_path):
    parser = ArgumentsParser.from_files(toml_file_path, ['--cli-option-name', 'value'])
    assert parser.first_arg == 'value'
    parser.first_arg = 123
    assert parser.first_arg == 123
    assert parser.arguments_values['first_arg'] == 123