Skip to content
Snippets Groups Projects
Commit cbe767eb authored by Karl-Hermann Wieners's avatar Karl-Hermann Wieners
Browse files

Reset info to 1.1.0dev, added level safe disabling of namelist variables

parent e1e17fd7
No related branches found
No related tags found
No related merge requests found
......@@ -9,6 +9,19 @@ Release Changes
Milestone 1.1.0
===============
Configuration
-------------
* Changed empty namelist variables to be suppressed, ie. default is used
* Added '.default' variable to namelists and namelist groups to define an
alternative default value if the empty string is a valid value
Templates
---------
* Added optional parameter 'default_value' to 'format_namelists' to define an
alternative default value for namelist variables
Global
------
......
Source diff could not be displayed: it is too large. Options to address this: view the blob.
No preview for this file type
......@@ -160,7 +160,7 @@ def format_namelist_comment(line):
return '! '+key+' = '+format_value(value, 0)+comment+'\n'
return re.sub(r'^#', '!', line)+'\n'
def format_namelist(section, group=None):
def format_namelist(section, group=None, default_value=''):
'''Format config section as a namelist.
If given, just format a single namelist group'''
# Skip undefined groups
......@@ -170,6 +170,8 @@ def format_namelist(section, group=None):
# Settings
base_indent = 4
end_key = '.end'
default_key = '.default'
default_value = section.get(default_key, default_value)
# Create list of removed namelist groups.
# Support old keyword for backward compatibility
remove_list = get_remove_list(section, '.remove')
......@@ -182,6 +184,7 @@ def format_namelist(section, group=None):
for group, contents in iterator:
if isinstance(contents, dict):
hidden = is_set(contents.get('.hide', 'false'))
group_def_val = contents.get(default_key, default_value)
group_id = group.lower()
if not hidden and not any(map(lambda x: re.match(x, group_id), black_list)):
# Create list of removed keys
......@@ -195,7 +198,8 @@ def format_namelist(section, group=None):
else:
lines.write('&'+group_names[0]+" ! '"+group_names[1]+"'\n")
for key, value in contents.iteritems():
if key[0] != '.' and key not in remove_keys:
if (key[0] != '.' and key not in remove_keys and
value != group_def_val):
key = key.lower()
indent = base_indent + len(key) + 3
for line in contents.comments.get(key, []):
......
......@@ -4,4 +4,4 @@ Information on package name and version
full_name = 'Make Experiments!'
name = 'mkexp'
version = '1.0.12'
version = '1.1.0dev'
......@@ -553,6 +553,71 @@ class NamelistTestCase(MkexpSimpleTestCase):
value = 43
""")
class NamelistDefaultValueTestCase(MkexpSimpleTestCase):
def test_standard_default_value(self):
self.run_test("""
%{NAMELIST}
""", """
&group
/
""", """
[namelists]
[[namelist]]
[[[group]]]
value =
""")
def test_custom_default_value(self):
self.run_test("""
%{NAMELIST}
""", """
&group
value1 = ''
/
""", """
[namelists]
[[namelist]]
.default = <DEFAULT>
[[[group]]]
value1 =
value2 = ${.default}
""")
def test_namelist_default_value(self):
self.run_test("""
%{NAMELIST1}
%{NAMELIST2}
""", """
&group
/
&group
value = '<DEFAULT>'
/
""", """
[namelists]
[[namelist1]]
.default = <DEFAULT>
[[[group]]]
value = <DEFAULT>
[[namelist2]]
[[[group]]]
value = <DEFAULT>
""")
def test_global_default_value(self):
self.run_test("""
%{format_namelist(namelists.namelist, default_value='<DEFAULT>')}
""", """
&group
/
""", """
[namelists]
[[namelist]]
[[[group]]]
value = <DEFAULT>
""")
class JinjaTemplateTestCase(MkexpSimpleTestCase):
def test_ignore_blocks(self):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment