From: Batuhan Taşkaya <47358913+isidentical@users.noreply.github.com> Date: Tue, 21 May 2019 20:27:36 +0000 (+0300) Subject: bpo-25652: Fix __rmod__ of UserString (GH-13326) X-Git-Tag: v3.8.0b1~267 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=7abf8c60819d5749e6225b371df51a9c5f1ea8e9;p=thirdparty%2FPython%2Fcpython.git 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 --- diff --git a/Lib/collections/__init__.py b/Lib/collections/__init__.py index 960d82a5dcfb..cb7f1bb1fcfe 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 71528223d35b..19b0acfc760f 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 000000000000..421fccfe8c73 --- /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.