From 160bb9b8a686fc5e639460cfec4041b01a18576d Mon Sep 17 00:00:00 2001 From: Marco Gorelli Date: Sun, 2 May 2021 18:47:56 +0100 Subject: [PATCH] only replace argument token --- pyupgrade/_plugins/universal_newlines_to_text.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/pyupgrade/_plugins/universal_newlines_to_text.py b/pyupgrade/_plugins/universal_newlines_to_text.py index 02eea276..a2172579 100644 --- a/pyupgrade/_plugins/universal_newlines_to_text.py +++ b/pyupgrade/_plugins/universal_newlines_to_text.py @@ -6,7 +6,6 @@ from tokenize_rt import Offset from tokenize_rt import Token -from tokenize_rt import tokens_to_src from pyupgrade._ast_helpers import ast_to_offset from pyupgrade._ast_helpers import is_name_attr @@ -25,9 +24,12 @@ def _replace_universal_newlines_with_text( ) -> None: j = find_open_paren(tokens, i) func_args, _ = parse_call_args(tokens, j) - src = tokens_to_src(tokens[slice(*func_args[arg_idx])]) - new_src = src.replace('universal_newlines', 'text', 1) - tokens[slice(*func_args[arg_idx])] = [Token('SRC', new_src)] + for i in range(*func_args[arg_idx]): + if tokens[i].src == 'universal_newlines': + tokens[i] = tokens[i]._replace(src='text') + break + else: + raise AssertionError('`universal_newlines` argument not found') @register(ast.Call)