From 74c5b55c1983ee4faf0e82339cf83307cf39e4cd Mon Sep 17 00:00:00 2001 From: Karl-Hermann Wieners <karl-hermann.wieners@mpimet.mpg.de> Date: Wed, 13 Jan 2016 09:33:47 +0000 Subject: [PATCH] Changed 'extended' jobs to allow their own templates override the parent's --- CHANGES.txt | 1 + mkexp | 28 +++++++++++++++++----------- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index 62c4edc..9f1e5c4 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -20,6 +20,7 @@ Templates --------- * Added 'match' filter, allowing to use regular expression matches +* Changed 'extended' jobs to allow their own templates override the parent's * Added missing tests for 'wordwrap' filter * Re-wrote documentation on additional Jinja filters diff --git a/mkexp b/mkexp index 200388a..cf1000a 100755 --- a/mkexp +++ b/mkexp @@ -410,14 +410,14 @@ for subjob, subconfig in jobs_config.iteritems(): # Allow simple inheritance # Support deprecated keyword 'extends' but warn user - template_job = subjob + extended_job = None if 'extends' in subconfig or '.extends' in subconfig: if 'extends' in subconfig: keyword_warning('extends') - template_job = subconfig['extends'] + extended_job = subconfig['extends'] else: - template_job = subconfig['.extends'] - pre_config.merge(jobs_config[template_job]) + extended_job = subconfig['.extends'] + pre_config.merge(jobs_config[extended_job]) # Add actual subjob config pre_config.merge(subconfig) @@ -471,13 +471,19 @@ for subjob, subconfig in jobs_config.iteritems(): format_namelist(groups) # Generate job script - expand_template_file(job_config, - ( get_exp_template_name(config.experiment_id, - template_job, ''), - get_exp_template_name(config.experiment_kind, - template_job), - get_exp_template_name(ExpConfig.default_name, - template_job) ), + template_search_list = ( + get_exp_template_name(config.experiment_id, subjob, ''), + get_exp_template_name(config.experiment_kind, subjob), + get_exp_template_name(ExpConfig.default_name, subjob) + ) + if extended_job: + template_search_list += ( + get_exp_template_name(config.experiment_id, extended_job, ''), + get_exp_template_name(config.experiment_kind, extended_job), + get_exp_template_name(ExpConfig.default_name, extended_job) + ) + + expand_template_file(job_config, template_search_list, get_exp_script_name(config.experiment_id, subjob), os.path.join(backup_dir, config.experiment_id+'.'+subjob)) -- GitLab