[Python-checkins] r84687 - in python/branches/py3k: Doc/library/sys.rst Include/fileobject.h Lib/test/test_sys.py Misc/NEWS Python/bltinmodule.c Python/sysmodule.c
victor.stinner
python-checkins at python.org
Fri Sep 10 23:58:00 CEST 2010
Author: victor.stinner
Date: Fri Sep 10 23:57:59 2010
New Revision: 84687
Log:
Issue #9632: Remove sys.setfilesystemencoding() function: use PYTHONFSENCODING
environment variable to set the filesystem encoding at Python startup.
sys.setfilesystemencoding() creates inconsistencies because it is unable to
reencode all filenames in all objects.
Modified:
python/branches/py3k/Doc/library/sys.rst
python/branches/py3k/Include/fileobject.h
python/branches/py3k/Lib/test/test_sys.py
python/branches/py3k/Misc/NEWS
python/branches/py3k/Python/bltinmodule.c
python/branches/py3k/Python/sysmodule.c
Modified: python/branches/py3k/Doc/library/sys.rst
==============================================================================
--- python/branches/py3k/Doc/library/sys.rst (original)
+++ python/branches/py3k/Doc/library/sys.rst Fri Sep 10 23:57:59 2010
@@ -724,15 +724,6 @@
:file:`/usr/include/dlfcn.h` using the :program:`h2py` script. Availability:
Unix.
-.. function:: setfilesystemencoding(enc)
-
- Set the encoding used when converting Python strings to file names to *enc*.
- By default, Python tries to determine the encoding it should use automatically
- on Unix; on Windows, it avoids such conversion completely. This function can
- be used when Python's determination of the encoding needs to be overwritten,
- e.g. when not all file names on disk can be decoded using the encoding that
- Python had chosen.
-
.. function:: setprofile(profilefunc)
.. index::
Modified: python/branches/py3k/Include/fileobject.h
==============================================================================
--- python/branches/py3k/Include/fileobject.h (original)
+++ python/branches/py3k/Include/fileobject.h Fri Sep 10 23:57:59 2010
@@ -21,7 +21,6 @@
*/
PyAPI_DATA(const char *) Py_FileSystemDefaultEncoding;
PyAPI_DATA(int) Py_HasFileSystemDefaultEncoding;
-PyAPI_FUNC(int) _Py_SetFileSystemEncoding(PyObject *);
/* Internal API
Modified: python/branches/py3k/Lib/test/test_sys.py
==============================================================================
--- python/branches/py3k/Lib/test/test_sys.py (original)
+++ python/branches/py3k/Lib/test/test_sys.py Fri Sep 10 23:57:59 2010
@@ -630,17 +630,6 @@
env['PYTHONFSENCODING'] = encoding
self.check_fsencoding(get_fsencoding(env), encoding)
- def test_setfilesystemencoding(self):
- old = sys.getfilesystemencoding()
- try:
- sys.setfilesystemencoding("iso-8859-1")
- self.assertEqual(sys.getfilesystemencoding(), "iso-8859-1")
- finally:
- sys.setfilesystemencoding(old)
- try:
- self.assertRaises(LookupError, sys.setfilesystemencoding, "xxx")
- finally:
- sys.setfilesystemencoding(old)
class SizeofTest(unittest.TestCase):
Modified: python/branches/py3k/Misc/NEWS
==============================================================================
--- python/branches/py3k/Misc/NEWS (original)
+++ python/branches/py3k/Misc/NEWS Fri Sep 10 23:57:59 2010
@@ -29,6 +29,11 @@
Library
-------
+- Issue #9632: Remove sys.setfilesystemencoding() function: use
+ PYTHONFSENCODING environment variable to set the filesystem encoding at
+ Python startup. sys.setfilesystemencoding() creates inconsistencies because
+ it is unable to reencode all filenames in all objects.
+
- Issue #9410: Various optimizations to the pickle module, leading to
speedups up to 4x (depending on the benchmark). Mostly ported from
Unladen Swallow; initial patch by Alexandre Vassalotti.
Modified: python/branches/py3k/Python/bltinmodule.c
==============================================================================
--- python/branches/py3k/Python/bltinmodule.c (original)
+++ python/branches/py3k/Python/bltinmodule.c Fri Sep 10 23:57:59 2010
@@ -33,29 +33,6 @@
int Py_HasFileSystemDefaultEncoding = 1;
#endif
-int
-_Py_SetFileSystemEncoding(PyObject *s)
-{
- PyObject *defenc, *codec;
- if (!PyUnicode_Check(s)) {
- PyErr_BadInternalCall();
- return -1;
- }
- defenc = _PyUnicode_AsDefaultEncodedString(s, NULL);
- if (!defenc)
- return -1;
- codec = _PyCodec_Lookup(PyBytes_AsString(defenc));
- if (codec == NULL)
- return -1;
- Py_DECREF(codec);
- if (!Py_HasFileSystemDefaultEncoding && Py_FileSystemDefaultEncoding)
- /* A file system encoding was set at run-time */
- free((char*)Py_FileSystemDefaultEncoding);
- Py_FileSystemDefaultEncoding = strdup(PyBytes_AsString(defenc));
- Py_HasFileSystemDefaultEncoding = 0;
- return 0;
-}
-
static PyObject *
builtin___build_class__(PyObject *self, PyObject *args, PyObject *kwds)
{
Modified: python/branches/py3k/Python/sysmodule.c
==============================================================================
--- python/branches/py3k/Python/sysmodule.c (original)
+++ python/branches/py3k/Python/sysmodule.c Fri Sep 10 23:57:59 2010
@@ -199,25 +199,6 @@
);
static PyObject *
-sys_setfilesystemencoding(PyObject *self, PyObject *args)
-{
- PyObject *new_encoding;
- if (!PyArg_ParseTuple(args, "U:setfilesystemencoding", &new_encoding))
- return NULL;
- if (_Py_SetFileSystemEncoding(new_encoding))
- return NULL;
- Py_INCREF(Py_None);
- return Py_None;
-}
-
-PyDoc_STRVAR(setfilesystemencoding_doc,
-"setfilesystemencoding(string) -> None\n\
-\n\
-Set the encoding used to convert Unicode filenames in\n\
-operating system filenames."
-);
-
-static PyObject *
sys_intern(PyObject *self, PyObject *args)
{
PyObject *s;
@@ -1012,8 +993,6 @@
#ifdef USE_MALLOPT
{"mdebug", sys_mdebug, METH_VARARGS},
#endif
- {"setfilesystemencoding", sys_setfilesystemencoding, METH_VARARGS,
- setfilesystemencoding_doc},
{"setcheckinterval", sys_setcheckinterval, METH_VARARGS,
setcheckinterval_doc},
{"getcheckinterval", sys_getcheckinterval, METH_NOARGS,
More information about the Python-checkins
mailing list