from cylc.mkdir_p import mkdir_p import cylc.flags from cylc.cfgspec.utils import (coerce_interval, coerce_interval_list, DurationFloat) from cylc.network import PRIVILEGE_LEVELS coercers['interval_seconds'] = lambda *args: coerce_interval( *args, check_syntax_version=False) coercers['interval_minutes'] = lambda *args: coerce_interval( *args, back_comp_unit_factor=60, check_syntax_version=False) coercers['interval_minutes_list'] = lambda *args: coerce_interval_list( *args, back_comp_unit_factor=60, check_syntax_version=False) SPEC = { 'process pool size': vdr(vtype='integer', default=4), 'temporary directory': vdr(vtype='string'), 'state dump rolling archive length': vdr(vtype='integer', vmin=1, default=10), 'disable interactive command prompts': vdr(vtype='boolean', default=True), 'enable run directory housekeeping': vdr(vtype='boolean', default=False), 'run directory rolling archive length': vdr(vtype='integer', vmin=0, default=2), 'submission polling intervals': vdr(vtype='interval_minutes_list', default=[]), 'execution polling intervals': vdr(vtype='interval_minutes_list', default=[]), 'task host select command timeout':
return [ str(i).zfill(n_dig) for i in range(int(lower), int(upper) + 1)] return value coercers['cycletime'] = _coerce_cycletime coercers['cycletime_format'] = _coerce_cycletime_format coercers['cycletime_time_zone'] = _coerce_cycletime_time_zone coercers['cycleinterval'] = _coerce_cycleinterval coercers['final_cycletime'] = _coerce_final_cycletime coercers['interval'] = coerce_interval coercers['interval_list'] = coerce_interval_list coercers['parameter_list'] = _coerce_parameter_list SPEC = { 'title': vdr(vtype='string', default=""), 'description': vdr(vtype='string', default=""), 'group': vdr(vtype='string', default="(ungrouped)"), 'URL': vdr(vtype='string', default=""), 'cylc': { 'UTC mode': vdr( vtype='boolean', default=GLOBAL_CFG.get(['cylc', 'UTC mode'])), 'cycle point format': vdr( vtype='cycletime_format', default=None), 'cycle point num expanded year digits': vdr( vtype='integer', default=0), 'cycle point time zone': vdr( vtype='cycletime_time_zone', default=None), 'required run mode': vdr( vtype='string', options=['live', 'dummy', 'simulation', '']), 'force run mode': vdr(
# (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. from parsec.validate import validator as vdr SPEC = { 'boolean': { '__MANY__': { '__MANY__': vdr(vtype="boolean") }, }, 'integer': { '__MANY__': { '__MANY__': vdr(vtype="integer") }, }, 'float': { '__MANY__': { '__MANY__': vdr(vtype="float") }, }, 'string': { '__MANY__': { '__MANY__': vdr(vtype="string")
# the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. from parsec.validate import validator as vdr SPEC = { 'boolean' : { '__MANY__' : { '__MANY__' : vdr( vtype="boolean" ) }, }, 'integer' : { '__MANY__' : { '__MANY__' : vdr( vtype="integer" ) }, }, 'float' : { '__MANY__' : { '__MANY__' : vdr( vtype="float" ) }, }, 'string' : { '__MANY__' : { '__MANY__' : vdr( vtype="string" ) }, }, 'string_list' : { '__MANY__' : { '__MANY__' : vdr( vtype="string_list" ) }, }, 'float_list' : { '__MANY__' : { '__MANY__' : vdr( vtype="float_list", allow_zeroes=False ) },
#!/usr/bin/env python2 """Check that single-line config print works""" import os, sys fpath = os.path.dirname(os.path.abspath(__file__)) # parsec sys.path.append(fpath + '/../../..') from parsec.config import config from parsec.validate import validator as vdr SPEC = {'foo': {'bar': {'__MANY__': vdr(vtype="string")}}} cfg = config(SPEC) cfg.loadcfg("test.rc") cfg.mdump([['foo', 'bar', 'baz'], ['foo', 'bar', 'qux']], oneline=True, sparse=True)
#!/usr/bin/env python """ An empty config file should successfully yield an empty sparse config dict. """ import os, sys fpath = os.path.dirname(os.path.abspath(__file__)) # parsec sys.path.append(fpath + '/../../..') from parsec.config import config from parsec.validate import validator as vdr from parsec.OrderedDict import OrderedDict SPEC = { 'meta': { 'title': vdr(vtype="string") } } cfg = config(SPEC) cfg.loadcfg("empty.rc") if cfg.get(sparse=True) != OrderedDict(): sys.exit(1)
coercers['cycletime'] = _coerce_cycletime coercers['cycletime_format'] = _coerce_cycletime_format coercers['cycletime_time_zone'] = _coerce_cycletime_time_zone coercers['cycleinterval'] = _coerce_cycleinterval coercers['final_cycletime'] = _coerce_final_cycletime coercers['interval'] = _coerce_interval coercers['interval_minutes'] = lambda *a: _coerce_interval( *a, back_comp_unit_factor=60) coercers['interval_seconds'] = _coerce_interval coercers['interval_list'] = _coerce_interval_list coercers['interval_minutes_list'] = lambda *a: _coerce_interval_list( *a, back_comp_unit_factor=60) coercers['interval_seconds_list'] = _coerce_interval_list SPEC = { 'title': vdr(vtype='string', default=""), 'description': vdr(vtype='string', default=""), 'cylc': { 'UTC mode': vdr(vtype='boolean', default=False), 'cycle point format': vdr(vtype='cycletime_format', default=None), 'cycle point num expanded year digits': vdr(vtype='integer', default=0), 'cycle point time zone': vdr(vtype='cycletime_time_zone', default=None), 'required run mode': vdr(vtype='string', options=['live', 'dummy', 'simulation']), 'force run mode': vdr(vtype='string', options=['live', 'dummy', 'simulation']), 'abort if any task fails':
import os from parsec.loadcfg import load_combined from parsec.validate import validator as vdr from parsec.util import printcfg """ Define items and validators for gcylc config files, """ SITE_FILE = os.path.join(os.environ['CYLC_DIR'], 'conf', 'gcylcrc', 'themes.rc') USER_FILE = os.path.join(os.environ['HOME'], '.cylc', 'gcylc.rc') cfg = None SPEC = { 'initial views': vdr(vtype='string_list', default=["text", "dot"]), 'ungrouped views': vdr(vtype='string_list', default=[]), 'use theme': vdr(vtype='string', default="default"), 'themes': { '__MANY__': { 'inherit': vdr(vtype='string', default="default"), 'defaults': vdr(vtype='string_list'), 'waiting': vdr(vtype='string_list'), 'runahead': vdr(vtype='string_list'), 'held': vdr(vtype='string_list'), 'queued': vdr(vtype='string_list'), 'submitting': vdr(vtype='string_list'), 'submitted': vdr(vtype='string_list'), 'submit-failed': vdr(vtype='string_list'), 'running': vdr(vtype='string_list'), 'succeeded': vdr(vtype='string_list'),
# # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. import os import sys from parsec import ParsecError from parsec.validate import validator as vdr from parsec.config import config """gscan config file format.""" USER_FILE = os.path.join(os.environ['HOME'], '.cylc', 'gscan.rc') SPEC = { 'columns': vdr(vtype='string_list', default=['suite', 'status']), 'activate on startup': vdr(vtype='boolean', default=False) } class gscanconfig(config): def check(self): cfg = self.get(sparse=True) if 'columns' in cfg: for column in cfg['columns']: if column not in [ 'host', 'suite', 'title', 'updated', 'status' ]: print >> sys.stderr, ("WARNING: illegal column name " "'" + column + "'") cfg['columns'].remove(column)
TASK_STATUSES_ALL, TASK_STATUS_RUNAHEAD, TASK_STATUS_HELD, TASK_STATUS_WAITING, TASK_STATUS_EXPIRED, TASK_STATUS_QUEUED, TASK_STATUS_READY, TASK_STATUS_SUBMITTED, TASK_STATUS_SUBMIT_FAILED, TASK_STATUS_SUBMIT_RETRYING, TASK_STATUS_RUNNING, TASK_STATUS_SUCCEEDED, TASK_STATUS_FAILED, TASK_STATUS_RETRYING) "gcylc config file format." SITE_FILE = os.path.join( os.environ['CYLC_DIR'], 'conf', 'gcylcrc', 'themes.rc') USER_FILE = os.path.join(os.environ['HOME'], '.cylc', 'gcylc.rc') SPEC = { 'dot icon size': vdr( vtype='string', default="medium", options=["small", "medium", "large", "extra large"]), 'initial side-by-side views': vdr(vtype='boolean', default=False), 'initial views': vdr(vtype='string_list', default=["text"]), 'sort by definition order': vdr(vtype='boolean', default=True), 'sort column': vdr( vtype='string', default='none', options=[heading for heading in ControlTree.headings if heading is not None] + ['none']), 'sort column ascending': vdr(vtype='boolean', default=True), 'task filter highlight color': vdr(vtype='string', default='PowderBlue'), 'task states to filter out': vdr( vtype='string_list', default=[TASK_STATUS_RUNAHEAD]), 'themes': {
from parsec import ParsecError from parsec.config import config, ItemNotFoundError, itemstr from parsec.validate import validator as vdr from parsec.upgrade import upgrader from parsec.util import printcfg from cylc.task_state import task_state "gcylc config file format." SITE_FILE = os.path.join( os.environ['CYLC_DIR'], 'conf', 'gcylcrc', 'themes.rc') USER_FILE = os.path.join(os.environ['HOME'], '.cylc', 'gcylc.rc') SPEC = { 'initial views': vdr(vtype='string_list', default=["text"]), 'ungrouped views': vdr(vtype='string_list', default=[]), 'use theme': vdr(vtype='string', default="default"), 'dot icon size': vdr( vtype='string', default="medium", options=["small", "medium", "large", "extra large"]), 'sort by definition order': vdr(vtype='boolean', default=True), 'task filter highlight color': vdr(vtype='string', default='PowderBlue'), 'initial side-by-side views': vdr(vtype='boolean', default=False), 'themes': { '__MANY__': { 'inherit': vdr(vtype='string', default="default"), 'defaults': vdr(vtype='string_list'), 'waiting': vdr(vtype='string_list'), 'held': vdr(vtype='string_list'),
# You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. import os import sys from parsec import ParsecError from parsec.validate import validator as vdr from parsec.config import config """gscan config file format.""" USER_FILE = os.path.join(os.environ['HOME'], '.cylc', 'gscan.rc') SPEC = { 'columns': vdr(vtype='string_list', default=['suite', 'status']), 'activate on startup': vdr(vtype='boolean', default=False) } class gscanconfig(config): def check(self): cfg = self.get(sparse=True) if 'columns' in cfg: for column in cfg['columns']: if column not in ['host', 'suite', 'title', 'updated', 'status']: print >> sys.stderr, ("WARNING: illegal column name " "'" + column + "'") cfg['columns'].remove(column)
coercers['cycletime'] = _coerce_cycletime coercers['cycletime_format'] = _coerce_cycletime_format coercers['cycletime_time_zone'] = _coerce_cycletime_time_zone coercers['cycleinterval'] = _coerce_cycleinterval coercers['final_cycletime'] = _coerce_final_cycletime coercers['interval'] = coerce_interval coercers['interval_minutes'] = lambda *a: coerce_interval( *a, back_comp_unit_factor=60) coercers['interval_seconds'] = coerce_interval coercers['interval_list'] = coerce_interval_list coercers['interval_minutes_list'] = lambda *a: coerce_interval_list( *a, back_comp_unit_factor=60) coercers['interval_seconds_list'] = coerce_interval_list SPEC = { 'title': vdr(vtype='string', default=""), 'description': vdr(vtype='string', default=""), 'URL': vdr(vtype='string', default=""), 'cylc': { 'UTC mode': vdr(vtype='boolean', default=GLOBAL_CFG.get(['cylc', 'UTC mode'])), 'cycle point format': vdr(vtype='cycletime_format', default=None), 'cycle point num expanded year digits': vdr(vtype='integer', default=0), 'cycle point time zone': vdr(vtype='cycletime_time_zone', default=None), 'required run mode': vdr(vtype='string', options=['live', 'dummy', 'simulation', '']), 'force run mode': vdr(vtype='string', options=['live', 'dummy', 'simulation', '']),
from parsec.validate import coercers from parsec import ParsecError from parsec.upgrade import upgrader, converter from cylc.hostuserutil import is_remote_user from cylc.envvar import expandvars from cylc.mkdir_p import mkdir_p import cylc.flags from cylc.cfgspec.utils import ( coerce_interval, coerce_interval_list, DurationFloat) from cylc.network import PRIVILEGE_LEVELS, PRIV_STATE_TOTALS, PRIV_SHUTDOWN coercers['interval'] = coerce_interval coercers['interval_list'] = coerce_interval_list SPEC = { 'process pool size': vdr(vtype='integer', default=4), 'temporary directory': vdr(vtype='string'), 'state dump rolling archive length': vdr( vtype='integer', default=10), 'disable interactive command prompts': vdr(vtype='boolean', default=True), 'enable run directory housekeeping': vdr(vtype='boolean', default=False), 'run directory rolling archive length': vdr( vtype='integer', default=2), 'task host select command timeout': vdr( vtype='interval', default=DurationFloat(10)), 'task messaging': { 'retry interval': vdr( vtype='interval', default=DurationFloat(5)), 'maximum number of tries': vdr(vtype='integer', default=7), 'connection timeout': vdr( vtype='interval', default=DurationFloat(30)),
import os from parsec.loadcfg import load_combined from parsec.validate import validator as vdr from parsec.util import printcfg """ Define items and validators for gcylc config files, """ SITE_FILE = os.path.join( os.environ['CYLC_DIR'], 'conf', 'gcylcrc', 'themes.rc' ) USER_FILE = os.path.join( os.environ['HOME'], '.cylc', 'gcylc.rc' ) cfg = None SPEC = { 'initial views' : vdr( vtype='string_list', default=["text","dot"] ), 'ungrouped views' : vdr( vtype='string_list', default=[] ), 'use theme' : vdr( vtype='string', default="default" ), 'themes' : { '__MANY__' : { 'inherit' : vdr( vtype='string', default="default" ), 'defaults' : vdr( vtype='string_list' ), 'waiting' : vdr( vtype='string_list' ), 'runahead' : vdr( vtype='string_list' ), 'held' : vdr( vtype='string_list' ), 'queued' : vdr( vtype='string_list' ), 'submitting' : vdr( vtype='string_list' ), 'submitted' : vdr( vtype='string_list' ), 'submit-failed' : vdr( vtype='string_list' ), 'running' : vdr( vtype='string_list' ), 'succeeded' : vdr( vtype='string_list' ),
# the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. """Legal items and validators for the parsec test config file.""" from parsec.validate import validator as vdr SPEC = { 'title': vdr(vtype="string"), 'single values': { 'integers': { '__MANY__': vdr(vtype="integer") }, 'booleans': { '__MANY__': vdr(vtype="boolean") }, 'floats': { '__MANY__': vdr(vtype="float") }, 'strings': { '__MANY__': vdr(vtype="string") }, 'strings with internal comments': { '__MANY__': vdr(vtype="string")
#!/usr/bin/env python """ An empty config file should successfully yield an empty sparse config dict. """ import os, sys fpath = os.path.dirname(os.path.abspath(__file__)) # parsec sys.path.append(fpath + '/../../..') from parsec.config import config from parsec.validate import validator as vdr from parsec.OrderedDict import OrderedDict SPEC = {'meta': {'title': vdr(vtype="string")}} cfg = config(SPEC) cfg.loadcfg("empty.rc") if cfg.get(sparse=True) != OrderedDict(): sys.exit(1)
"Define all legal items and values for cylc suite definition files." def _coerce_cycletime( value, keys, args ): """Coerce value to a cycle time.""" value = _strip_and_unquote( keys, value ) try: return ct( value ).get() except: #raise raise IllegalValueError( 'cycle time', keys, value ) coercers['cycletime'] = _coerce_cycletime SPEC = { 'title' : vdr( vtype='string', default="" ), 'description' : vdr( vtype='string', default="" ), 'cylc' : { 'UTC mode' : vdr( vtype='boolean', default=False), 'required run mode' : vdr( vtype='string', options=['live','dummy','simulation'] ), 'force run mode' : vdr( vtype='string', options=['live','dummy','simulation'] ), 'abort if any task fails' : vdr( vtype='boolean', default=False ), 'log resolved dependencies' : vdr( vtype='boolean', default=False ), 'job submission' : { 'batch size' : vdr( vtype='integer', vmin=1, default=10 ), 'delay between batches' : vdr( vtype='integer', vmin=0, default=0 ), }, 'event handler submission' : { 'batch size' : vdr( vtype='integer', vmin=1, default=10 ), 'delay between batches' : vdr( vtype='integer', vmin=0, default=0 ), },
coercers['cycletime_format'] = _coerce_cycletime_format coercers['cycletime_time_zone'] = _coerce_cycletime_time_zone coercers['cycleinterval'] = _coerce_cycleinterval coercers['final_cycletime'] = _coerce_final_cycletime coercers['interval'] = _coerce_interval coercers['interval_minutes'] = lambda *a: _coerce_interval( *a, back_comp_unit_factor=60) coercers['interval_seconds'] = _coerce_interval coercers['interval_list'] = _coerce_interval_list coercers['interval_minutes_list'] = lambda *a: _coerce_interval_list( *a, back_comp_unit_factor=60) coercers['interval_seconds_list'] = _coerce_interval_list SPEC = { 'title' : vdr( vtype='string', default="" ), 'description' : vdr( vtype='string', default="" ), 'cylc' : { 'UTC mode' : vdr( vtype='boolean', default=False), 'cycle point format' : vdr( vtype='cycletime_format', default=None), 'cycle point num expanded year digits': vdr( vtype='integer', default=0), 'cycle point time zone' : vdr( vtype='cycletime_time_zone', default=None), 'required run mode' : vdr( vtype='string', options=['live','dummy','simulation'] ), 'force run mode' : vdr( vtype='string', options=['live','dummy','simulation'] ), 'abort if any task fails' : vdr( vtype='boolean', default=False ), 'log resolved dependencies' : vdr( vtype='boolean', default=False ), 'environment' : { '__MANY__' : vdr( vtype='string' ), }, 'event hooks' : { 'startup handler' : vdr( vtype='string_list', default=[] ),
#C: #C: You should have received a copy of the GNU General Public License #C: along with this program. If not, see <http://www.gnu.org/licenses/>. from parsec.validate import validator as vdr from parsec.validate import validate, expand, get_defaults from parsec.upgrade import upgrader, converter from parsec.fileparse import parse """ Define all legal items and values for cylc suite definition files. """ cfg = None SPEC = { 'title': vdr(vtype='string', default="No title provided"), 'description': vdr(vtype='string', default="No description provided"), 'cylc': { 'UTC mode': vdr(vtype='boolean', default=False), 'required run mode': vdr(vtype='string', options=['live', 'dummy', 'simulation']), 'force run mode': vdr(vtype='string', options=['live', 'dummy', 'simulation']), 'abort if any task fails': vdr(vtype='boolean', default=False), 'log resolved dependencies': vdr(vtype='boolean', default=False), 'job submission': { 'batch size': vdr(vtype='integer', vmin=1, default=10), 'delay between batches': vdr(vtype='integer', vmin=0, default=0),
from parsec import ParsecError from parsec.config import config, ItemNotFoundError, itemstr from parsec.validate import validator as vdr from parsec.upgrade import upgrader from parsec.util import printcfg from cylc.task_state import task_state "gcylc config file format." SITE_FILE = os.path.join(os.environ["CYLC_DIR"], "conf", "gcylcrc", "themes.rc") USER_FILE = os.path.join(os.environ["HOME"], ".cylc", "gcylc.rc") SPEC = { "initial views": vdr(vtype="string_list", default=["text"]), "ungrouped views": vdr(vtype="string_list", default=[]), "use theme": vdr(vtype="string", default="default"), "dot icon size": vdr(vtype="string", default="medium", options=["small", "medium", "large", "extra large"]), "sort by definition order": vdr(vtype="boolean", default=True), "task filter highlight color": vdr(vtype="string", default="PowderBlue"), "initial side-by-side views": vdr(vtype="boolean", default=False), "themes": { "__MANY__": { "inherit": vdr(vtype="string", default="default"), "defaults": vdr(vtype="string_list"), "waiting": vdr(vtype="string_list"), "held": vdr(vtype="string_list"), "queued": vdr(vtype="string_list"), "ready": vdr(vtype="string_list"), "expired": vdr(vtype="string_list"),
return [int(item) for item in items] coercers['cycletime'] = _coerce_cycletime coercers['cycletime_format'] = _coerce_cycletime_format coercers['cycletime_time_zone'] = _coerce_cycletime_time_zone coercers['cycleinterval'] = _coerce_cycleinterval coercers['final_cycletime'] = _coerce_final_cycletime coercers['interval'] = coerce_interval coercers['interval_list'] = coerce_interval_list coercers['parameter_list'] = _coerce_parameter_list SPEC = { 'meta': { 'description': vdr(vtype='string', default=""), 'group': vdr(vtype='string', default=""), 'title': vdr(vtype='string', default=""), 'URL': vdr(vtype='string', default=""), '__MANY__': vdr(vtype='string', default=""), }, 'cylc': { 'UTC mode': vdr( vtype='boolean', default=GLOBAL_CFG.get(['cylc', 'UTC mode'])), 'cycle point format': vdr( vtype='cycletime_format', default=None), 'cycle point num expanded year digits': vdr( vtype='integer', default=0), 'cycle point time zone': vdr( vtype='cycletime_time_zone', default=None), 'required run mode': vdr(
"""gscan config file format.""" import os import sys from parsec import ParsecError from parsec.config import config from parsec.validate import coercers, validator as vdr from cylc.cfgspec.utils import (coerce_interval, DurationFloat) coercers['interval'] = coerce_interval USER_FILE = os.path.join(os.environ['HOME'], '.cylc', 'gscan.rc') SPEC = { 'activate on startup': vdr(vtype='boolean', default=False), 'columns': vdr(vtype='string_list', default=['suite', 'status']), 'suite listing update interval': vdr( vtype='interval', default=DurationFloat(60)), 'suite status update interval': vdr( vtype='interval', default=DurationFloat(15)), 'window size': vdr(vtype='integer_list', default=[300, 200]), 'hide main menubar': vdr(vtype='boolean', default=True), } class GScanConfig(config): """Configuration for "gscan".""" COL_GROUP = "Group" COL_HOST = "Host"
from copy import deepcopy, copy from parsec.config import config, ItemNotFoundError, itemstr from parsec.validate import validator as vdr from parsec.upgrade import upgrader from parsec.util import printcfg from cylc.task_state import task_state "gcylc config file format." SITE_FILE = os.path.join( os.environ['CYLC_DIR'], 'conf', 'gcylcrc', 'themes.rc' ) USER_FILE = os.path.join( os.environ['HOME'], '.cylc', 'gcylc.rc' ) SPEC = { 'initial views' : vdr( vtype='string_list', default=["text"] ), 'ungrouped views' : vdr( vtype='string_list', default=[] ), 'use theme' : vdr( vtype='string', default="default" ), 'dot icon size' : vdr( vtype='string', default="medium", options=["small","medium","large"]), 'sort by definition order' : vdr( vtype='boolean', default=True ), 'themes' : { '__MANY__' : { 'inherit' : vdr( vtype='string', default="default" ), 'defaults' : vdr( vtype='string_list' ), 'waiting' : vdr( vtype='string_list' ), 'runahead' : vdr( vtype='string_list' ), 'held' : vdr( vtype='string_list' ), 'queued' : vdr( vtype='string_list' ), 'ready' : vdr( vtype='string_list' ), 'submitted' : vdr( vtype='string_list' ),
from cylc.cfgspec.utils import coerce_interval_list from cylc.network import PRIVILEGE_LEVELS "Cylc site and user configuration file spec." coercers['interval_seconds'] = lambda *args: coerce_interval( *args, check_syntax_version=False) coercers['interval_minutes'] = lambda *args: coerce_interval( *args, back_comp_unit_factor=60, check_syntax_version=False) coercers['interval_minutes_list'] = lambda *args: coerce_interval_list( *args, back_comp_unit_factor=60, check_syntax_version=False) SPEC = { 'process pool size': vdr(vtype='integer', default=4), 'temporary directory': vdr(vtype='string'), 'state dump rolling archive length': vdr( vtype='integer', vmin=1, default=10), 'disable interactive command prompts': vdr(vtype='boolean', default=True), 'enable run directory housekeeping': vdr(vtype='boolean', default=False), 'run directory rolling archive length': vdr( vtype='integer', vmin=0, default=2), 'submission polling intervals': vdr( vtype='interval_minutes_list', default=[]), 'execution polling intervals': vdr( vtype='interval_minutes_list', default=[]), 'task host select command timeout': vdr( vtype='interval_seconds', default=10), 'task messaging': {
from cylc.mkdir_p import mkdir_p import cylc.flags from cylc.cfgspec.suite import coerce_interval from cylc.cfgspec.suite import coerce_interval_list "Cylc site and user configuration file spec." coercers['interval_seconds'] = ( lambda *args: coerce_interval(*args, check_syntax_version=False)) coercers['interval_minutes_list'] = ( lambda *args: coerce_interval_list(*args, back_comp_unit_factor=60, check_syntax_version=False)) SPEC = { 'process pool size' : vdr( vtype='integer', default=None ), 'temporary directory' : vdr( vtype='string' ), 'state dump rolling archive length' : vdr( vtype='integer', vmin=1, default=10 ), 'disable interactive command prompts' : vdr( vtype='boolean', default=True ), 'enable run directory housekeeping' : vdr( vtype='boolean', default=False ), 'run directory rolling archive length': vdr( vtype='integer', vmin=0, default=2 ), 'submission polling intervals' : vdr( vtype='interval_minutes_list', default=[]), 'execution polling intervals' : vdr( vtype='interval_minutes_list', default=[]), 'task host select command timeout' : vdr( vtype='interval_seconds', default=10), 'task messaging' : { 'retry interval' : vdr( vtype='interval_seconds', default=5), 'maximum number of tries' : vdr( vtype='integer', vmin=1, default=7 ), 'connection timeout' : vdr( vtype='interval_seconds', default=30), },
#!/usr/bin/env python import os, sys fpath = os.path.dirname(os.path.abspath(__file__)) # parsec sys.path.append( fpath + '/../../..' ) """ Check that single-line config print works """ from parsec.config import config from parsec.validate import validator as vdr from parsec.OrderedDict import OrderedDict SPEC = { 'foo' : { 'bar' : { '__MANY__' : vdr( vtype="string" ) } } } cfg = config( SPEC ) cfg.loadcfg( "test.rc" ) cfg.mdump ( [['foo','bar','baz'],['foo','bar','qux']], oneline=True, sparse=True)
from parsec import ParsecError from parsec.upgrade import upgrader, converter from cylc.hostuserutil import is_remote_user from cylc.envvar import expandvars from cylc.mkdir_p import mkdir_p import cylc.flags from cylc.cfgspec.utils import (coerce_interval, coerce_interval_list, DurationFloat) from cylc.network import PRIVILEGE_LEVELS, PRIV_STATE_TOTALS, PRIV_SHUTDOWN coercers['interval'] = coerce_interval coercers['interval_list'] = coerce_interval_list SPEC = { 'process pool size': vdr(vtype='integer', default=4), 'temporary directory': vdr(vtype='string'), 'state dump rolling archive length': vdr(vtype='integer', default=10), 'disable interactive command prompts': vdr(vtype='boolean', default=True), 'enable run directory housekeeping': vdr(vtype='boolean', default=False), 'run directory rolling archive length': vdr(vtype='integer', default=2), 'task host select command timeout': vdr(vtype='interval', default=DurationFloat(10)), 'task messaging': { 'retry interval': vdr(vtype='interval', default=DurationFloat(5)), 'maximum number of tries': vdr(vtype='integer', default=7),
"""gscan config file format.""" import os import sys from parsec import ParsecError from parsec.config import config from parsec.validate import coercers, validator as vdr from cylc.cfgspec.utils import (coerce_interval, DurationFloat) coercers['interval'] = coerce_interval USER_FILE = os.path.join(os.environ['HOME'], '.cylc', 'gscan.rc') SPEC = { 'activate on startup': vdr(vtype='boolean', default=False), 'columns': vdr(vtype='string_list', default=['suite', 'status']), 'suite listing update interval': vdr(vtype='interval', default=DurationFloat(60)), 'suite status update interval': vdr(vtype='interval', default=DurationFloat(15)), 'window size': vdr(vtype='integer_list', default=[300, 200]), 'hide main menubar': vdr(vtype='boolean', default=True), } class GScanConfig(config): """Configuration for "gscan"."""
TASK_STATUSES_ALL, TASK_STATUS_RUNAHEAD, TASK_STATUS_HELD, TASK_STATUS_WAITING, TASK_STATUS_EXPIRED, TASK_STATUS_QUEUED, TASK_STATUS_READY, TASK_STATUS_SUBMITTED, TASK_STATUS_SUBMIT_FAILED, TASK_STATUS_SUBMIT_RETRYING, TASK_STATUS_RUNNING, TASK_STATUS_SUCCEEDED, TASK_STATUS_FAILED, TASK_STATUS_RETRYING) "gcylc config file format." SITE_FILE = os.path.join(os.environ['CYLC_DIR'], 'conf', 'gcylcrc', 'themes.rc') USER_FILE = os.path.join(os.environ['HOME'], '.cylc', 'gcylc.rc') SPEC = { 'dot icon size': vdr(vtype='string', default="medium", options=["small", "medium", "large", "extra large"]), 'initial side-by-side views': vdr(vtype='boolean', default=False), 'initial views': vdr(vtype='string_list', default=["text"]), 'sort by definition order': vdr(vtype='boolean', default=True), 'sort column': vdr(vtype='string', default='none', options=[ heading for heading in ControlTree.headings if heading is not None ] + ['none']), 'sort column ascending': vdr(vtype='boolean', default=True),
from cylc.task_state import ( TASK_STATUSES_ALL, TASK_STATUS_RUNAHEAD, TASK_STATUS_HELD, TASK_STATUS_WAITING, TASK_STATUS_EXPIRED, TASK_STATUS_QUEUED, TASK_STATUS_READY, TASK_STATUS_SUBMITTED, TASK_STATUS_SUBMIT_FAILED, TASK_STATUS_SUBMIT_RETRYING, TASK_STATUS_RUNNING, TASK_STATUS_SUCCEEDED, TASK_STATUS_FAILED, TASK_STATUS_RETRYING) from cylc.cfgspec.utils import (coerce_interval, DurationFloat) coercers['interval'] = coerce_interval SITE_FILE = os.path.join( os.environ['CYLC_DIR'], 'conf', 'gcylcrc', 'themes.rc') USER_FILE = os.path.join(os.environ['HOME'], '.cylc', 'gcylc.rc') SPEC = { 'dot icon size': vdr( vtype='string', default="medium", options=["small", "medium", "large", "extra large"]), 'initial side-by-side views': vdr(vtype='boolean', default=False), 'initial views': vdr(vtype='string_list', default=["text"]), 'maximum update interval': vdr( vtype='interval', default=DurationFloat(15)), 'sort by definition order': vdr(vtype='boolean', default=True), 'sort column': vdr( vtype='string', default='none', options=[heading for heading in ControlTree.headings if heading is not None] + ['none']), 'sort column ascending': vdr(vtype='boolean', default=True), 'task filter highlight color': vdr(vtype='string', default='PowderBlue'), 'task states to filter out': vdr( vtype='string_list',
coercers["cycletime"] = _coerce_cycletime coercers["cycletime_format"] = _coerce_cycletime_format coercers["cycletime_time_zone"] = _coerce_cycletime_time_zone coercers["cycleinterval"] = _coerce_cycleinterval coercers["final_cycletime"] = _coerce_final_cycletime coercers["interval"] = coerce_interval coercers["interval_minutes"] = lambda *a: coerce_interval(*a, back_comp_unit_factor=60) coercers["interval_seconds"] = coerce_interval coercers["interval_list"] = coerce_interval_list coercers["interval_minutes_list"] = lambda *a: coerce_interval_list(*a, back_comp_unit_factor=60) coercers["interval_seconds_list"] = coerce_interval_list coercers["parameter_list"] = _coerce_parameter_list SPEC = { "title": vdr(vtype="string", default=""), "description": vdr(vtype="string", default=""), "group": vdr(vtype="string", default="(ungrouped)"), "URL": vdr(vtype="string", default=""), "cylc": { "UTC mode": vdr(vtype="boolean", default=GLOBAL_CFG.get(["cylc", "UTC mode"])), "cycle point format": vdr(vtype="cycletime_format", default=None), "cycle point num expanded year digits": vdr(vtype="integer", default=0), "cycle point time zone": vdr(vtype="cycletime_time_zone", default=None), "required run mode": vdr(vtype="string", options=["live", "dummy", "simulation", ""]), "force run mode": vdr(vtype="string", options=["live", "dummy", "simulation", ""]), "abort if any task fails": vdr(vtype="boolean", default=False), "health check interval": vdr(vtype="interval", default=None), "log resolved dependencies": vdr(vtype="boolean", default=False), "disable automatic shutdown": vdr(vtype="boolean", default=False), "environment": {"__MANY__": vdr(vtype="string")},
from parsec.config import config, ItemNotFoundError, itemstr from parsec.validate import validator as vdr from parsec.upgrade import upgrader from parsec.util import printcfg from cylc.task_state import task_state "gcylc config file format." SITE_FILE = os.path.join(os.environ['CYLC_DIR'], 'conf', 'gcylcrc', 'themes.rc') USER_FILE = os.path.join(os.environ['HOME'], '.cylc', 'gcylc.rc') SPEC = { 'initial views': vdr(vtype='string_list', default=["text"]), 'ungrouped views': vdr(vtype='string_list', default=[]), 'use theme': vdr(vtype='string', default="default"), 'dot icon size': vdr(vtype='string', default="medium", options=["small", "medium", "large"]), 'sort by definition order': vdr(vtype='boolean', default=True), 'themes': { '__MANY__': { 'inherit': vdr(vtype='string', default="default"), 'defaults': vdr(vtype='string_list'), 'waiting': vdr(vtype='string_list'), 'held': vdr(vtype='string_list'),
# This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. from parsec.validate import validator as vdr """ Legal items and validators for the parsec test config file. """ SPEC = { 'title' : vdr( vtype="string" ), 'single values' : { 'integers' : { '__MANY__' : vdr( vtype="integer" ) }, 'booleans' : { '__MANY__' : vdr( vtype="boolean" ) }, 'floats' : { '__MANY__' : vdr( vtype="float" ) }, 'strings' : { '__MANY__' : vdr( vtype="string" ) }, 'strings with internal comments' : { '__MANY__' : vdr( vtype="string" ) }, 'multiline strings' : { '__MANY__' : vdr( vtype="string" ) }, 'multiline strings with internal comments' : { '__MANY__' : vdr( vtype="string" ) }, }, 'list values' : { 'string lists' : { '__MANY__' : vdr( vtype="string_list" ),
#!/usr/bin/env python import os, sys fpath = os.path.dirname(os.path.abspath(__file__)) # parsec sys.path.append(fpath + '/../../..') """ An empty config file should successfully yield an empty sparse config dict. """ from parsec.config import config from parsec.validate import validator as vdr from parsec.OrderedDict import OrderedDict SPEC = {'title': vdr(vtype="string")} cfg = config(SPEC) cfg.loadcfg("empty.rc") if cfg.get(sparse=True) != OrderedDict(): sys.exit(1)
#!/usr/bin/env python import os, sys fpath = os.path.dirname(os.path.abspath(__file__)) # parsec sys.path.append( fpath + '/../../..' ) """ A missing config file should successfully yield an empty sparse config dict. """ from parsec.config import config from parsec.validate import validator as vdr from parsec.OrderedDict import OrderedDict SPEC = { 'title' : vdr( vtype="string" ) } cfg = config( SPEC ) cfg.loadcfg( "missing.rc" ) if cfg.get(sparse=True) != OrderedDict(): sys.exit(1)
else: return [int(item) for item in items] coercers['cycletime'] = _coerce_cycletime coercers['cycletime_format'] = _coerce_cycletime_format coercers['cycletime_time_zone'] = _coerce_cycletime_time_zone coercers['cycleinterval'] = _coerce_cycleinterval coercers['final_cycletime'] = _coerce_final_cycletime coercers['interval'] = coerce_interval coercers['interval_list'] = coerce_interval_list coercers['parameter_list'] = _coerce_parameter_list SPEC = { 'meta': { 'description': vdr(vtype='string', default=""), 'group': vdr(vtype='string', default=""), 'title': vdr(vtype='string', default=""), 'URL': vdr(vtype='string', default=""), '__MANY__': vdr(vtype='string', default=""), }, 'cylc': { 'UTC mode': vdr(vtype='boolean', default=glbl_cfg().get(['cylc', 'UTC mode'])), 'cycle point format': vdr(vtype='cycletime_format', default=None), 'cycle point num expanded year digits': vdr(vtype='integer', default=0), 'cycle point time zone': vdr(vtype='cycletime_time_zone', default=None), 'required run mode':
from parsec import ParsecError from parsec.config import config, ItemNotFoundError, itemstr from parsec.validate import validator as vdr from parsec.upgrade import upgrader from parsec.util import printcfg from cylc.task_state import task_state "gcylc config file format." SITE_FILE = os.path.join( os.environ['CYLC_DIR'], 'conf', 'gcylcrc', 'themes.rc' ) USER_FILE = os.path.join( os.environ['HOME'], '.cylc', 'gcylc.rc' ) SPEC = { 'initial views' : vdr( vtype='string_list', default=["text"] ), 'ungrouped views' : vdr( vtype='string_list', default=[] ), 'use theme' : vdr( vtype='string', default="default" ), 'dot icon size' : vdr( vtype='string', default="medium", options=["small","medium","large", "extra large"]), 'sort by definition order' : vdr( vtype='boolean', default=True ), 'task filter highlight color' : vdr(vtype='string', default='PowderBlue'), 'initial side-by-side views' : vdr(vtype='boolean', default=False), 'themes' : { '__MANY__' : { 'inherit' : vdr( vtype='string', default="default" ), 'defaults' : vdr( vtype='string_list' ), 'waiting' : vdr( vtype='string_list' ), 'held' : vdr( vtype='string_list' ), 'queued' : vdr( vtype='string_list' ), 'ready' : vdr( vtype='string_list' ),