summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAntoine Pitrou <solipsis@pitrou.net>2010-09-01 18:54:56 (GMT)
committerAntoine Pitrou <solipsis@pitrou.net>2010-09-01 18:54:56 (GMT)
commitfce7fd6426519a2897330c03da7eb889232bf681 (patch)
treeafe2ba5ce7020f102d7c5b5e568643b2e76199ad
parentb0fa831d1e073624d28aa403496f122e2f35697a (diff)
downloadcpython-fce7fd6426519a2897330c03da7eb889232bf681.zip
cpython-fce7fd6426519a2897330c03da7eb889232bf681.tar.gz
cpython-fce7fd6426519a2897330c03da7eb889232bf681.tar.bz2
Issue #9549: sys.setdefaultencoding() and PyUnicode_SetDefaultEncoding()
are now removed, since their effect was inexistent in 3.x (the default encoding is hardcoded to utf-8 and cannot be changed).
-rw-r--r--Doc/library/sys.rst12
-rw-r--r--Include/unicodeobject.h12
-rw-r--r--Lib/site.py25
-rw-r--r--Lib/test/test_site.py8
-rw-r--r--Misc/NEWS4
-rw-r--r--Misc/cheatsheet2
-rw-r--r--Objects/unicodeobject.c11
-rw-r--r--Python/sysmodule.c20
8 files changed, 4 insertions, 90 deletions
diff --git a/Doc/library/sys.rst b/Doc/library/sys.rst
index 79652ea..09dd844 100644
--- a/Doc/library/sys.rst
+++ b/Doc/library/sys.rst
@@ -712,18 +712,6 @@ always available.
:func:`setswitchinterval` instead.
-.. function:: setdefaultencoding(name)
-
- Set the current default string encoding used by the Unicode implementation. If
- *name* does not match any available encoding, :exc:`LookupError` is raised.
- This function is only intended to be used by the :mod:`site` module
- implementation and, where needed, by :mod:`sitecustomize`. Once used by the
- :mod:`site` module, it is removed from the :mod:`sys` module's namespace.
-
- .. Note that :mod:`site` is not imported if the :option:`-S` option is passed
- to the interpreter, in which case this function will remain available.
-
-
.. function:: setdlopenflags(n)
Set the flags used by the interpreter for :cfunc:`dlopen` calls, such as when
diff --git a/Include/unicodeobject.h b/Include/unicodeobject.h
index cd2f165..5fadb99 100644
--- a/Include/unicodeobject.h
+++ b/Include/unicodeobject.h
@@ -212,7 +212,6 @@ typedef PY_UNICODE_TYPE Py_UNICODE;
# define PyUnicode_Replace PyUnicodeUCS2_Replace
# define PyUnicode_Resize PyUnicodeUCS2_Resize
# define PyUnicode_RichCompare PyUnicodeUCS2_RichCompare
-# define PyUnicode_SetDefaultEncoding PyUnicodeUCS2_SetDefaultEncoding
# define PyUnicode_Split PyUnicodeUCS2_Split
# define PyUnicode_Splitlines PyUnicodeUCS2_Splitlines
# define PyUnicode_Tailmatch PyUnicodeUCS2_Tailmatch
@@ -295,7 +294,6 @@ typedef PY_UNICODE_TYPE Py_UNICODE;
# define PyUnicode_Replace PyUnicodeUCS4_Replace
# define PyUnicode_Resize PyUnicodeUCS4_Resize
# define PyUnicode_RichCompare PyUnicodeUCS4_RichCompare
-# define PyUnicode_SetDefaultEncoding PyUnicodeUCS4_SetDefaultEncoding
# define PyUnicode_Split PyUnicodeUCS4_Split
# define PyUnicode_Splitlines PyUnicodeUCS4_Splitlines
# define PyUnicode_Tailmatch PyUnicodeUCS4_Tailmatch
@@ -708,16 +706,6 @@ PyAPI_FUNC(char *) _PyUnicode_AsString(PyObject *unicode);
PyAPI_FUNC(const char*) PyUnicode_GetDefaultEncoding(void);
-/* Sets the currently active default encoding.
-
- Returns 0 on success, -1 in case of an error.
-
- */
-
-PyAPI_FUNC(int) PyUnicode_SetDefaultEncoding(
- const char *encoding /* Encoding name in standard form */
- );
-
/* --- Generic Codecs ----------------------------------------------------- */
/* Create a Unicode object by decoding the encoded string s of the
diff --git a/Lib/site.py b/Lib/site.py
index f108432..51516aa 100644
--- a/Lib/site.py
+++ b/Lib/site.py
@@ -460,25 +460,6 @@ def aliasmbcs():
encodings._cache[enc] = encodings._unknown
encodings.aliases.aliases[enc] = 'mbcs'
-def setencoding():
- """Set the string encoding used by the Unicode implementation. The
- default is 'ascii', but if you're willing to experiment, you can
- change this."""
- encoding = "ascii" # Default value set by _PyUnicode_Init()
- if 0:
- # Enable to support locale aware default string encodings.
- import locale
- loc = locale.getdefaultlocale()
- if loc[1]:
- encoding = loc[1]
- if 0:
- # Enable to switch off string to Unicode coercion and implicit
- # Unicode to string conversion.
- encoding = "undefined"
- if encoding != "ascii":
- # On Non-Unicode builds this will raise an AttributeError...
- sys.setdefaultencoding(encoding) # Needs Python Unicode build !
-
def execsitecustomize():
"""Run custom site specific code, if available."""
@@ -527,15 +508,9 @@ def main():
setcopyright()
sethelper()
aliasmbcs()
- setencoding()
execsitecustomize()
if ENABLE_USER_SITE:
execusercustomize()
- # Remove sys.setdefaultencoding() so that users cannot change the
- # encoding after initialization. The test for presence is needed when
- # this module is run as a script, because this code is executed twice.
- if hasattr(sys, "setdefaultencoding"):
- del sys.setdefaultencoding
main()
diff --git a/Lib/test/test_site.py b/Lib/test/test_site.py
index 013bfe1..8d03224 100644
--- a/Lib/test/test_site.py
+++ b/Lib/test/test_site.py
@@ -29,10 +29,6 @@ if not os.path.isdir(site.USER_SITE):
class HelperFunctionsTests(unittest.TestCase):
"""Tests for helper functions.
-
- The setting of the encoding (set using sys.setdefaultencoding) used by
- the Unicode implementation is not tested.
-
"""
def setUp(self):
@@ -333,10 +329,6 @@ class ImportSideEffectTests(unittest.TestCase):
else:
self.fail("did not alias mbcs")
- def test_setdefaultencoding_removed(self):
- # Make sure sys.setdefaultencoding is gone
- self.assertTrue(not hasattr(sys, "setdefaultencoding"))
-
def test_sitecustomize_executed(self):
# If sitecustomize is available, it should have been imported.
if "sitecustomize" not in sys.modules:
diff --git a/Misc/NEWS b/Misc/NEWS
index ceac14e..11b5913 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -12,6 +12,10 @@ What's New in Python 3.2 Alpha 2?
Core and Builtins
-----------------
+- Issue #9549: sys.setdefaultencoding() and PyUnicode_SetDefaultEncoding()
+ are now removed, since their effect was inexistent in 3.x (the default
+ encoding is hardcoded to utf-8 and cannot be changed).
+
- Issue #7415: PyUnicode_FromEncodedObject() now uses the new buffer API
properly. Patch by Stefan Behnel.
diff --git a/Misc/cheatsheet b/Misc/cheatsheet
index 8c5ddcb..ebbf1d4 100644
--- a/Misc/cheatsheet
+++ b/Misc/cheatsheet
@@ -1326,8 +1326,6 @@ setprofile(func) Sets a profile function for performance profiling.
exc_info() traceback return value to a local variable in a
function handling an exception will cause a circular
reference.
-setdefaultencoding Change default Unicode encoding - defaults to 7-bit ASCII.
-(encoding)
getrecursionlimit Retrieve maximum recursion depth.
()
setrecursionlimit Set maximum recursion depth. (Defaults to 1000.)
diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c
index 753b465..6012492 100644
--- a/Objects/unicodeobject.c
+++ b/Objects/unicodeobject.c
@@ -1784,17 +1784,6 @@ const char *PyUnicode_GetDefaultEncoding(void)
return unicode_default_encoding;
}
-int PyUnicode_SetDefaultEncoding(const char *encoding)
-{
- if (strcmp(encoding, unicode_default_encoding) != 0) {
- PyErr_Format(PyExc_ValueError,
- "Can only set default encoding to %s",
- unicode_default_encoding);
- return -1;
- }
- return 0;
-}
-
/* create or adjust a UnicodeDecodeError */
static void
make_decode_exception(PyObject **exceptionObject,
diff --git a/Python/sysmodule.c b/Python/sysmodule.c
index 013f5f1..90c165a 100644
--- a/Python/sysmodule.c
+++ b/Python/sysmodule.c
@@ -183,24 +183,6 @@ implementation."
);
static PyObject *
-sys_setdefaultencoding(PyObject *self, PyObject *args)
-{
- char *encoding;
- if (!PyArg_ParseTuple(args, "s:setdefaultencoding", &encoding))
- return NULL;
- if (PyUnicode_SetDefaultEncoding(encoding))
- return NULL;
- Py_INCREF(Py_None);
- return Py_None;
-}
-
-PyDoc_STRVAR(setdefaultencoding_doc,
-"setdefaultencoding(encoding)\n\
-\n\
-Set the current default string encoding used by the Unicode implementation."
-);
-
-static PyObject *
sys_getfilesystemencoding(PyObject *self)
{
if (Py_FileSystemDefaultEncoding)
@@ -1030,8 +1012,6 @@ static PyMethodDef sys_methods[] = {
#ifdef USE_MALLOPT
{"mdebug", sys_mdebug, METH_VARARGS},
#endif
- {"setdefaultencoding", sys_setdefaultencoding, METH_VARARGS,
- setdefaultencoding_doc},
{"setfilesystemencoding", sys_setfilesystemencoding, METH_VARARGS,
setfilesystemencoding_doc},
{"setcheckinterval", sys_setcheckinterval, METH_VARARGS,