UserString.MutableString has been removed in Python 3.0.

Works on issue #2877. Thanks Quentin Gallet-Gilles for the patch.
This commit is contained in:
Brett Cannon 2008-05-29 05:08:50 +00:00
parent 5ec330cb2f
commit abb34fe9f3
5 changed files with 22 additions and 2 deletions

View File

@ -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:

View File

@ -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)"

View File

@ -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):

View File

@ -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):
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()

View File

@ -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.