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
This commit is contained in:
parent
565b4f1ac7
commit
7abf8c6081
|
@ -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):
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
Fix bug in ``__rmod__`` of ``UserString`` - by Batuhan Taskaya.
|
Loading…
Reference in New Issue