diff --git a/CHANGES.txt b/CHANGES.txt index beee428ec962a4e54187adb21876d29c80470867..178510ce023c6b12b1a22e26d68948fb3780981a 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -14,6 +14,14 @@ Global * TODO: Porting to python3 +Version 1.1.1rc1 +================ + +Configuration +------------- + +* Allow hiding for namelist files with templates + Release 1.1.0 ============= diff --git a/mkexp b/mkexp index 8f92114cf11f6a98d99d915d09011422c8ec3624..9b4d0a1402181a1baa205560a5311227700330ac 100755 --- a/mkexp +++ b/mkexp @@ -175,7 +175,7 @@ def format_namelist(section, group=None, default_value=''): default_key = '.default' default_value = section.get(default_key, default_value) # Skip if whole section (usually namelist file) is hidden - if is_set(section.get(hide_key, 'false')): + if is_set(section.get(hide_key)): return '' # Create list of removed namelist groups. # Support old keyword for backward compatibility @@ -188,7 +188,7 @@ def format_namelist(section, group=None, default_value=''): iterator = {group: section[group]}.iteritems() if group else section.iteritems() for group, contents in iterator: if isinstance(contents, dict): - hidden = is_set(contents.get(hide_key, 'false')) + hidden = is_set(contents.get(hide_key)) 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)): @@ -540,6 +540,9 @@ for subjob, subconfig in jobs_config.iteritems(): job_config['VARIABLES_'] = var_list for namelist, groups in job_config['namelists'].iteritems(): if isinstance(groups, dict): + # Skip hidden namelists + if is_set(groups.get('.hide')): + continue # Support deprecated keyword 'use_template' but warn user if groups.get('use_template'): keyword_warning('use_template') diff --git a/test.py b/test.py index db74b035f69aa6143a6b8cf90cb47568101b9dcf..4203e4e088404929364114a0aa5c83f2469d952e 100644 --- a/test.py +++ b/test.py @@ -542,6 +542,19 @@ class NamelistTestCase(MkexpSimpleTestCase): value = 43 """) + def test_namelist_with_template(self): + self.run_test(""" + %{NAMELIST} + """, """ + 42 + """, """ + [namelists] + [[namelist]] + .use_template = true + [[[group]]] + value = 42 + """) + class NamelistHiddenTestCase(MkexpSimpleTestCase): def test_namelist_hide(self): @@ -579,6 +592,19 @@ class NamelistHiddenTestCase(MkexpSimpleTestCase): value = 42 """) + def test_hidden_namelist_with_template(self): + self.run_test(""" + %{NAMELIST} + """, """ + """, """ + [namelists] + [[namelist]] + .hide = true + .use_template = true + [[[group]]] + value = 42 + """) + class NamelistDefaultValueTestCase(MkexpSimpleTestCase): def test_standard_default_value(self): diff --git a/test/standard_experiments/namelist.tmpl b/test/standard_experiments/namelist.tmpl new file mode 100644 index 0000000000000000000000000000000000000000..47516b2c3a7bffa37089f3a7eae5db06b18ad669 --- /dev/null +++ b/test/standard_experiments/namelist.tmpl @@ -0,0 +1 @@ +%{group.value}