From 4b46fe67313edaca2febaf238a827639cfd3bae7 Mon Sep 17 00:00:00 2001 From: Scott Owen James Date: Wed, 30 Sep 2026 09:44:15 +0100 Subject: [PATCH 01/16] Added functionality for announcing when a deprecated items is removed --- cylc/flow/cfgspec/workflow.py | 31 +++++++++++++++++++++++++------ cylc/flow/parsec/upgrade.py | 12 ++++++++---- 2 files changed, 33 insertions(+), 10 deletions(-) diff --git a/cylc/flow/cfgspec/workflow.py b/cylc/flow/cfgspec/workflow.py index 48c9c8ceebf..5ab5eff981b 100644 --- a/cylc/flow/cfgspec/workflow.py +++ b/cylc/flow/cfgspec/workflow.py @@ -2158,22 +2158,29 @@ def upg( '8.0.0', ['cylc', 'task event mail interval'], ['cylc', 'mail', 'task event batch interval'], + remove_at='8.9' ) u.deprecate( '8.0.0', ['runtime', '__MANY__', 'suite state polling'], ['runtime', '__MANY__', 'workflow state polling'], is_section=True, + remove_at='8.9' ) u.obsolete( - '8.0.0', ['runtime', '__MANY__', 'workflow state polling', 'host']) + '8.0.0', ['runtime', '__MANY__', 'workflow state polling', 'host'], + remove_at='8.9' + ) u.obsolete( - '8.0.0', ['runtime', '__MANY__', 'workflow state polling', 'user']) + '8.0.0', ['runtime', '__MANY__', 'workflow state polling', 'user'], + remove_at='8.9' + ) u.deprecate( '8.3.0', ['runtime', '__MANY__', 'workflow state polling', 'run-dir'], ['runtime', '__MANY__', 'workflow state polling', 'alt-cylc-run-dir'], + remove_at='8.9' ) u.deprecate( @@ -2181,12 +2188,14 @@ def upg( ['cylc', 'parameters'], ['task parameters'], is_section=True, + remove_at='8.9' ) u.deprecate( '8.0.0', ['cylc', 'parameter templates'], ['task parameters', 'templates'], is_section=True, + remove_at='8.9' ) # Whole workflow task mail settings for mail_setting in ['to', 'from', 'footer']: @@ -2194,6 +2203,7 @@ def upg( '8.0.0', ['cylc', 'events', f'mail {mail_setting}'], ['cylc', 'mail', mail_setting], + remove_at='8.9' ) # Task mail settings in [runtime][TASK] for mail_setting in ['to', 'from']: @@ -2201,6 +2211,7 @@ def upg( '8.0.0', ['runtime', '__MANY__', 'events', f'mail {mail_setting}'], ['runtime', '__MANY__', 'mail', mail_setting], + remove_at='8.9' ) u.deprecate( '8.0.0', @@ -2210,15 +2221,16 @@ def upg( 'DELETED (OBSOLETE) - use "global.cylc[scheduler][mail]smtp" ' 'instead') ), + remove_at='8.9' ) u.deprecate( '8.0.0', ['runtime', '__MANY__', 'events', 'mail smtp'], None, cvtr=converter(lambda x: x, ( - 'DELETED (OBSOLETE) - use "global.cylc[scheduler][mail]smtp" ' - 'instead') + 'DELETED (OBSOLETE) - use "global.cylc[scheduler][mail]smtp" ') ), + remove_at='8.9' ) u.deprecate( '8.0.0', @@ -2226,13 +2238,15 @@ def upg( ['scheduling', 'runahead limit'], cvtr=converter( lambda x: f'P{int(x) - 1}' if x != '' else '', - '"{old}" -> "{new}"' + '"{old}" -> "{new}"', ), + remove_at='8.9' ) u.deprecate( '8.0.0', ['scheduling', 'hold after point'], ['scheduling', 'hold after cycle point'], + remove_at='8.9' ) for job_setting in [ @@ -2246,6 +2260,7 @@ def upg( '8.0.0', ['runtime', '__MANY__', 'job', job_setting], ['runtime', '__MANY__', job_setting], + remove_at='8.9' ) # Workflow timeout is now measured from start of run. @@ -2266,6 +2281,7 @@ def upg( '8.0.0', ['cylc', 'events', old], ['cylc', 'events', new], + remove_at='8.9', ) for old in [ @@ -2288,6 +2304,7 @@ def upg( '8.0.0', ['runtime', '__MANY__', 'events', old], ['runtime', '__MANY__', 'events', f"{old}s"], + remove_at='8.9', ) for old in [ @@ -2298,13 +2315,15 @@ def upg( 'abort if inactivity handler fails', 'abort if stalled handler fails', ]: - u.obsolete('8.0.0', ['cylc', 'events', old]) + u.obsolete('8.0.0', ['cylc', 'events', old,], + remove_at='8.9') u.deprecate( '8.0.0', ['cylc'], ['scheduler'], is_section=True, + remove_at='8.9' ) u.upgrade() diff --git a/cylc/flow/parsec/upgrade.py b/cylc/flow/parsec/upgrade.py index b9909bff0e5..47347e32679 100644 --- a/cylc/flow/parsec/upgrade.py +++ b/cylc/flow/parsec/upgrade.py @@ -69,7 +69,7 @@ def __init__(self, cfg: dict, descr: str, broadcast: bool = False): def deprecate( self, vn, oldkeys, newkeys=None, - cvtr=None, is_section=False, + cvtr=None, is_section=False, remove_at=None ): """Replace a deprecated key from a config Args: @@ -84,6 +84,8 @@ def deprecate( description of that function. is_section (bool): Is a section heading. + remove_at (str): + Describes when this will be removed """ if vn not in self.upgrades: self.upgrades[vn] = [] @@ -92,10 +94,10 @@ def deprecate( self.upgrades[vn].append( { 'old': oldkeys, 'new': newkeys, 'cvt': cvtr, - 'is_section': is_section + 'is_section': is_section, 'remove_at': remove_at }) - def obsolete(self, vn, oldkeys, is_section=False): + def obsolete(self, vn, oldkeys, is_section=False, remove_at=None): """Remove an obsolete key from a config Args: vn (str): @@ -111,7 +113,7 @@ def obsolete(self, vn, oldkeys, is_section=False): self.upgrades[vn].append( { 'old': oldkeys, 'new': None, 'cvt': cvtr, - 'is_section': is_section + 'is_section': is_section, 'remove_at': remove_at }) def get_item(self, keys): @@ -232,6 +234,8 @@ def upgrade(self): old=old, new=upg['cvt'].convert(old) ) + if upg['remove_at'] is not None: + msg += " - will be removed at " + upg['remove_at'] warnings.setdefault(vn, []) warnings[vn].append(msg) self.del_item(upg['old']) From 28f96b5e9d8d9404a341f3de2d59a036876665c6 Mon Sep 17 00:00:00 2001 From: Scott Owen James Date: Wed, 30 Sep 2026 10:16:50 +0100 Subject: [PATCH 02/16] Added suppression --- cylc/flow/parsec/upgrade.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/cylc/flow/parsec/upgrade.py b/cylc/flow/parsec/upgrade.py index 47347e32679..456464066db 100644 --- a/cylc/flow/parsec/upgrade.py +++ b/cylc/flow/parsec/upgrade.py @@ -234,8 +234,10 @@ def upgrade(self): old=old, new=upg['cvt'].convert(old) ) - if upg['remove_at'] is not None: - msg += " - will be removed at " + upg['remove_at'] + with contextlib.suppress(KeyError): + if upg['remove_at'] is not None: + msg += r" - will be removed at " + r" + upg['remove_at']" warnings.setdefault(vn, []) warnings[vn].append(msg) self.del_item(upg['old']) From 466e6b770f65c46706d2c7b95b9482cb622c5bb0 Mon Sep 17 00:00:00 2001 From: Scott Owen James Date: Wed, 30 Sep 2026 12:47:30 +0100 Subject: [PATCH 03/16] Correcting unit test --- cylc/flow/parsec/upgrade.py | 4 ++-- tests/integration/scripts/test_validate_integration.py | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/cylc/flow/parsec/upgrade.py b/cylc/flow/parsec/upgrade.py index 456464066db..af686c9a24d 100644 --- a/cylc/flow/parsec/upgrade.py +++ b/cylc/flow/parsec/upgrade.py @@ -236,8 +236,8 @@ def upgrade(self): ) with contextlib.suppress(KeyError): if upg['remove_at'] is not None: - msg += r" - will be removed at " - r" + upg['remove_at']" + msg += (" - will be removed at " + + f"{upg['remove_at']}") warnings.setdefault(vn, []) warnings[vn].append(msg) self.del_item(upg['old']) diff --git a/tests/integration/scripts/test_validate_integration.py b/tests/integration/scripts/test_validate_integration.py index 166818699a8..8ea765cc6db 100644 --- a/tests/integration/scripts/test_validate_integration.py +++ b/tests/integration/scripts/test_validate_integration.py @@ -157,7 +157,8 @@ def test_pre_cylc8(flow, validate, caplog): ' * (8.0.0) [runtime][foo, cat, dog][suite state polling]' ' -> [runtime][foo, cat, dog][workflow state polling]' ' - value unchanged'), - ' * (8.0.0) [cylc] -> [scheduler] - value unchanged' + (' * (8.0.0) [cylc] -> [scheduler] - value unchanged' + ' - will be removed at 8.9') ): assert warning in caplog.messages From 73b5d2edc013be7f0cd3b07c20fc973acfbe791c Mon Sep 17 00:00:00 2001 From: Scott Owen James Date: Wed, 30 Sep 2026 13:32:16 +0100 Subject: [PATCH 04/16] Correcting functional tests --- .../01-cylc8-basic/validation.stderr | 54 +++++++++---------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/tests/functional/deprecations/01-cylc8-basic/validation.stderr b/tests/functional/deprecations/01-cylc8-basic/validation.stderr index 034031f3a71..da27f065e90 100644 --- a/tests/functional/deprecations/01-cylc8-basic/validation.stderr +++ b/tests/functional/deprecations/01-cylc8-basic/validation.stderr @@ -13,41 +13,41 @@ WARNING - * (8.0.0) [cylc][environment] - DELETED (OBSOLETE) WARNING - * (8.0.0) [cylc][reference test] - DELETED (OBSOLETE) WARNING - * (8.0.0) [cylc][simulation]disable suite event handlers - DELETED (OBSOLETE) WARNING - * (8.0.0) [cylc][simulation] - DELETED (OBSOLETE) -WARNING - * (8.0.0) [cylc]task event mail interval -> [cylc][mail]task event batch interval - value unchanged +WARNING - * (8.0.0) [cylc]task event mail interval -> [cylc][mail]task event batch interval - value unchanged - will be removed at 8.9 WARNING - * (8.0.0) [runtime][foo, cat, dog][suite state polling] -> [runtime][foo, cat, dog][workflow state polling] - value unchanged -WARNING - * (8.0.0) [cylc][parameters] -> [task parameters] - value unchanged -WARNING - * (8.0.0) [cylc][parameter templates] -> [task parameters][templates] - value unchanged -WARNING - * (8.0.0) [cylc][events]mail to -> [cylc][mail]to - value unchanged -WARNING - * (8.0.0) [cylc][events]mail from -> [cylc][mail]from - value unchanged -WARNING - * (8.0.0) [cylc][events]mail footer -> [cylc][mail]footer - value unchanged +WARNING - * (8.0.0) [cylc][parameters] -> [task parameters] - value unchanged - will be removed at 8.9 +WARNING - * (8.0.0) [cylc][parameter templates] -> [task parameters][templates] - value unchanged - will be removed at 8.9 +WARNING - * (8.0.0) [cylc][events]mail to -> [cylc][mail]to - value unchanged - will be removed at 8.9 +WARNING - * (8.0.0) [cylc][events]mail from -> [cylc][mail]from - value unchanged - will be removed at 8.9 +WARNING - * (8.0.0) [cylc][events]mail footer -> [cylc][mail]footer - value unchanged - will be removed at 8.9 WARNING - * (8.0.0) [runtime][foo, cat, dog][events]mail to -> [runtime][foo, cat, dog][mail]to - value unchanged WARNING - * (8.0.0) [runtime][foo, cat, dog][events]mail from -> [runtime][foo, cat, dog][mail]from - value unchanged -WARNING - * (8.0.0) [cylc][events]mail smtp - DELETED (OBSOLETE) - use "global.cylc[scheduler][mail]smtp" instead -WARNING - * (8.0.0) [runtime][foo, cat, dog][events]mail smtp - DELETED (OBSOLETE) - use "global.cylc[scheduler][mail]smtp" instead -WARNING - * (8.0.0) [scheduling]max active cycle points -> [scheduling]runahead limit - "2" -> "P1" -WARNING - * (8.0.0) [scheduling]hold after point -> [scheduling]hold after cycle point - value unchanged +WARNING - * (8.0.0) [cylc][events]mail smtp - DELETED (OBSOLETE) - use "global.cylc[scheduler][mail]smtp" instead - will be removed at 8.9 +WARNING - * (8.0.0) [runtime][foo, cat, dog][events]mail smtp - DELETED (OBSOLETE) - use "global.cylc[scheduler][mail]smtp" +WARNING - * (8.0.0) [scheduling]max active cycle points -> [scheduling]runahead limit - "2" -> "P1" - will be removed at 8.9 +WARNING - * (8.0.0) [scheduling]hold after point -> [scheduling]hold after cycle point - value unchanged - will be removed at 8.9 WARNING - * (8.0.0) [runtime][foo, cat, dog][job]execution polling intervals -> [runtime][foo, cat, dog]execution polling intervals - value unchanged WARNING - * (8.0.0) [runtime][foo, cat, dog][job]execution retry delays -> [runtime][foo, cat, dog]execution retry delays - value unchanged WARNING - * (8.0.0) [runtime][foo, cat, dog][job]execution time limit -> [runtime][foo, cat, dog]execution time limit - value unchanged WARNING - * (8.0.0) [runtime][foo, cat, dog][job]submission polling intervals -> [runtime][foo, cat, dog]submission polling intervals - value unchanged WARNING - * (8.0.0) [runtime][foo, cat, dog][job]submission retry delays -> [runtime][foo, cat, dog]submission retry delays - value unchanged -WARNING - * (8.0.0) [cylc][events]timeout -> [cylc][events]stall timeout - value unchanged -WARNING - * (8.0.0) [cylc][events]abort on timeout -> [cylc][events]abort on stall timeout - value unchanged -WARNING - * (8.0.0) [cylc][events]inactivity -> [cylc][events]inactivity timeout - value unchanged -WARNING - * (8.0.0) [cylc][events]abort on inactivity -> [cylc][events]abort on inactivity timeout - value unchanged -WARNING - * (8.0.0) [cylc][events]startup handler -> [cylc][events]startup handlers - value unchanged -WARNING - * (8.0.0) [cylc][events]shutdown handler -> [cylc][events]shutdown handlers - value unchanged -WARNING - * (8.0.0) [cylc][events]timeout handler -> [cylc][events]stall timeout handlers - value unchanged -WARNING - * (8.0.0) [cylc][events]stalled handler -> [cylc][events]stall handlers - value unchanged -WARNING - * (8.0.0) [cylc][events]aborted handler -> [cylc][events]abort handlers - value unchanged -WARNING - * (8.0.0) [cylc][events]inactivity handler -> [cylc][events]inactivity timeout handlers - value unchanged -WARNING - * (8.0.0) [cylc][events]abort on stalled - DELETED (OBSOLETE) -WARNING - * (8.0.0) [cylc][events]abort if startup handler fails - DELETED (OBSOLETE) -WARNING - * (8.0.0) [cylc][events]abort if shutdown handler fails - DELETED (OBSOLETE) -WARNING - * (8.0.0) [cylc][events]abort if timeout handler fails - DELETED (OBSOLETE) -WARNING - * (8.0.0) [cylc][events]abort if inactivity handler fails - DELETED (OBSOLETE) -WARNING - * (8.0.0) [cylc][events]abort if stalled handler fails - DELETED (OBSOLETE) -WARNING - * (8.0.0) [cylc] -> [scheduler] - value unchanged +WARNING - * (8.0.0) [cylc][events]timeout -> [cylc][events]stall timeout - value unchanged - will be removed at 8.9 +WARNING - * (8.0.0) [cylc][events]abort on timeout -> [cylc][events]abort on stall timeout - value unchanged - will be removed at 8.9 +WARNING - * (8.0.0) [cylc][events]inactivity -> [cylc][events]inactivity timeout - value unchanged - will be removed at 8.9 +WARNING - * (8.0.0) [cylc][events]abort on inactivity -> [cylc][events]abort on inactivity timeout - value unchanged - will be removed at 8.9 +WARNING - * (8.0.0) [cylc][events]startup handler -> [cylc][events]startup handlers - value unchanged - will be removed at 8.9 +WARNING - * (8.0.0) [cylc][events]shutdown handler -> [cylc][events]shutdown handlers - value unchanged - will be removed at 8.9 +WARNING - * (8.0.0) [cylc][events]timeout handler -> [cylc][events]stall timeout handlers - value unchanged - will be removed at 8.9 +WARNING - * (8.0.0) [cylc][events]stalled handler -> [cylc][events]stall handlers - value unchanged - will be removed at 8.9 +WARNING - * (8.0.0) [cylc][events]aborted handler -> [cylc][events]abort handlers - value unchanged - will be removed at 8.9 +WARNING - * (8.0.0) [cylc][events]inactivity handler -> [cylc][events]inactivity timeout handlers - value unchanged - will be removed at 8.9 +WARNING - * (8.0.0) [cylc][events]abort on stalled - DELETED (OBSOLETE) - will be removed at 8.9 +WARNING - * (8.0.0) [cylc][events]abort if startup handler fails - DELETED (OBSOLETE) - will be removed at 8.9 +WARNING - * (8.0.0) [cylc][events]abort if shutdown handler fails - DELETED (OBSOLETE) - will be removed at 8.9 +WARNING - * (8.0.0) [cylc][events]abort if timeout handler fails - DELETED (OBSOLETE) - will be removed at 8.9 +WARNING - * (8.0.0) [cylc][events]abort if inactivity handler fails - DELETED (OBSOLETE) - will be removed at 8.9 +WARNING - * (8.0.0) [cylc][events]abort if stalled handler fails - DELETED (OBSOLETE) - will be removed at 8.9 +WARNING - * (8.0.0) [cylc] -> [scheduler] - value unchanged - will be removed at 8.9 WARNING - graph items were automatically upgraded in "workflow definition": * (8.0.0) [scheduling][dependencies][X]graph -> [scheduling][graph]X - for X in: P1D From 97da29aa74ee4961f51c1f84f0087fb8ef26783d Mon Sep 17 00:00:00 2001 From: Scott-Owen-James Date: Thu, 1 Oct 2026 09:42:07 +0100 Subject: [PATCH 05/16] Update cylc/flow/parsec/upgrade.py Co-authored-by: Ronnie Dutta <61982285+MetRonnie@users.noreply.github.com> --- cylc/flow/parsec/upgrade.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/cylc/flow/parsec/upgrade.py b/cylc/flow/parsec/upgrade.py index af686c9a24d..2c68c6ef180 100644 --- a/cylc/flow/parsec/upgrade.py +++ b/cylc/flow/parsec/upgrade.py @@ -234,10 +234,8 @@ def upgrade(self): old=old, new=upg['cvt'].convert(old) ) - with contextlib.suppress(KeyError): - if upg['remove_at'] is not None: - msg += (" - will be removed at " + - f"{upg['remove_at']}") + if (remove_at := upg.get('remove_at')) is not None: + msg += f" - will be removed at {remove_at}" warnings.setdefault(vn, []) warnings[vn].append(msg) self.del_item(upg['old']) From caf7607e367c9d4ee0dc0bb3da8ff9c92a7cd3fa Mon Sep 17 00:00:00 2001 From: Scott Owen James Date: Thu, 1 Oct 2026 10:08:43 +0100 Subject: [PATCH 06/16] Responding to issues raised --- cylc/flow/cfgspec/workflow.py | 9 +++------ cylc/flow/parsec/upgrade.py | 4 ++-- .../deprecations/01-cylc8-basic/validation.stderr | 12 ++++++------ 3 files changed, 11 insertions(+), 14 deletions(-) diff --git a/cylc/flow/cfgspec/workflow.py b/cylc/flow/cfgspec/workflow.py index 5ab5eff981b..56701d464d0 100644 --- a/cylc/flow/cfgspec/workflow.py +++ b/cylc/flow/cfgspec/workflow.py @@ -2168,12 +2168,10 @@ def upg( remove_at='8.9' ) u.obsolete( - '8.0.0', ['runtime', '__MANY__', 'workflow state polling', 'host'], - remove_at='8.9' + '8.0.0', ['runtime', '__MANY__', 'workflow state polling', 'host'] ) u.obsolete( - '8.0.0', ['runtime', '__MANY__', 'workflow state polling', 'user'], - remove_at='8.9' + '8.0.0', ['runtime', '__MANY__', 'workflow state polling', 'user'] ) u.deprecate( @@ -2315,8 +2313,7 @@ def upg( 'abort if inactivity handler fails', 'abort if stalled handler fails', ]: - u.obsolete('8.0.0', ['cylc', 'events', old,], - remove_at='8.9') + u.obsolete('8.0.0', ['cylc', 'events', old,]) u.deprecate( '8.0.0', diff --git a/cylc/flow/parsec/upgrade.py b/cylc/flow/parsec/upgrade.py index 2c68c6ef180..27f8c2e2f1b 100644 --- a/cylc/flow/parsec/upgrade.py +++ b/cylc/flow/parsec/upgrade.py @@ -97,7 +97,7 @@ def deprecate( 'is_section': is_section, 'remove_at': remove_at }) - def obsolete(self, vn, oldkeys, is_section=False, remove_at=None): + def obsolete(self, vn, oldkeys, is_section=False): """Remove an obsolete key from a config Args: vn (str): @@ -113,7 +113,7 @@ def obsolete(self, vn, oldkeys, is_section=False, remove_at=None): self.upgrades[vn].append( { 'old': oldkeys, 'new': None, 'cvt': cvtr, - 'is_section': is_section, 'remove_at': remove_at + 'is_section': is_section }) def get_item(self, keys): diff --git a/tests/functional/deprecations/01-cylc8-basic/validation.stderr b/tests/functional/deprecations/01-cylc8-basic/validation.stderr index da27f065e90..511ae0f9e09 100644 --- a/tests/functional/deprecations/01-cylc8-basic/validation.stderr +++ b/tests/functional/deprecations/01-cylc8-basic/validation.stderr @@ -41,12 +41,12 @@ WARNING - * (8.0.0) [cylc][events]timeout handler -> [cylc][events]stall timeou WARNING - * (8.0.0) [cylc][events]stalled handler -> [cylc][events]stall handlers - value unchanged - will be removed at 8.9 WARNING - * (8.0.0) [cylc][events]aborted handler -> [cylc][events]abort handlers - value unchanged - will be removed at 8.9 WARNING - * (8.0.0) [cylc][events]inactivity handler -> [cylc][events]inactivity timeout handlers - value unchanged - will be removed at 8.9 -WARNING - * (8.0.0) [cylc][events]abort on stalled - DELETED (OBSOLETE) - will be removed at 8.9 -WARNING - * (8.0.0) [cylc][events]abort if startup handler fails - DELETED (OBSOLETE) - will be removed at 8.9 -WARNING - * (8.0.0) [cylc][events]abort if shutdown handler fails - DELETED (OBSOLETE) - will be removed at 8.9 -WARNING - * (8.0.0) [cylc][events]abort if timeout handler fails - DELETED (OBSOLETE) - will be removed at 8.9 -WARNING - * (8.0.0) [cylc][events]abort if inactivity handler fails - DELETED (OBSOLETE) - will be removed at 8.9 -WARNING - * (8.0.0) [cylc][events]abort if stalled handler fails - DELETED (OBSOLETE) - will be removed at 8.9 +WARNING - * (8.0.0) [cylc][events]abort on stalled - DELETED (OBSOLETE) +WARNING - * (8.0.0) [cylc][events]abort if startup handler fails - DELETED (OBSOLETE) +WARNING - * (8.0.0) [cylc][events]abort if shutdown handler fails - DELETED (OBSOLETE) +WARNING - * (8.0.0) [cylc][events]abort if timeout handler fails - DELETED (OBSOLETE) +WARNING - * (8.0.0) [cylc][events]abort if inactivity handler fails - DELETED (OBSOLETE) +WARNING - * (8.0.0) [cylc][events]abort if stalled handler fails - DELETED (OBSOLETE) WARNING - * (8.0.0) [cylc] -> [scheduler] - value unchanged - will be removed at 8.9 WARNING - graph items were automatically upgraded in "workflow definition": * (8.0.0) [scheduling][dependencies][X]graph -> [scheduling][graph]X - for X in: From af6444a043f11843b9f5037ae5c9181abc1c5483 Mon Sep 17 00:00:00 2001 From: Scott Owen James Date: Thu, 1 Oct 2026 17:28:36 +0100 Subject: [PATCH 07/16] Correcting upgrade wiping --- cylc/flow/parsec/upgrade.py | 5 ++++- .../01-cylc8-basic/validation.stderr | 16 ++++++++-------- .../scripts/test_validate_integration.py | 2 +- 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/cylc/flow/parsec/upgrade.py b/cylc/flow/parsec/upgrade.py index 27f8c2e2f1b..0a0eeadde99 100644 --- a/cylc/flow/parsec/upgrade.py +++ b/cylc/flow/parsec/upgrade.py @@ -184,7 +184,7 @@ def expand(self, upg): 'old': pre + [m] + post, 'new': None, 'cvt': upg['cvt'], - 'is_section': upg['is_section'], + 'is_section': upg['is_section'] }) return exp_upgs npre = [] @@ -202,6 +202,7 @@ def expand(self, upg): 'new': npre + [m] + npost, 'cvt': upg['cvt'], 'is_section': upg['is_section'], + 'remove_at': upg.get('remove_at') }) return exp_upgs @@ -236,6 +237,8 @@ def upgrade(self): ) if (remove_at := upg.get('remove_at')) is not None: msg += f" - will be removed at {remove_at}" + #else: + # msg += str(upg) warnings.setdefault(vn, []) warnings[vn].append(msg) self.del_item(upg['old']) diff --git a/tests/functional/deprecations/01-cylc8-basic/validation.stderr b/tests/functional/deprecations/01-cylc8-basic/validation.stderr index 511ae0f9e09..c95ef9769ef 100644 --- a/tests/functional/deprecations/01-cylc8-basic/validation.stderr +++ b/tests/functional/deprecations/01-cylc8-basic/validation.stderr @@ -14,23 +14,23 @@ WARNING - * (8.0.0) [cylc][reference test] - DELETED (OBSOLETE) WARNING - * (8.0.0) [cylc][simulation]disable suite event handlers - DELETED (OBSOLETE) WARNING - * (8.0.0) [cylc][simulation] - DELETED (OBSOLETE) WARNING - * (8.0.0) [cylc]task event mail interval -> [cylc][mail]task event batch interval - value unchanged - will be removed at 8.9 -WARNING - * (8.0.0) [runtime][foo, cat, dog][suite state polling] -> [runtime][foo, cat, dog][workflow state polling] - value unchanged +WARNING - * (8.0.0) [runtime][foo, cat, dog][suite state polling] -> [runtime][foo, cat, dog][workflow state polling] - value unchanged - will be removed at 8.9 WARNING - * (8.0.0) [cylc][parameters] -> [task parameters] - value unchanged - will be removed at 8.9 WARNING - * (8.0.0) [cylc][parameter templates] -> [task parameters][templates] - value unchanged - will be removed at 8.9 WARNING - * (8.0.0) [cylc][events]mail to -> [cylc][mail]to - value unchanged - will be removed at 8.9 WARNING - * (8.0.0) [cylc][events]mail from -> [cylc][mail]from - value unchanged - will be removed at 8.9 WARNING - * (8.0.0) [cylc][events]mail footer -> [cylc][mail]footer - value unchanged - will be removed at 8.9 -WARNING - * (8.0.0) [runtime][foo, cat, dog][events]mail to -> [runtime][foo, cat, dog][mail]to - value unchanged -WARNING - * (8.0.0) [runtime][foo, cat, dog][events]mail from -> [runtime][foo, cat, dog][mail]from - value unchanged +WARNING - * (8.0.0) [runtime][foo, cat, dog][events]mail to -> [runtime][foo, cat, dog][mail]to - value unchanged - will be removed at 8.9 +WARNING - * (8.0.0) [runtime][foo, cat, dog][events]mail from -> [runtime][foo, cat, dog][mail]from - value unchanged - will be removed at 8.9 WARNING - * (8.0.0) [cylc][events]mail smtp - DELETED (OBSOLETE) - use "global.cylc[scheduler][mail]smtp" instead - will be removed at 8.9 WARNING - * (8.0.0) [runtime][foo, cat, dog][events]mail smtp - DELETED (OBSOLETE) - use "global.cylc[scheduler][mail]smtp" WARNING - * (8.0.0) [scheduling]max active cycle points -> [scheduling]runahead limit - "2" -> "P1" - will be removed at 8.9 WARNING - * (8.0.0) [scheduling]hold after point -> [scheduling]hold after cycle point - value unchanged - will be removed at 8.9 -WARNING - * (8.0.0) [runtime][foo, cat, dog][job]execution polling intervals -> [runtime][foo, cat, dog]execution polling intervals - value unchanged -WARNING - * (8.0.0) [runtime][foo, cat, dog][job]execution retry delays -> [runtime][foo, cat, dog]execution retry delays - value unchanged -WARNING - * (8.0.0) [runtime][foo, cat, dog][job]execution time limit -> [runtime][foo, cat, dog]execution time limit - value unchanged -WARNING - * (8.0.0) [runtime][foo, cat, dog][job]submission polling intervals -> [runtime][foo, cat, dog]submission polling intervals - value unchanged -WARNING - * (8.0.0) [runtime][foo, cat, dog][job]submission retry delays -> [runtime][foo, cat, dog]submission retry delays - value unchanged +WARNING - * (8.0.0) [runtime][foo, cat, dog][job]execution polling intervals -> [runtime][foo, cat, dog]execution polling intervals - value unchanged - will be removed at 8.9 +WARNING - * (8.0.0) [runtime][foo, cat, dog][job]execution retry delays -> [runtime][foo, cat, dog]execution retry delays - value unchanged - will be removed at 8.9 +WARNING - * (8.0.0) [runtime][foo, cat, dog][job]execution time limit -> [runtime][foo, cat, dog]execution time limit - value unchanged - will be removed at 8.9 +WARNING - * (8.0.0) [runtime][foo, cat, dog][job]submission polling intervals -> [runtime][foo, cat, dog]submission polling intervals - value unchanged - will be removed at 8.9 +WARNING - * (8.0.0) [runtime][foo, cat, dog][job]submission retry delays -> [runtime][foo, cat, dog]submission retry delays - value unchanged - will be removed at 8.9 WARNING - * (8.0.0) [cylc][events]timeout -> [cylc][events]stall timeout - value unchanged - will be removed at 8.9 WARNING - * (8.0.0) [cylc][events]abort on timeout -> [cylc][events]abort on stall timeout - value unchanged - will be removed at 8.9 WARNING - * (8.0.0) [cylc][events]inactivity -> [cylc][events]inactivity timeout - value unchanged - will be removed at 8.9 diff --git a/tests/integration/scripts/test_validate_integration.py b/tests/integration/scripts/test_validate_integration.py index 8ea765cc6db..817496c5e89 100644 --- a/tests/integration/scripts/test_validate_integration.py +++ b/tests/integration/scripts/test_validate_integration.py @@ -156,7 +156,7 @@ def test_pre_cylc8(flow, validate, caplog): ( ' * (8.0.0) [runtime][foo, cat, dog][suite state polling]' ' -> [runtime][foo, cat, dog][workflow state polling]' - ' - value unchanged'), + ' - value unchanged - will be removed at 8.9'), (' * (8.0.0) [cylc] -> [scheduler] - value unchanged' ' - will be removed at 8.9') ): From 455ee2d47556a93c448ca73a3325e1002095951c Mon Sep 17 00:00:00 2001 From: Scott Owen James Date: Fri, 2 Oct 2026 10:49:28 +0100 Subject: [PATCH 08/16] Adding dependency correction --- cylc/flow/cfgspec/workflow.py | 2 +- cylc/flow/parsec/upgrade.py | 2 -- tests/functional/deprecations/01-cylc8-basic/validation.stderr | 2 +- 3 files changed, 2 insertions(+), 4 deletions(-) diff --git a/cylc/flow/cfgspec/workflow.py b/cylc/flow/cfgspec/workflow.py index 56701d464d0..4f49fb7ff90 100644 --- a/cylc/flow/cfgspec/workflow.py +++ b/cylc/flow/cfgspec/workflow.py @@ -2375,7 +2375,7 @@ def upgrade_graph_section(cfg: Dict[str, Any], descr: str) -> None: if keys: msg = ( 'graph items were automatically upgraded ' - f'in "{descr}":\n' + f'in "{descr}" - will be removed at 8.9:\n' f' * (8.0.0) {msg_old} -> {msg_new}' ) if list_cp: diff --git a/cylc/flow/parsec/upgrade.py b/cylc/flow/parsec/upgrade.py index 0a0eeadde99..6a6d9364cb1 100644 --- a/cylc/flow/parsec/upgrade.py +++ b/cylc/flow/parsec/upgrade.py @@ -237,8 +237,6 @@ def upgrade(self): ) if (remove_at := upg.get('remove_at')) is not None: msg += f" - will be removed at {remove_at}" - #else: - # msg += str(upg) warnings.setdefault(vn, []) warnings[vn].append(msg) self.del_item(upg['old']) diff --git a/tests/functional/deprecations/01-cylc8-basic/validation.stderr b/tests/functional/deprecations/01-cylc8-basic/validation.stderr index c95ef9769ef..1898d1b5f08 100644 --- a/tests/functional/deprecations/01-cylc8-basic/validation.stderr +++ b/tests/functional/deprecations/01-cylc8-basic/validation.stderr @@ -48,6 +48,6 @@ WARNING - * (8.0.0) [cylc][events]abort if timeout handler fails - DELETED (OBS WARNING - * (8.0.0) [cylc][events]abort if inactivity handler fails - DELETED (OBSOLETE) WARNING - * (8.0.0) [cylc][events]abort if stalled handler fails - DELETED (OBSOLETE) WARNING - * (8.0.0) [cylc] -> [scheduler] - value unchanged - will be removed at 8.9 -WARNING - graph items were automatically upgraded in "workflow definition": +WARNING - graph items were automatically upgraded in "workflow definition" - will be removed at 8.9: * (8.0.0) [scheduling][dependencies][X]graph -> [scheduling][graph]X - for X in: P1D From 59d9c4d32ea92e0bd5935654f666b327a79f7500 Mon Sep 17 00:00:00 2001 From: Scott Owen James Date: Fri, 2 Oct 2026 10:56:36 +0100 Subject: [PATCH 09/16] Correcting test cases for graphs --- tests/integration/scripts/test_validate_integration.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/integration/scripts/test_validate_integration.py b/tests/integration/scripts/test_validate_integration.py index 817496c5e89..c2bc495ac54 100644 --- a/tests/integration/scripts/test_validate_integration.py +++ b/tests/integration/scripts/test_validate_integration.py @@ -110,7 +110,7 @@ def test_validate_simple_graph(flow, validate, caplog): validate(id_) expect = ( 'graph items were automatically upgraded' - ' in "workflow definition":' + ' in "workflow definition" - will be removed at 8.9:' '\n * (8.0.0) [scheduling][dependencies]graph -> [scheduling][graph]R1' ) assert expect in caplog.messages @@ -212,7 +212,7 @@ def test_graph_upgrade_msg_graph_equals2(flow, validate, caplog, log_filter): validate(id_) expect = ( 'graph items were automatically upgraded in' - ' "workflow definition":' + ' "workflow definition" - will be removed at 8.9:' '\n * (8.0.0) [scheduling][dependencies][X]graph' ' -> [scheduling][graph]X - for X in:' '\n P1Y, graph' From 783284a956417b6beded9730ae91cede843bee1f Mon Sep 17 00:00:00 2001 From: Scott-Owen-James Date: Fri, 2 Oct 2026 11:33:30 +0100 Subject: [PATCH 10/16] Update cylc/flow/parsec/upgrade.py Co-authored-by: Ronnie Dutta <61982285+MetRonnie@users.noreply.github.com> --- cylc/flow/parsec/upgrade.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cylc/flow/parsec/upgrade.py b/cylc/flow/parsec/upgrade.py index 6a6d9364cb1..d8b7aebd215 100644 --- a/cylc/flow/parsec/upgrade.py +++ b/cylc/flow/parsec/upgrade.py @@ -85,7 +85,7 @@ def deprecate( is_section (bool): Is a section heading. remove_at (str): - Describes when this will be removed + Cylc version when this upgrader will be removed """ if vn not in self.upgrades: self.upgrades[vn] = [] From 3201dc57d654d5662b353bc8179aef7d989be82c Mon Sep 17 00:00:00 2001 From: Scott Owen James Date: Fri, 2 Oct 2026 12:16:19 +0100 Subject: [PATCH 11/16] Making clearer messaging for Ronnie --- cylc/flow/cfgspec/workflow.py | 3 +- cylc/flow/parsec/upgrade.py | 3 +- .../01-cylc8-basic/validation.stderr | 58 +++++++++---------- .../scripts/test_validate_integration.py | 11 ++-- 4 files changed, 40 insertions(+), 35 deletions(-) diff --git a/cylc/flow/cfgspec/workflow.py b/cylc/flow/cfgspec/workflow.py index 4f49fb7ff90..1df48ddcbf5 100644 --- a/cylc/flow/cfgspec/workflow.py +++ b/cylc/flow/cfgspec/workflow.py @@ -2375,7 +2375,8 @@ def upgrade_graph_section(cfg: Dict[str, Any], descr: str) -> None: if keys: msg = ( 'graph items were automatically upgraded ' - f'in "{descr}" - will be removed at 8.9:\n' + f'in "{descr}" - support for the old item will be ' + 'removed at Cylc 8.9:\n' f' * (8.0.0) {msg_old} -> {msg_new}' ) if list_cp: diff --git a/cylc/flow/parsec/upgrade.py b/cylc/flow/parsec/upgrade.py index 6a6d9364cb1..a21a0cc6f5c 100644 --- a/cylc/flow/parsec/upgrade.py +++ b/cylc/flow/parsec/upgrade.py @@ -236,7 +236,8 @@ def upgrade(self): new=upg['cvt'].convert(old) ) if (remove_at := upg.get('remove_at')) is not None: - msg += f" - will be removed at {remove_at}" + msg += (f' - support for the old item will be ' + f'removed at Cylc {remove_at}') warnings.setdefault(vn, []) warnings[vn].append(msg) self.del_item(upg['old']) diff --git a/tests/functional/deprecations/01-cylc8-basic/validation.stderr b/tests/functional/deprecations/01-cylc8-basic/validation.stderr index 1898d1b5f08..99e72f41f9b 100644 --- a/tests/functional/deprecations/01-cylc8-basic/validation.stderr +++ b/tests/functional/deprecations/01-cylc8-basic/validation.stderr @@ -13,41 +13,41 @@ WARNING - * (8.0.0) [cylc][environment] - DELETED (OBSOLETE) WARNING - * (8.0.0) [cylc][reference test] - DELETED (OBSOLETE) WARNING - * (8.0.0) [cylc][simulation]disable suite event handlers - DELETED (OBSOLETE) WARNING - * (8.0.0) [cylc][simulation] - DELETED (OBSOLETE) -WARNING - * (8.0.0) [cylc]task event mail interval -> [cylc][mail]task event batch interval - value unchanged - will be removed at 8.9 -WARNING - * (8.0.0) [runtime][foo, cat, dog][suite state polling] -> [runtime][foo, cat, dog][workflow state polling] - value unchanged - will be removed at 8.9 -WARNING - * (8.0.0) [cylc][parameters] -> [task parameters] - value unchanged - will be removed at 8.9 -WARNING - * (8.0.0) [cylc][parameter templates] -> [task parameters][templates] - value unchanged - will be removed at 8.9 -WARNING - * (8.0.0) [cylc][events]mail to -> [cylc][mail]to - value unchanged - will be removed at 8.9 -WARNING - * (8.0.0) [cylc][events]mail from -> [cylc][mail]from - value unchanged - will be removed at 8.9 -WARNING - * (8.0.0) [cylc][events]mail footer -> [cylc][mail]footer - value unchanged - will be removed at 8.9 -WARNING - * (8.0.0) [runtime][foo, cat, dog][events]mail to -> [runtime][foo, cat, dog][mail]to - value unchanged - will be removed at 8.9 -WARNING - * (8.0.0) [runtime][foo, cat, dog][events]mail from -> [runtime][foo, cat, dog][mail]from - value unchanged - will be removed at 8.9 -WARNING - * (8.0.0) [cylc][events]mail smtp - DELETED (OBSOLETE) - use "global.cylc[scheduler][mail]smtp" instead - will be removed at 8.9 +WARNING - * (8.0.0) [cylc]task event mail interval -> [cylc][mail]task event batch interval - value unchanged - support for the old item will be removed at Cylc 8.9 +WARNING - * (8.0.0) [runtime][foo, cat, dog][suite state polling] -> [runtime][foo, cat, dog][workflow state polling] - value unchanged - support for the old item will be removed at Cylc 8.9 +WARNING - * (8.0.0) [cylc][parameters] -> [task parameters] - value unchanged - support for the old item will be removed at Cylc 8.9 +WARNING - * (8.0.0) [cylc][parameter templates] -> [task parameters][templates] - value unchanged - support for the old item will be removed at Cylc 8.9 +WARNING - * (8.0.0) [cylc][events]mail to -> [cylc][mail]to - value unchanged - support for the old item will be removed at Cylc 8.9 +WARNING - * (8.0.0) [cylc][events]mail from -> [cylc][mail]from - value unchanged - support for the old item will be removed at Cylc 8.9 +WARNING - * (8.0.0) [cylc][events]mail footer -> [cylc][mail]footer - value unchanged - support for the old item will be removed at Cylc 8.9 +WARNING - * (8.0.0) [runtime][foo, cat, dog][events]mail to -> [runtime][foo, cat, dog][mail]to - value unchanged - support for the old item will be removed at Cylc 8.9 +WARNING - * (8.0.0) [runtime][foo, cat, dog][events]mail from -> [runtime][foo, cat, dog][mail]from - value unchanged - support for the old item will be removed at Cylc 8.9 +WARNING - * (8.0.0) [cylc][events]mail smtp - DELETED (OBSOLETE) - use "global.cylc[scheduler][mail]smtp" instead - support for the old item will be removed at Cylc 8.9 WARNING - * (8.0.0) [runtime][foo, cat, dog][events]mail smtp - DELETED (OBSOLETE) - use "global.cylc[scheduler][mail]smtp" -WARNING - * (8.0.0) [scheduling]max active cycle points -> [scheduling]runahead limit - "2" -> "P1" - will be removed at 8.9 -WARNING - * (8.0.0) [scheduling]hold after point -> [scheduling]hold after cycle point - value unchanged - will be removed at 8.9 -WARNING - * (8.0.0) [runtime][foo, cat, dog][job]execution polling intervals -> [runtime][foo, cat, dog]execution polling intervals - value unchanged - will be removed at 8.9 -WARNING - * (8.0.0) [runtime][foo, cat, dog][job]execution retry delays -> [runtime][foo, cat, dog]execution retry delays - value unchanged - will be removed at 8.9 -WARNING - * (8.0.0) [runtime][foo, cat, dog][job]execution time limit -> [runtime][foo, cat, dog]execution time limit - value unchanged - will be removed at 8.9 -WARNING - * (8.0.0) [runtime][foo, cat, dog][job]submission polling intervals -> [runtime][foo, cat, dog]submission polling intervals - value unchanged - will be removed at 8.9 -WARNING - * (8.0.0) [runtime][foo, cat, dog][job]submission retry delays -> [runtime][foo, cat, dog]submission retry delays - value unchanged - will be removed at 8.9 -WARNING - * (8.0.0) [cylc][events]timeout -> [cylc][events]stall timeout - value unchanged - will be removed at 8.9 -WARNING - * (8.0.0) [cylc][events]abort on timeout -> [cylc][events]abort on stall timeout - value unchanged - will be removed at 8.9 -WARNING - * (8.0.0) [cylc][events]inactivity -> [cylc][events]inactivity timeout - value unchanged - will be removed at 8.9 -WARNING - * (8.0.0) [cylc][events]abort on inactivity -> [cylc][events]abort on inactivity timeout - value unchanged - will be removed at 8.9 -WARNING - * (8.0.0) [cylc][events]startup handler -> [cylc][events]startup handlers - value unchanged - will be removed at 8.9 -WARNING - * (8.0.0) [cylc][events]shutdown handler -> [cylc][events]shutdown handlers - value unchanged - will be removed at 8.9 -WARNING - * (8.0.0) [cylc][events]timeout handler -> [cylc][events]stall timeout handlers - value unchanged - will be removed at 8.9 -WARNING - * (8.0.0) [cylc][events]stalled handler -> [cylc][events]stall handlers - value unchanged - will be removed at 8.9 -WARNING - * (8.0.0) [cylc][events]aborted handler -> [cylc][events]abort handlers - value unchanged - will be removed at 8.9 -WARNING - * (8.0.0) [cylc][events]inactivity handler -> [cylc][events]inactivity timeout handlers - value unchanged - will be removed at 8.9 +WARNING - * (8.0.0) [scheduling]max active cycle points -> [scheduling]runahead limit - "2" -> "P1" - support for the old item will be removed at Cylc 8.9 +WARNING - * (8.0.0) [scheduling]hold after point -> [scheduling]hold after cycle point - value unchanged - support for the old item will be removed at Cylc 8.9 +WARNING - * (8.0.0) [runtime][foo, cat, dog][job]execution polling intervals -> [runtime][foo, cat, dog]execution polling intervals - value unchanged - support for the old item will be removed at Cylc 8.9 +WARNING - * (8.0.0) [runtime][foo, cat, dog][job]execution retry delays -> [runtime][foo, cat, dog]execution retry delays - value unchanged - support for the old item will be removed at Cylc 8.9 +WARNING - * (8.0.0) [runtime][foo, cat, dog][job]execution time limit -> [runtime][foo, cat, dog]execution time limit - value unchanged - support for the old item will be removed at Cylc 8.9 +WARNING - * (8.0.0) [runtime][foo, cat, dog][job]submission polling intervals -> [runtime][foo, cat, dog]submission polling intervals - value unchanged - support for the old item will be removed at Cylc 8.9 +WARNING - * (8.0.0) [runtime][foo, cat, dog][job]submission retry delays -> [runtime][foo, cat, dog]submission retry delays - value unchanged - support for the old item will be removed at Cylc 8.9 +WARNING - * (8.0.0) [cylc][events]timeout -> [cylc][events]stall timeout - value unchanged - support for the old item will be removed at Cylc 8.9 +WARNING - * (8.0.0) [cylc][events]abort on timeout -> [cylc][events]abort on stall timeout - value unchanged - support for the old item will be removed at Cylc 8.9 +WARNING - * (8.0.0) [cylc][events]inactivity -> [cylc][events]inactivity timeout - value unchanged - support for the old item will be removed at Cylc 8.9 +WARNING - * (8.0.0) [cylc][events]abort on inactivity -> [cylc][events]abort on inactivity timeout - value unchanged - support for the old item will be removed at Cylc 8.9 +WARNING - * (8.0.0) [cylc][events]startup handler -> [cylc][events]startup handlers - value unchanged - support for the old item will be removed at Cylc 8.9 +WARNING - * (8.0.0) [cylc][events]shutdown handler -> [cylc][events]shutdown handlers - value unchanged - support for the old item will be removed at Cylc 8.9 +WARNING - * (8.0.0) [cylc][events]timeout handler -> [cylc][events]stall timeout handlers - value unchanged - support for the old item will be removed at Cylc 8.9 +WARNING - * (8.0.0) [cylc][events]stalled handler -> [cylc][events]stall handlers - value unchanged - support for the old item will be removed at Cylc 8.9 +WARNING - * (8.0.0) [cylc][events]aborted handler -> [cylc][events]abort handlers - value unchanged - support for the old item will be removed at Cylc 8.9 +WARNING - * (8.0.0) [cylc][events]inactivity handler -> [cylc][events]inactivity timeout handlers - value unchanged - support for the old item will be removed at Cylc 8.9 WARNING - * (8.0.0) [cylc][events]abort on stalled - DELETED (OBSOLETE) WARNING - * (8.0.0) [cylc][events]abort if startup handler fails - DELETED (OBSOLETE) WARNING - * (8.0.0) [cylc][events]abort if shutdown handler fails - DELETED (OBSOLETE) WARNING - * (8.0.0) [cylc][events]abort if timeout handler fails - DELETED (OBSOLETE) WARNING - * (8.0.0) [cylc][events]abort if inactivity handler fails - DELETED (OBSOLETE) WARNING - * (8.0.0) [cylc][events]abort if stalled handler fails - DELETED (OBSOLETE) -WARNING - * (8.0.0) [cylc] -> [scheduler] - value unchanged - will be removed at 8.9 -WARNING - graph items were automatically upgraded in "workflow definition" - will be removed at 8.9: +WARNING - * (8.0.0) [cylc] -> [scheduler] - value unchanged - support for the old item will be removed at Cylc 8.9 +WARNING - graph items were automatically upgraded in "workflow definition" - support for the old item will be removed at Cylc 8.9: * (8.0.0) [scheduling][dependencies][X]graph -> [scheduling][graph]X - for X in: P1D diff --git a/tests/integration/scripts/test_validate_integration.py b/tests/integration/scripts/test_validate_integration.py index c2bc495ac54..0694b602010 100644 --- a/tests/integration/scripts/test_validate_integration.py +++ b/tests/integration/scripts/test_validate_integration.py @@ -110,7 +110,8 @@ def test_validate_simple_graph(flow, validate, caplog): validate(id_) expect = ( 'graph items were automatically upgraded' - ' in "workflow definition" - will be removed at 8.9:' + ' in "workflow definition" - support for the old item will be ' + 'removed at Cylc 8.9:' '\n * (8.0.0) [scheduling][dependencies]graph -> [scheduling][graph]R1' ) assert expect in caplog.messages @@ -156,9 +157,10 @@ def test_pre_cylc8(flow, validate, caplog): ( ' * (8.0.0) [runtime][foo, cat, dog][suite state polling]' ' -> [runtime][foo, cat, dog][workflow state polling]' - ' - value unchanged - will be removed at 8.9'), + ' - value unchanged - support for the old item will be ' + 'removed at Cylc 8.9'), (' * (8.0.0) [cylc] -> [scheduler] - value unchanged' - ' - will be removed at 8.9') + ' - support for the old item will be removed at Cylc 8.9') ): assert warning in caplog.messages @@ -212,7 +214,8 @@ def test_graph_upgrade_msg_graph_equals2(flow, validate, caplog, log_filter): validate(id_) expect = ( 'graph items were automatically upgraded in' - ' "workflow definition" - will be removed at 8.9:' + ' "workflow definition" - support for the old item will be ' + 'removed at Cylc 8.9:' '\n * (8.0.0) [scheduling][dependencies][X]graph' ' -> [scheduling][graph]X - for X in:' '\n P1Y, graph' From a993146ec107898e1499c92aef8242a5e823f182 Mon Sep 17 00:00:00 2001 From: Scott-Owen-James Date: Fri, 2 Oct 2026 12:55:24 +0100 Subject: [PATCH 12/16] Update cylc/flow/cfgspec/workflow.py Co-authored-by: Ronnie Dutta <61982285+MetRonnie@users.noreply.github.com> --- cylc/flow/cfgspec/workflow.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cylc/flow/cfgspec/workflow.py b/cylc/flow/cfgspec/workflow.py index 1df48ddcbf5..e7610d6b058 100644 --- a/cylc/flow/cfgspec/workflow.py +++ b/cylc/flow/cfgspec/workflow.py @@ -2226,7 +2226,8 @@ def upg( ['runtime', '__MANY__', 'events', 'mail smtp'], None, cvtr=converter(lambda x: x, ( - 'DELETED (OBSOLETE) - use "global.cylc[scheduler][mail]smtp" ') + 'DELETED (OBSOLETE) - use "global.cylc[scheduler][mail]smtp" ' + 'instead') ), remove_at='8.9' ) From e2f97c9b128963e5c622906792b0f46efc498889 Mon Sep 17 00:00:00 2001 From: Scott Owen James Date: Fri, 2 Oct 2026 12:58:03 +0100 Subject: [PATCH 13/16] Correcting errenous deletion in test --- tests/functional/deprecations/01-cylc8-basic/validation.stderr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/functional/deprecations/01-cylc8-basic/validation.stderr b/tests/functional/deprecations/01-cylc8-basic/validation.stderr index 99e72f41f9b..de0a5b1f676 100644 --- a/tests/functional/deprecations/01-cylc8-basic/validation.stderr +++ b/tests/functional/deprecations/01-cylc8-basic/validation.stderr @@ -23,7 +23,7 @@ WARNING - * (8.0.0) [cylc][events]mail footer -> [cylc][mail]footer - value unc WARNING - * (8.0.0) [runtime][foo, cat, dog][events]mail to -> [runtime][foo, cat, dog][mail]to - value unchanged - support for the old item will be removed at Cylc 8.9 WARNING - * (8.0.0) [runtime][foo, cat, dog][events]mail from -> [runtime][foo, cat, dog][mail]from - value unchanged - support for the old item will be removed at Cylc 8.9 WARNING - * (8.0.0) [cylc][events]mail smtp - DELETED (OBSOLETE) - use "global.cylc[scheduler][mail]smtp" instead - support for the old item will be removed at Cylc 8.9 -WARNING - * (8.0.0) [runtime][foo, cat, dog][events]mail smtp - DELETED (OBSOLETE) - use "global.cylc[scheduler][mail]smtp" +WARNING - * (8.0.0) [runtime][foo, cat, dog][events]mail smtp - DELETED (OBSOLETE) - use "global.cylc[scheduler][mail]smtp" instead WARNING - * (8.0.0) [scheduling]max active cycle points -> [scheduling]runahead limit - "2" -> "P1" - support for the old item will be removed at Cylc 8.9 WARNING - * (8.0.0) [scheduling]hold after point -> [scheduling]hold after cycle point - value unchanged - support for the old item will be removed at Cylc 8.9 WARNING - * (8.0.0) [runtime][foo, cat, dog][job]execution polling intervals -> [runtime][foo, cat, dog]execution polling intervals - value unchanged - support for the old item will be removed at Cylc 8.9 From 3ab58304c8e23b757482c864d5d3600e8d957bc3 Mon Sep 17 00:00:00 2001 From: Scott Owen James Date: Mon, 5 Oct 2026 08:45:20 +0100 Subject: [PATCH 14/16] Added obsoletion warnings --- cylc/flow/cfgspec/workflow.py | 8 +++++--- cylc/flow/parsec/upgrade.py | 15 ++++++++++----- .../01-cylc8-basic/validation.stderr | 16 ++++++++-------- 3 files changed, 23 insertions(+), 16 deletions(-) diff --git a/cylc/flow/cfgspec/workflow.py b/cylc/flow/cfgspec/workflow.py index e7610d6b058..e48167f8aad 100644 --- a/cylc/flow/cfgspec/workflow.py +++ b/cylc/flow/cfgspec/workflow.py @@ -2168,10 +2168,12 @@ def upg( remove_at='8.9' ) u.obsolete( - '8.0.0', ['runtime', '__MANY__', 'workflow state polling', 'host'] + '8.0.0', ['runtime', '__MANY__', 'workflow state polling', 'host'], + remove_at='8.9' ) u.obsolete( - '8.0.0', ['runtime', '__MANY__', 'workflow state polling', 'user'] + '8.0.0', ['runtime', '__MANY__', 'workflow state polling', 'user'], + remove_at='8.9' ) u.deprecate( @@ -2314,7 +2316,7 @@ def upg( 'abort if inactivity handler fails', 'abort if stalled handler fails', ]: - u.obsolete('8.0.0', ['cylc', 'events', old,]) + u.obsolete('8.0.0', ['cylc', 'events', old,], remove_at='8.9') u.deprecate( '8.0.0', diff --git a/cylc/flow/parsec/upgrade.py b/cylc/flow/parsec/upgrade.py index 0c453bbc5c4..d1e32ada23c 100644 --- a/cylc/flow/parsec/upgrade.py +++ b/cylc/flow/parsec/upgrade.py @@ -97,7 +97,7 @@ def deprecate( 'is_section': is_section, 'remove_at': remove_at }) - def obsolete(self, vn, oldkeys, is_section=False): + def obsolete(self, vn, oldkeys, is_section=False, remove_at=None): """Remove an obsolete key from a config Args: vn (str): @@ -113,7 +113,7 @@ def obsolete(self, vn, oldkeys, is_section=False): self.upgrades[vn].append( { 'old': oldkeys, 'new': None, 'cvt': cvtr, - 'is_section': is_section + 'is_section': is_section, 'remove_at': remove_at }) def get_item(self, keys): @@ -184,7 +184,8 @@ def expand(self, upg): 'old': pre + [m] + post, 'new': None, 'cvt': upg['cvt'], - 'is_section': upg['is_section'] + 'is_section': upg['is_section'], + 'remove_at': upg.get('remove_at') }) return exp_upgs npre = [] @@ -236,8 +237,12 @@ def upgrade(self): new=upg['cvt'].convert(old) ) if (remove_at := upg.get('remove_at')) is not None: - msg += (f' - support for the old item will be ' - f'removed at Cylc {remove_at}') + if upg['new']: + msg += (f' - support for the old item will be ' + f'removed at Cylc {remove_at}') + else: + msg += (f' - this will fail validation in ' + f'Cylc {remove_at}') warnings.setdefault(vn, []) warnings[vn].append(msg) self.del_item(upg['old']) diff --git a/tests/functional/deprecations/01-cylc8-basic/validation.stderr b/tests/functional/deprecations/01-cylc8-basic/validation.stderr index de0a5b1f676..d3074345535 100644 --- a/tests/functional/deprecations/01-cylc8-basic/validation.stderr +++ b/tests/functional/deprecations/01-cylc8-basic/validation.stderr @@ -22,8 +22,8 @@ WARNING - * (8.0.0) [cylc][events]mail from -> [cylc][mail]from - value unchang WARNING - * (8.0.0) [cylc][events]mail footer -> [cylc][mail]footer - value unchanged - support for the old item will be removed at Cylc 8.9 WARNING - * (8.0.0) [runtime][foo, cat, dog][events]mail to -> [runtime][foo, cat, dog][mail]to - value unchanged - support for the old item will be removed at Cylc 8.9 WARNING - * (8.0.0) [runtime][foo, cat, dog][events]mail from -> [runtime][foo, cat, dog][mail]from - value unchanged - support for the old item will be removed at Cylc 8.9 -WARNING - * (8.0.0) [cylc][events]mail smtp - DELETED (OBSOLETE) - use "global.cylc[scheduler][mail]smtp" instead - support for the old item will be removed at Cylc 8.9 -WARNING - * (8.0.0) [runtime][foo, cat, dog][events]mail smtp - DELETED (OBSOLETE) - use "global.cylc[scheduler][mail]smtp" instead +WARNING - * (8.0.0) [cylc][events]mail smtp - DELETED (OBSOLETE) - use "global.cylc[scheduler][mail]smtp" instead - this will fail validation in Cylc 8.9 +WARNING - * (8.0.0) [runtime][foo, cat, dog][events]mail smtp - DELETED (OBSOLETE) - use "global.cylc[scheduler][mail]smtp" instead - this will fail validation in Cylc 8.9 WARNING - * (8.0.0) [scheduling]max active cycle points -> [scheduling]runahead limit - "2" -> "P1" - support for the old item will be removed at Cylc 8.9 WARNING - * (8.0.0) [scheduling]hold after point -> [scheduling]hold after cycle point - value unchanged - support for the old item will be removed at Cylc 8.9 WARNING - * (8.0.0) [runtime][foo, cat, dog][job]execution polling intervals -> [runtime][foo, cat, dog]execution polling intervals - value unchanged - support for the old item will be removed at Cylc 8.9 @@ -41,12 +41,12 @@ WARNING - * (8.0.0) [cylc][events]timeout handler -> [cylc][events]stall timeou WARNING - * (8.0.0) [cylc][events]stalled handler -> [cylc][events]stall handlers - value unchanged - support for the old item will be removed at Cylc 8.9 WARNING - * (8.0.0) [cylc][events]aborted handler -> [cylc][events]abort handlers - value unchanged - support for the old item will be removed at Cylc 8.9 WARNING - * (8.0.0) [cylc][events]inactivity handler -> [cylc][events]inactivity timeout handlers - value unchanged - support for the old item will be removed at Cylc 8.9 -WARNING - * (8.0.0) [cylc][events]abort on stalled - DELETED (OBSOLETE) -WARNING - * (8.0.0) [cylc][events]abort if startup handler fails - DELETED (OBSOLETE) -WARNING - * (8.0.0) [cylc][events]abort if shutdown handler fails - DELETED (OBSOLETE) -WARNING - * (8.0.0) [cylc][events]abort if timeout handler fails - DELETED (OBSOLETE) -WARNING - * (8.0.0) [cylc][events]abort if inactivity handler fails - DELETED (OBSOLETE) -WARNING - * (8.0.0) [cylc][events]abort if stalled handler fails - DELETED (OBSOLETE) +WARNING - * (8.0.0) [cylc][events]abort on stalled - DELETED (OBSOLETE) - this will fail validation in Cylc 8.9 +WARNING - * (8.0.0) [cylc][events]abort if startup handler fails - DELETED (OBSOLETE) - this will fail validation in Cylc 8.9 +WARNING - * (8.0.0) [cylc][events]abort if shutdown handler fails - DELETED (OBSOLETE) - this will fail validation in Cylc 8.9 +WARNING - * (8.0.0) [cylc][events]abort if timeout handler fails - DELETED (OBSOLETE) - this will fail validation in Cylc 8.9 +WARNING - * (8.0.0) [cylc][events]abort if inactivity handler fails - DELETED (OBSOLETE) - this will fail validation in Cylc 8.9 +WARNING - * (8.0.0) [cylc][events]abort if stalled handler fails - DELETED (OBSOLETE) - this will fail validation in Cylc 8.9 WARNING - * (8.0.0) [cylc] -> [scheduler] - value unchanged - support for the old item will be removed at Cylc 8.9 WARNING - graph items were automatically upgraded in "workflow definition" - support for the old item will be removed at Cylc 8.9: * (8.0.0) [scheduling][dependencies][X]graph -> [scheduling][graph]X - for X in: From d571d34d8850c4e22c62707537aa1dd0d7637c52 Mon Sep 17 00:00:00 2001 From: Scott Owen James Date: Mon, 5 Oct 2026 14:22:04 +0100 Subject: [PATCH 15/16] Adding docstring --- cylc/flow/parsec/upgrade.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cylc/flow/parsec/upgrade.py b/cylc/flow/parsec/upgrade.py index d1e32ada23c..cd6674bdf53 100644 --- a/cylc/flow/parsec/upgrade.py +++ b/cylc/flow/parsec/upgrade.py @@ -106,6 +106,8 @@ def obsolete(self, vn, oldkeys, is_section=False, remove_at=None): Path within config to be removed. is_section (bool): Is a section heading. + remove_at (str): + Cylc version when this obsoletion will become an error """ if vn not in self.upgrades: self.upgrades[vn] = [] From 780b9fec8594f773b39e7e793822a9f6253833d0 Mon Sep 17 00:00:00 2001 From: Scott Owen James Date: Tue, 6 Oct 2026 10:51:52 +0100 Subject: [PATCH 16/16] Adding full list of obsoletions --- cylc/flow/cfgspec/workflow.py | 62 ++++++++++++------- .../01-cylc8-basic/validation.stderr | 26 ++++---- .../scripts/test_validate_integration.py | 11 ++-- 3 files changed, 59 insertions(+), 40 deletions(-) diff --git a/cylc/flow/cfgspec/workflow.py b/cylc/flow/cfgspec/workflow.py index e48167f8aad..8bdf94b3032 100644 --- a/cylc/flow/cfgspec/workflow.py +++ b/cylc/flow/cfgspec/workflow.py @@ -2123,37 +2123,53 @@ def upg( u = upgrader(cfg, descr, broadcast=bool(broadcast)) u.obsolete( - '7.8.0', ['runtime', '__MANY__', 'suite state polling', 'template'] + '7.8.0', ['runtime', '__MANY__', 'suite state polling', 'template'], + remove_at='8.9' ) - u.obsolete('7.8.1', ['cylc', 'events', 'reset timer']) - u.obsolete('7.8.1', ['cylc', 'events', 'reset inactivity timer']) - u.obsolete('8.0.0', ['cylc', 'force run mode']) - u.obsolete('7.8.1', ['runtime', '__MANY__', 'events', 'reset timer']) - u.obsolete('8.0.0', ['cylc', 'authentication'], is_section=True) - u.obsolete('8.0.0', ['cylc', 'include at start-up']) - u.obsolete('8.0.0', ['cylc', 'exclude at start-up']) - u.obsolete('8.0.0', ['cylc', 'log resolved dependencies']) - u.obsolete('8.0.0', ['cylc', 'required run mode']) + u.obsolete('7.8.1', ['cylc', 'events', 'reset timer'], remove_at='8.9') + u.obsolete('7.8.1', ['cylc', 'events', 'reset inactivity timer'], + remove_at='8.9') + u.obsolete('8.0.0', ['cylc', 'force run mode'], remove_at='8.9') + u.obsolete('7.8.1', ['runtime', '__MANY__', 'events', 'reset timer'], + remove_at='8.9') + u.obsolete('8.0.0', ['cylc', 'authentication'], is_section=True, + remove_at='8.9') + u.obsolete('8.0.0', ['cylc', 'include at start-up'], remove_at='8.9') + u.obsolete('8.0.0', ['cylc', 'exclude at start-up'], remove_at='8.9') + u.obsolete('8.0.0', ['cylc', 'log resolved dependencies'], remove_at='8.9') + u.obsolete('8.0.0', ['cylc', 'required run mode'], remove_at='8.9') u.obsolete( '8.0.0', - ['cylc', 'health check interval']) - u.obsolete('8.0.0', ['runtime', '__MANY__', 'events', 'mail retry delays']) - u.obsolete('8.0.0', ['runtime', '__MANY__', 'extra log files']) - u.obsolete('8.0.0', ['runtime', '__MANY__', 'job', 'shell']) + ['cylc', 'health check interval'], + remove_at='8.9') + u.obsolete('8.0.0', ['runtime', '__MANY__', 'events', 'mail retry delays'], + remove_at='8.9') + u.obsolete('8.0.0', ['runtime', '__MANY__', 'extra log files'], + remove_at='8.9') + u.obsolete('8.0.0', ['runtime', '__MANY__', 'job', 'shell'], + remove_at='8.9') u.obsolete( '8.0.0', - ['runtime', '__MANY__', 'remote', 'suite definition directory'] + ['runtime', '__MANY__', 'remote', 'suite definition directory'], + remove_at='8.9' ) - u.obsolete('8.0.0', ['cylc', 'abort if any task fails']) - u.obsolete('8.0.0', ['cylc', 'disable automatic shutdown']) - u.obsolete('8.0.0', ['cylc', 'environment'], is_section=True) - u.obsolete('8.0.0', ['cylc', 'reference test'], is_section=True) + u.obsolete('8.0.0', ['cylc', 'abort if any task fails'], + remove_at='8.9') + u.obsolete('8.0.0', ['cylc', 'disable automatic shutdown'], + remove_at='8.9') + u.obsolete('8.0.0', ['cylc', 'environment'], is_section=True, + remove_at='8.9') + u.obsolete('8.0.0', ['cylc', 'reference test'], is_section=True, + remove_at='8.9') u.obsolete( '8.0.0', - ['cylc', 'simulation', 'disable suite event handlers']) - u.obsolete('8.0.0', ['cylc', 'simulation'], is_section=True) - u.obsolete('8.0.0', ['visualization'], is_section=True) - u.obsolete('8.0.0', ['scheduling', 'spawn to max active cycle points']) + ['cylc', 'simulation', 'disable suite event handlers'], + remove_at='8.9') + u.obsolete('8.0.0', ['cylc', 'simulation'], is_section=True, + remove_at='8.9') + u.obsolete('8.0.0', ['visualization'], is_section=True, remove_at='8.9') + u.obsolete('8.0.0', ['scheduling', 'spawn to max active cycle points'], + remove_at='8.9') u.deprecate( '8.0.0', ['cylc', 'task event mail interval'], diff --git a/tests/functional/deprecations/01-cylc8-basic/validation.stderr b/tests/functional/deprecations/01-cylc8-basic/validation.stderr index d3074345535..40b89f5a17d 100644 --- a/tests/functional/deprecations/01-cylc8-basic/validation.stderr +++ b/tests/functional/deprecations/01-cylc8-basic/validation.stderr @@ -1,18 +1,18 @@ WARNING - Obsolete config items were automatically deleted. Please check your workflow and remove them permanently. WARNING - Deprecated config items were automatically upgraded. Please alter your workflow to use the new syntax. -WARNING - * (8.0.0) [cylc]force run mode - DELETED (OBSOLETE) -WARNING - * (8.0.0) [cylc][authentication] - DELETED (OBSOLETE) -WARNING - * (8.0.0) [cylc]log resolved dependencies - DELETED (OBSOLETE) -WARNING - * (8.0.0) [cylc]required run mode - DELETED (OBSOLETE) -WARNING - * (8.0.0) [runtime][foo, cat, dog][events]mail retry delays - DELETED (OBSOLETE) -WARNING - * (8.0.0) [runtime][foo, cat, dog]extra log files - DELETED (OBSOLETE) -WARNING - * (8.0.0) [runtime][foo, cat, dog][job]shell - DELETED (OBSOLETE) -WARNING - * (8.0.0) [cylc]abort if any task fails - DELETED (OBSOLETE) -WARNING - * (8.0.0) [cylc]disable automatic shutdown - DELETED (OBSOLETE) -WARNING - * (8.0.0) [cylc][environment] - DELETED (OBSOLETE) -WARNING - * (8.0.0) [cylc][reference test] - DELETED (OBSOLETE) -WARNING - * (8.0.0) [cylc][simulation]disable suite event handlers - DELETED (OBSOLETE) -WARNING - * (8.0.0) [cylc][simulation] - DELETED (OBSOLETE) +WARNING - * (8.0.0) [cylc]force run mode - DELETED (OBSOLETE) - this will fail validation in Cylc 8.9 +WARNING - * (8.0.0) [cylc][authentication] - DELETED (OBSOLETE) - this will fail validation in Cylc 8.9 +WARNING - * (8.0.0) [cylc]log resolved dependencies - DELETED (OBSOLETE) - this will fail validation in Cylc 8.9 +WARNING - * (8.0.0) [cylc]required run mode - DELETED (OBSOLETE) - this will fail validation in Cylc 8.9 +WARNING - * (8.0.0) [runtime][foo, cat, dog][events]mail retry delays - DELETED (OBSOLETE) - this will fail validation in Cylc 8.9 +WARNING - * (8.0.0) [runtime][foo, cat, dog]extra log files - DELETED (OBSOLETE) - this will fail validation in Cylc 8.9 +WARNING - * (8.0.0) [runtime][foo, cat, dog][job]shell - DELETED (OBSOLETE) - this will fail validation in Cylc 8.9 +WARNING - * (8.0.0) [cylc]abort if any task fails - DELETED (OBSOLETE) - this will fail validation in Cylc 8.9 +WARNING - * (8.0.0) [cylc]disable automatic shutdown - DELETED (OBSOLETE) - this will fail validation in Cylc 8.9 +WARNING - * (8.0.0) [cylc][environment] - DELETED (OBSOLETE) - this will fail validation in Cylc 8.9 +WARNING - * (8.0.0) [cylc][reference test] - DELETED (OBSOLETE) - this will fail validation in Cylc 8.9 +WARNING - * (8.0.0) [cylc][simulation]disable suite event handlers - DELETED (OBSOLETE) - this will fail validation in Cylc 8.9 +WARNING - * (8.0.0) [cylc][simulation] - DELETED (OBSOLETE) - this will fail validation in Cylc 8.9 WARNING - * (8.0.0) [cylc]task event mail interval -> [cylc][mail]task event batch interval - value unchanged - support for the old item will be removed at Cylc 8.9 WARNING - * (8.0.0) [runtime][foo, cat, dog][suite state polling] -> [runtime][foo, cat, dog][workflow state polling] - value unchanged - support for the old item will be removed at Cylc 8.9 WARNING - * (8.0.0) [cylc][parameters] -> [task parameters] - value unchanged - support for the old item will be removed at Cylc 8.9 diff --git a/tests/integration/scripts/test_validate_integration.py b/tests/integration/scripts/test_validate_integration.py index 0694b602010..fed3c516b5c 100644 --- a/tests/integration/scripts/test_validate_integration.py +++ b/tests/integration/scripts/test_validate_integration.py @@ -148,12 +148,15 @@ def test_pre_cylc8(flow, validate, caplog): for warning in ( ( ' * (7.8.0) [runtime][foo, cat, dog][suite state polling]template' - ' - DELETED (OBSOLETE)'), - ' * (7.8.1) [cylc][events]reset timer - DELETED (OBSOLETE)', - ' * (7.8.1) [cylc][events]reset inactivity timer - DELETED (OBSOLETE)', + ' - DELETED (OBSOLETE)' + ' - this will fail validation in Cylc 8.9'), + (' * (7.8.1) [cylc][events]reset timer - DELETED (OBSOLETE)' + ' - this will fail validation in Cylc 8.9'), + (' * (7.8.1) [cylc][events]reset inactivity timer - DELETED (OBSOLETE)' + ' - this will fail validation in Cylc 8.9'), ( ' * (7.8.1) [runtime][foo, cat, dog][events]reset timer' - ' - DELETED (OBSOLETE)'), + ' - DELETED (OBSOLETE) - this will fail validation in Cylc 8.9'), ( ' * (8.0.0) [runtime][foo, cat, dog][suite state polling]' ' -> [runtime][foo, cat, dog][workflow state polling]'