jenkins-bot has submitted this change. ( 
https://gerrit.wikimedia.org/r/c/pywikibot/core/+/1344799?usp=email )

Change subject: ui: Join transliteration output fragments
......................................................................

ui: Join transliteration output fragments

Collect ordinary characters and highlighted transliterations in a list
and join the output once. This avoids repeatedly copying the accumulated
text, including quadratic string concatenation on PyPy.

Preserve character context, encoding conversions and color markers.

Change-Id: Ia040d64a3ebea2d02f39d2cabf5f57cc7fb4ec27
---
M pywikibot/userinterfaces/terminal_interface_base.py
1 file changed, 4 insertions(+), 5 deletions(-)

Approvals:
  jenkins-bot: Verified
  Xqt: Looks good to me, approved




diff --git a/pywikibot/userinterfaces/terminal_interface_base.py 
b/pywikibot/userinterfaces/terminal_interface_base.py
index e86e4b7..28a8ba6 100644
--- a/pywikibot/userinterfaces/terminal_interface_base.py
+++ b/pywikibot/userinterfaces/terminal_interface_base.py
@@ -291,7 +291,7 @@
                 codecedText = codecedText.encode(
                     self.transliteration_target,
                     'replace').decode(self.transliteration_target)
-            transliteratedText = ''
+            parts = []
             # Note: A transliteration replacement might be longer than the
             # original character, e.g. ч is transliterated to ch.
             prev = '-'
@@ -308,8 +308,7 @@
                     # transliteration was successful. The replacement
                     # could consist of multiple letters.
                     # mark the transliterated letters in yellow.
-                    transliteratedText = (
-                        f'{transliteratedText}'
+                    parts.append(
                         f'<<lightyellow>>{transliterated}<<previous>>'
                     )
                     # memorize if we replaced a single letter by multiple
@@ -318,9 +317,9 @@
                         prev = transliterated[-1]
                 else:
                     # no need to try to transliterate.
-                    transliteratedText += char
+                    parts.append(char)
                     prev = char
-            text = transliteratedText
+            text = ''.join(parts)

         if not targetStream:
             targetStream = self.stderr

--
To view, visit 
https://gerrit.wikimedia.org/r/c/pywikibot/core/+/1344799?usp=email
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.wikimedia.org/r/settings?usp=email

Gerrit-MessageType: merged
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Change-Id: Ia040d64a3ebea2d02f39d2cabf5f57cc7fb4ec27
Gerrit-Change-Number: 1344799
Gerrit-PatchSet: 2
Gerrit-Owner: Mahveotm <[email protected]>
Gerrit-Reviewer: Xqt <[email protected]>
Gerrit-Reviewer: jenkins-bot
_______________________________________________
Pywikibot-commits mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to