From 8657acdd981ce22cad0fd6fcd9c9132a1160f701 2018-09-12 16:43:30 From: Matthias Bussonnier Date: 2018-09-12 16:43:30 Subject: [PATCH] Better alternative; try each transformer in a row, They can actually raise a SyntaxError in which case the transformation will be aborted. --- diff --git a/IPython/core/inputtransformer2.py b/IPython/core/inputtransformer2.py index 886aa02..1abd2cf 100644 --- a/IPython/core/inputtransformer2.py +++ b/IPython/core/inputtransformer2.py @@ -526,12 +526,13 @@ class TransformerManager: if not candidates: # Nothing to transform return False, lines - - transformer = min(candidates, key=TokenTransformBase.sortby) - transformed = transformer.transform(lines) - if transformed is None: - return False, lines - return True, transformer.transform(lines) + ordered_transformers = sorted(candidates, key=TokenTransformBase.sortby) + for transformer in ordered_transformers: + try: + return True, transformer.transform(lines) + except SyntaxError: + pass + return False, lines def do_token_transforms(self, lines): for _ in range(TRANSFORM_LOOP_LIMIT):