Commit abb34fe9 authored by Brett Cannon's avatar Brett Cannon

UserString.MutableString has been removed in Python 3.0.

Works on issue #2877. Thanks Quentin Gallet-Gilles for the patch.
parent 5ec330cb
...@@ -178,6 +178,9 @@ The :mod:`UserString` module defines the following classes: ...@@ -178,6 +178,9 @@ The :mod:`UserString` module defines the following classes:
mutable object as dictionary key, which would be otherwise very error prone and mutable object as dictionary key, which would be otherwise very error prone and
hard to track down. hard to track down.
.. deprecated:: 2.6
The :class:`MutableString` class has been removed in Python 3.0.
In addition to supporting the methods and operations of string and Unicode In addition to supporting the methods and operations of string and Unicode
objects (see section :ref:`string-methods`), :class:`UserString` instances objects (see section :ref:`string-methods`), :class:`UserString` instances
provide the following attribute: provide the following attribute:
......
...@@ -146,6 +146,9 @@ class MutableString(UserString, collections.MutableSequence): ...@@ -146,6 +146,9 @@ class MutableString(UserString, collections.MutableSequence):
A faster and better solution is to rewrite your program using lists.""" A faster and better solution is to rewrite your program using lists."""
def __init__(self, string=""): def __init__(self, string=""):
from warnings import warnpy3k
warnpy3k('the class UserString.MutableString has been removed in '
'Python 3.0', stacklevel=2)
self.data = string self.data = string
def __hash__(self): def __hash__(self):
raise TypeError, "unhashable type (it is mutable)" raise TypeError, "unhashable type (it is mutable)"
......
...@@ -219,6 +219,14 @@ class TestStdlibRemovals(unittest.TestCase): ...@@ -219,6 +219,14 @@ class TestStdlibRemovals(unittest.TestCase):
func = getattr(commands, name) func = getattr(commands, name)
self.assertRaises(DeprecationWarning, func, *([None]*arg_count)) self.assertRaises(DeprecationWarning, func, *([None]*arg_count))
def test_mutablestring_removal(self):
# UserString.MutableString has been removed in 3.0.
import UserString
with catch_warning(record=False):
warnings.filterwarnings("error", ".*MutableString",
DeprecationWarning)
self.assertRaises(DeprecationWarning, UserString.MutableString)
def test_main(): def test_main():
with catch_warning(record=True): with catch_warning(record=True):
......
...@@ -4,8 +4,8 @@ ...@@ -4,8 +4,8 @@
import string import string
from test import test_support, string_tests from test import test_support, string_tests
from UserString import UserString, MutableString from UserString import UserString, MutableString
import warnings
class UserStringTest( class UserStringTest(
string_tests.CommonTest, string_tests.CommonTest,
...@@ -135,7 +135,10 @@ class MutableStringTest(UserStringTest): ...@@ -135,7 +135,10 @@ class MutableStringTest(UserStringTest):
self.assertEqual(s, "") self.assertEqual(s, "")
def test_main(): def test_main():
test_support.run_unittest(UserStringTest, MutableStringTest) with test_support.catch_warning(record=False):
warnings.filterwarnings("ignore", ".*MutableString",
DeprecationWarning)
test_support.run_unittest(UserStringTest, MutableStringTest)
if __name__ == "__main__": if __name__ == "__main__":
test_main() test_main()
...@@ -63,6 +63,9 @@ Extension Modules ...@@ -63,6 +63,9 @@ Extension Modules
Library Library
------- -------
Issue #2877 - The UserString.MutableString class has been removed in
Python 3.0.
- Do not close external file objects passed to tarfile.open(mode='w:bz2') - Do not close external file objects passed to tarfile.open(mode='w:bz2')
when the TarFile is closed. when the TarFile is closed.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment