53
51
# Python version 2.0 is (2, 0, 0, 'final', 0)." Additionally we use a
54
52
# releaselevel of 'dev' for unreleased under-development code.
56
version_info = (3, 1, 0, 'dev', 0)
54
version_info = (3, 2, 0, 'dev', 0)
59
57
def _format_version_tuple(version_info):
129
127
The use of intern() may defer breakage is but is not enough, the string
130
128
object should be secure against module reloading and during teardown.
132
is_py3 = sys.version_info > (3,)
135
132
old_ptr = ctypes.c_void_p.in_dll(ctypes.pythonapi,
136
133
"Py_FileSystemDefaultEncoding")
138
has_enc = ctypes.c_int.in_dll(ctypes.pythonapi,
139
"Py_HasFileSystemDefaultEncoding")
140
as_utf8 = ctypes.PYFUNCTYPE(
141
ctypes.POINTER(ctypes.c_char), ctypes.py_object)(
142
("PyUnicode_AsUTF8", ctypes.pythonapi))
134
has_enc = ctypes.c_int.in_dll(ctypes.pythonapi,
135
"Py_HasFileSystemDefaultEncoding")
136
as_utf8 = ctypes.PYFUNCTYPE(
137
ctypes.POINTER(ctypes.c_char), ctypes.py_object)(
138
("PyUnicode_AsUTF8", ctypes.pythonapi))
143
139
except (ImportError, ValueError):
144
140
return # No ctypes or not CPython implementation, do nothing
146
new_enc = sys.intern(new_enc)
147
enc_ptr = as_utf8(new_enc)
150
new_enc = intern(new_enc)
151
enc_ptr = ctypes.c_char_p(new_enc)
141
new_enc = sys.intern(new_enc)
142
enc_ptr = as_utf8(new_enc)
152
144
old_ptr.value = ctypes.cast(enc_ptr, ctypes.c_void_p).value
153
145
if sys.getfilesystemencoding() != new_enc:
154
146
raise RuntimeError("Failed to change the filesystem default encoding")