Quantcast
Channel: Active questions tagged config - Stack Overflow
Viewing all articles
Browse latest Browse all 5049

Write config.py dynamically

$
0
0

I have to write a config file based on the parameters given by a user.

The goal is to obtain something like that in the target file :

PrimerGCRange = namedtuple("GCRange", "min max opt")PRIMER_SIZE_RANGES = {"DEFAULT": PrimerSizeRange(25, 35, 30),"HIGH_GC": PrimerSizeRange(25, 35, 30),    }

How can I have that without the lines becoming :

PRIMER_SIZE_RANGES = {"DEFAULT": [25, 35, 30], "HIGH_GC": [25, 35, 30]}

The idea is to have a dictionnary where {"PRIMER_SIZE_RANGE" : "DEFAULT": PrimerSizeRange(25, 35, 30), ..}, with 25, 35, 30 the inputs of the user, is put in form by a function. Then I write this in a new file but I don't want the PrimerSizeRange to be evaluating as the destination file is a config.py.

Otherwise the namedtuple can't be used properly in others files.

Here I transform the dictionnary to text

    for v in values:        text += v +' = '+ json.dumps(values[v]) +'\n'    with open(file_name, 'w') as f:        f.write(textwrap.dedent(text))

where values would be something like :

values = {"PRIMER_SIZE_RANGES": {"DEFAULT": PrimerSizeRange(25, 35, 30),"HIGH_GC": PrimerSizeRange(25, 35, 30),    },"PREFIX" : "scheme","OUTPUT_PATH" : "./output","MAX_ALN_GAP_PERCENT" : 0.03,"MAX_REFERENCES" : 200}

And the expected config.py :

PrimerSizeRange = namedtuple("PrimerSizeRange", "min max opt")PRIMER_SIZE_RANGES = {"DEFAULT": PrimerSizeRange(25, 35, 30),"HIGH_GC": PrimerSizeRange(25, 35, 30),}PREFIX = "scheme"OUTPUT_PATH = "./output"MAX_ALN_GAP_PERCENT = 0.03MAX_REFERENCES = 200

Viewing all articles
Browse latest Browse all 5049

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>