Passed
Push — master ( 76e000...3be2c1 )
by Daniel
01:50
created

CommandLineArgumentsManagement.parse_arguments()   A

Complexity

Conditions 3

Size

Total Lines 15
Code Lines 14

Duplication

Lines 15
Ratio 100 %

Importance

Changes 0
Metric Value
cc 3
eloc 14
nop 2
dl 15
loc 15
rs 9.7
c 0
b 0
f 0
1
"""
2
CommandLineArgumentManagement - library to manage input parameters from command line
3
4
This library allows handling pre-configured arguments to be received from command line and use them
5
to call the main package functions
6
"""
7
8
import argparse
9
10
11 View Code Duplication
class CommandLineArgumentsManagement:
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
12
13
    def parse_arguments(self, configuration_details):
14
        parser = argparse.ArgumentParser()
15
        for input_key, attributes in configuration_details.items():
16
            action_value = self.translate_default(attributes['default_value'])
17
            if action_value is None:
18
                parser.add_argument('-' + input_key, '--' + attributes['option_long'],
19
                                    required=attributes['option_required'],
20
                                    default=attributes['default_value'],
21
                                    help=attributes['option_sample_value'])
22
            else:
23
                parser.add_argument('-' + input_key, '--' + attributes['option_long'],
24
                                    required=attributes['option_required'],
25
                                    default=attributes['default_value'],
26
                                    action=action_value)
27
        return parser.parse_args()
28
29
    @staticmethod
30
    def translate_default(given_default_value):
31
        if given_default_value == True:
32
            return 'store_true'
33
        elif given_default_value == False:
34
            return 'store_false'
35
        else:
36
            return None
37