================= Make Experiments! ================= --------------- Release Changes --------------- Release 1.4.1 ============= Global --------- * Move ``standard_*`` directories to ``mkexp/*``, rename ``experiments`` to ``types``, move defaults to ``mkexp/defaults``. ``standard_*`` is still supported Templates --------- * Load user template also if user dir is not in mkexp path Release 1.4.0 ============= Global ------ * Fix 'mkexp.bash' example to work with non-local configs Config ------ * Add option to allow scripts to be non-executable * Add list of removed jobs to template namespace Tools ----- * Import: extend support for running on arbitrary scripts * improve detection of model and build dirs * support different generations of launch logic * support stand-alone atmosphere scripts * add option to set path to helper script * improve file section labels * setconfig: make output more similar to mkexp conventions * remove quotes from section names (may be disabled) * fix spaces before inline comments when no value is given * fix spaces at end-of-line and before inline comments (may be disabled) * Make experiment type, script dir, namelists section, and default config optional to allow use without standard library Release 1.3.1 ============= Global ------ * Changed license to BSD 3-clause Config ------ * Add '%{id}' placeholder for use in repeated namelist groups Tools ----- * Allow additional directories to be created by mkexp (EXP_DIR_NAMES) Release 1.3.0 ============= Global ------ * Created first example (formatting of namelists as YAML) Config ------ * Added shared namelist settings ([[namelist_a, namelist_b]]) Templates --------- * Allow use of iterators with 'list' and 'join' filters * Unify namelist and job templates. 'DEFAULT.' prefix is optional but preferred * Add option to use global config in namelist templates (.use_full_config). Original values for global variables overridden by namelist settings are kept in section '_' Tools ----- * editexp: allow editing additional files from experiment and mkexp path Release 1.2.0 ============= Global ------ * Fixed "missing config" test for python3 Config ------ * Added incremental adding and removing (+=, -=), currently for lists only * Same for incremental renaming (>=) Tools ----- * Added getexp support for loading mkexp dumps Release 1.1.6 ============= Global ------ * getconfig: added option to control indentation of output * changed installation to explictly use `setuptools` and `pip` Tools ----- * importexp: added support for running outside of native environment * update: avoid code duplication in generated script Release 1.1.5 ============= Config ------ * Fixed error due to variables at namelist level * Fixed recognition of native variables to ignore invalid variable names * Fixed missing [jobs] level variables in extended jobs Tools ----- * importexp: fixed extraction of start/end date in input scripts * mkexp: fixed long run times for extended jobs/namelist groups Release 1.1.4 ============= Config ------ * Added inheritance via .extends or by group name for namelist groups Release 1.1.3 ============= Global ------ * Added wrapper to generate config from exp.*.run files (importexp) * Added support for mkexp generated run scripts to config generation * files2config: use '.' short-cut in file definitions, use global variables in directories * namelist2config: re-enable here-doc detection to remove spurious data, use global variables in namelists and output, remove array slice syntax * Fixes related to python3, perl-5.26, and jinja2-3.0 compatibility * Added tools to manage differences/similarities between config files (compconfig, diffconfig, unmergeconfig) * Handle deprecation warnings for versions 3+ of Jinja2 Release 1.1.2 ============= Global ------ * Updated code to run with python3 and full Unicode set Configuration ------------- * Fixed job config corruption while overriding namelists in another job Templates --------- * 'split' filter allows omission of separator (same as Python 'split') Release 1.1.1 ============= * Replaced by 1.1.2 Version 1.1.1rc2 ================ Configuration ------------- * Fixed job config corruption while formatting native variables in another job Version 1.1.1rc1 ================ Configuration ------------- * Allow hiding for namelist files with templates Release 1.1.0 ============= Global ------ * Added 'selconfig' tool to extract sections from config files * Added 'files2config' tool to extract input file info from logs and scripts * Added variable replacement beta options to the '...2config' tools * Added output of file name in -d mode of 'namelist2config' * Added file tags for 'output_nml' groups in 'namelist2config' 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 * Added 'is_set' utility to be used on logicals in 'eval(...)' expressions * Added configurable hiding (disabling) of namelist files Templates --------- * Added optional parameter 'default_value' to 'format_namelists' to define an alternative default value for namelist variables Release 1.0.12 ============== Global ------ * Added option for removing trailing white space to 'setconfig' * Also added beta option for reducing white space before inline comments * Added 'namelist2config' tool to extract namelist info from logs and scripts Release 1.0.11 ============== Configuration ------------- * Fixed to use native variable formatting in all sections of a job's config Release 1.0.10 ============== Global ------ * Changed directory creation to only create parts w/o native variables Configuration ------------- * Changed to allow values with native variables to be interpolated correctly Release 1.0.9 ============= Global ------ * Reverted retrieval of version info from version control system. Avoids two-step setting of the tag and enables use as external. Also avoids additional 'make' step Release 1.0.8 ============= Global ------ * Changed version info to be retrieved from version control system. This requires an additional 'make' step before running * Changed 'setconfig' to take additional config files to merged with the first * Added dry run option (-n) to 'cpexp' Configuration ------------- * Added new way to disable namelist groups by setting the special variable '.hide' to 'true'. This allows to selectively re-enable groups in higher order config files by setting '.hide' to 'false' * Simplified commented namelist settings at the end of a group by adding a special variable '.end' Templates --------- * Changed 'format_namelist' function to allow use of (yet) undefined groups * Changed 'mkexp_input' variable to show package version as Subversion $Id$ is no longer maintained in Git Release 1.0.7 ============= Global ------ * Added 'setconfig' filter tool to alter config files via command line. Supports adding, altering, and deleting of keys in arbitrary sections, and amendments of header comment Templates --------- * Added 'format_namelist' function allowing to render individual groups, as well as full namelists, identical to the NAMELIST variable Release 1.0.6 ============= Global ------ * Changed 'cdexp' shell tool to honor command line variable assignments Templates --------- * Changed 'get_file' function to return unknown variable references unchanged * Added 'get_dir' function, returning the path for a given 'files' section Release 1.0.5 ============= Global ------ * Added 'getconfig' tool to generate clean config files from 'update' scripts * Added 'editexp' tool to edit the config file for a given 'update' script * Added common update module for 'getconfig', 'editexp', and 'mkexp.bash' * Added 'upexp' tool to run the 'update' script for a given config file Templates --------- * Changed 'list' filter replacement to map the empty string to an empty list. Added option to keep empty string as singleton list if needed Release 1.0.4 ============= Global ------ * Changed 'key' option of getexp to be repeatable * Added 'set' option to getexp to be used with 'key' for script evaluation * Changed output to be written as UTF-8 Configuration ------------- * Made 'time' module available in eval(...) * Reading of EXP_DESCRIPTION from initial comment now also discards leading and trailing lines that only contain white space and comment characters * Updated to configobj-5.0.6 * Fixed error message for missing namelist templates * Changed namelist templates to support names with upper case letters Release 1.0.3 ============= Global ------ * Improved retrieval of working directory for 'update' script, using 'PWD' from environment if available * Fixed bash shell utility 'cdexp' to handle absolute file names when reading from 'update' script * Fixed update script to export all ...PATH variables in case they don't exist * Fixed missing installation of 'duexp' Release 1.0.2 ============= Global ------ * Fixed test suite to clean up all temporary files * Fixed tool 'cppath' to not choke when called twice on the same directory Templates --------- * Changed 'set' test to work, and return False, on undefined variables * Re-enabled Jinja statement and comment syntax, now using '__mkexp__' keyword ({%__mkexp__ ... %}, {#__mkexp__ ... #}) * Replaced 'list' and 'join' filters by versions that treat simple values as singleton lists Configuration ------------- * Changed job inheritance to work for more than one levels * Changed job inheritance to be run for all jobs, not just the current * Added global 'jobs' section to be available for all job templates Release 1.0.1 ============= Global ------ * Added creation of config dump to mkexp (including backup) * Changed mkexp namelist formatting to add multi-group identifiers as comment * Changed merge of process environment ('DEFAULT' section) to be sorted * Added tool 'duexp' to show disk usage by the given experiment * Added 'key' option to getexp for querying a specific config value * Added example script 'share/doc/mkexp/mkexp.bash' with 'bash' shell utilities Release 1.0.0 ============= Global ------ * Fixed error handling for rmexp, cpexp, diffexp; minor edits * Fixed descriptive message for getexp, cpexp * Added --version option to mkexp * Changed rmexp to remove empty parent directories * Changed rmexp to remove monitoring data Release 0.4.3 ============= Templates --------- * Changed retrieval of templates for config files that alter EXP_ID Now tries config file name before using EXP_ID as template name * Disabled evaluation of standard Jinja blocks ({% ... %}) and comments ({# ... #}). This allows handling templates with standard Jinja code and shell scripts using array length expansion (${#ARRAY}) Release 0.4.2 ============= Global ------ * Changed rmexp to be compatible with Debian's /bin/sh (dash) * Changed mkexp and expconfig to be compatible with python-2.6 * Added 'mkexp' option to re-run using 'getexp -vv' output Release 0.4.1 ============= Templates --------- * Added global function 'get_file' to expand input file names for scripts Release 0.4.0 ============= Global ------ * Added support for configuration dump to 'getexp' * Changed tools' section in user guide to better describe command line options * Changed 'rmexp' to only ask for approval once per directory * Changed 'rmexp' to also remove restart, data, and log directories * Added 'cpexp', 'cppath' to copy experiment data to a new experiment name Release 0.3.7 ============= Configuration ------------- * Added support for SETUP_OPTIONS that are loaded before the EXP_OPTIONS. Used for pushing options that are required due to model configuration Release 0.3.6 ============= Configuration ------------- * Changed handling of '.use_template' to allow use of arbitrary template names * Fixed error message for missing or wrong options * Fixed setting ENVIRONMENT to 'DEFAULT' if set to empty in SETUP.config (#5808) 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 Release 0.3.5 ============= Global ------ * Added -q (quiet) option to mkexp to suppress info messages * Fixed diffpath to also compare two files (used to expect directories) Templates --------- * Replaced wordwrap by a private version that allows to suppress breaks on hyphens (used to break long absolute file names) Release 0.3.4 ============= Configuration ------------- * The VERSION_ keyword in standard config files is now optional. The user is notified if it is missing in at least one file. Release 0.3.3 ============= Configuration ------------- * Added 'raw(...)' expression to allow unquoted namelist expressions. Needed for native variables containing lists Templates --------- * Added 'set' test to reliably check if namelist switches are true Release 0.3.2 ============= Configuration ------------- * Fixed bug in native variable support * Expanding native variables did not update but created new entries * Changed creation of job specific config * Configuration of other jobs is now excluded from the job config * Added job specific override of input files * Job specific configurations may now contain their own 'files' section Release 0.3.1 ============= Global ------ * Additional output files * Added creation of an 'update' script for re-creating output files from the script directory Configuration ------------- * Extended expressions in configuration files * Adding (possibly negative) offsets to days in date string (add_days) Release 0.3.0 ============= Global ------ * Support for using native variables in templates * Detection of variable use in configuration keys and values * Context query for global template variable values * Native variable format as special job configuration (.var_format) * Backup of old versions for re-generated files * Backup directory with timestamp for each re-generation, containing previous files incl. README * Fixed 'diffexp' to ignore backup directories * Support for out-of-directory generation * Added command line option and path environment variable for configuration files (--path, MPEXP_PATH) * Changed template lookup paths to also use these settings * Extended queue settings into host environment * Renamed configuration variable and directory (QUEUE_TYPE -> ENVIRONMENT, standard_queue_settings -> standard_environments) * Support for setting environment on the command line * Support for default or blank host environment * Support for setting section variables on the command line * Fixed 'diffexp' to ignore CDPATH settings * Added model directory, verbose mode, README mode to 'getexp' * Changed 'getexp' output from warning to info * Added option to skip directory creation for config tests (--no-make-dirs/-m) * Added User Guide Configuration ------------- * Support for job inheritance (.extends), and job removal (.remove) * Inheritance of job configuration * Namelist overloading * Support for packages of configuration options (EXP_OPTIONS, standard_options) * Support for default configuration settings by model build (SETUP.config) * Improved namelist handling * Support for removing namelist groups and variables from the parent configuration (.remove) * Support for namelist templates for non-Fortran namelists, e.g. OASIS namcouple (.use_template) * Namelist output restricted to 80 characters per line * Support for automatic conversion of comments in namelist configurations, on all levels * Support for example namelist settings (commented assignments) * Extended expressions in configuration files * Use of lists in configuration expressions * Support for reading configuration values from a file (read) * Second to time string conversion in configuration files (sec2time) * Splitting of date strings also works for YYYYMMDD format (split_date) * Adding (possibly negative) offsets to years in date string (add_years) * Support for overriding the 'tasks' job variable * Fixed evaluation of job configuration levels (global settings were masking user settings) * Experiment identifier is taken from the file name by default * Changed to mask dollar characters when reading environment variables into configuration to avoid spurious interpolation Templates --------- * Support for input file template library * 'split' filter for use in templates * 'filter' filter for use in templates * 'wrapstring' work-around for legacy Jinja (2.6) * Support for user defined, experiment specific templates * Support for 'mkexp' version info in templates (mkexp_input)