From 7abf8c60819d5749e6225b371df51a9c5f1ea8e9 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Batuhan=20Ta=C5=9Fkaya?= <47358913+isidentical@users.noreply.github.com> Date: Tue, 21 May 2019 23:27:36 +0300 Subject: [PATCH] bpo-25652: Fix __rmod__ of UserString (GH-13326) The ``__rmod__`` method of ``collections.UserString`` class had a bug that made it unusable. https://bugs.python.org/issue25652 --- Lib/collections/__init__.py | 5 ++--- Lib/test/test_userstring.py | 12 ++++++++++++ .../Library/2019-05-14-21-39-52.bpo-25652.xLw42k.rst | 1 + 3 files changed, 15 insertions(+), 3 deletions(-) create mode 100644 Misc/NEWS.d/next/Library/2019-05-14-21-39-52.bpo-25652.xLw42k.rst diff --git a/Lib/collections/__init__.py b/Lib/collections/__init__.py index 960d82a5dc..cb7f1bb1fc 100644 --- a/Lib/collections/__init__.py +++ b/Lib/collections/__init__.py @@ -1214,9 +1214,8 @@ class UserString(_collections_abc.Sequence): __rmul__ = __mul__ def __mod__(self, args): return self.__class__(self.data % args) - def __rmod__(self, format): - return self.__class__(format % args) - + def __rmod__(self, template): + return self.__class__(str(template) % self) # the following methods are defined in alphabetical order: def capitalize(self): return self.__class__(self.data.capitalize()) def casefold(self): diff --git a/Lib/test/test_userstring.py b/Lib/test/test_userstring.py index 71528223d3..19b0acfc76 100644 --- a/Lib/test/test_userstring.py +++ b/Lib/test/test_userstring.py @@ -39,6 +39,18 @@ class UserStringTest( # we don't fix the arguments, because UserString can't cope with it getattr(object, methodname)(*args) + def test_rmod(self): + class ustr2(UserString): + pass + + class ustr3(ustr2): + def __rmod__(self, other): + return super().__rmod__(other) + + fmt2 = ustr2('value is %s') + str3 = ustr3('TEST') + self.assertEqual(fmt2 % str3, 'value is TEST') + if __name__ == "__main__": unittest.main() diff --git a/Misc/NEWS.d/next/Library/2019-05-14-21-39-52.bpo-25652.xLw42k.rst b/Misc/NEWS.d/next/Library/2019-05-14-21-39-52.bpo-25652.xLw42k.rst new file mode 100644 index 0000000000..421fccfe8c --- /dev/null +++ b/Misc/NEWS.d/next/Library/2019-05-14-21-39-52.bpo-25652.xLw42k.rst @@ -0,0 +1 @@ +Fix bug in ``__rmod__`` of ``UserString`` - by Batuhan Taskaya. -- 2.40.0