summaryrefslogtreecommitdiffstats
path: root/PC
diff options
context:
space:
mode:
Diffstat (limited to 'PC')
-rw-r--r--PC/_msi.c12
-rw-r--r--PC/_testconsole.c131
-rw-r--r--PC/bdist_wininst/install.c18
-rw-r--r--PC/clinic/_testconsole.c.h82
-rw-r--r--PC/clinic/msvcrtmodule.c.h67
-rw-r--r--PC/clinic/winreg.c.h135
-rw-r--r--PC/clinic/winsound.c.h51
-rw-r--r--PC/config.c4
-rw-r--r--PC/getpathp.c265
-rw-r--r--PC/icons/launcher.icnsbin0 -> 264476 bytes
-rw-r--r--PC/icons/launcher.icobin0 -> 87263 bytes
-rw-r--r--PC/icons/launcher.svg1
-rw-r--r--PC/icons/py.icnsbin0 -> 195977 bytes
-rw-r--r--PC/icons/py.icobin0 -> 75809 bytes
-rw-r--r--PC/icons/py.svg1
-rw-r--r--PC/icons/pyc.icnsbin0 -> 212125 bytes
-rw-r--r--PC/icons/pyc.icobin0 -> 78396 bytes
-rw-r--r--PC/icons/pyc.svg1
-rw-r--r--PC/icons/pyd.icnsbin0 -> 223199 bytes
-rw-r--r--PC/icons/pyd.icobin0 -> 83351 bytes
-rw-r--r--PC/icons/pyd.svg1
-rw-r--r--PC/icons/python.icnsbin0 -> 201868 bytes
-rw-r--r--PC/icons/python.icobin0 -> 77671 bytes
-rw-r--r--PC/icons/python.svg1
-rw-r--r--PC/icons/pythonw.icnsbin0 -> 193222 bytes
-rw-r--r--PC/icons/pythonw.icobin0 -> 76102 bytes
-rw-r--r--PC/icons/pythonw.svg1
-rw-r--r--PC/icons/setup.icnsbin0 -> 220699 bytes
-rw-r--r--PC/icons/setup.icobin0 -> 78328 bytes
-rw-r--r--PC/icons/setup.svg1
-rw-r--r--PC/launcher.c33
-rw-r--r--PC/launcher.icobin19790 -> 0 bytes
-rw-r--r--PC/msvcrtmodule.c34
-rw-r--r--PC/py.icobin19790 -> 0 bytes
-rw-r--r--PC/pyc.icobin19790 -> 0 bytes
-rw-r--r--PC/pycon.icobin19790 -> 0 bytes
-rw-r--r--PC/pyconfig.h92
-rw-r--r--PC/pylauncher.rc10
-rw-r--r--PC/python.manifest7
-rw-r--r--PC/python3.def1419
-rw-r--r--PC/python_exe.rc2
-rw-r--r--PC/pythonw_exe.rc49
-rw-r--r--PC/testpy.py4
-rw-r--r--PC/winreg.c40
-rw-r--r--PC/winsound.c74
45 files changed, 1488 insertions, 1048 deletions
diff --git a/PC/_msi.c b/PC/_msi.c
index 9e7e36d..789b04f 100644
--- a/PC/_msi.c
+++ b/PC/_msi.c
@@ -1046,12 +1046,12 @@ PyInit__msi(void)
if (m == NULL)
return NULL;
- PyModule_AddIntConstant(m, "MSIDBOPEN_CREATEDIRECT", (int)MSIDBOPEN_CREATEDIRECT);
- PyModule_AddIntConstant(m, "MSIDBOPEN_CREATE", (int)MSIDBOPEN_CREATE);
- PyModule_AddIntConstant(m, "MSIDBOPEN_DIRECT", (int)MSIDBOPEN_DIRECT);
- PyModule_AddIntConstant(m, "MSIDBOPEN_READONLY", (int)MSIDBOPEN_READONLY);
- PyModule_AddIntConstant(m, "MSIDBOPEN_TRANSACT", (int)MSIDBOPEN_TRANSACT);
- PyModule_AddIntConstant(m, "MSIDBOPEN_PATCHFILE", (int)MSIDBOPEN_PATCHFILE);
+ PyModule_AddIntConstant(m, "MSIDBOPEN_CREATEDIRECT", (long)MSIDBOPEN_CREATEDIRECT);
+ PyModule_AddIntConstant(m, "MSIDBOPEN_CREATE", (long)MSIDBOPEN_CREATE);
+ PyModule_AddIntConstant(m, "MSIDBOPEN_DIRECT", (long)MSIDBOPEN_DIRECT);
+ PyModule_AddIntConstant(m, "MSIDBOPEN_READONLY", (long)MSIDBOPEN_READONLY);
+ PyModule_AddIntConstant(m, "MSIDBOPEN_TRANSACT", (long)MSIDBOPEN_TRANSACT);
+ PyModule_AddIntConstant(m, "MSIDBOPEN_PATCHFILE", (long)MSIDBOPEN_PATCHFILE);
PyModule_AddIntMacro(m, MSICOLINFO_NAMES);
PyModule_AddIntMacro(m, MSICOLINFO_TYPES);
diff --git a/PC/_testconsole.c b/PC/_testconsole.c
new file mode 100644
index 0000000..1c93679
--- /dev/null
+++ b/PC/_testconsole.c
@@ -0,0 +1,131 @@
+
+/* Testing module for multi-phase initialization of extension modules (PEP 489)
+ */
+
+#include "Python.h"
+
+#ifdef MS_WINDOWS
+
+#include "..\modules\_io\_iomodule.h"
+
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#include <fcntl.h>
+
+ /* The full definition is in iomodule. We reproduce
+ enough here to get the handle, which is all we want. */
+typedef struct {
+ PyObject_HEAD
+ HANDLE handle;
+} winconsoleio;
+
+
+static int execfunc(PyObject *m)
+{
+ return 0;
+}
+
+PyModuleDef_Slot testconsole_slots[] = {
+ {Py_mod_exec, execfunc},
+ {0, NULL},
+};
+
+/*[clinic input]
+module _testconsole
+
+_testconsole.write_input
+ file: object
+ s: PyBytesObject
+
+Writes UTF-16-LE encoded bytes to the console as if typed by a user.
+[clinic start generated code]*/
+
+static PyObject *
+_testconsole_write_input_impl(PyObject *module, PyObject *file,
+ PyBytesObject *s)
+/*[clinic end generated code: output=48f9563db34aedb3 input=4c774f2d05770bc6]*/
+{
+ INPUT_RECORD *rec = NULL;
+
+ if (!PyWindowsConsoleIO_Check(file)) {
+ PyErr_SetString(PyExc_TypeError, "expected raw console object");
+ return NULL;
+ }
+
+ const wchar_t *p = (const wchar_t *)PyBytes_AS_STRING(s);
+ DWORD size = (DWORD)PyBytes_GET_SIZE(s) / sizeof(wchar_t);
+
+ rec = (INPUT_RECORD*)PyMem_Malloc(sizeof(INPUT_RECORD) * size);
+ if (!rec)
+ goto error;
+ memset(rec, 0, sizeof(INPUT_RECORD) * size);
+
+ INPUT_RECORD *prec = rec;
+ for (DWORD i = 0; i < size; ++i, ++p, ++prec) {
+ prec->EventType = KEY_EVENT;
+ prec->Event.KeyEvent.bKeyDown = TRUE;
+ prec->Event.KeyEvent.wRepeatCount = 10;
+ prec->Event.KeyEvent.uChar.UnicodeChar = *p;
+ }
+
+ HANDLE hInput = ((winconsoleio*)file)->handle;
+ DWORD total = 0;
+ while (total < size) {
+ DWORD wrote;
+ if (!WriteConsoleInputW(hInput, &rec[total], (size - total), &wrote)) {
+ PyErr_SetFromWindowsErr(0);
+ goto error;
+ }
+ total += wrote;
+ }
+
+ PyMem_Free((void*)rec);
+
+ Py_RETURN_NONE;
+error:
+ if (rec)
+ PyMem_Free((void*)rec);
+ return NULL;
+}
+
+/*[clinic input]
+_testconsole.read_output
+ file: object
+
+Reads a str from the console as written to stdout.
+[clinic start generated code]*/
+
+static PyObject *
+_testconsole_read_output_impl(PyObject *module, PyObject *file)
+/*[clinic end generated code: output=876310d81a73e6d2 input=b3521f64b1b558e3]*/
+{
+ Py_RETURN_NONE;
+}
+
+#include "clinic\_testconsole.c.h"
+
+PyMethodDef testconsole_methods[] = {
+ _TESTCONSOLE_WRITE_INPUT_METHODDEF
+ _TESTCONSOLE_READ_OUTPUT_METHODDEF
+ {NULL, NULL}
+};
+
+static PyModuleDef testconsole_def = {
+ PyModuleDef_HEAD_INIT, /* m_base */
+ "_testconsole", /* m_name */
+ PyDoc_STR("Test module for the Windows console"), /* m_doc */
+ 0, /* m_size */
+ testconsole_methods, /* m_methods */
+ testconsole_slots, /* m_slots */
+ NULL, /* m_traverse */
+ NULL, /* m_clear */
+ NULL, /* m_free */
+};
+
+PyMODINIT_FUNC
+PyInit__testconsole(PyObject *spec)
+{
+ return PyModuleDef_Init(&testconsole_def);
+}
+
+#endif /* MS_WINDOWS */
diff --git a/PC/bdist_wininst/install.c b/PC/bdist_wininst/install.c
index 60bee30..fd977f5 100644
--- a/PC/bdist_wininst/install.c
+++ b/PC/bdist_wininst/install.c
@@ -718,7 +718,7 @@ static int prepare_script_environment(HINSTANCE hPython)
* 1 if the Python-dll does not export the functions we need
* 2 if no install-script is specified in pathname
* 3 if the install-script file could not be opened
- * the return value of PyRun_SimpleString() otherwise,
+ * the return value of PyRun_SimpleString() or Py_FinalizeEx() otherwise,
* which is 0 if everything is ok, -1 if an exception had occurred
* in the install-script.
*/
@@ -731,7 +731,7 @@ do_run_installscript(HINSTANCE hPython, char *pathname, int argc, char **argv)
DECLPROC(hPython, void, Py_Initialize, (void));
DECLPROC(hPython, int, PySys_SetArgv, (int, wchar_t **));
DECLPROC(hPython, int, PyRun_SimpleString, (char *));
- DECLPROC(hPython, void, Py_Finalize, (void));
+ DECLPROC(hPython, int, Py_FinalizeEx, (void));
DECLPROC(hPython, PyObject *, Py_BuildValue, (char *, ...));
DECLPROC(hPython, PyObject *, PyCFunction_New,
(PyMethodDef *, PyObject *));
@@ -739,7 +739,7 @@ do_run_installscript(HINSTANCE hPython, char *pathname, int argc, char **argv)
DECLPROC(hPython, PyObject *, PyErr_Format, (PyObject *, char *));
if (!Py_Initialize || !PySys_SetArgv
- || !PyRun_SimpleString || !Py_Finalize)
+ || !PyRun_SimpleString || !Py_FinalizeEx)
return 1;
if (!Py_BuildValue || !PyArg_ParseTuple || !PyErr_Format)
@@ -786,7 +786,9 @@ do_run_installscript(HINSTANCE hPython, char *pathname, int argc, char **argv)
}
}
}
- Py_Finalize();
+ if (Py_FinalizeEx() < 0) {
+ result = -1;
+ }
close(fh);
return result;
@@ -848,11 +850,11 @@ static int do_run_simple_script(HINSTANCE hPython, char *script)
int rc;
DECLPROC(hPython, void, Py_Initialize, (void));
DECLPROC(hPython, void, Py_SetProgramName, (wchar_t *));
- DECLPROC(hPython, void, Py_Finalize, (void));
+ DECLPROC(hPython, int, Py_FinalizeEx, (void));
DECLPROC(hPython, int, PyRun_SimpleString, (char *));
DECLPROC(hPython, void, PyErr_Print, (void));
- if (!Py_Initialize || !Py_SetProgramName || !Py_Finalize ||
+ if (!Py_Initialize || !Py_SetProgramName || !Py_FinalizeEx ||
!PyRun_SimpleString || !PyErr_Print)
return -1;
@@ -862,7 +864,9 @@ static int do_run_simple_script(HINSTANCE hPython, char *script)
rc = PyRun_SimpleString(script);
if (rc)
PyErr_Print();
- Py_Finalize();
+ if (Py_FinalizeEx() < 0) {
+ rc = -1;
+ }
return rc;
}
diff --git a/PC/clinic/_testconsole.c.h b/PC/clinic/_testconsole.c.h
new file mode 100644
index 0000000..93860cf
--- /dev/null
+++ b/PC/clinic/_testconsole.c.h
@@ -0,0 +1,82 @@
+/*[clinic input]
+preserve
+[clinic start generated code]*/
+
+#if defined(MS_WINDOWS)
+
+PyDoc_STRVAR(_testconsole_write_input__doc__,
+"write_input($module, /, file, s)\n"
+"--\n"
+"\n"
+"Writes UTF-16-LE encoded bytes to the console as if typed by a user.");
+
+#define _TESTCONSOLE_WRITE_INPUT_METHODDEF \
+ {"write_input", (PyCFunction)_testconsole_write_input, METH_FASTCALL, _testconsole_write_input__doc__},
+
+static PyObject *
+_testconsole_write_input_impl(PyObject *module, PyObject *file,
+ PyBytesObject *s);
+
+static PyObject *
+_testconsole_write_input(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
+{
+ PyObject *return_value = NULL;
+ static const char * const _keywords[] = {"file", "s", NULL};
+ static _PyArg_Parser _parser = {"OS:write_input", _keywords, 0};
+ PyObject *file;
+ PyBytesObject *s;
+
+ if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
+ &file, &s)) {
+ goto exit;
+ }
+ return_value = _testconsole_write_input_impl(module, file, s);
+
+exit:
+ return return_value;
+}
+
+#endif /* defined(MS_WINDOWS) */
+
+#if defined(MS_WINDOWS)
+
+PyDoc_STRVAR(_testconsole_read_output__doc__,
+"read_output($module, /, file)\n"
+"--\n"
+"\n"
+"Reads a str from the console as written to stdout.");
+
+#define _TESTCONSOLE_READ_OUTPUT_METHODDEF \
+ {"read_output", (PyCFunction)_testconsole_read_output, METH_FASTCALL, _testconsole_read_output__doc__},
+
+static PyObject *
+_testconsole_read_output_impl(PyObject *module, PyObject *file);
+
+static PyObject *
+_testconsole_read_output(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
+{
+ PyObject *return_value = NULL;
+ static const char * const _keywords[] = {"file", NULL};
+ static _PyArg_Parser _parser = {"O:read_output", _keywords, 0};
+ PyObject *file;
+
+ if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
+ &file)) {
+ goto exit;
+ }
+ return_value = _testconsole_read_output_impl(module, file);
+
+exit:
+ return return_value;
+}
+
+#endif /* defined(MS_WINDOWS) */
+
+#ifndef _TESTCONSOLE_WRITE_INPUT_METHODDEF
+ #define _TESTCONSOLE_WRITE_INPUT_METHODDEF
+#endif /* !defined(_TESTCONSOLE_WRITE_INPUT_METHODDEF) */
+
+#ifndef _TESTCONSOLE_READ_OUTPUT_METHODDEF
+ #define _TESTCONSOLE_READ_OUTPUT_METHODDEF
+#endif /* !defined(_TESTCONSOLE_READ_OUTPUT_METHODDEF) */
+/*[clinic end generated code: output=3a8dc0c421807c41 input=a9049054013a1b77]*/
diff --git a/PC/clinic/msvcrtmodule.c.h b/PC/clinic/msvcrtmodule.c.h
index e7a72c4..6935cad 100644
--- a/PC/clinic/msvcrtmodule.c.h
+++ b/PC/clinic/msvcrtmodule.c.h
@@ -51,8 +51,9 @@ msvcrt_locking(PyObject *module, PyObject *args)
long nbytes;
if (!PyArg_ParseTuple(args, "iil:locking",
- &fd, &mode, &nbytes))
+ &fd, &mode, &nbytes)) {
goto exit;
+ }
return_value = msvcrt_locking_impl(module, fd, mode, nbytes);
exit:
@@ -85,11 +86,13 @@ msvcrt_setmode(PyObject *module, PyObject *args)
long _return_value;
if (!PyArg_ParseTuple(args, "ii:setmode",
- &fd, &flags))
+ &fd, &flags)) {
goto exit;
+ }
_return_value = msvcrt_setmode_impl(module, fd, flags);
- if ((_return_value == -1) && PyErr_Occurred())
+ if ((_return_value == -1) && PyErr_Occurred()) {
goto exit;
+ }
return_value = PyLong_FromLong(_return_value);
exit:
@@ -110,22 +113,24 @@ PyDoc_STRVAR(msvcrt_open_osfhandle__doc__,
{"open_osfhandle", (PyCFunction)msvcrt_open_osfhandle, METH_VARARGS, msvcrt_open_osfhandle__doc__},
static long
-msvcrt_open_osfhandle_impl(PyObject *module, Py_intptr_t handle, int flags);
+msvcrt_open_osfhandle_impl(PyObject *module, intptr_t handle, int flags);
static PyObject *
msvcrt_open_osfhandle(PyObject *module, PyObject *args)
{
PyObject *return_value = NULL;
- Py_intptr_t handle;
+ intptr_t handle;
int flags;
long _return_value;
if (!PyArg_ParseTuple(args, ""_Py_PARSE_INTPTR"i:open_osfhandle",
- &handle, &flags))
+ &handle, &flags)) {
goto exit;
+ }
_return_value = msvcrt_open_osfhandle_impl(module, handle, flags);
- if ((_return_value == -1) && PyErr_Occurred())
+ if ((_return_value == -1) && PyErr_Occurred()) {
goto exit;
+ }
return_value = PyLong_FromLong(_return_value);
exit:
@@ -143,7 +148,7 @@ PyDoc_STRVAR(msvcrt_get_osfhandle__doc__,
#define MSVCRT_GET_OSFHANDLE_METHODDEF \
{"get_osfhandle", (PyCFunction)msvcrt_get_osfhandle, METH_O, msvcrt_get_osfhandle__doc__},
-static Py_intptr_t
+static intptr_t
msvcrt_get_osfhandle_impl(PyObject *module, int fd);
static PyObject *
@@ -151,13 +156,15 @@ msvcrt_get_osfhandle(PyObject *module, PyObject *arg)
{
PyObject *return_value = NULL;
int fd;
- Py_intptr_t _return_value;
+ intptr_t _return_value;
- if (!PyArg_Parse(arg, "i:get_osfhandle", &fd))
+ if (!PyArg_Parse(arg, "i:get_osfhandle", &fd)) {
goto exit;
+ }
_return_value = msvcrt_get_osfhandle_impl(module, fd);
- if ((_return_value == -1) && PyErr_Occurred())
+ if ((_return_value == -1) && PyErr_Occurred()) {
goto exit;
+ }
return_value = PyLong_FromVoidPtr((void *)_return_value);
exit:
@@ -183,8 +190,9 @@ msvcrt_kbhit(PyObject *module, PyObject *Py_UNUSED(ignored))
long _return_value;
_return_value = msvcrt_kbhit_impl(module);
- if ((_return_value == -1) && PyErr_Occurred())
+ if ((_return_value == -1) && PyErr_Occurred()) {
goto exit;
+ }
return_value = PyLong_FromLong(_return_value);
exit:
@@ -311,8 +319,9 @@ msvcrt_putch(PyObject *module, PyObject *arg)
PyObject *return_value = NULL;
char char_value;
- if (!PyArg_Parse(arg, "c:putch", &char_value))
+ if (!PyArg_Parse(arg, "c:putch", &char_value)) {
goto exit;
+ }
return_value = msvcrt_putch_impl(module, char_value);
exit:
@@ -337,8 +346,9 @@ msvcrt_putwch(PyObject *module, PyObject *arg)
PyObject *return_value = NULL;
int unicode_char;
- if (!PyArg_Parse(arg, "C:putwch", &unicode_char))
+ if (!PyArg_Parse(arg, "C:putwch", &unicode_char)) {
goto exit;
+ }
return_value = msvcrt_putwch_impl(module, unicode_char);
exit:
@@ -367,8 +377,9 @@ msvcrt_ungetch(PyObject *module, PyObject *arg)
PyObject *return_value = NULL;
char char_value;
- if (!PyArg_Parse(arg, "c:ungetch", &char_value))
+ if (!PyArg_Parse(arg, "c:ungetch", &char_value)) {
goto exit;
+ }
return_value = msvcrt_ungetch_impl(module, char_value);
exit:
@@ -393,8 +404,9 @@ msvcrt_ungetwch(PyObject *module, PyObject *arg)
PyObject *return_value = NULL;
int unicode_char;
- if (!PyArg_Parse(arg, "C:ungetwch", &unicode_char))
+ if (!PyArg_Parse(arg, "C:ungetwch", &unicode_char)) {
goto exit;
+ }
return_value = msvcrt_ungetwch_impl(module, unicode_char);
exit:
@@ -426,11 +438,13 @@ msvcrt_CrtSetReportFile(PyObject *module, PyObject *args)
long _return_value;
if (!PyArg_ParseTuple(args, "ii:CrtSetReportFile",
- &type, &file))
+ &type, &file)) {
goto exit;
+ }
_return_value = msvcrt_CrtSetReportFile_impl(module, type, file);
- if ((_return_value == -1) && PyErr_Occurred())
+ if ((_return_value == -1) && PyErr_Occurred()) {
goto exit;
+ }
return_value = PyLong_FromLong(_return_value);
exit:
@@ -464,11 +478,13 @@ msvcrt_CrtSetReportMode(PyObject *module, PyObject *args)
long _return_value;
if (!PyArg_ParseTuple(args, "ii:CrtSetReportMode",
- &type, &mode))
+ &type, &mode)) {
goto exit;
+ }
_return_value = msvcrt_CrtSetReportMode_impl(module, type, mode);
- if ((_return_value == -1) && PyErr_Occurred())
+ if ((_return_value == -1) && PyErr_Occurred()) {
goto exit;
+ }
return_value = PyLong_FromLong(_return_value);
exit:
@@ -500,11 +516,13 @@ msvcrt_set_error_mode(PyObject *module, PyObject *arg)
int mode;
long _return_value;
- if (!PyArg_Parse(arg, "i:set_error_mode", &mode))
+ if (!PyArg_Parse(arg, "i:set_error_mode", &mode)) {
goto exit;
+ }
_return_value = msvcrt_set_error_mode_impl(module, mode);
- if ((_return_value == -1) && PyErr_Occurred())
+ if ((_return_value == -1) && PyErr_Occurred()) {
goto exit;
+ }
return_value = PyLong_FromLong(_return_value);
exit:
@@ -531,8 +549,9 @@ msvcrt_SetErrorMode(PyObject *module, PyObject *arg)
PyObject *return_value = NULL;
unsigned int mode;
- if (!PyArg_Parse(arg, "I:SetErrorMode", &mode))
+ if (!PyArg_Parse(arg, "I:SetErrorMode", &mode)) {
goto exit;
+ }
return_value = msvcrt_SetErrorMode_impl(module, mode);
exit:
@@ -550,4 +569,4 @@ exit:
#ifndef MSVCRT_SET_ERROR_MODE_METHODDEF
#define MSVCRT_SET_ERROR_MODE_METHODDEF
#endif /* !defined(MSVCRT_SET_ERROR_MODE_METHODDEF) */
-/*[clinic end generated code: output=2a794c520d6ae887 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=ae04e2b50eef8b63 input=a9049054013a1b77]*/
diff --git a/PC/clinic/winreg.c.h b/PC/clinic/winreg.c.h
index f6ae2c0..c7d5b9e 100644
--- a/PC/clinic/winreg.c.h
+++ b/PC/clinic/winreg.c.h
@@ -77,24 +77,26 @@ PyDoc_STRVAR(winreg_HKEYType___exit____doc__,
"\n");
#define WINREG_HKEYTYPE___EXIT___METHODDEF \
- {"__exit__", (PyCFunction)winreg_HKEYType___exit__, METH_VARARGS|METH_KEYWORDS, winreg_HKEYType___exit____doc__},
+ {"__exit__", (PyCFunction)winreg_HKEYType___exit__, METH_FASTCALL, winreg_HKEYType___exit____doc__},
static PyObject *
winreg_HKEYType___exit___impl(PyHKEYObject *self, PyObject *exc_type,
PyObject *exc_value, PyObject *traceback);
static PyObject *
-winreg_HKEYType___exit__(PyHKEYObject *self, PyObject *args, PyObject *kwargs)
+winreg_HKEYType___exit__(PyHKEYObject *self, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
{
PyObject *return_value = NULL;
- static char *_keywords[] = {"exc_type", "exc_value", "traceback", NULL};
+ static const char * const _keywords[] = {"exc_type", "exc_value", "traceback", NULL};
+ static _PyArg_Parser _parser = {"OOO:__exit__", _keywords, 0};
PyObject *exc_type;
PyObject *exc_value;
PyObject *traceback;
- if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OOO:__exit__", _keywords,
- &exc_type, &exc_value, &traceback))
+ if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
+ &exc_type, &exc_value, &traceback)) {
goto exit;
+ }
return_value = winreg_HKEYType___exit___impl(self, exc_type, exc_value, traceback);
exit:
@@ -147,11 +149,13 @@ winreg_ConnectRegistry(PyObject *module, PyObject *args)
HKEY _return_value;
if (!PyArg_ParseTuple(args, "ZO&:ConnectRegistry",
- &computer_name, clinic_HKEY_converter, &key))
+ &computer_name, clinic_HKEY_converter, &key)) {
goto exit;
+ }
_return_value = winreg_ConnectRegistry_impl(module, computer_name, key);
- if (_return_value == NULL)
+ if (_return_value == NULL) {
goto exit;
+ }
return_value = PyHKEY_FromHKEY(_return_value);
exit:
@@ -192,11 +196,13 @@ winreg_CreateKey(PyObject *module, PyObject *args)
HKEY _return_value;
if (!PyArg_ParseTuple(args, "O&Z:CreateKey",
- clinic_HKEY_converter, &key, &sub_key))
+ clinic_HKEY_converter, &key, &sub_key)) {
goto exit;
+ }
_return_value = winreg_CreateKey_impl(module, key, sub_key);
- if (_return_value == NULL)
+ if (_return_value == NULL) {
goto exit;
+ }
return_value = PyHKEY_FromHKEY(_return_value);
exit:
@@ -229,29 +235,32 @@ PyDoc_STRVAR(winreg_CreateKeyEx__doc__,
"If the function fails, an OSError exception is raised.");
#define WINREG_CREATEKEYEX_METHODDEF \
- {"CreateKeyEx", (PyCFunction)winreg_CreateKeyEx, METH_VARARGS|METH_KEYWORDS, winreg_CreateKeyEx__doc__},
+ {"CreateKeyEx", (PyCFunction)winreg_CreateKeyEx, METH_FASTCALL, winreg_CreateKeyEx__doc__},
static HKEY
winreg_CreateKeyEx_impl(PyObject *module, HKEY key, Py_UNICODE *sub_key,
int reserved, REGSAM access);
static PyObject *
-winreg_CreateKeyEx(PyObject *module, PyObject *args, PyObject *kwargs)
+winreg_CreateKeyEx(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
{
PyObject *return_value = NULL;
- static char *_keywords[] = {"key", "sub_key", "reserved", "access", NULL};
+ static const char * const _keywords[] = {"key", "sub_key", "reserved", "access", NULL};
+ static _PyArg_Parser _parser = {"O&Z|ii:CreateKeyEx", _keywords, 0};
HKEY key;
Py_UNICODE *sub_key;
int reserved = 0;
REGSAM access = KEY_WRITE;
HKEY _return_value;
- if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O&Z|ii:CreateKeyEx", _keywords,
- clinic_HKEY_converter, &key, &sub_key, &reserved, &access))
+ if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
+ clinic_HKEY_converter, &key, &sub_key, &reserved, &access)) {
goto exit;
+ }
_return_value = winreg_CreateKeyEx_impl(module, key, sub_key, reserved, access);
- if (_return_value == NULL)
+ if (_return_value == NULL) {
goto exit;
+ }
return_value = PyHKEY_FromHKEY(_return_value);
exit:
@@ -290,8 +299,9 @@ winreg_DeleteKey(PyObject *module, PyObject *args)
Py_UNICODE *sub_key;
if (!PyArg_ParseTuple(args, "O&u:DeleteKey",
- clinic_HKEY_converter, &key, &sub_key))
+ clinic_HKEY_converter, &key, &sub_key)) {
goto exit;
+ }
return_value = winreg_DeleteKey_impl(module, key, sub_key);
exit:
@@ -324,25 +334,27 @@ PyDoc_STRVAR(winreg_DeleteKeyEx__doc__,
"On unsupported Windows versions, NotImplementedError is raised.");
#define WINREG_DELETEKEYEX_METHODDEF \
- {"DeleteKeyEx", (PyCFunction)winreg_DeleteKeyEx, METH_VARARGS|METH_KEYWORDS, winreg_DeleteKeyEx__doc__},
+ {"DeleteKeyEx", (PyCFunction)winreg_DeleteKeyEx, METH_FASTCALL, winreg_DeleteKeyEx__doc__},
static PyObject *
winreg_DeleteKeyEx_impl(PyObject *module, HKEY key, Py_UNICODE *sub_key,
REGSAM access, int reserved);
static PyObject *
-winreg_DeleteKeyEx(PyObject *module, PyObject *args, PyObject *kwargs)
+winreg_DeleteKeyEx(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
{
PyObject *return_value = NULL;
- static char *_keywords[] = {"key", "sub_key", "access", "reserved", NULL};
+ static const char * const _keywords[] = {"key", "sub_key", "access", "reserved", NULL};
+ static _PyArg_Parser _parser = {"O&u|ii:DeleteKeyEx", _keywords, 0};
HKEY key;
Py_UNICODE *sub_key;
REGSAM access = KEY_WOW64_64KEY;
int reserved = 0;
- if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O&u|ii:DeleteKeyEx", _keywords,
- clinic_HKEY_converter, &key, &sub_key, &access, &reserved))
+ if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
+ clinic_HKEY_converter, &key, &sub_key, &access, &reserved)) {
goto exit;
+ }
return_value = winreg_DeleteKeyEx_impl(module, key, sub_key, access, reserved);
exit:
@@ -374,8 +386,9 @@ winreg_DeleteValue(PyObject *module, PyObject *args)
Py_UNICODE *value;
if (!PyArg_ParseTuple(args, "O&Z:DeleteValue",
- clinic_HKEY_converter, &key, &value))
+ clinic_HKEY_converter, &key, &value)) {
goto exit;
+ }
return_value = winreg_DeleteValue_impl(module, key, value);
exit:
@@ -411,8 +424,9 @@ winreg_EnumKey(PyObject *module, PyObject *args)
int index;
if (!PyArg_ParseTuple(args, "O&i:EnumKey",
- clinic_HKEY_converter, &key, &index))
+ clinic_HKEY_converter, &key, &index)) {
goto exit;
+ }
return_value = winreg_EnumKey_impl(module, key, index);
exit:
@@ -457,8 +471,9 @@ winreg_EnumValue(PyObject *module, PyObject *args)
int index;
if (!PyArg_ParseTuple(args, "O&i:EnumValue",
- clinic_HKEY_converter, &key, &index))
+ clinic_HKEY_converter, &key, &index)) {
goto exit;
+ }
return_value = winreg_EnumValue_impl(module, key, index);
exit:
@@ -483,8 +498,9 @@ winreg_ExpandEnvironmentStrings(PyObject *module, PyObject *arg)
PyObject *return_value = NULL;
Py_UNICODE *string;
- if (!PyArg_Parse(arg, "u:ExpandEnvironmentStrings", &string))
+ if (!PyArg_Parse(arg, "u:ExpandEnvironmentStrings", &string)) {
goto exit;
+ }
return_value = winreg_ExpandEnvironmentStrings_impl(module, string);
exit:
@@ -522,8 +538,9 @@ winreg_FlushKey(PyObject *module, PyObject *arg)
PyObject *return_value = NULL;
HKEY key;
- if (!PyArg_Parse(arg, "O&:FlushKey", clinic_HKEY_converter, &key))
+ if (!PyArg_Parse(arg, "O&:FlushKey", clinic_HKEY_converter, &key)) {
goto exit;
+ }
return_value = winreg_FlushKey_impl(module, key);
exit:
@@ -574,8 +591,9 @@ winreg_LoadKey(PyObject *module, PyObject *args)
Py_UNICODE *file_name;
if (!PyArg_ParseTuple(args, "O&uu:LoadKey",
- clinic_HKEY_converter, &key, &sub_key, &file_name))
+ clinic_HKEY_converter, &key, &sub_key, &file_name)) {
goto exit;
+ }
return_value = winreg_LoadKey_impl(module, key, sub_key, file_name);
exit:
@@ -602,29 +620,32 @@ PyDoc_STRVAR(winreg_OpenKey__doc__,
"If the function fails, an OSError exception is raised.");
#define WINREG_OPENKEY_METHODDEF \
- {"OpenKey", (PyCFunction)winreg_OpenKey, METH_VARARGS|METH_KEYWORDS, winreg_OpenKey__doc__},
+ {"OpenKey", (PyCFunction)winreg_OpenKey, METH_FASTCALL, winreg_OpenKey__doc__},
static HKEY
winreg_OpenKey_impl(PyObject *module, HKEY key, Py_UNICODE *sub_key,
int reserved, REGSAM access);
static PyObject *
-winreg_OpenKey(PyObject *module, PyObject *args, PyObject *kwargs)
+winreg_OpenKey(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
{
PyObject *return_value = NULL;
- static char *_keywords[] = {"key", "sub_key", "reserved", "access", NULL};
+ static const char * const _keywords[] = {"key", "sub_key", "reserved", "access", NULL};
+ static _PyArg_Parser _parser = {"O&Z|ii:OpenKey", _keywords, 0};
HKEY key;
Py_UNICODE *sub_key;
int reserved = 0;
REGSAM access = KEY_READ;
HKEY _return_value;
- if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O&Z|ii:OpenKey", _keywords,
- clinic_HKEY_converter, &key, &sub_key, &reserved, &access))
+ if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
+ clinic_HKEY_converter, &key, &sub_key, &reserved, &access)) {
goto exit;
+ }
_return_value = winreg_OpenKey_impl(module, key, sub_key, reserved, access);
- if (_return_value == NULL)
+ if (_return_value == NULL) {
goto exit;
+ }
return_value = PyHKEY_FromHKEY(_return_value);
exit:
@@ -651,29 +672,32 @@ PyDoc_STRVAR(winreg_OpenKeyEx__doc__,
"If the function fails, an OSError exception is raised.");
#define WINREG_OPENKEYEX_METHODDEF \
- {"OpenKeyEx", (PyCFunction)winreg_OpenKeyEx, METH_VARARGS|METH_KEYWORDS, winreg_OpenKeyEx__doc__},
+ {"OpenKeyEx", (PyCFunction)winreg_OpenKeyEx, METH_FASTCALL, winreg_OpenKeyEx__doc__},
static HKEY
winreg_OpenKeyEx_impl(PyObject *module, HKEY key, Py_UNICODE *sub_key,
int reserved, REGSAM access);
static PyObject *
-winreg_OpenKeyEx(PyObject *module, PyObject *args, PyObject *kwargs)
+winreg_OpenKeyEx(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
{
PyObject *return_value = NULL;
- static char *_keywords[] = {"key", "sub_key", "reserved", "access", NULL};
+ static const char * const _keywords[] = {"key", "sub_key", "reserved", "access", NULL};
+ static _PyArg_Parser _parser = {"O&Z|ii:OpenKeyEx", _keywords, 0};
HKEY key;
Py_UNICODE *sub_key;
int reserved = 0;
REGSAM access = KEY_READ;
HKEY _return_value;
- if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O&Z|ii:OpenKeyEx", _keywords,
- clinic_HKEY_converter, &key, &sub_key, &reserved, &access))
+ if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
+ clinic_HKEY_converter, &key, &sub_key, &reserved, &access)) {
goto exit;
+ }
_return_value = winreg_OpenKeyEx_impl(module, key, sub_key, reserved, access);
- if (_return_value == NULL)
+ if (_return_value == NULL) {
goto exit;
+ }
return_value = PyHKEY_FromHKEY(_return_value);
exit:
@@ -707,8 +731,9 @@ winreg_QueryInfoKey(PyObject *module, PyObject *arg)
PyObject *return_value = NULL;
HKEY key;
- if (!PyArg_Parse(arg, "O&:QueryInfoKey", clinic_HKEY_converter, &key))
+ if (!PyArg_Parse(arg, "O&:QueryInfoKey", clinic_HKEY_converter, &key)) {
goto exit;
+ }
return_value = winreg_QueryInfoKey_impl(module, key);
exit:
@@ -749,8 +774,9 @@ winreg_QueryValue(PyObject *module, PyObject *args)
Py_UNICODE *sub_key;
if (!PyArg_ParseTuple(args, "O&Z:QueryValue",
- clinic_HKEY_converter, &key, &sub_key))
+ clinic_HKEY_converter, &key, &sub_key)) {
goto exit;
+ }
return_value = winreg_QueryValue_impl(module, key, sub_key);
exit:
@@ -787,8 +813,9 @@ winreg_QueryValueEx(PyObject *module, PyObject *args)
Py_UNICODE *name;
if (!PyArg_ParseTuple(args, "O&Z:QueryValueEx",
- clinic_HKEY_converter, &key, &name))
+ clinic_HKEY_converter, &key, &name)) {
goto exit;
+ }
return_value = winreg_QueryValueEx_impl(module, key, name);
exit:
@@ -830,8 +857,9 @@ winreg_SaveKey(PyObject *module, PyObject *args)
Py_UNICODE *file_name;
if (!PyArg_ParseTuple(args, "O&u:SaveKey",
- clinic_HKEY_converter, &key, &file_name))
+ clinic_HKEY_converter, &key, &file_name)) {
goto exit;
+ }
return_value = winreg_SaveKey_impl(module, key, file_name);
exit:
@@ -883,8 +911,9 @@ winreg_SetValue(PyObject *module, PyObject *args)
Py_ssize_clean_t value_length;
if (!PyArg_ParseTuple(args, "O&Zku#:SetValue",
- clinic_HKEY_converter, &key, &sub_key, &type, &value, &value_length))
+ clinic_HKEY_converter, &key, &sub_key, &type, &value, &value_length)) {
goto exit;
+ }
return_value = winreg_SetValue_impl(module, key, sub_key, type, value, value_length);
exit:
@@ -907,7 +936,7 @@ PyDoc_STRVAR(winreg_SetValueEx__doc__,
" An integer that specifies the type of the data, one of:\n"
" REG_BINARY -- Binary data in any form.\n"
" REG_DWORD -- A 32-bit number.\n"
-" REG_DWORD_LITTLE_ENDIAN -- A 32-bit number in little-endian format.\n"
+" REG_DWORD_LITTLE_ENDIAN -- A 32-bit number in little-endian format. Equivalent to REG_DWORD\n"
" REG_DWORD_BIG_ENDIAN -- A 32-bit number in big-endian format.\n"
" REG_EXPAND_SZ -- A null-terminated string that contains unexpanded\n"
" references to environment variables (for example,\n"
@@ -917,6 +946,8 @@ PyDoc_STRVAR(winreg_SetValueEx__doc__,
" by two null characters. Note that Python handles\n"
" this termination automatically.\n"
" REG_NONE -- No defined value type.\n"
+" REG_QWORD -- A 64-bit number.\n"
+" REG_QWORD_LITTLE_ENDIAN -- A 64-bit number in little-endian format. Equivalent to REG_QWORD.\n"
" REG_RESOURCE_LIST -- A device-driver resource list.\n"
" REG_SZ -- A null-terminated string.\n"
" value\n"
@@ -950,8 +981,9 @@ winreg_SetValueEx(PyObject *module, PyObject *args)
PyObject *value;
if (!PyArg_ParseTuple(args, "O&ZOkO:SetValueEx",
- clinic_HKEY_converter, &key, &value_name, &reserved, &type, &value))
+ clinic_HKEY_converter, &key, &value_name, &reserved, &type, &value)) {
goto exit;
+ }
return_value = winreg_SetValueEx_impl(module, key, value_name, reserved, type, value);
exit:
@@ -985,8 +1017,9 @@ winreg_DisableReflectionKey(PyObject *module, PyObject *arg)
PyObject *return_value = NULL;
HKEY key;
- if (!PyArg_Parse(arg, "O&:DisableReflectionKey", clinic_HKEY_converter, &key))
+ if (!PyArg_Parse(arg, "O&:DisableReflectionKey", clinic_HKEY_converter, &key)) {
goto exit;
+ }
return_value = winreg_DisableReflectionKey_impl(module, key);
exit:
@@ -1018,8 +1051,9 @@ winreg_EnableReflectionKey(PyObject *module, PyObject *arg)
PyObject *return_value = NULL;
HKEY key;
- if (!PyArg_Parse(arg, "O&:EnableReflectionKey", clinic_HKEY_converter, &key))
+ if (!PyArg_Parse(arg, "O&:EnableReflectionKey", clinic_HKEY_converter, &key)) {
goto exit;
+ }
return_value = winreg_EnableReflectionKey_impl(module, key);
exit:
@@ -1049,11 +1083,12 @@ winreg_QueryReflectionKey(PyObject *module, PyObject *arg)
PyObject *return_value = NULL;
HKEY key;
- if (!PyArg_Parse(arg, "O&:QueryReflectionKey", clinic_HKEY_converter, &key))
+ if (!PyArg_Parse(arg, "O&:QueryReflectionKey", clinic_HKEY_converter, &key)) {
goto exit;
+ }
return_value = winreg_QueryReflectionKey_impl(module, key);
exit:
return return_value;
}
-/*[clinic end generated code: output=7b8940a23f605ddc input=a9049054013a1b77]*/
+/*[clinic end generated code: output=16dd06be6e14b86e input=a9049054013a1b77]*/
diff --git a/PC/clinic/winsound.c.h b/PC/clinic/winsound.c.h
index b00b442..52d25b2 100644
--- a/PC/clinic/winsound.c.h
+++ b/PC/clinic/winsound.c.h
@@ -3,7 +3,7 @@ preserve
[clinic start generated code]*/
PyDoc_STRVAR(winsound_PlaySound__doc__,
-"PlaySound($module, sound, flags, /)\n"
+"PlaySound($module, /, sound, flags)\n"
"--\n"
"\n"
"A wrapper around the Windows PlaySound API.\n"
@@ -14,21 +14,24 @@ PyDoc_STRVAR(winsound_PlaySound__doc__,
" Flag values, ored together. See module documentation.");
#define WINSOUND_PLAYSOUND_METHODDEF \
- {"PlaySound", (PyCFunction)winsound_PlaySound, METH_VARARGS, winsound_PlaySound__doc__},
+ {"PlaySound", (PyCFunction)winsound_PlaySound, METH_FASTCALL, winsound_PlaySound__doc__},
static PyObject *
-winsound_PlaySound_impl(PyObject *module, Py_UNICODE *sound, int flags);
+winsound_PlaySound_impl(PyObject *module, PyObject *sound, int flags);
static PyObject *
-winsound_PlaySound(PyObject *module, PyObject *args)
+winsound_PlaySound(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
{
PyObject *return_value = NULL;
- Py_UNICODE *sound;
+ static const char * const _keywords[] = {"sound", "flags", NULL};
+ static _PyArg_Parser _parser = {"Oi:PlaySound", _keywords, 0};
+ PyObject *sound;
int flags;
- if (!PyArg_ParseTuple(args, "Zi:PlaySound",
- &sound, &flags))
+ if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
+ &sound, &flags)) {
goto exit;
+ }
return_value = winsound_PlaySound_impl(module, sound, flags);
exit:
@@ -36,7 +39,7 @@ exit:
}
PyDoc_STRVAR(winsound_Beep__doc__,
-"Beep($module, frequency, duration, /)\n"
+"Beep($module, /, frequency, duration)\n"
"--\n"
"\n"
"A wrapper around the Windows Beep API.\n"
@@ -48,21 +51,24 @@ PyDoc_STRVAR(winsound_Beep__doc__,
" How long the sound should play, in milliseconds.");
#define WINSOUND_BEEP_METHODDEF \
- {"Beep", (PyCFunction)winsound_Beep, METH_VARARGS, winsound_Beep__doc__},
+ {"Beep", (PyCFunction)winsound_Beep, METH_FASTCALL, winsound_Beep__doc__},
static PyObject *
winsound_Beep_impl(PyObject *module, int frequency, int duration);
static PyObject *
-winsound_Beep(PyObject *module, PyObject *args)
+winsound_Beep(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
{
PyObject *return_value = NULL;
+ static const char * const _keywords[] = {"frequency", "duration", NULL};
+ static _PyArg_Parser _parser = {"ii:Beep", _keywords, 0};
int frequency;
int duration;
- if (!PyArg_ParseTuple(args, "ii:Beep",
- &frequency, &duration))
+ if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
+ &frequency, &duration)) {
goto exit;
+ }
return_value = winsound_Beep_impl(module, frequency, duration);
exit:
@@ -70,7 +76,7 @@ exit:
}
PyDoc_STRVAR(winsound_MessageBeep__doc__,
-"MessageBeep($module, x=MB_OK, /)\n"
+"MessageBeep($module, /, type=MB_OK)\n"
"--\n"
"\n"
"Call Windows MessageBeep(x).\n"
@@ -78,23 +84,26 @@ PyDoc_STRVAR(winsound_MessageBeep__doc__,
"x defaults to MB_OK.");
#define WINSOUND_MESSAGEBEEP_METHODDEF \
- {"MessageBeep", (PyCFunction)winsound_MessageBeep, METH_VARARGS, winsound_MessageBeep__doc__},
+ {"MessageBeep", (PyCFunction)winsound_MessageBeep, METH_FASTCALL, winsound_MessageBeep__doc__},
static PyObject *
-winsound_MessageBeep_impl(PyObject *module, int x);
+winsound_MessageBeep_impl(PyObject *module, int type);
static PyObject *
-winsound_MessageBeep(PyObject *module, PyObject *args)
+winsound_MessageBeep(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
{
PyObject *return_value = NULL;
- int x = MB_OK;
+ static const char * const _keywords[] = {"type", NULL};
+ static _PyArg_Parser _parser = {"|i:MessageBeep", _keywords, 0};
+ int type = MB_OK;
- if (!PyArg_ParseTuple(args, "|i:MessageBeep",
- &x))
+ if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
+ &type)) {
goto exit;
- return_value = winsound_MessageBeep_impl(module, x);
+ }
+ return_value = winsound_MessageBeep_impl(module, type);
exit:
return return_value;
}
-/*[clinic end generated code: output=c0b290daf2330dc9 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=bfe16b2b8b490cb1 input=a9049054013a1b77]*/
diff --git a/PC/config.c b/PC/config.c
index 66bf458..43d9e20 100644
--- a/PC/config.c
+++ b/PC/config.c
@@ -23,6 +23,8 @@ extern PyObject* PyInit__signal(void);
extern PyObject* PyInit__sha1(void);
extern PyObject* PyInit__sha256(void);
extern PyObject* PyInit__sha512(void);
+extern PyObject* PyInit__sha3(void);
+extern PyObject* PyInit__blake2(void);
extern PyObject* PyInit_time(void);
extern PyObject* PyInit__thread(void);
#ifdef WIN32
@@ -96,6 +98,8 @@ struct _inittab _PyImport_Inittab[] = {
{"_sha1", PyInit__sha1},
{"_sha256", PyInit__sha256},
{"_sha512", PyInit__sha512},
+ {"_sha3", PyInit__sha3},
+ {"_blake2", PyInit__blake2},
{"time", PyInit_time},
#ifdef WITH_THREAD
{"_thread", PyInit__thread},
diff --git a/PC/getpathp.c b/PC/getpathp.c
index c7ddf1e..31f973e 100644
--- a/PC/getpathp.c
+++ b/PC/getpathp.c
@@ -6,7 +6,9 @@
PATH RULES FOR WINDOWS:
This describes how sys.path is formed on Windows. It describes the
functionality, not the implementation (ie, the order in which these
- are actually fetched is different)
+ are actually fetched is different). The presence of a python._pth or
+ pythonXY._pth file alongside the program overrides these rules - see
+ below.
* Python always adds an empty entry at the start, which corresponds
to the current directory.
@@ -23,9 +25,9 @@
* We attempt to locate the "Python Home" - if the PYTHONHOME env var
is set, we believe it. Otherwise, we use the path of our host .EXE's
- to try and locate our "landmark" (lib\\os.py) and deduce our home.
+ to try and locate one of our "landmarks" and deduce our home.
- If we DO have a Python Home: The relevant sub-directories (Lib,
- plat-win, etc) are based on the Python Home
+ DLLs, etc) are based on the Python Home
- If we DO NOT have a Python Home, the core Python Path is
loaded from the registry. This is the main PythonPath key,
and both HKLM and HKCU are combined to form the path)
@@ -33,7 +35,23 @@
* Iff - we can not locate the Python Home, have not had a PYTHONPATH
specified, and can't locate any Registry entries (ie, we have _nothing_
we can assume is a good path), a default path with relative entries is
- used (eg. .\Lib;.\plat-win, etc)
+ used (eg. .\Lib;.\DLLs, etc)
+
+
+ If a '._pth' file exists adjacent to the executable with the same base name
+ (e.g. python._pth adjacent to python.exe) or adjacent to the shared library
+ (e.g. python36._pth adjacent to python36.dll), it is used in preference to
+ the above process. The shared library file takes precedence over the
+ executable. The path file must contain a list of paths to add to sys.path,
+ one per line. Each path is relative to the directory containing the file.
+ Blank lines and comments beginning with '#' are permitted.
+
+ In the presence of this ._pth file, no other paths are added to the search
+ path, the registry finder is not enabled, site.py is not imported and
+ isolated mode is enabled. The site package can be enabled by including a
+ line reading "import site"; no other imports are recognized. Any invalid
+ entry (other than directories that do not exist) will result in immediate
+ termination of the program.
The end result of all this is:
@@ -52,7 +70,11 @@
some default, but relative, paths.
* An embedding application can use Py_SetPath() to override all of
- these authomatic path computations.
+ these automatic path computations.
+
+ * An install of Python can fully specify the contents of sys.path using
+ either a 'EXENAME._pth' or 'DLLNAME._pth' file, optionally including
+ "import site" to enable the site module.
---------------------------------------------------------------- */
@@ -61,10 +83,13 @@
#include "osdefs.h"
#include <wchar.h>
-#ifdef MS_WINDOWS
-#include <windows.h>
+#ifndef MS_WINDOWS
+#error getpathp.c should only be built on Windows
#endif
+#include <windows.h>
+#include <Shlwapi.h>
+
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif /* HAVE_SYS_TYPES_H */
@@ -122,6 +147,33 @@ reduce(wchar_t *dir)
dir[i] = '\0';
}
+static int
+change_ext(wchar_t *dest, const wchar_t *src, const wchar_t *ext)
+{
+ size_t src_len = wcsnlen_s(src, MAXPATHLEN+1);
+ size_t i = src_len;
+ if (i >= MAXPATHLEN+1)
+ Py_FatalError("buffer overflow in getpathp.c's reduce()");
+
+ while (i > 0 && src[i] != '.' && !is_sep(src[i]))
+ --i;
+
+ if (i == 0) {
+ dest[0] = '\0';
+ return -1;
+ }
+
+ if (is_sep(src[i]))
+ i = src_len;
+
+ if (wcsncpy_s(dest, MAXPATHLEN+1, src, i) ||
+ wcscat_s(dest, MAXPATHLEN+1, ext)) {
+ dest[0] = '\0';
+ return -1;
+ }
+
+ return 0;
+}
static int
exists(wchar_t *filename)
@@ -135,7 +187,7 @@ exists(wchar_t *filename)
static int
ismodule(wchar_t *filename, int update_filename) /* Is module -- check for .pyc/.pyo too */
{
- int n;
+ size_t n;
if (exists(filename))
return 1;
@@ -163,24 +215,30 @@ ismodule(wchar_t *filename, int update_filename) /* Is module -- check for .pyc/
than MAXPATHLEN characters at exit. If stuff is too long, only as much of
stuff as fits will be appended.
*/
+
+static int _PathCchCombineEx_Initialized = 0;
+typedef HRESULT(__stdcall *PPathCchCombineEx)(PWSTR pszPathOut, size_t cchPathOut, PCWSTR pszPathIn, PCWSTR pszMore, unsigned long dwFlags);
+static PPathCchCombineEx _PathCchCombineEx;
+
static void
join(wchar_t *buffer, const wchar_t *stuff)
{
- size_t n;
- if (is_sep(stuff[0]) ||
- (wcsnlen_s(stuff, 4) >= 3 && stuff[1] == ':' && is_sep(stuff[2]))) {
- if (wcscpy_s(buffer, MAXPATHLEN+1, stuff) != 0)
- Py_FatalError("buffer overflow in getpathp.c's join()");
- return;
+ if (_PathCchCombineEx_Initialized == 0) {
+ HMODULE pathapi = LoadLibraryW(L"api-ms-win-core-path-l1-1-0.dll");
+ if (pathapi)
+ _PathCchCombineEx = (PPathCchCombineEx)GetProcAddress(pathapi, "PathCchCombineEx");
+ else
+ _PathCchCombineEx = NULL;
+ _PathCchCombineEx_Initialized = 1;
}
- n = wcsnlen_s(buffer, MAXPATHLEN+1);
- if (n > 0 && !is_sep(buffer[n - 1]) && n < MAXPATHLEN) {
- buffer[n] = SEP;
- buffer[n + 1] = '\0';
+ if (_PathCchCombineEx) {
+ if (FAILED(_PathCchCombineEx(buffer, MAXPATHLEN+1, buffer, stuff, 0)))
+ Py_FatalError("buffer overflow in getpathp.c's join()");
+ } else {
+ if (!PathCombineW(buffer, buffer, stuff))
+ Py_FatalError("buffer overflow in getpathp.c's join()");
}
- if (wcscat_s(buffer, MAXPATHLEN+1, stuff) != 0)
- Py_FatalError("buffer overflow in getpathp.c's join()");
}
/* gotlandmark only called by search_for_prefix, which ensures
@@ -188,7 +246,7 @@ join(wchar_t *buffer, const wchar_t *stuff)
'landmark' can not overflow prefix if too long.
*/
static int
-gotlandmark(wchar_t *landmark)
+gotlandmark(const wchar_t *landmark)
{
int ok;
Py_ssize_t n = wcsnlen_s(prefix, MAXPATHLEN);
@@ -202,7 +260,7 @@ gotlandmark(wchar_t *landmark)
/* assumes argv0_path is MAXPATHLEN+1 bytes long, already \0 term'd.
assumption provided by only caller, calculate_path() */
static int
-search_for_prefix(wchar_t *argv0_path, wchar_t *landmark)
+search_for_prefix(wchar_t *argv0_path, const wchar_t *landmark)
{
/* Search from argv0_path, until landmark is found */
wcscpy_s(prefix, MAXPATHLEN + 1, argv0_path);
@@ -214,7 +272,6 @@ search_for_prefix(wchar_t *argv0_path, wchar_t *landmark)
return 0;
}
-#ifdef MS_WINDOWS
#ifdef Py_ENABLE_SHARED
/* a string loaded from the DLL at startup.*/
@@ -369,7 +426,6 @@ done:
return retval;
}
#endif /* Py_ENABLE_SHARED */
-#endif /* MS_WINDOWS */
static void
get_progpath(void)
@@ -378,7 +434,6 @@ get_progpath(void)
wchar_t *path = _wgetenv(L"PATH");
wchar_t *prog = Py_GetProgramName();
-#ifdef MS_WINDOWS
#ifdef Py_ENABLE_SHARED
extern HANDLE PyWin_DLLhModule;
/* static init of progpath ensures final char remains \0 */
@@ -390,7 +445,6 @@ get_progpath(void)
#endif
if (GetModuleFileNameW(NULL, progpath, MAXPATHLEN))
return;
-#endif
if (prog == NULL || *prog == '\0')
prog = L"python";
@@ -483,6 +537,81 @@ find_env_config_value(FILE * env_file, const wchar_t * key, wchar_t * value)
return result;
}
+static int
+read_pth_file(const wchar_t *path, wchar_t *prefix, int *isolated, int *nosite)
+{
+ FILE *sp_file = _Py_wfopen(path, L"r");
+ if (sp_file == NULL)
+ return -1;
+
+ wcscpy_s(prefix, MAXPATHLEN+1, path);
+ reduce(prefix);
+ *isolated = 1;
+ *nosite = 1;
+
+ size_t bufsiz = MAXPATHLEN;
+ size_t prefixlen = wcslen(prefix);
+
+ wchar_t *buf = (wchar_t*)PyMem_RawMalloc(bufsiz * sizeof(wchar_t));
+ buf[0] = '\0';
+
+ while (!feof(sp_file)) {
+ char line[MAXPATHLEN + 1];
+ char *p = fgets(line, MAXPATHLEN + 1, sp_file);
+ if (!p)
+ break;
+ if (*p == '\0' || *p == '#')
+ continue;
+ while (*++p) {
+ if (*p == '\r' || *p == '\n') {
+ *p = '\0';
+ break;
+ }
+ }
+
+ if (strcmp(line, "import site") == 0) {
+ *nosite = 0;
+ continue;
+ } else if (strncmp(line, "import ", 7) == 0) {
+ Py_FatalError("only 'import site' is supported in ._pth file");
+ }
+
+ DWORD wn = MultiByteToWideChar(CP_UTF8, 0, line, -1, NULL, 0);
+ wchar_t *wline = (wchar_t*)PyMem_RawMalloc((wn + 1) * sizeof(wchar_t));
+ wn = MultiByteToWideChar(CP_UTF8, 0, line, -1, wline, wn + 1);
+ wline[wn] = '\0';
+
+ while (wn + prefixlen + 4 > bufsiz) {
+ bufsiz += MAXPATHLEN;
+ buf = (wchar_t*)PyMem_RawRealloc(buf, (bufsiz + 1) * sizeof(wchar_t));
+ if (!buf) {
+ PyMem_RawFree(wline);
+ goto error;
+ }
+ }
+
+ if (buf[0])
+ wcscat_s(buf, bufsiz, L";");
+
+ wchar_t *b = &buf[wcslen(buf)];
+ wcscat_s(buf, bufsiz, prefix);
+ join(b, wline);
+
+ PyMem_RawFree(wline);
+ }
+
+ module_search_path = buf;
+
+ fclose(sp_file);
+ return 0;
+
+error:
+ PyMem_RawFree(buf);
+ fclose(sp_file);
+ return -1;
+}
+
+
static void
calculate_path(void)
{
@@ -492,32 +621,33 @@ calculate_path(void)
wchar_t *pythonhome = Py_GetPythonHome();
wchar_t *envpath = NULL;
-#ifdef MS_WINDOWS
int skiphome, skipdefault;
wchar_t *machinepath = NULL;
wchar_t *userpath = NULL;
wchar_t zip_path[MAXPATHLEN+1];
- int applocal = 0;
if (!Py_IgnoreEnvironmentFlag) {
envpath = _wgetenv(L"PYTHONPATH");
}
-#else
- char *_envpath = Py_GETENV("PYTHONPATH");
- wchar_t wenvpath[MAXPATHLEN+1];
- if (_envpath) {
- size_t r = mbstowcs(wenvpath, _envpath, MAXPATHLEN+1);
- envpath = wenvpath;
- if (r == (size_t)-1 || r >= MAXPATHLEN)
- envpath = NULL;
- }
-#endif
get_progpath();
/* progpath guaranteed \0 terminated in MAXPATH+1 bytes. */
wcscpy_s(argv0_path, MAXPATHLEN+1, progpath);
reduce(argv0_path);
+ /* Search for a sys.path file */
+ {
+ wchar_t spbuffer[MAXPATHLEN+1];
+
+ if ((dllpath[0] && !change_ext(spbuffer, dllpath, L"._pth") && exists(spbuffer)) ||
+ (progpath[0] && !change_ext(spbuffer, progpath, L"._pth") && exists(spbuffer))) {
+
+ if (!read_pth_file(spbuffer, prefix, &Py_IsolatedFlag, &Py_NoSiteFlag)) {
+ return;
+ }
+ }
+ }
+
/* Search for an environment configuration file, first in the
executable's directory and then in the parent directory.
If found, open it for use when searching for prefixes.
@@ -543,17 +673,6 @@ calculate_path(void)
}
}
if (env_file != NULL) {
- /* Look for an 'applocal' variable and, if true, ignore all registry
- * keys and environment variables, but retain the default paths
- * (DLLs, Lib) and the zip file. Setting pythonhome here suppresses
- * the search for LANDMARK below and overrides %PYTHONHOME%.
- */
- if (find_env_config_value(env_file, L"applocal", tmpbuffer) &&
- (applocal = (wcsicmp(tmpbuffer, L"true") == 0))) {
- envpath = NULL;
- pythonhome = argv0_path;
- }
-
/* Look for a 'home' variable and set argv0_path to it, if found */
if (find_env_config_value(env_file, L"home", tmpbuffer)) {
wcscpy_s(argv0_path, MAXPATHLEN+1, tmpbuffer);
@@ -563,8 +682,15 @@ calculate_path(void)
}
}
+ /* Calculate zip archive path from DLL or exe path */
+ change_ext(zip_path, dllpath[0] ? dllpath : progpath, L".zip");
+
if (pythonhome == NULL || *pythonhome == '\0') {
- if (search_for_prefix(argv0_path, LANDMARK))
+ if (zip_path[0] && exists(zip_path)) {
+ wcscpy_s(prefix, MAXPATHLEN+1, zip_path);
+ reduce(prefix);
+ pythonhome = prefix;
+ } else if (search_for_prefix(argv0_path, LANDMARK))
pythonhome = prefix;
else
pythonhome = NULL;
@@ -576,30 +702,15 @@ calculate_path(void)
envpath = NULL;
-#ifdef MS_WINDOWS
- /* Calculate zip archive path from DLL or exe path */
- if (wcscpy_s(zip_path, MAXPATHLEN+1, dllpath[0] ? dllpath : progpath))
- /* exceeded buffer length - ignore zip_path */
- zip_path[0] = '\0';
- else {
- wchar_t *dot = wcsrchr(zip_path, '.');
- if (!dot || wcscpy_s(dot, MAXPATHLEN+1 - (dot - zip_path), L".zip"))
- /* exceeded buffer length - ignore zip_path */
- zip_path[0] = L'\0';
- }
-
skiphome = pythonhome==NULL ? 0 : 1;
#ifdef Py_ENABLE_SHARED
- if (!applocal) {
- machinepath = getpythonregpath(HKEY_LOCAL_MACHINE, skiphome);
- userpath = getpythonregpath(HKEY_CURRENT_USER, skiphome);
- }
+ machinepath = getpythonregpath(HKEY_LOCAL_MACHINE, skiphome);
+ userpath = getpythonregpath(HKEY_CURRENT_USER, skiphome);
#endif
/* We only use the default relative PYTHONPATH if we havent
anything better to use! */
skipdefault = envpath!=NULL || pythonhome!=NULL || \
machinepath!=NULL || userpath!=NULL;
-#endif
/* We need to construct a path from the following parts.
(1) the PYTHONPATH environment variable, if set;
@@ -612,7 +723,6 @@ calculate_path(void)
Extra rules:
- If PYTHONHOME is set (in any way) item (3) is ignored.
- If registry values are used, (4) and (5) are ignored.
- - If applocal is set, (1), (3), and registry values are ignored
*/
/* Calculate size of return buffer */
@@ -629,13 +739,11 @@ calculate_path(void)
bufsz = 0;
bufsz += wcslen(PYTHONPATH) + 1;
bufsz += wcslen(argv0_path) + 1;
-#ifdef MS_WINDOWS
- if (!applocal && userpath)
+ if (userpath)
bufsz += wcslen(userpath) + 1;
- if (!applocal && machinepath)
+ if (machinepath)
bufsz += wcslen(machinepath) + 1;
bufsz += wcslen(zip_path) + 1;
-#endif
if (envpath != NULL)
bufsz += wcslen(envpath) + 1;
@@ -651,10 +759,8 @@ calculate_path(void)
fprintf(stderr, "Using default static path.\n");
module_search_path = PYTHONPATH;
}
-#ifdef MS_WINDOWS
PyMem_RawFree(machinepath);
PyMem_RawFree(userpath);
-#endif /* MS_WINDOWS */
return;
}
@@ -664,7 +770,6 @@ calculate_path(void)
buf = wcschr(buf, L'\0');
*buf++ = DELIM;
}
-#ifdef MS_WINDOWS
if (zip_path[0]) {
if (wcscpy_s(buf, bufsz - (buf - module_search_path), zip_path))
Py_FatalError("buffer overflow in getpathp.c's calculate_path()");
@@ -692,15 +797,7 @@ calculate_path(void)
buf = wcschr(buf, L'\0');
*buf++ = DELIM;
}
- }
-#else
- if (pythonhome == NULL) {
- wcscpy(buf, PYTHONPATH);
- buf = wcschr(buf, L'\0');
- *buf++ = DELIM;
- }
-#endif /* MS_WINDOWS */
- else {
+ } else {
wchar_t *p = PYTHONPATH;
wchar_t *q;
size_t n;
diff --git a/PC/icons/launcher.icns b/PC/icons/launcher.icns
new file mode 100644
index 0000000..59a917f
--- /dev/null
+++ b/PC/icons/launcher.icns
Binary files differ
diff --git a/PC/icons/launcher.ico b/PC/icons/launcher.ico
new file mode 100644
index 0000000..c4e3c69
--- /dev/null
+++ b/PC/icons/launcher.ico
Binary files differ
diff --git a/PC/icons/launcher.svg b/PC/icons/launcher.svg
new file mode 100644
index 0000000..0590b0d
--- /dev/null
+++ b/PC/icons/launcher.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><style>.icon-canvas-transparent{opacity:0;fill:#f6f6f6}.icon-vs-out{fill:#f6f6f6}.icon-white{fill:#fff}.icon-vso-bg{fill:#656565}.icon-visualstudio-online{fill:#007acc}.graph-lightgrey{fill:#dfdfdf}.st0{fill:#0078d7}.st1{fill:#fff}.st2{fill:url(#path1948_1_)}.st3{fill:url(#path1950_1_)}</style><path class="icon-canvas-transparent" d="M32 32H0V0h32v32z" id="canvas"/><g id="iconBg"><path class="icon-visualstudio-online" d="M30 5H5V3h25v2z"/><path class="icon-vso-bg" d="M29.972 26.972H5.029V5h.942v21.028h23.057V5h.943v21.972z"/><path class="icon-vs-out" d="M29 5v21H6V5h23z"/><path class="icon-white" d="M29.141 4l.429.429-.14.142-.43-.43-.43.43-.14-.142.429-.429-.429-.429.141-.142.429.43.43-.43.141.142-.43.429zM27.6 3.4h-1.2v1.2h1.2V3.4zm-1 .2h.8v.8h-.8v-.8zm-1.139.8h-1v.2h1v-.2z"/><path class="graph-lightgrey" d="M6 5h23v2H6z"/></g><g id="iconFg"><path class="st0" d="M4.5 23v6"/><path class="st1" d="M11.429 13.019a19.88 19.88 0 0 0 .071-1.645c0-4.223-1.329-8.165-3.556-10.545L7.17 0H5.83l-.774.829C2.829 3.209 1.5 7.151 1.5 11.374c0 .453.023.9.053 1.345C.887 13.472.357 14.438 0 15.533v6.603L.229 23H3v7h2v2h3v-1h2v-8h2.772l.394-1.488c.222-.842.335-1.714.335-2.592-.001-2.419-.803-4.534-2.072-5.901z"/><path class="st0" d="M6.5 22v9M8.5 23v7"/><path class="icon-visualstudio-online" d="M5 29H4v-6h1v6zm2-6H6v8h1v-8zm2 0H8v7h1v-7z"/><path class="icon-vso-bg" d="M10.381 13.38c.07-.658.119-1.325.119-2.006 0-3.975-1.229-7.662-3.286-9.862L6.5.748l-.714.763C3.729 3.712 2.5 7.399 2.5 11.374c0 .681.049 1.348.119 2.006C1.339 14.521.5 16.552.5 18.92c0 .793.102 1.578.302 2.336L.999 22h1.966l.072-.922c.081-1.046.471-1.966.993-2.503.487 1.019 1.07 1.929 1.756 2.662L6.5 22l.714-.763c.686-.733 1.269-1.643 1.756-2.662.522.537.912 1.457.993 2.503l.072.922h1.966l.197-.744c.2-.758.302-1.543.302-2.336 0-2.368-.839-4.399-2.119-5.54z"/><path class="icon-vs-out" d="M3.619 17.615c-.854.672-1.464 1.913-1.579 3.385h-.272a8.184 8.184 0 0 1-.268-2.08c0-1.722.505-3.259 1.297-4.272.187 1.05.465 2.045.822 2.967zm6.585-2.967a16.145 16.145 0 0 1-.822 2.967c.854.671 1.464 1.913 1.579 3.385h.272a8.184 8.184 0 0 0 .268-2.08c-.001-1.722-.506-3.259-1.297-4.272zM3.5 11.374c0 3.837 1.198 7.2 3 9.128 1.802-1.927 3-5.291 3-9.128s-1.198-7.2-3-9.128c-1.802 1.928-3 5.291-3 9.128z"/><path class="icon-visualstudio-online" d="M7.5 7a1 1 0 1 1-2 0 1 1 0 0 1 2 0z"/></g><g id="colorImportance"><path class="icon-white" d="M31.596 23.961c-.35 1.053-1.001 3.015-3.247 3.015h-1.3v1.337c0 .905-.392 2.537-3.021 3.298a9.213 9.213 0 0 1-2.59.39c-.83 0-1.668-.128-2.564-.392-1.918-.563-3.017-1.765-3.017-3.296v-1.337h-1.155c-1.698 0-2.943-1.129-3.416-3.098-.469-1.946-.469-3.195 0-5.141.451-1.881 1.96-3.098 3.845-3.098h.726v-1.337c0-2.005.905-2.982 3.126-3.374.729-.13 1.549-.2 2.367-.203h.004c.925 0 1.761.067 2.56.201 1.816.303 3.134 1.723 3.134 3.376v1.337h1.3c1.142 0 2.636.536 3.27 3.092.516 2.073.51 3.637-.022 5.23z"/><linearGradient id="path1948_1_" gradientUnits="userSpaceOnUse" x1="522.205" y1="-288.668" x2="540.902" y2="-304.754" gradientTransform="matrix(.5625 0 0 -.568 -282.272 -151.69)"><stop offset="0" stop-color="#5a9fd4"/><stop offset="1" stop-color="#306998"/></linearGradient><path id="path1948_7_" class="st2" d="M21.354 11.725c-.786.004-1.537.071-2.197.188-1.946.344-2.299 1.063-2.299 2.39v1.753h4.598v.584h-6.324c-1.336 0-2.507.803-2.873 2.331-.422 1.751-.441 2.844 0 4.673.327 1.361 1.107 2.331 2.444 2.331h1.581v-2.101c0-1.518 1.313-2.857 2.873-2.857h4.593c1.279 0 2.299-1.053 2.299-2.337v-4.379c0-1.246-1.051-2.182-2.299-2.39-.79-.13-1.61-.189-2.396-.186zm-2.486 1.41c.475 0 .863.394.863.879a.87.87 0 0 1-.863.874.868.868 0 0 1-.863-.874c0-.485.386-.879.863-.879z"/><linearGradient id="path1950_1_" gradientUnits="userSpaceOnUse" x1="548.13" y1="-314.489" x2="541.454" y2="-305.043" gradientTransform="matrix(.5625 0 0 -.568 -282.272 -151.69)"><stop offset="0" stop-color="#ffd43b"/><stop offset="1" stop-color="#ffe873"/></linearGradient><path id="path1950_7_" class="st3" d="M26.623 16.64v2.042c0 1.583-1.342 2.915-2.873 2.915h-4.593c-1.258 0-2.299 1.077-2.299 2.337v4.379c0 1.246 1.084 1.979 2.299 2.337 1.456.428 2.851.505 4.593 0 1.158-.335 2.299-1.01 2.299-2.337V26.56h-4.593v-.584H28.348c1.336 0 1.834-.932 2.299-2.331.48-1.44.46-2.826 0-4.673-.33-1.33-.961-2.331-2.299-2.331h-1.725zm-2.584 11.089c.477 0 .863.391.863.874a.871.871 0 0 1-.863.879.872.872 0 0 1-.863-.879.87.87 0 0 1 .863-.874z"/></g></svg> \ No newline at end of file
diff --git a/PC/icons/py.icns b/PC/icons/py.icns
new file mode 100644
index 0000000..2dc4e29
--- /dev/null
+++ b/PC/icons/py.icns
Binary files differ
diff --git a/PC/icons/py.ico b/PC/icons/py.ico
new file mode 100644
index 0000000..1d8a79b
--- /dev/null
+++ b/PC/icons/py.ico
Binary files differ
diff --git a/PC/icons/py.svg b/PC/icons/py.svg
new file mode 100644
index 0000000..0924e83
--- /dev/null
+++ b/PC/icons/py.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><style>.icon-canvas-transparent{opacity:0;fill:#f6f6f6}.icon-vs-out{fill:#f6f6f6}.icon-vso-bg{fill:#656565}.icon-vso-lightgrey{fill:#bfbfbf}.icon-white{fill:#fff}.st0{fill:url(#path1948_1_)}.st1{fill:url(#path1950_1_)}</style><path class="icon-canvas-transparent" d="M32 32H0V0h32v32z" id="canvas"/><g id="iconBg"><path class="icon-vs-out" d="M26 8.009V29H7V3h14.053L26 8.009z"/><path class="icon-vso-bg" d="M21.471 2H6v28h21V7.599L21.471 2zM21 3h.053l4.939 5H21V3zm5 26H7V3h13v6h6v20z"/></g><path class="icon-vso-lightgrey" d="M17 7H9V6h8v1zm0 2H9v1h8V9zm7 3H9v1h15v-1zm0 3H9v1h15v-1zm0 3H9v1h15v-1zm0 3H9v1h15v-1zm0 3H9v1h15v-1z" id="iconFg"/><g id="colorImportance"><path class="icon-white" d="M31.66 24.063C31.312 25.116 30.661 27 28.413 27H27v1.313c0 .905-.335 2.537-2.965 3.298-.904.261-1.694.389-2.531.389-.83 0-1.63-.128-2.526-.392C17.061 31.045 16 29.844 16 28.313V27h-1.232c-1.699 0-2.944-1.141-3.416-3.11-.469-1.946-.469-3.021 0-4.967.451-1.881 1.96-2.923 3.845-2.923H16v-1.697c0-2.005.866-2.845 3.087-3.238.727-.128 1.506-.065 2.327-.065h.003c.921 0 1.703-.07 2.504.064 1.818.302 3.079 1.585 3.079 3.239V16h1.413c1.142 0 2.636.356 3.27 2.912.515 2.072.509 3.559-.023 5.151z"/><linearGradient id="path1948_1_" gradientUnits="userSpaceOnUse" x1="522.32" y1="-288.668" x2="541.017" y2="-304.754" gradientTransform="matrix(.5625 0 0 -.568 -282.272 -151.69)"><stop offset="0" stop-color="#5a9fd4"/><stop offset="1" stop-color="#306998"/></linearGradient><path id="path1948_2_" class="st0" d="M21.419 11.725c-.786.004-1.537.071-2.197.188-1.946.344-2.299 1.063-2.299 2.39v1.753h4.598v.584h-6.324c-1.336 0-2.507.803-2.873 2.331-.422 1.751-.441 2.844 0 4.673.327 1.361 1.108 2.331 2.444 2.331h1.581v-2.101c0-1.518 1.313-2.857 2.873-2.857h4.593c1.278 0 2.299-1.053 2.299-2.337v-4.379c0-1.246-1.051-2.182-2.299-2.39-.79-.13-1.61-.189-2.396-.186zm-2.487 1.41c.475 0 .863.394.863.879a.87.87 0 0 1-.863.874.868.868 0 0 1-.863-.874c0-.485.387-.879.863-.879z"/><linearGradient id="path1950_1_" gradientUnits="userSpaceOnUse" x1="548.245" y1="-314.489" x2="541.569" y2="-305.043" gradientTransform="matrix(.5625 0 0 -.568 -282.272 -151.69)"><stop offset="0" stop-color="#ffd43b"/><stop offset="1" stop-color="#ffe873"/></linearGradient><path id="path1950_2_" class="st1" d="M26.687 16.64v2.042c0 1.583-1.342 2.915-2.873 2.915h-4.593c-1.258 0-2.299 1.077-2.299 2.337v4.379c0 1.246 1.084 1.979 2.299 2.337 1.456.428 2.851.505 4.593 0 1.158-.335 2.299-1.01 2.299-2.337V26.56H21.52v-.584H28.412c1.336 0 1.834-.932 2.299-2.331.48-1.44.46-2.826 0-4.673-.33-1.33-.961-2.331-2.299-2.331h-1.725zm-2.583 11.089c.477 0 .863.391.863.874a.871.871 0 0 1-.863.879.872.872 0 0 1-.863-.879c0-.484.388-.874.863-.874z"/></g></svg> \ No newline at end of file
diff --git a/PC/icons/pyc.icns b/PC/icons/pyc.icns
new file mode 100644
index 0000000..50da9a1
--- /dev/null
+++ b/PC/icons/pyc.icns
Binary files differ
diff --git a/PC/icons/pyc.ico b/PC/icons/pyc.ico
new file mode 100644
index 0000000..74dde81
--- /dev/null
+++ b/PC/icons/pyc.ico
Binary files differ
diff --git a/PC/icons/pyc.svg b/PC/icons/pyc.svg
new file mode 100644
index 0000000..5c3e9e7
--- /dev/null
+++ b/PC/icons/pyc.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><style>.icon-canvas-transparent{opacity:0;fill:#f6f6f6}.icon-vso-bg{fill:#656565}.icon-vs-bg{fill:#424242}.icon-vs-green{fill:#393}.icon-white{fill:#fff}.st0{fill:url(#path1948_1_)}.st1{fill:url(#path1950_1_)}</style><path class="icon-canvas-transparent" d="M32 32H0V0h32v32z" id="canvas"/><g id="iconBg"><path class="icon-vs-bg" d="M21.053 3H7v26h19V8.009z"/><path class="icon-vso-bg" d="M21.471 2H6v28h21V7.599L21.471 2zM21 3h.053l4.939 5H21V3zm5 26H7V3h13v6h6v20z"/></g><path class="icon-vs-green" d="M10 16H9v-1h1v1zm1.011 5H9v1h2.032a8.368 8.368 0 0 1-.021-1zM14 10h2V9h-2v1zm-3-4H9v1h2V6zm0 6H9v1h2v-1zm2-3H9v1h4V9zm4-3v1h1V6h-1zm-3 6h-2v1h2v-1zm1-6h-2v1h2V6zm-4 10h1v-1h-1v1zm4-4v1h2v-1h-2zm-2 4h3v-1h-3v1zm-4 2v1h3v-1H9zm0 6v1h3v-1H9z" id="iconFg"/><g id="colorImportance"><path class="icon-white" d="M31.66 24.063C31.312 25.116 30.661 27 28.413 27H27v1.313c0 .905-.335 2.537-2.965 3.298-.904.261-1.694.389-2.531.389-.83 0-1.63-.128-2.526-.392C17.061 31.045 16 29.844 16 28.313V27h-1.232c-1.699 0-2.944-1.141-3.416-3.11-.469-1.946-.469-3.021 0-4.967.451-1.881 1.96-2.923 3.845-2.923H16v-1.697c0-2.005.866-2.845 3.087-3.238.727-.128 1.506-.065 2.327-.065h.003c.921 0 1.703-.07 2.504.064 1.818.302 3.079 1.585 3.079 3.239V16h1.413c1.142 0 2.636.356 3.27 2.912.515 2.072.509 3.558-.023 5.151z"/><linearGradient id="path1948_1_" gradientUnits="userSpaceOnUse" x1="522.32" y1="-288.668" x2="541.017" y2="-304.754" gradientTransform="matrix(.5625 0 0 -.568 -282.272 -151.69)"><stop offset="0" stop-color="#5a9fd4"/><stop offset="1" stop-color="#306998"/></linearGradient><path id="path1948_4_" class="st0" d="M21.419 11.725c-.786.004-1.537.071-2.197.188-1.946.344-2.299 1.063-2.299 2.39v1.753h4.598v.584h-6.324c-1.336 0-2.507.803-2.873 2.331-.422 1.751-.441 2.844 0 4.673.327 1.361 1.108 2.331 2.444 2.331h1.581v-2.101c0-1.518 1.313-2.857 2.873-2.857h4.593c1.278 0 2.299-1.053 2.299-2.337v-4.379c0-1.246-1.051-2.182-2.299-2.39-.79-.13-1.61-.189-2.396-.186zm-2.487 1.41c.475 0 .863.394.863.879a.87.87 0 0 1-.863.874.868.868 0 0 1-.863-.874c0-.485.387-.879.863-.879z"/><linearGradient id="path1950_1_" gradientUnits="userSpaceOnUse" x1="548.245" y1="-314.489" x2="541.569" y2="-305.043" gradientTransform="matrix(.5625 0 0 -.568 -282.272 -151.69)"><stop offset="0" stop-color="#ffd43b"/><stop offset="1" stop-color="#ffe873"/></linearGradient><path id="path1950_4_" class="st1" d="M26.687 16.64v2.042c0 1.583-1.342 2.915-2.873 2.915h-4.593c-1.258 0-2.299 1.077-2.299 2.337v4.379c0 1.246 1.084 1.979 2.299 2.337 1.456.428 2.851.505 4.593 0 1.158-.335 2.299-1.01 2.299-2.337V26.56H21.52v-.584H28.412c1.336 0 1.834-.932 2.299-2.331.48-1.44.46-2.826 0-4.673-.33-1.33-.961-2.331-2.299-2.331h-1.725zm-2.583 11.089c.477 0 .863.391.863.874a.871.871 0 0 1-.863.879.872.872 0 0 1-.863-.879c0-.484.388-.874.863-.874z"/></g></svg> \ No newline at end of file
diff --git a/PC/icons/pyd.icns b/PC/icons/pyd.icns
new file mode 100644
index 0000000..5d3d24e
--- /dev/null
+++ b/PC/icons/pyd.icns
Binary files differ
diff --git a/PC/icons/pyd.ico b/PC/icons/pyd.ico
new file mode 100644
index 0000000..9f6cb60
--- /dev/null
+++ b/PC/icons/pyd.ico
Binary files differ
diff --git a/PC/icons/pyd.svg b/PC/icons/pyd.svg
new file mode 100644
index 0000000..17eff6a
--- /dev/null
+++ b/PC/icons/pyd.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><style>.icon-canvas-transparent{opacity:0;fill:#f6f6f6}.icon-vso-bg{fill:#656565}.icon-vs-out{fill:#f6f6f6}.icon-f12-hover-bg{fill:#d9ebf7}.icon-f12-ltgrey-disabled{fill:#ababac}.icon-white{fill:#fff}.st0{fill:#9ca2a7}.st1{fill:url(#path1948_1_)}.st2{fill:url(#path1950_1_)}</style><path class="icon-canvas-transparent" d="M32 32H0V0h32v32z" id="canvas"/><g id="iconBg"><path class="icon-vs-out" d="M21.053 3H7v26h19V8.009z"/><path class="icon-vso-bg" d="M21.471 2H6v28h21V7.599L21.471 2zM21 3h.053l4.939 5H21V3zm5 26H7V3h13v6h6v20z"/></g><g id="iconFg"><path class="st0" d="M13.784 17.705c-1.296 0-2.35-1.054-2.35-2.35s1.054-2.35 2.35-2.35 2.35 1.054 2.35 2.35-1.054 2.35-2.35 2.35zm0-4.5c-1.186 0-2.15.964-2.15 2.15s.964 2.151 2.15 2.151 2.15-.965 2.15-2.151-.964-2.15-2.15-2.15z"/><path class="icon-f12-hover-bg" d="M18.05 16.122c.016-.069.031-.139.043-.209l1.376-.618-.103-1.015-1.47-.33c-.025-.068-.056-.134-.086-.199l-.026-.056.892-1.236-.595-.827-1.45.453c-.069-.061-.141-.118-.213-.175l.151-1.511-.929-.418-1.032 1.121-.056-.013a3.089 3.089 0 0 0-.217-.045l-.618-1.374-1.015.104-.329 1.472c-.049.019-.096.04-.143.063l-.056.025-1.225-.907-.835.586.435 1.457c-.06.067-.123.138-.182.212l-1.506-.172-.429.925L9.54 14.48l-.005.024a4.127 4.127 0 0 0-.051.246l-1.387.606.092 1.015 1.463.346c.024.067.055.132.084.194l.03.067-.86 1.17-.042.059.588.832 1.456-.44c.07.063.138.122.209.178l-.167 1.508.926.427L12.92 19.6l.048.01c.074.017.149.034.226.046l.609 1.385 1.015-.095.342-1.466c.075-.027.147-.061.216-.093l.067-.031 1.235.892.827-.595-.452-1.45c.062-.071.12-.142.176-.215l1.512.151.418-.929-1.122-1.033.013-.055zm-4.266 1.583c-1.296 0-2.35-1.054-2.35-2.35s1.054-2.35 2.35-2.35 2.35 1.054 2.35 2.35-1.054 2.35-2.35 2.35z"/><path class="icon-f12-ltgrey-disabled" d="M13.803 21.04l-.609-1.384a3.08 3.08 0 0 1-.236-.048l-.038-.008-1.043 1.111-.925-.427.167-1.507a4.013 4.013 0 0 1-.209-.179l-1.456.439-.588-.832.902-1.228-.033-.072c-.028-.061-.058-.124-.082-.19l-1.463-.344-.091-1.015 1.387-.605c.012-.078.03-.154.047-.231l.009-.039-1.109-1.045.428-.925 1.507.17c.058-.072.118-.14.183-.211l-.435-1.458.834-.585 1.225.907.052-.024c.048-.022.097-.044.147-.063l.329-1.473 1.014-.104.62 1.375a2.389 2.389 0 0 1 .271.058l1.032-1.122.93.418-.153 1.511c.073.055.143.113.214.174l1.45-.453.595.827-.892 1.236a.8.8 0 0 1 .024.053c.03.064.062.131.087.201l1.471.332.103 1.014-1.376.618c-.012.071-.027.14-.043.208l-.014.058 1.122 1.033-.419.929-1.511-.152a3.851 3.851 0 0 1-.176.215l.452 1.45-.827.595-1.236-.892-.07.032a2.94 2.94 0 0 1-.212.092l-.341 1.465-1.015.095zm-.951-1.66l.151.033c.089.021.179.042.272.053l.056.007.597 1.354.728-.067.333-1.435.054-.018c.083-.025.161-.062.244-.101.042-.02.084-.039.127-.057l.052-.022 1.211.874.593-.427-.442-1.421.038-.043c.085-.094.163-.188.236-.288l.033-.046 1.48.15.3-.667-1.099-1.012.012-.055.025-.117c.019-.08.037-.16.047-.244l.007-.056 1.348-.605-.073-.728-1.441-.324-.018-.055c-.025-.081-.061-.157-.096-.233a2.145 2.145 0 0 1-.05-.109l-.022-.052.874-1.212-.427-.593-1.42.443-.042-.038a3.896 3.896 0 0 0-.288-.235L16.207 12l.149-1.48-.667-.3-1.012 1.1-.056-.011c-.04-.008-.08-.018-.119-.027-.082-.019-.162-.038-.246-.048l-.056-.005-.607-1.346-.727.074-.323 1.441-.054.018c-.063.02-.121.047-.18.074-.037.017-.073.034-.111.049l-.052.022-1.2-.89-.599.42.426 1.429-.038.042a4.07 4.07 0 0 0-.244.284l-.034.045-1.476-.167-.307.663 1.086 1.024-.034.151c-.02.089-.041.177-.052.269l-.007.056-1.358.593.066.728 1.431.337.017.055c.024.077.058.148.091.22.021.043.041.086.059.131l.022.052-.885 1.203.422.598 1.426-.432.042.038c.083.075.179.163.282.24l.045.035-.163 1.476.664.306 1.024-1.087zM20.918 22.972a1.35 1.35 0 1 1 .001-2.699 1.35 1.35 0 0 1-.001 2.699zm0-2.5c-.634 0-1.15.517-1.15 1.15s.517 1.15 1.15 1.15 1.15-.517 1.15-1.15-.516-1.15-1.15-1.15z"/><path class="icon-f12-hover-bg" d="M24.901 22.028v-.812l-1.269-.423a2.747 2.747 0 0 0-.21-.505l.599-1.196-.574-.574-1.196.599a2.81 2.81 0 0 0-.505-.209l-.423-1.268h-.811l-.423 1.268a2.81 2.81 0 0 0-.505.209l-1.197-.599-.573.574.599 1.196a2.747 2.747 0 0 0-.21.505l-1.268.423v.812l1.268.422c.054.175.124.345.21.506l-.599 1.196.573.574 1.197-.6c.161.087.331.157.505.21l.423 1.269h.811l.423-1.269c.174-.053.343-.123.505-.21l1.196.6.574-.574-.599-1.196c.086-.161.156-.331.21-.506l1.269-.422zm-3.983.943c-.744 0-1.35-.606-1.35-1.35 0-.744.605-1.35 1.35-1.35.744 0 1.35.605 1.35 1.35 0 .745-.606 1.35-1.35 1.35z"/><path class="icon-f12-ltgrey-disabled" d="M21.323 25.604h-.811l-.423-1.269a2.814 2.814 0 0 1-.505-.209l-1.197.599-.573-.574.599-1.196a2.747 2.747 0 0 1-.21-.505l-1.269-.423v-.812l1.269-.422c.054-.175.124-.345.21-.506l-.599-1.196.573-.573 1.197.599c.161-.087.331-.157.505-.21l.423-1.269h.811l.423 1.269c.174.053.344.123.505.21l1.196-.599.574.573-.599 1.196c.086.161.156.331.21.506l1.269.422v.812l-1.269.423a2.747 2.747 0 0 1-.21.505l.599 1.196-.574.574-1.196-.599a2.814 2.814 0 0 1-.505.209l-.423 1.269zm-.666-.199h.521l.411-1.232.051-.015c.193-.054.382-.132.56-.231l.046-.026 1.162.581.369-.369-.58-1.162.026-.046c.099-.178.177-.366.232-.56l.014-.051 1.232-.411v-.523l-1.232-.41-.014-.051a2.81 2.81 0 0 0-.232-.561l-.026-.046.58-1.162-.369-.368-1.162.58-.046-.026a2.627 2.627 0 0 0-.56-.232l-.05-.014-.411-1.232h-.521l-.411 1.232-.051.014a2.758 2.758 0 0 0-.56.232l-.046.026-1.163-.58-.368.368.58 1.162-.026.046a2.675 2.675 0 0 0-.232.561l-.014.051-1.232.41v.522l1.232.411.014.051c.056.193.134.382.232.56l.026.046-.58 1.162.368.369 1.163-.581.046.026c.178.1.366.178.56.231l.051.015.41 1.233z"/></g><g id="colorImportance"><path class="icon-white" d="M31.66 24.063C31.312 25.116 30.661 27 28.413 27H27v1.313c0 .905-.335 2.537-2.965 3.298-.904.261-1.694.389-2.531.389-.83 0-1.63-.128-2.526-.392C17.061 31.045 16 29.844 16 28.313V27h-1.232c-1.699 0-2.944-1.141-3.416-3.11-.469-1.946-.469-3.021 0-4.967.451-1.881 1.96-2.923 3.845-2.923H16v-1.697c0-2.005.866-2.845 3.087-3.238.727-.128 1.506-.065 2.327-.065h.003c.921 0 1.703-.07 2.504.064 1.818.302 3.079 1.585 3.079 3.239V16h1.413c1.142 0 2.636.356 3.27 2.912.515 2.072.509 3.558-.023 5.151z"/><linearGradient id="path1948_1_" gradientUnits="userSpaceOnUse" x1="522.32" y1="-288.668" x2="541.017" y2="-304.754" gradientTransform="matrix(.5625 0 0 -.568 -282.272 -151.69)"><stop offset="0" stop-color="#5a9fd4"/><stop offset="1" stop-color="#306998"/></linearGradient><path id="path1948_5_" class="st1" d="M21.419 11.725c-.786.004-1.537.071-2.197.188-1.946.344-2.299 1.063-2.299 2.39v1.753h4.598v.584h-6.324c-1.336 0-2.507.803-2.873 2.331-.422 1.751-.441 2.844 0 4.673.327 1.361 1.108 2.331 2.444 2.331h1.581v-2.101c0-1.518 1.313-2.857 2.873-2.857h4.593c1.278 0 2.299-1.053 2.299-2.337v-4.379c0-1.246-1.051-2.182-2.299-2.39-.79-.13-1.61-.189-2.396-.186zm-2.487 1.41c.475 0 .863.394.863.879a.87.87 0 0 1-.863.874.868.868 0 0 1-.863-.874c0-.485.387-.879.863-.879z"/><linearGradient id="path1950_1_" gradientUnits="userSpaceOnUse" x1="548.245" y1="-314.489" x2="541.569" y2="-305.043" gradientTransform="matrix(.5625 0 0 -.568 -282.272 -151.69)"><stop offset="0" stop-color="#ffd43b"/><stop offset="1" stop-color="#ffe873"/></linearGradient><path id="path1950_5_" class="st2" d="M26.687 16.64v2.042c0 1.583-1.342 2.915-2.873 2.915h-4.593c-1.258 0-2.299 1.077-2.299 2.337v4.379c0 1.246 1.084 1.979 2.299 2.337 1.456.428 2.851.505 4.593 0 1.158-.335 2.299-1.01 2.299-2.337V26.56H21.52v-.584H28.412c1.336 0 1.834-.932 2.299-2.331.48-1.44.46-2.826 0-4.673-.33-1.33-.961-2.331-2.299-2.331h-1.725zm-2.583 11.089c.477 0 .863.391.863.874a.871.871 0 0 1-.863.879.872.872 0 0 1-.863-.879c0-.484.388-.874.863-.874z"/></g></svg> \ No newline at end of file
diff --git a/PC/icons/python.icns b/PC/icons/python.icns
new file mode 100644
index 0000000..fc53e02
--- /dev/null
+++ b/PC/icons/python.icns
Binary files differ
diff --git a/PC/icons/python.ico b/PC/icons/python.ico
new file mode 100644
index 0000000..b8a38ef
--- /dev/null
+++ b/PC/icons/python.ico
Binary files differ
diff --git a/PC/icons/python.svg b/PC/icons/python.svg
new file mode 100644
index 0000000..e23e5a3
--- /dev/null
+++ b/PC/icons/python.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><style>.icon-canvas-transparent{opacity:0;fill:#f6f6f6}.icon-white{fill:#fff}.icon-vso-bg{fill:#656565}.icon-visualstudio-online{fill:#007acc}.icon-vs-bg{fill:#424242}.icon-vs-green{fill:#393}.st0{fill:url(#path1948_1_)}.st1{fill:url(#path1950_1_)}</style><path class="icon-canvas-transparent" d="M32 32H0V0h32v32z" id="canvas"/><g id="iconBg"><path class="icon-visualstudio-online" d="M30 4H2V2h28v2z"/><path class="icon-vso-bg" d="M29 4v21H3V4H2v22h28V4z"/><path class="icon-vs-bg" d="M10 4H3v21h26V4z"/></g><g id="iconFg"><path class="icon-white" d="M29.141 3l.429.429-.14.142-.43-.43-.43.43-.14-.142.429-.429-.429-.429.141-.142.429.43.43-.43.141.142-.43.429zM27.6 2.4h-1.2v1.2h1.2V2.4zm-1 .2h.8v.8h-.8v-.8zm-1.139.8h-1v.2h1v-.2z"/><path class="icon-vs-green" d="M16 14H5v-1h11.031c-.014.044-.031 1-.031 1zm-4-5H5v1h7V9zm-7 8v1h8v-1H5z"/></g><g id="colorImportance"><path class="icon-white" d="M31.596 24.063C31.246 25.116 30.595 27 28.349 27H27v1.313c0 .905-.368 2.537-2.996 3.298-.904.261-1.728.389-2.566.389-.83 0-1.597-.128-2.492-.392C17.029 31.045 16 29.844 16 28.313V27h-1.297c-1.698 0-2.943-1.141-3.416-3.11-.469-1.946-.469-3.021 0-4.967.451-1.881 1.96-2.923 3.845-2.923H16v-1.697c0-2.005.834-2.845 3.054-3.238.728-.128 1.474-.065 2.296-.065h.003c.921 0 1.735-.07 2.537.064 1.816.303 3.11 1.585 3.11 3.24V16h1.349c1.142 0 2.636.356 3.27 2.912.515 2.072.509 3.558-.023 5.151z"/><linearGradient id="path1948_1_" gradientUnits="userSpaceOnUse" x1="522.205" y1="-288.668" x2="540.902" y2="-304.754" gradientTransform="matrix(.5625 0 0 -.568 -282.272 -151.69)"><stop offset="0" stop-color="#5a9fd4"/><stop offset="1" stop-color="#306998"/></linearGradient><path id="path1948_3_" class="st0" d="M21.354 11.725c-.786.004-1.537.071-2.197.188-1.946.344-2.299 1.063-2.299 2.39v1.753h4.598v.584h-6.324c-1.336 0-2.507.803-2.873 2.331-.422 1.751-.441 2.844 0 4.673.327 1.361 1.107 2.331 2.444 2.331h1.581v-2.101c0-1.518 1.313-2.857 2.873-2.857h4.593c1.279 0 2.299-1.053 2.299-2.337v-4.379c0-1.246-1.051-2.182-2.299-2.39-.79-.13-1.61-.189-2.396-.186zm-2.486 1.41c.475 0 .863.394.863.879a.87.87 0 0 1-.863.874.868.868 0 0 1-.863-.874c0-.485.386-.879.863-.879z"/><linearGradient id="path1950_1_" gradientUnits="userSpaceOnUse" x1="548.13" y1="-314.489" x2="541.454" y2="-305.043" gradientTransform="matrix(.5625 0 0 -.568 -282.272 -151.69)"><stop offset="0" stop-color="#ffd43b"/><stop offset="1" stop-color="#ffe873"/></linearGradient><path id="path1950_3_" class="st1" d="M26.623 16.64v2.042c0 1.583-1.342 2.915-2.873 2.915h-4.593c-1.258 0-2.299 1.077-2.299 2.337v4.379c0 1.246 1.084 1.979 2.299 2.337 1.456.428 2.851.505 4.593 0 1.158-.335 2.299-1.01 2.299-2.337V26.56h-4.593v-.584h6.892c1.336 0 1.834-.932 2.299-2.331.48-1.44.46-2.826 0-4.673-.33-1.33-.961-2.331-2.299-2.331h-1.725zm-2.584 11.089c.477 0 .863.391.863.874a.871.871 0 0 1-.863.879.872.872 0 0 1-.863-.879.87.87 0 0 1 .863-.874z"/></g></svg> \ No newline at end of file
diff --git a/PC/icons/pythonw.icns b/PC/icons/pythonw.icns
new file mode 100644
index 0000000..9354cf8
--- /dev/null
+++ b/PC/icons/pythonw.icns
Binary files differ
diff --git a/PC/icons/pythonw.ico b/PC/icons/pythonw.ico
new file mode 100644
index 0000000..6195d43
--- /dev/null
+++ b/PC/icons/pythonw.ico
Binary files differ
diff --git a/PC/icons/pythonw.svg b/PC/icons/pythonw.svg
new file mode 100644
index 0000000..7cb2607
--- /dev/null
+++ b/PC/icons/pythonw.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><style>.icon-canvas-transparent{opacity:0;fill:#f6f6f6}.icon-white{fill:#fff}.icon-visualstudio-online{fill:#007acc}.graph-lightgrey{fill:#dfdfdf}.st0{fill:#f6f6f6}.st1{fill:#656565}.st2{fill:#bfbfbf}.st3{fill:#fff}.st4{fill:url(#path1948_1_)}.st5{fill:url(#path1950_1_)}</style><path class="icon-canvas-transparent" d="M32 32H0V0h32v32z" id="canvas"/><g id="iconBg"><path class="graph-lightgrey" d="M29 7H3V5h26v2z"/><path class="icon-visualstudio-online" d="M30 5H2V3h28v2z"/><path class="icon-white" d="M29.141 4l.429.429-.14.142-.43-.43-.43.43-.14-.142.429-.429-.429-.429.141-.142.429.43.43-.43.141.142-.43.429zM27.6 3.4h-1.2v1.2h1.2V3.4zm-1 .2h.8v.8h-.8v-.8zm-1.139.8h-1v.2h1v-.2z"/><path class="st0" d="M3 7h26v19H3z"/><path class="st1" d="M29 5v21H3V5H2v22h28V5z"/><path class="st1" d="M4 5.75h2v.5H4z"/></g><path class="st2" d="M12 11H5v-1h7v1zm-7 7v1h11v-1H5zm0-4v1h11v-1H5z" id="iconFg"/><g id="colorImportance"><path class="st3" d="M31.618 18.912C30.984 16.356 29.49 16 28.349 16H27v-1.697c0-1.654-1.294-2.937-3.11-3.24-.802-.133-1.617-.063-2.537-.063h-.003c-.821 0-1.568-.063-2.295.065-2.221.393-3.055 1.233-3.055 3.238V16h-.868c-1.885 0-3.394 1.042-3.845 2.924-.469 1.946-.469 3.022 0 4.967C11.76 25.859 13.005 27 14.703 27H16v1.313c0 1.531 1.029 2.732 2.946 3.296.896.263 1.662.391 2.492.391.838 0 1.661-.128 2.565-.39C26.632 30.85 27 29.218 27 28.313V27h1.349c2.246 0 2.897-1.884 3.247-2.937.532-1.592.538-3.079.022-5.151z"/><linearGradient id="path1948_1_" gradientUnits="userSpaceOnUse" x1="522.205" y1="-288.668" x2="540.902" y2="-304.754" gradientTransform="matrix(.5625 0 0 -.568 -282.272 -151.69)"><stop offset="0" stop-color="#5a9fd4"/><stop offset="1" stop-color="#306998"/></linearGradient><path id="path1948_6_" class="st4" d="M21.354 11.725c-.786.004-1.537.071-2.197.188-1.946.344-2.299 1.063-2.299 2.39v1.753h4.598v.584h-6.324c-1.336 0-2.507.803-2.873 2.331-.422 1.751-.441 2.844 0 4.673.327 1.361 1.107 2.331 2.444 2.331h1.581v-2.101c0-1.518 1.313-2.857 2.873-2.857h4.593c1.278 0 2.299-1.053 2.299-2.337v-4.379c0-1.246-1.051-2.182-2.299-2.39-.79-.13-1.61-.189-2.396-.186zm-2.486 1.41c.475 0 .863.394.863.879a.87.87 0 0 1-.863.874.868.868 0 0 1-.863-.874c0-.485.386-.879.863-.879z"/><linearGradient id="path1950_1_" gradientUnits="userSpaceOnUse" x1="548.13" y1="-314.489" x2="541.454" y2="-305.043" gradientTransform="matrix(.5625 0 0 -.568 -282.272 -151.69)"><stop offset="0" stop-color="#ffd43b"/><stop offset="1" stop-color="#ffe873"/></linearGradient><path id="path1950_6_" class="st5" d="M26.623 16.64v2.042c0 1.583-1.342 2.915-2.873 2.915h-4.593c-1.258 0-2.299 1.077-2.299 2.337v4.379c0 1.246 1.084 1.979 2.299 2.337 1.456.428 2.851.505 4.593 0 1.158-.335 2.299-1.01 2.299-2.337V26.56h-4.593v-.584h6.892c1.336 0 1.834-.932 2.299-2.331.48-1.44.46-2.826 0-4.673-.33-1.33-.961-2.331-2.299-2.331h-1.725zm-2.584 11.089c.477 0 .863.391.863.874a.871.871 0 0 1-.863.879.872.872 0 0 1-.863-.879.87.87 0 0 1 .863-.874z"/></g></svg> \ No newline at end of file
diff --git a/PC/icons/setup.icns b/PC/icons/setup.icns
new file mode 100644
index 0000000..6f0e6b0
--- /dev/null
+++ b/PC/icons/setup.icns
Binary files differ
diff --git a/PC/icons/setup.ico b/PC/icons/setup.ico
new file mode 100644
index 0000000..e54364b
--- /dev/null
+++ b/PC/icons/setup.ico
Binary files differ
diff --git a/PC/icons/setup.svg b/PC/icons/setup.svg
new file mode 100644
index 0000000..0613856
--- /dev/null
+++ b/PC/icons/setup.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><style>.icon-canvas-transparent{opacity:0;fill:#f6f6f6}.icon-visualstudio-online{fill:#007acc}.icon-disabled-grey{fill:#848484}.icon-white{fill:#fff}.st0{fill:#f0eff1}.st1{fill:#424242}.st2{fill:url(#path1948_1_)}.st3{fill:url(#path1950_1_)}</style><path class="icon-canvas-transparent" d="M32 32H0V0h32v32z" id="canvas"/><g id="iconBg"><path class="st0" d="M18 8v10H1V8h17zm-1.191 15.572a1.004 1.004 0 0 0-.903-.572H2.907c-.385 0-.74.225-.903.572L.886 25.928A.748.748 0 0 0 1.563 27H17.25a.748.748 0 0 0 .677-1.072l-1.118-2.356z"/><path class="icon-disabled-grey" d="M17.927 25.929l-1.118-2.356a1.003 1.003 0 0 0-.903-.573H2.907c-.385 0-.74.225-.903.572L.886 25.928A.748.748 0 0 0 1.563 27H17.25a.747.747 0 0 0 .633-.349.746.746 0 0 0 .044-.722zM1.959 26l.949-2h12.998l.949 2H1.959zM6 22v-1h3v-2h1v2h3v1H6z"/><path class="st1" d="M0 7v12h19V7H0zm18 11H1V8h17v10z"/></g><g id="iconFg"><path class="icon-white" d="M12 6V0H7v6H2.755L9.5 13.495 16.245 6z"/><path class="icon-visualstudio-online" d="M8 4h3v3h3l-4.5 5L5 7h3V4zm3-2H8v1h3V2zm0-2H8v1h3V0z"/></g><g id="colorImportance"><path class="icon-white" d="M31.596 24.063C31.246 25.116 30.595 27 28.349 27H27v1.313c0 .905-.368 2.537-2.997 3.298-.903.261-1.727.389-2.565.389-.83 0-1.597-.128-2.493-.392C17.029 31.045 16 29.844 16 28.313V27h-1.296c-1.698 0-2.944-1.141-3.417-3.11-.469-1.944-.469-3.02 0-4.967.451-1.881 1.961-2.923 3.845-2.923H16v-1.697c0-2.005.834-2.845 3.054-3.238.728-.128 1.474-.065 2.296-.065h.003c.921 0 1.735-.07 2.537.064 1.816.303 3.11 1.585 3.11 3.24V16h1.349c1.142 0 2.636.356 3.27 2.912.515 2.072.509 3.559-.023 5.151z"/><linearGradient id="path1948_1_" gradientUnits="userSpaceOnUse" x1="522.205" y1="-288.668" x2="540.902" y2="-304.754" gradientTransform="matrix(.5625 0 0 -.568 -282.272 -151.69)"><stop offset="0" stop-color="#5a9fd4"/><stop offset="1" stop-color="#306998"/></linearGradient><path id="path1948_9_" class="st2" d="M21.354 11.725c-.786.004-1.537.071-2.197.188-1.946.344-2.299 1.063-2.299 2.39v1.753h4.598v.584h-6.324c-1.336 0-2.507.803-2.873 2.331-.422 1.751-.441 2.844 0 4.673.327 1.361 1.108 2.331 2.444 2.331h1.581v-2.101c0-1.518 1.313-2.857 2.873-2.857h4.593c1.279 0 2.299-1.053 2.299-2.337v-4.379c0-1.246-1.051-2.182-2.299-2.39-.79-.13-1.61-.189-2.396-.186zm-2.486 1.41c.475 0 .863.394.863.879a.87.87 0 0 1-.863.874.868.868 0 0 1-.863-.874c0-.485.386-.879.863-.879z"/><linearGradient id="path1950_1_" gradientUnits="userSpaceOnUse" x1="548.13" y1="-314.489" x2="541.454" y2="-305.043" gradientTransform="matrix(.5625 0 0 -.568 -282.272 -151.69)"><stop offset="0" stop-color="#ffd43b"/><stop offset="1" stop-color="#ffe873"/></linearGradient><path id="path1950_9_" class="st3" d="M26.623 16.64v2.042c0 1.583-1.342 2.915-2.873 2.915h-4.593c-1.258 0-2.299 1.077-2.299 2.337v4.379c0 1.246 1.084 1.979 2.299 2.337 1.456.428 2.851.505 4.593 0 1.158-.335 2.299-1.01 2.299-2.337V26.56h-4.593v-.584H28.348c1.336 0 1.834-.932 2.299-2.331.48-1.44.46-2.826 0-4.673-.33-1.33-.961-2.331-2.299-2.331h-1.725zm-2.584 11.089c.477 0 .863.391.863.874a.871.871 0 0 1-.863.879.872.872 0 0 1-.863-.879.87.87 0 0 1 .863-.874z"/></g></svg> \ No newline at end of file
diff --git a/PC/launcher.c b/PC/launcher.c
index 40d4cb5..d11df43 100644
--- a/PC/launcher.c
+++ b/PC/launcher.c
@@ -98,7 +98,7 @@ error(int rc, wchar_t * format, ... )
MessageBox(NULL, message, TEXT("Python Launcher is sorry to say ..."),
MB_OK);
#endif
- ExitProcess(rc);
+ exit(rc);
}
/*
@@ -465,7 +465,7 @@ get_configured_value(wchar_t * key)
}
static INSTALLED_PYTHON *
-locate_python(wchar_t * wanted_ver)
+locate_python(wchar_t * wanted_ver, BOOL from_shebang)
{
static wchar_t config_key [] = { L"pythonX" };
static wchar_t * last_char = &config_key[sizeof(config_key) /
@@ -497,10 +497,17 @@ locate_python(wchar_t * wanted_ver)
configured_value = get_configured_value(config_key);
if (configured_value)
result = find_python_by_version(configured_value);
+ /* Not found a value yet - try by major version.
+ * If we're looking for an interpreter specified in a shebang line,
+ * we want to try Python 2 first, then Python 3 (for Unix and backward
+ * compatibility). If we're being called interactively, assume the user
+ * wants the latest version available, so try Python 3 first, then
+ * Python 2.
+ */
if (result == NULL)
- result = find_python_by_version(L"2");
+ result = find_python_by_version(from_shebang ? L"2" : L"3");
if (result == NULL)
- result = find_python_by_version(L"3");
+ result = find_python_by_version(from_shebang ? L"3" : L"2");
debug(L"search for default Python found ");
if (result) {
debug(L"version %ls at '%ls'\n",
@@ -655,7 +662,7 @@ run_child(wchar_t * cmdline)
if (!ok)
error(RC_CREATE_PROCESS, L"Failed to get exit code of process");
debug(L"child process exit code: %d\n", rc);
- ExitProcess(rc);
+ exit(rc);
}
static void
@@ -1082,7 +1089,7 @@ static PYC_MAGIC magic_values[] = {
{ 3190, 3230, L"3.3" },
{ 3250, 3310, L"3.4" },
{ 3320, 3351, L"3.5" },
- { 3360, 3361, L"3.6" },
+ { 3360, 3379, L"3.6" },
{ 0 }
};
@@ -1094,7 +1101,7 @@ find_by_magic(unsigned short magic)
for (mp = magic_values; mp->min; mp++) {
if ((magic >= mp->min) && (magic <= mp->max)) {
- result = locate_python(mp->version);
+ result = locate_python(mp->version, FALSE);
if (result != NULL)
break;
}
@@ -1114,7 +1121,7 @@ maybe_handle_shebang(wchar_t ** argv, wchar_t * cmdline)
*/
FILE * fp;
errno_t rc = _wfopen_s(&fp, *argv, L"rb");
- unsigned char buffer[BUFSIZE];
+ char buffer[BUFSIZE];
wchar_t shebang_line[BUFSIZE + 1];
size_t read;
char *p;
@@ -1136,7 +1143,8 @@ maybe_handle_shebang(wchar_t ** argv, wchar_t * cmdline)
fclose(fp);
if ((read >= 4) && (buffer[3] == '\n') && (buffer[2] == '\r')) {
- ip = find_by_magic((buffer[1] << 8 | buffer[0]) & 0xFFFF);
+ ip = find_by_magic((((unsigned char)buffer[1]) << 8 |
+ (unsigned char)buffer[0]) & 0xFFFF);
if (ip != NULL) {
debug(L"script file is compiled against Python %ls\n",
ip->version);
@@ -1278,7 +1286,7 @@ specification: '%ls'.\nIn the first line of the script, 'python' needs to be \
followed by a valid version specifier.\nPlease check the documentation.",
command);
/* TODO could call validate_version(command) */
- ip = locate_python(command);
+ ip = locate_python(command, TRUE);
if (ip == NULL) {
error(RC_NO_PYTHON, L"Requested Python version \
(%ls) is not installed", command);
@@ -1362,6 +1370,7 @@ process(int argc, wchar_t ** argv)
wchar_t * av[2];
#endif
+ setvbuf(stderr, (char *)NULL, _IONBF, 0);
wp = get_env(L"PYLAUNCH_DEBUG");
if ((wp != NULL) && (*wp != L'\0'))
log_fp = stderr;
@@ -1483,7 +1492,7 @@ process(int argc, wchar_t ** argv)
plen = wcslen(p);
valid = (*p == L'-') && validate_version(&p[1]);
if (valid) {
- ip = locate_python(&p[1]);
+ ip = locate_python(&p[1], FALSE);
if (ip == NULL)
error(RC_NO_PYTHON, L"Requested Python version (%ls) not \
installed", &p[1]);
@@ -1510,7 +1519,7 @@ installed", &p[1]);
/* If we didn't find one, look for the default Python */
if (executable == NULL) {
- ip = locate_python(L"");
+ ip = locate_python(L"", FALSE);
if (ip == NULL)
error(RC_NO_PYTHON, L"Can't find a default Python.");
executable = ip->executable;
diff --git a/PC/launcher.ico b/PC/launcher.ico
deleted file mode 100644
index dad7d57..0000000
--- a/PC/launcher.ico
+++ /dev/null
Binary files differ
diff --git a/PC/msvcrtmodule.c b/PC/msvcrtmodule.c
index b0739d0..c9d1e6c 100644
--- a/PC/msvcrtmodule.c
+++ b/PC/msvcrtmodule.c
@@ -33,12 +33,12 @@
#endif
/*[python input]
-class Py_intptr_t_converter(CConverter):
- type = 'Py_intptr_t'
+class intptr_t_converter(CConverter):
+ type = 'intptr_t'
format_unit = '"_Py_PARSE_INTPTR"'
class handle_return_converter(long_return_converter):
- type = 'Py_intptr_t'
+ type = 'intptr_t'
cast = '(void *)'
conversion_fn = 'PyLong_FromVoidPtr'
@@ -59,7 +59,7 @@ class wchar_t_return_converter(CReturnConverter):
data.return_conversion.append(
'return_value = PyUnicode_FromOrdinal(_return_value);\n')
[python start generated code]*/
-/*[python end generated code: output=da39a3ee5e6b4b0d input=6a54fc4e73d0b367]*/
+/*[python end generated code: output=da39a3ee5e6b4b0d input=b59f1663dba11997]*/
/*[clinic input]
module msvcrt
@@ -148,7 +148,7 @@ msvcrt_setmode_impl(PyObject *module, int fd, int flags)
/*[clinic input]
msvcrt.open_osfhandle -> long
- handle: Py_intptr_t
+ handle: intptr_t
flags: int
/
@@ -160,8 +160,8 @@ to os.fdopen() to create a file object.
[clinic start generated code]*/
static long
-msvcrt_open_osfhandle_impl(PyObject *module, Py_intptr_t handle, int flags)
-/*[clinic end generated code: output=bf65e422243a39f9 input=4d8516ed32db8f65]*/
+msvcrt_open_osfhandle_impl(PyObject *module, intptr_t handle, int flags)
+/*[clinic end generated code: output=cede871bf939d6e3 input=cb2108bbea84514e]*/
{
int fd;
@@ -183,22 +183,17 @@ Return the file handle for the file descriptor fd.
Raises IOError if fd is not recognized.
[clinic start generated code]*/
-static Py_intptr_t
+static intptr_t
msvcrt_get_osfhandle_impl(PyObject *module, int fd)
-/*[clinic end generated code: output=eac47643338c0baa input=c7d18d02c8017ec1]*/
+/*[clinic end generated code: output=7ce761dd0de2b503 input=c7d18d02c8017ec1]*/
{
- Py_intptr_t handle = -1;
+ intptr_t handle = -1;
- if (!_PyVerify_fd(fd)) {
- PyErr_SetFromErrno(PyExc_IOError);
- }
- else {
_Py_BEGIN_SUPPRESS_IPH
- handle = _get_osfhandle(fd);
+ handle = _get_osfhandle(fd);
_Py_END_SUPPRESS_IPH
- if (handle == -1)
- PyErr_SetFromErrno(PyExc_IOError);
- }
+ if (handle == -1)
+ PyErr_SetFromErrno(PyExc_IOError);
return handle;
}
@@ -540,7 +535,6 @@ PyInit_msvcrt(void)
#endif
/* constants for the crt versions */
- (void)st;
#ifdef _VC_ASSEMBLY_PUBLICKEYTOKEN
st = PyModule_AddStringConstant(m, "VC_ASSEMBLY_PUBLICKEYTOKEN",
_VC_ASSEMBLY_PUBLICKEYTOKEN);
@@ -566,6 +560,8 @@ PyInit_msvcrt(void)
st = PyModule_AddObject(m, "CRT_ASSEMBLY_VERSION", version);
if (st < 0) return NULL;
#endif
+ /* make compiler warning quiet if st is unused */
+ (void)st;
return m;
}
diff --git a/PC/py.ico b/PC/py.ico
deleted file mode 100644
index 3357aef..0000000
--- a/PC/py.ico
+++ /dev/null
Binary files differ
diff --git a/PC/pyc.ico b/PC/pyc.ico
deleted file mode 100644
index f7bd2b1..0000000
--- a/PC/pyc.ico
+++ /dev/null
Binary files differ
diff --git a/PC/pycon.ico b/PC/pycon.ico
deleted file mode 100644
index 1ab629e..0000000
--- a/PC/pycon.ico
+++ /dev/null
Binary files differ
diff --git a/PC/pyconfig.h b/PC/pyconfig.h
index ac4f8f2..64e7aec 100644
--- a/PC/pyconfig.h
+++ b/PC/pyconfig.h
@@ -14,7 +14,6 @@ the following #defines
MS_WIN64 - Code specific to the MS Win64 API
MS_WIN32 - Code specific to the MS Win32 (and Win64) API (obsolete, this covers all supported APIs)
MS_WINDOWS - Code specific to Windows, but all versions.
-MS_WINCE - Code specific to Windows CE
Py_ENABLE_SHARED - Code if the Python core is built as a DLL.
Also note that neither "_M_IX86" or "_MSC_VER" should be used for
@@ -30,10 +29,6 @@ WIN32 is still required for the locale module.
*/
-#ifdef _WIN32_WCE
-#define MS_WINCE
-#endif
-
/* Deprecated USE_DL_EXPORT macro - please use Py_BUILD_CORE */
#ifdef USE_DL_EXPORT
# define Py_BUILD_CORE
@@ -53,8 +48,6 @@ WIN32 is still required for the locale module.
#define _CRT_NONSTDC_NO_DEPRECATE 1
#endif
-/* Windows CE does not have these */
-#ifndef MS_WINCE
#define HAVE_IO_H
#define HAVE_SYS_UTIME_H
#define HAVE_TEMPNAM
@@ -62,11 +55,8 @@ WIN32 is still required for the locale module.
#define HAVE_TMPNAM
#define HAVE_CLOCK
#define HAVE_STRERROR
-#endif
-#ifdef HAVE_IO_H
#include <io.h>
-#endif
#define HAVE_HYPOT
#define HAVE_STRFTIME
@@ -86,17 +76,6 @@ WIN32 is still required for the locale module.
#define USE_SOCKET
#endif
-/* CE6 doesn't have strdup() but _strdup(). Assume the same for earlier versions. */
-#if defined(MS_WINCE)
-# include <stdlib.h>
-# define strdup _strdup
-#endif
-
-#ifdef MS_WINCE
-/* Windows CE does not support environment variables */
-#define getenv(v) (NULL)
-#define environ (NULL)
-#endif
/* Compiler specific defines */
@@ -286,7 +265,6 @@ typedef int pid_t;
#endif
/* 64 bit ints are usually spelt __int64 unless compiler has overridden */
-#define HAVE_LONG_LONG 1
#ifndef PY_LONG_LONG
# define PY_LONG_LONG __int64
# define PY_LLONG_MAX _I64_MAX
@@ -312,11 +290,11 @@ Py_NO_ENABLE_SHARED to find out. Also support MS_NO_COREDLL for b/w compat */
their Makefile (other compilers are generally
taken care of by distutils.) */
# if defined(_DEBUG)
-# pragma comment(lib,"python35_d.lib")
+# pragma comment(lib,"python36_d.lib")
# elif defined(Py_LIMITED_API)
# pragma comment(lib,"python3.lib")
# else
-# pragma comment(lib,"python35.lib")
+# pragma comment(lib,"python36.lib")
# endif /* _DEBUG */
# endif /* _MSC_VER */
# endif /* Py_BUILD_CORE */
@@ -387,39 +365,10 @@ Py_NO_ENABLE_SHARED to find out. Also support MS_NO_COREDLL for b/w compat */
/* define signed and unsigned exact-width 32-bit and 64-bit types, used in the
implementation of Python integers. */
-#ifndef PY_UINT32_T
-#if SIZEOF_INT == 4
-#define HAVE_UINT32_T 1
-#define PY_UINT32_T unsigned int
-#elif SIZEOF_LONG == 4
-#define HAVE_UINT32_T 1
-#define PY_UINT32_T unsigned long
-#endif
-#endif
-
-#ifndef PY_UINT64_T
-#if SIZEOF_LONG_LONG == 8
-#define HAVE_UINT64_T 1
-#define PY_UINT64_T unsigned PY_LONG_LONG
-#endif
-#endif
-
-#ifndef PY_INT32_T
-#if SIZEOF_INT == 4
-#define HAVE_INT32_T 1
-#define PY_INT32_T int
-#elif SIZEOF_LONG == 4
-#define HAVE_INT32_T 1
-#define PY_INT32_T long
-#endif
-#endif
-
-#ifndef PY_INT64_T
-#if SIZEOF_LONG_LONG == 8
-#define HAVE_INT64_T 1
-#define PY_INT64_T PY_LONG_LONG
-#endif
-#endif
+#define PY_UINT32_T uint32_t
+#define PY_UINT64_T uint64_t
+#define PY_INT32_T int32_t
+#define PY_INT64_T int64_t
/* Fairly standard from here! */
@@ -448,14 +397,10 @@ Py_NO_ENABLE_SHARED to find out. Also support MS_NO_COREDLL for b/w compat */
/* #define const */
/* Define to 1 if you have the <conio.h> header file. */
-#ifndef MS_WINCE
#define HAVE_CONIO_H 1
-#endif
/* Define to 1 if you have the <direct.h> header file. */
-#ifndef MS_WINCE
#define HAVE_DIRECT_H 1
-#endif
/* Define if you have dirent.h. */
/* #define DIRENT 1 */
@@ -528,9 +473,7 @@ Py_NO_ENABLE_SHARED to find out. Also support MS_NO_COREDLL for b/w compat */
/* #define HAVE_ALTZONE */
/* Define if you have the putenv function. */
-#ifndef MS_WINCE
#define HAVE_PUTENV
-#endif
/* Define if your compiler supports function prototypes */
#define HAVE_PROTOTYPES
@@ -558,9 +501,7 @@ Py_NO_ENABLE_SHARED to find out. Also support MS_NO_COREDLL for b/w compat */
#define HAVE_DYNAMIC_LOADING
/* Define if you have ftime. */
-#ifndef MS_WINCE
#define HAVE_FTIME
-#endif
/* Define if you have getpeername. */
#define HAVE_GETPEERNAME
@@ -569,9 +510,7 @@ Py_NO_ENABLE_SHARED to find out. Also support MS_NO_COREDLL for b/w compat */
/* #undef HAVE_GETPGRP */
/* Define if you have getpid. */
-#ifndef MS_WINCE
#define HAVE_GETPID
-#endif
/* Define if you have gettimeofday. */
/* #undef HAVE_GETTIMEOFDAY */
@@ -633,14 +572,10 @@ Py_NO_ENABLE_SHARED to find out. Also support MS_NO_COREDLL for b/w compat */
#endif
/* Define to 1 if you have the `wcscoll' function. */
-#ifndef MS_WINCE
#define HAVE_WCSCOLL 1
-#endif
/* Define to 1 if you have the `wcsxfrm' function. */
-#ifndef MS_WINCE
#define HAVE_WCSXFRM 1
-#endif
/* Define if the zlib library has inflateCopy */
#define HAVE_ZLIB_COPY 1
@@ -649,24 +584,16 @@ Py_NO_ENABLE_SHARED to find out. Also support MS_NO_COREDLL for b/w compat */
/* #undef HAVE_DLFCN_H */
/* Define to 1 if you have the <errno.h> header file. */
-#ifndef MS_WINCE
#define HAVE_ERRNO_H 1
-#endif
/* Define if you have the <fcntl.h> header file. */
-#ifndef MS_WINCE
#define HAVE_FCNTL_H 1
-#endif
/* Define to 1 if you have the <process.h> header file. */
-#ifndef MS_WINCE
#define HAVE_PROCESS_H 1
-#endif
/* Define to 1 if you have the <signal.h> header file. */
-#ifndef MS_WINCE
#define HAVE_SIGNAL_H 1
-#endif
/* Define if you have the <stdarg.h> prototypes. */
#define HAVE_STDARG_PROTOTYPES
@@ -684,9 +611,7 @@ Py_NO_ENABLE_SHARED to find out. Also support MS_NO_COREDLL for b/w compat */
/* #define HAVE_SYS_SELECT_H 1 */
/* Define to 1 if you have the <sys/stat.h> header file. */
-#ifndef MS_WINCE
#define HAVE_SYS_STAT_H 1
-#endif
/* Define if you have the <sys/time.h> header file. */
/* #define HAVE_SYS_TIME_H 1 */
@@ -695,9 +620,7 @@ Py_NO_ENABLE_SHARED to find out. Also support MS_NO_COREDLL for b/w compat */
/* #define HAVE_SYS_TIMES_H 1 */
/* Define to 1 if you have the <sys/types.h> header file. */
-#ifndef MS_WINCE
#define HAVE_SYS_TYPES_H 1
-#endif
/* Define if you have the <sys/un.h> header file. */
/* #define HAVE_SYS_UN_H 1 */
@@ -720,6 +643,9 @@ Py_NO_ENABLE_SHARED to find out. Also support MS_NO_COREDLL for b/w compat */
/* The size of `wchar_t', as computed by sizeof. */
#define SIZEOF_WCHAR_T 2
+/* The size of `_Bool', as computed by sizeof. */
+#define SIZEOF__BOOL 1
+
/* The size of `pid_t', as computed by sizeof. */
#define SIZEOF_PID_T SIZEOF_INT
diff --git a/PC/pylauncher.rc b/PC/pylauncher.rc
index a8db0a8..3da3445 100644
--- a/PC/pylauncher.rc
+++ b/PC/pylauncher.rc
@@ -7,9 +7,13 @@
#include <winuser.h>
1 RT_MANIFEST "python.manifest"
-1 ICON DISCARDABLE "launcher.ico"
-2 ICON DISCARDABLE "py.ico"
-3 ICON DISCARDABLE "pyc.ico"
+1 ICON DISCARDABLE "icons\launcher.ico"
+2 ICON DISCARDABLE "icons\py.ico"
+3 ICON DISCARDABLE "icons\pyc.ico"
+4 ICON DISCARDABLE "icons\pyd.ico"
+5 ICON DISCARDABLE "icons\python.ico"
+6 ICON DISCARDABLE "icons\pythonw.ico"
+7 ICON DISCARDABLE "icons\setup.ico"
/////////////////////////////////////////////////////////////////////////////
//
diff --git a/PC/python.manifest b/PC/python.manifest
index d6e4bba..4e73d60 100644
--- a/PC/python.manifest
+++ b/PC/python.manifest
@@ -16,10 +16,15 @@
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
</application>
</compatibility>
+ <application xmlns="urn:schemas-microsoft-com:asm.v3">
+ <windowsSettings>
+ <longPathAware xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">true</longPathAware>
+ </windowsSettings>
+ </application>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls"
version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*" />
</dependentAssembly>
</dependency>
-</assembly> \ No newline at end of file
+</assembly>
diff --git a/PC/python3.def b/PC/python3.def
index 88c0742..e8d2d8c 100644
--- a/PC/python3.def
+++ b/PC/python3.def
@@ -2,712 +2,713 @@
; It is used when building python3dll.vcxproj
LIBRARY "python3"
EXPORTS
- PyArg_Parse=python35.PyArg_Parse
- PyArg_ParseTuple=python35.PyArg_ParseTuple
- PyArg_ParseTupleAndKeywords=python35.PyArg_ParseTupleAndKeywords
- PyArg_UnpackTuple=python35.PyArg_UnpackTuple
- PyArg_VaParse=python35.PyArg_VaParse
- PyArg_VaParseTupleAndKeywords=python35.PyArg_VaParseTupleAndKeywords
- PyArg_ValidateKeywordArguments=python35.PyArg_ValidateKeywordArguments
- PyBaseObject_Type=python35.PyBaseObject_Type DATA
- PyBool_FromLong=python35.PyBool_FromLong
- PyBool_Type=python35.PyBool_Type DATA
- PyByteArrayIter_Type=python35.PyByteArrayIter_Type DATA
- PyByteArray_AsString=python35.PyByteArray_AsString
- PyByteArray_Concat=python35.PyByteArray_Concat
- PyByteArray_FromObject=python35.PyByteArray_FromObject
- PyByteArray_FromStringAndSize=python35.PyByteArray_FromStringAndSize
- PyByteArray_Resize=python35.PyByteArray_Resize
- PyByteArray_Size=python35.PyByteArray_Size
- PyByteArray_Type=python35.PyByteArray_Type DATA
- PyBytesIter_Type=python35.PyBytesIter_Type DATA
- PyBytes_AsString=python35.PyBytes_AsString
- PyBytes_AsStringAndSize=python35.PyBytes_AsStringAndSize
- PyBytes_Concat=python35.PyBytes_Concat
- PyBytes_ConcatAndDel=python35.PyBytes_ConcatAndDel
- PyBytes_DecodeEscape=python35.PyBytes_DecodeEscape
- PyBytes_FromFormat=python35.PyBytes_FromFormat
- PyBytes_FromFormatV=python35.PyBytes_FromFormatV
- PyBytes_FromObject=python35.PyBytes_FromObject
- PyBytes_FromString=python35.PyBytes_FromString
- PyBytes_FromStringAndSize=python35.PyBytes_FromStringAndSize
- PyBytes_Repr=python35.PyBytes_Repr
- PyBytes_Size=python35.PyBytes_Size
- PyBytes_Type=python35.PyBytes_Type DATA
- PyCFunction_Call=python35.PyCFunction_Call
- PyCFunction_ClearFreeList=python35.PyCFunction_ClearFreeList
- PyCFunction_GetFlags=python35.PyCFunction_GetFlags
- PyCFunction_GetFunction=python35.PyCFunction_GetFunction
- PyCFunction_GetSelf=python35.PyCFunction_GetSelf
- PyCFunction_New=python35.PyCFunction_New
- PyCFunction_NewEx=python35.PyCFunction_NewEx
- PyCFunction_Type=python35.PyCFunction_Type DATA
- PyCallIter_New=python35.PyCallIter_New
- PyCallIter_Type=python35.PyCallIter_Type DATA
- PyCallable_Check=python35.PyCallable_Check
- PyCapsule_GetContext=python35.PyCapsule_GetContext
- PyCapsule_GetDestructor=python35.PyCapsule_GetDestructor
- PyCapsule_GetName=python35.PyCapsule_GetName
- PyCapsule_GetPointer=python35.PyCapsule_GetPointer
- PyCapsule_Import=python35.PyCapsule_Import
- PyCapsule_IsValid=python35.PyCapsule_IsValid
- PyCapsule_New=python35.PyCapsule_New
- PyCapsule_SetContext=python35.PyCapsule_SetContext
- PyCapsule_SetDestructor=python35.PyCapsule_SetDestructor
- PyCapsule_SetName=python35.PyCapsule_SetName
- PyCapsule_SetPointer=python35.PyCapsule_SetPointer
- PyCapsule_Type=python35.PyCapsule_Type DATA
- PyClassMethodDescr_Type=python35.PyClassMethodDescr_Type DATA
- PyCodec_BackslashReplaceErrors=python35.PyCodec_BackslashReplaceErrors
- PyCodec_Decode=python35.PyCodec_Decode
- PyCodec_Decoder=python35.PyCodec_Decoder
- PyCodec_Encode=python35.PyCodec_Encode
- PyCodec_Encoder=python35.PyCodec_Encoder
- PyCodec_IgnoreErrors=python35.PyCodec_IgnoreErrors
- PyCodec_IncrementalDecoder=python35.PyCodec_IncrementalDecoder
- PyCodec_IncrementalEncoder=python35.PyCodec_IncrementalEncoder
- PyCodec_KnownEncoding=python35.PyCodec_KnownEncoding
- PyCodec_LookupError=python35.PyCodec_LookupError
- PyCodec_Register=python35.PyCodec_Register
- PyCodec_RegisterError=python35.PyCodec_RegisterError
- PyCodec_ReplaceErrors=python35.PyCodec_ReplaceErrors
- PyCodec_StreamReader=python35.PyCodec_StreamReader
- PyCodec_StreamWriter=python35.PyCodec_StreamWriter
- PyCodec_StrictErrors=python35.PyCodec_StrictErrors
- PyCodec_XMLCharRefReplaceErrors=python35.PyCodec_XMLCharRefReplaceErrors
- PyComplex_FromDoubles=python35.PyComplex_FromDoubles
- PyComplex_ImagAsDouble=python35.PyComplex_ImagAsDouble
- PyComplex_RealAsDouble=python35.PyComplex_RealAsDouble
- PyComplex_Type=python35.PyComplex_Type DATA
- PyDescr_NewClassMethod=python35.PyDescr_NewClassMethod
- PyDescr_NewGetSet=python35.PyDescr_NewGetSet
- PyDescr_NewMember=python35.PyDescr_NewMember
- PyDescr_NewMethod=python35.PyDescr_NewMethod
- PyDictItems_Type=python35.PyDictItems_Type DATA
- PyDictIterItem_Type=python35.PyDictIterItem_Type DATA
- PyDictIterKey_Type=python35.PyDictIterKey_Type DATA
- PyDictIterValue_Type=python35.PyDictIterValue_Type DATA
- PyDictKeys_Type=python35.PyDictKeys_Type DATA
- PyDictProxy_New=python35.PyDictProxy_New
- PyDictProxy_Type=python35.PyDictProxy_Type DATA
- PyDictValues_Type=python35.PyDictValues_Type DATA
- PyDict_Clear=python35.PyDict_Clear
- PyDict_Contains=python35.PyDict_Contains
- PyDict_Copy=python35.PyDict_Copy
- PyDict_DelItem=python35.PyDict_DelItem
- PyDict_DelItemString=python35.PyDict_DelItemString
- PyDict_GetItem=python35.PyDict_GetItem
- PyDict_GetItemString=python35.PyDict_GetItemString
- PyDict_GetItemWithError=python35.PyDict_GetItemWithError
- PyDict_Items=python35.PyDict_Items
- PyDict_Keys=python35.PyDict_Keys
- PyDict_Merge=python35.PyDict_Merge
- PyDict_MergeFromSeq2=python35.PyDict_MergeFromSeq2
- PyDict_New=python35.PyDict_New
- PyDict_Next=python35.PyDict_Next
- PyDict_SetItem=python35.PyDict_SetItem
- PyDict_SetItemString=python35.PyDict_SetItemString
- PyDict_Size=python35.PyDict_Size
- PyDict_Type=python35.PyDict_Type DATA
- PyDict_Update=python35.PyDict_Update
- PyDict_Values=python35.PyDict_Values
- PyEllipsis_Type=python35.PyEllipsis_Type DATA
- PyEnum_Type=python35.PyEnum_Type DATA
- PyErr_BadArgument=python35.PyErr_BadArgument
- PyErr_BadInternalCall=python35.PyErr_BadInternalCall
- PyErr_CheckSignals=python35.PyErr_CheckSignals
- PyErr_Clear=python35.PyErr_Clear
- PyErr_Display=python35.PyErr_Display
- PyErr_ExceptionMatches=python35.PyErr_ExceptionMatches
- PyErr_Fetch=python35.PyErr_Fetch
- PyErr_Format=python35.PyErr_Format
- PyErr_FormatV=python35.PyErr_FormatV
- PyErr_GivenExceptionMatches=python35.PyErr_GivenExceptionMatches
- PyErr_NewException=python35.PyErr_NewException
- PyErr_NewExceptionWithDoc=python35.PyErr_NewExceptionWithDoc
- PyErr_NoMemory=python35.PyErr_NoMemory
- PyErr_NormalizeException=python35.PyErr_NormalizeException
- PyErr_Occurred=python35.PyErr_Occurred
- PyErr_Print=python35.PyErr_Print
- PyErr_PrintEx=python35.PyErr_PrintEx
- PyErr_ProgramText=python35.PyErr_ProgramText
- PyErr_Restore=python35.PyErr_Restore
- PyErr_SetFromErrno=python35.PyErr_SetFromErrno
- PyErr_SetFromErrnoWithFilename=python35.PyErr_SetFromErrnoWithFilename
- PyErr_SetFromErrnoWithFilenameObject=python35.PyErr_SetFromErrnoWithFilenameObject
- PyErr_SetInterrupt=python35.PyErr_SetInterrupt
- PyErr_SetNone=python35.PyErr_SetNone
- PyErr_SetObject=python35.PyErr_SetObject
- PyErr_SetString=python35.PyErr_SetString
- PyErr_SyntaxLocation=python35.PyErr_SyntaxLocation
- PyErr_WarnEx=python35.PyErr_WarnEx
- PyErr_WarnExplicit=python35.PyErr_WarnExplicit
- PyErr_WarnFormat=python35.PyErr_WarnFormat
- PyErr_WriteUnraisable=python35.PyErr_WriteUnraisable
- PyEval_AcquireLock=python35.PyEval_AcquireLock
- PyEval_AcquireThread=python35.PyEval_AcquireThread
- PyEval_CallFunction=python35.PyEval_CallFunction
- PyEval_CallMethod=python35.PyEval_CallMethod
- PyEval_CallObjectWithKeywords=python35.PyEval_CallObjectWithKeywords
- PyEval_EvalCode=python35.PyEval_EvalCode
- PyEval_EvalCodeEx=python35.PyEval_EvalCodeEx
- PyEval_EvalFrame=python35.PyEval_EvalFrame
- PyEval_EvalFrameEx=python35.PyEval_EvalFrameEx
- PyEval_GetBuiltins=python35.PyEval_GetBuiltins
- PyEval_GetCallStats=python35.PyEval_GetCallStats
- PyEval_GetFrame=python35.PyEval_GetFrame
- PyEval_GetFuncDesc=python35.PyEval_GetFuncDesc
- PyEval_GetFuncName=python35.PyEval_GetFuncName
- PyEval_GetGlobals=python35.PyEval_GetGlobals
- PyEval_GetLocals=python35.PyEval_GetLocals
- PyEval_InitThreads=python35.PyEval_InitThreads
- PyEval_ReInitThreads=python35.PyEval_ReInitThreads
- PyEval_ReleaseLock=python35.PyEval_ReleaseLock
- PyEval_ReleaseThread=python35.PyEval_ReleaseThread
- PyEval_RestoreThread=python35.PyEval_RestoreThread
- PyEval_SaveThread=python35.PyEval_SaveThread
- PyEval_ThreadsInitialized=python35.PyEval_ThreadsInitialized
- PyExc_ArithmeticError=python35.PyExc_ArithmeticError DATA
- PyExc_AssertionError=python35.PyExc_AssertionError DATA
- PyExc_AttributeError=python35.PyExc_AttributeError DATA
- PyExc_BaseException=python35.PyExc_BaseException DATA
- PyExc_BufferError=python35.PyExc_BufferError DATA
- PyExc_BytesWarning=python35.PyExc_BytesWarning DATA
- PyExc_DeprecationWarning=python35.PyExc_DeprecationWarning DATA
- PyExc_EOFError=python35.PyExc_EOFError DATA
- PyExc_EnvironmentError=python35.PyExc_EnvironmentError DATA
- PyExc_Exception=python35.PyExc_Exception DATA
- PyExc_FloatingPointError=python35.PyExc_FloatingPointError DATA
- PyExc_FutureWarning=python35.PyExc_FutureWarning DATA
- PyExc_GeneratorExit=python35.PyExc_GeneratorExit DATA
- PyExc_IOError=python35.PyExc_IOError DATA
- PyExc_ImportError=python35.PyExc_ImportError DATA
- PyExc_ImportWarning=python35.PyExc_ImportWarning DATA
- PyExc_IndentationError=python35.PyExc_IndentationError DATA
- PyExc_IndexError=python35.PyExc_IndexError DATA
- PyExc_KeyError=python35.PyExc_KeyError DATA
- PyExc_KeyboardInterrupt=python35.PyExc_KeyboardInterrupt DATA
- PyExc_LookupError=python35.PyExc_LookupError DATA
- PyExc_MemoryError=python35.PyExc_MemoryError DATA
- PyExc_MemoryErrorInst=python35.PyExc_MemoryErrorInst DATA
- PyExc_NameError=python35.PyExc_NameError DATA
- PyExc_NotImplementedError=python35.PyExc_NotImplementedError DATA
- PyExc_OSError=python35.PyExc_OSError DATA
- PyExc_OverflowError=python35.PyExc_OverflowError DATA
- PyExc_PendingDeprecationWarning=python35.PyExc_PendingDeprecationWarning DATA
- PyExc_RecursionErrorInst=python35.PyExc_RecursionErrorInst DATA
- PyExc_ReferenceError=python35.PyExc_ReferenceError DATA
- PyExc_RuntimeError=python35.PyExc_RuntimeError DATA
- PyExc_RuntimeWarning=python35.PyExc_RuntimeWarning DATA
- PyExc_StopIteration=python35.PyExc_StopIteration DATA
- PyExc_SyntaxError=python35.PyExc_SyntaxError DATA
- PyExc_SyntaxWarning=python35.PyExc_SyntaxWarning DATA
- PyExc_SystemError=python35.PyExc_SystemError DATA
- PyExc_SystemExit=python35.PyExc_SystemExit DATA
- PyExc_TabError=python35.PyExc_TabError DATA
- PyExc_TypeError=python35.PyExc_TypeError DATA
- PyExc_UnboundLocalError=python35.PyExc_UnboundLocalError DATA
- PyExc_UnicodeDecodeError=python35.PyExc_UnicodeDecodeError DATA
- PyExc_UnicodeEncodeError=python35.PyExc_UnicodeEncodeError DATA
- PyExc_UnicodeError=python35.PyExc_UnicodeError DATA
- PyExc_UnicodeTranslateError=python35.PyExc_UnicodeTranslateError DATA
- PyExc_UnicodeWarning=python35.PyExc_UnicodeWarning DATA
- PyExc_UserWarning=python35.PyExc_UserWarning DATA
- PyExc_ValueError=python35.PyExc_ValueError DATA
- PyExc_Warning=python35.PyExc_Warning DATA
- PyExc_ZeroDivisionError=python35.PyExc_ZeroDivisionError DATA
- PyException_GetCause=python35.PyException_GetCause
- PyException_GetContext=python35.PyException_GetContext
- PyException_GetTraceback=python35.PyException_GetTraceback
- PyException_SetCause=python35.PyException_SetCause
- PyException_SetContext=python35.PyException_SetContext
- PyException_SetTraceback=python35.PyException_SetTraceback
- PyFile_FromFd=python35.PyFile_FromFd
- PyFile_GetLine=python35.PyFile_GetLine
- PyFile_WriteObject=python35.PyFile_WriteObject
- PyFile_WriteString=python35.PyFile_WriteString
- PyFilter_Type=python35.PyFilter_Type DATA
- PyFloat_AsDouble=python35.PyFloat_AsDouble
- PyFloat_FromDouble=python35.PyFloat_FromDouble
- PyFloat_FromString=python35.PyFloat_FromString
- PyFloat_GetInfo=python35.PyFloat_GetInfo
- PyFloat_GetMax=python35.PyFloat_GetMax
- PyFloat_GetMin=python35.PyFloat_GetMin
- PyFloat_Type=python35.PyFloat_Type DATA
- PyFrozenSet_New=python35.PyFrozenSet_New
- PyFrozenSet_Type=python35.PyFrozenSet_Type DATA
- PyGC_Collect=python35.PyGC_Collect
- PyGILState_Ensure=python35.PyGILState_Ensure
- PyGILState_GetThisThreadState=python35.PyGILState_GetThisThreadState
- PyGILState_Release=python35.PyGILState_Release
- PyGetSetDescr_Type=python35.PyGetSetDescr_Type DATA
- PyImport_AddModule=python35.PyImport_AddModule
- PyImport_AppendInittab=python35.PyImport_AppendInittab
- PyImport_Cleanup=python35.PyImport_Cleanup
- PyImport_ExecCodeModule=python35.PyImport_ExecCodeModule
- PyImport_ExecCodeModuleEx=python35.PyImport_ExecCodeModuleEx
- PyImport_ExecCodeModuleWithPathnames=python35.PyImport_ExecCodeModuleWithPathnames
- PyImport_GetImporter=python35.PyImport_GetImporter
- PyImport_GetMagicNumber=python35.PyImport_GetMagicNumber
- PyImport_GetMagicTag=python35.PyImport_GetMagicTag
- PyImport_GetModuleDict=python35.PyImport_GetModuleDict
- PyImport_Import=python35.PyImport_Import
- PyImport_ImportFrozenModule=python35.PyImport_ImportFrozenModule
- PyImport_ImportModule=python35.PyImport_ImportModule
- PyImport_ImportModuleLevel=python35.PyImport_ImportModuleLevel
- PyImport_ImportModuleNoBlock=python35.PyImport_ImportModuleNoBlock
- PyImport_ReloadModule=python35.PyImport_ReloadModule
- PyInterpreterState_Clear=python35.PyInterpreterState_Clear
- PyInterpreterState_Delete=python35.PyInterpreterState_Delete
- PyInterpreterState_New=python35.PyInterpreterState_New
- PyIter_Next=python35.PyIter_Next
- PyListIter_Type=python35.PyListIter_Type DATA
- PyListRevIter_Type=python35.PyListRevIter_Type DATA
- PyList_Append=python35.PyList_Append
- PyList_AsTuple=python35.PyList_AsTuple
- PyList_GetItem=python35.PyList_GetItem
- PyList_GetSlice=python35.PyList_GetSlice
- PyList_Insert=python35.PyList_Insert
- PyList_New=python35.PyList_New
- PyList_Reverse=python35.PyList_Reverse
- PyList_SetItem=python35.PyList_SetItem
- PyList_SetSlice=python35.PyList_SetSlice
- PyList_Size=python35.PyList_Size
- PyList_Sort=python35.PyList_Sort
- PyList_Type=python35.PyList_Type DATA
- PyLongRangeIter_Type=python35.PyLongRangeIter_Type DATA
- PyLong_AsDouble=python35.PyLong_AsDouble
- PyLong_AsLong=python35.PyLong_AsLong
- PyLong_AsLongAndOverflow=python35.PyLong_AsLongAndOverflow
- PyLong_AsLongLong=python35.PyLong_AsLongLong
- PyLong_AsLongLongAndOverflow=python35.PyLong_AsLongLongAndOverflow
- PyLong_AsSize_t=python35.PyLong_AsSize_t
- PyLong_AsSsize_t=python35.PyLong_AsSsize_t
- PyLong_AsUnsignedLong=python35.PyLong_AsUnsignedLong
- PyLong_AsUnsignedLongLong=python35.PyLong_AsUnsignedLongLong
- PyLong_AsUnsignedLongLongMask=python35.PyLong_AsUnsignedLongLongMask
- PyLong_AsUnsignedLongMask=python35.PyLong_AsUnsignedLongMask
- PyLong_AsVoidPtr=python35.PyLong_AsVoidPtr
- PyLong_FromDouble=python35.PyLong_FromDouble
- PyLong_FromLong=python35.PyLong_FromLong
- PyLong_FromLongLong=python35.PyLong_FromLongLong
- PyLong_FromSize_t=python35.PyLong_FromSize_t
- PyLong_FromSsize_t=python35.PyLong_FromSsize_t
- PyLong_FromString=python35.PyLong_FromString
- PyLong_FromUnsignedLong=python35.PyLong_FromUnsignedLong
- PyLong_FromUnsignedLongLong=python35.PyLong_FromUnsignedLongLong
- PyLong_FromVoidPtr=python35.PyLong_FromVoidPtr
- PyLong_GetInfo=python35.PyLong_GetInfo
- PyLong_Type=python35.PyLong_Type DATA
- PyMap_Type=python35.PyMap_Type DATA
- PyMapping_Check=python35.PyMapping_Check
- PyMapping_GetItemString=python35.PyMapping_GetItemString
- PyMapping_HasKey=python35.PyMapping_HasKey
- PyMapping_HasKeyString=python35.PyMapping_HasKeyString
- PyMapping_Items=python35.PyMapping_Items
- PyMapping_Keys=python35.PyMapping_Keys
- PyMapping_Length=python35.PyMapping_Length
- PyMapping_SetItemString=python35.PyMapping_SetItemString
- PyMapping_Size=python35.PyMapping_Size
- PyMapping_Values=python35.PyMapping_Values
- PyMem_Free=python35.PyMem_Free
- PyMem_Malloc=python35.PyMem_Malloc
- PyMem_Realloc=python35.PyMem_Realloc
- PyMemberDescr_Type=python35.PyMemberDescr_Type DATA
- PyMemoryView_FromObject=python35.PyMemoryView_FromObject
- PyMemoryView_GetContiguous=python35.PyMemoryView_GetContiguous
- PyMemoryView_Type=python35.PyMemoryView_Type DATA
- PyMethodDescr_Type=python35.PyMethodDescr_Type DATA
- PyModule_AddIntConstant=python35.PyModule_AddIntConstant
- PyModule_AddObject=python35.PyModule_AddObject
- PyModule_AddStringConstant=python35.PyModule_AddStringConstant
- PyModule_Create2=python35.PyModule_Create2
- PyModule_GetDef=python35.PyModule_GetDef
- PyModule_GetDict=python35.PyModule_GetDict
- PyModule_GetFilename=python35.PyModule_GetFilename
- PyModule_GetFilenameObject=python35.PyModule_GetFilenameObject
- PyModule_GetName=python35.PyModule_GetName
- PyModule_GetState=python35.PyModule_GetState
- PyModule_New=python35.PyModule_New
- PyModule_Type=python35.PyModule_Type DATA
- PyModuleDef_Init=python35.PyModuleDef_Init
- PyModuleDef_Type=python35.PyModuleDef_Type DATA
- PyNullImporter_Type=python35.PyNullImporter_Type DATA
- PyNumber_Absolute=python35.PyNumber_Absolute
- PyNumber_Add=python35.PyNumber_Add
- PyNumber_And=python35.PyNumber_And
- PyNumber_AsSsize_t=python35.PyNumber_AsSsize_t
- PyNumber_Check=python35.PyNumber_Check
- PyNumber_Divmod=python35.PyNumber_Divmod
- PyNumber_Float=python35.PyNumber_Float
- PyNumber_FloorDivide=python35.PyNumber_FloorDivide
- PyNumber_InPlaceAdd=python35.PyNumber_InPlaceAdd
- PyNumber_InPlaceAnd=python35.PyNumber_InPlaceAnd
- PyNumber_InPlaceFloorDivide=python35.PyNumber_InPlaceFloorDivide
- PyNumber_InPlaceLshift=python35.PyNumber_InPlaceLshift
- PyNumber_InPlaceMultiply=python35.PyNumber_InPlaceMultiply
- PyNumber_InPlaceOr=python35.PyNumber_InPlaceOr
- PyNumber_InPlacePower=python35.PyNumber_InPlacePower
- PyNumber_InPlaceRemainder=python35.PyNumber_InPlaceRemainder
- PyNumber_InPlaceRshift=python35.PyNumber_InPlaceRshift
- PyNumber_InPlaceSubtract=python35.PyNumber_InPlaceSubtract
- PyNumber_InPlaceTrueDivide=python35.PyNumber_InPlaceTrueDivide
- PyNumber_InPlaceXor=python35.PyNumber_InPlaceXor
- PyNumber_Index=python35.PyNumber_Index
- PyNumber_Invert=python35.PyNumber_Invert
- PyNumber_Long=python35.PyNumber_Long
- PyNumber_Lshift=python35.PyNumber_Lshift
- PyNumber_Multiply=python35.PyNumber_Multiply
- PyNumber_Negative=python35.PyNumber_Negative
- PyNumber_Or=python35.PyNumber_Or
- PyNumber_Positive=python35.PyNumber_Positive
- PyNumber_Power=python35.PyNumber_Power
- PyNumber_Remainder=python35.PyNumber_Remainder
- PyNumber_Rshift=python35.PyNumber_Rshift
- PyNumber_Subtract=python35.PyNumber_Subtract
- PyNumber_ToBase=python35.PyNumber_ToBase
- PyNumber_TrueDivide=python35.PyNumber_TrueDivide
- PyNumber_Xor=python35.PyNumber_Xor
- PyOS_AfterFork=python35.PyOS_AfterFork
- PyOS_InitInterrupts=python35.PyOS_InitInterrupts
- PyOS_InputHook=python35.PyOS_InputHook DATA
- PyOS_InterruptOccurred=python35.PyOS_InterruptOccurred
- PyOS_ReadlineFunctionPointer=python35.PyOS_ReadlineFunctionPointer DATA
- PyOS_double_to_string=python35.PyOS_double_to_string
- PyOS_getsig=python35.PyOS_getsig
- PyOS_mystricmp=python35.PyOS_mystricmp
- PyOS_mystrnicmp=python35.PyOS_mystrnicmp
- PyOS_setsig=python35.PyOS_setsig
- PyOS_snprintf=python35.PyOS_snprintf
- PyOS_string_to_double=python35.PyOS_string_to_double
- PyOS_strtol=python35.PyOS_strtol
- PyOS_strtoul=python35.PyOS_strtoul
- PyOS_vsnprintf=python35.PyOS_vsnprintf
- PyObject_ASCII=python35.PyObject_ASCII
- PyObject_AsCharBuffer=python35.PyObject_AsCharBuffer
- PyObject_AsFileDescriptor=python35.PyObject_AsFileDescriptor
- PyObject_AsReadBuffer=python35.PyObject_AsReadBuffer
- PyObject_AsWriteBuffer=python35.PyObject_AsWriteBuffer
- PyObject_Bytes=python35.PyObject_Bytes
- PyObject_Call=python35.PyObject_Call
- PyObject_CallFunction=python35.PyObject_CallFunction
- PyObject_CallFunctionObjArgs=python35.PyObject_CallFunctionObjArgs
- PyObject_CallMethod=python35.PyObject_CallMethod
- PyObject_CallMethodObjArgs=python35.PyObject_CallMethodObjArgs
- PyObject_CallObject=python35.PyObject_CallObject
- PyObject_CheckReadBuffer=python35.PyObject_CheckReadBuffer
- PyObject_ClearWeakRefs=python35.PyObject_ClearWeakRefs
- PyObject_DelItem=python35.PyObject_DelItem
- PyObject_DelItemString=python35.PyObject_DelItemString
- PyObject_Dir=python35.PyObject_Dir
- PyObject_Format=python35.PyObject_Format
- PyObject_Free=python35.PyObject_Free
- PyObject_GC_Del=python35.PyObject_GC_Del
- PyObject_GC_Track=python35.PyObject_GC_Track
- PyObject_GC_UnTrack=python35.PyObject_GC_UnTrack
- PyObject_GenericGetAttr=python35.PyObject_GenericGetAttr
- PyObject_GenericSetAttr=python35.PyObject_GenericSetAttr
- PyObject_GetAttr=python35.PyObject_GetAttr
- PyObject_GetAttrString=python35.PyObject_GetAttrString
- PyObject_GetItem=python35.PyObject_GetItem
- PyObject_GetIter=python35.PyObject_GetIter
- PyObject_HasAttr=python35.PyObject_HasAttr
- PyObject_HasAttrString=python35.PyObject_HasAttrString
- PyObject_Hash=python35.PyObject_Hash
- PyObject_HashNotImplemented=python35.PyObject_HashNotImplemented
- PyObject_Init=python35.PyObject_Init
- PyObject_InitVar=python35.PyObject_InitVar
- PyObject_IsInstance=python35.PyObject_IsInstance
- PyObject_IsSubclass=python35.PyObject_IsSubclass
- PyObject_IsTrue=python35.PyObject_IsTrue
- PyObject_Length=python35.PyObject_Length
- PyObject_Malloc=python35.PyObject_Malloc
- PyObject_Not=python35.PyObject_Not
- PyObject_Realloc=python35.PyObject_Realloc
- PyObject_Repr=python35.PyObject_Repr
- PyObject_RichCompare=python35.PyObject_RichCompare
- PyObject_RichCompareBool=python35.PyObject_RichCompareBool
- PyObject_SelfIter=python35.PyObject_SelfIter
- PyObject_SetAttr=python35.PyObject_SetAttr
- PyObject_SetAttrString=python35.PyObject_SetAttrString
- PyObject_SetItem=python35.PyObject_SetItem
- PyObject_Size=python35.PyObject_Size
- PyObject_Str=python35.PyObject_Str
- PyObject_Type=python35.PyObject_Type DATA
- PyODict_DelItem=python35.PyODict_DelItem
- PyODict_New=python35.PyODict_New
- PyODict_SetItem=python35.PyODict_SetItem
- PyODict_Type=python35.PyODict_Type DATA
- PyODictItems_Type=python35.PyODictItems_Type DATA
- PyODictIter_Type=python35.PyODictIter_Type DATA
- PyODictKeys_Type=python35.PyODictKeys_Type DATA
- PyODictValues_Type=python35.PyODictValues_Type DATA
- PyParser_SimpleParseFileFlags=python35.PyParser_SimpleParseFileFlags
- PyParser_SimpleParseStringFlags=python35.PyParser_SimpleParseStringFlags
- PyProperty_Type=python35.PyProperty_Type DATA
- PyRangeIter_Type=python35.PyRangeIter_Type DATA
- PyRange_Type=python35.PyRange_Type DATA
- PyReversed_Type=python35.PyReversed_Type DATA
- PySeqIter_New=python35.PySeqIter_New
- PySeqIter_Type=python35.PySeqIter_Type DATA
- PySequence_Check=python35.PySequence_Check
- PySequence_Concat=python35.PySequence_Concat
- PySequence_Contains=python35.PySequence_Contains
- PySequence_Count=python35.PySequence_Count
- PySequence_DelItem=python35.PySequence_DelItem
- PySequence_DelSlice=python35.PySequence_DelSlice
- PySequence_Fast=python35.PySequence_Fast
- PySequence_GetItem=python35.PySequence_GetItem
- PySequence_GetSlice=python35.PySequence_GetSlice
- PySequence_In=python35.PySequence_In
- PySequence_InPlaceConcat=python35.PySequence_InPlaceConcat
- PySequence_InPlaceRepeat=python35.PySequence_InPlaceRepeat
- PySequence_Index=python35.PySequence_Index
- PySequence_Length=python35.PySequence_Length
- PySequence_List=python35.PySequence_List
- PySequence_Repeat=python35.PySequence_Repeat
- PySequence_SetItem=python35.PySequence_SetItem
- PySequence_SetSlice=python35.PySequence_SetSlice
- PySequence_Size=python35.PySequence_Size
- PySequence_Tuple=python35.PySequence_Tuple
- PySetIter_Type=python35.PySetIter_Type DATA
- PySet_Add=python35.PySet_Add
- PySet_Clear=python35.PySet_Clear
- PySet_Contains=python35.PySet_Contains
- PySet_Discard=python35.PySet_Discard
- PySet_New=python35.PySet_New
- PySet_Pop=python35.PySet_Pop
- PySet_Size=python35.PySet_Size
- PySet_Type=python35.PySet_Type DATA
- PySlice_GetIndices=python35.PySlice_GetIndices
- PySlice_GetIndicesEx=python35.PySlice_GetIndicesEx
- PySlice_New=python35.PySlice_New
- PySlice_Type=python35.PySlice_Type DATA
- PySortWrapper_Type=python35.PySortWrapper_Type DATA
- PyState_FindModule=python35.PyState_FindModule
- PyState_AddModule=python35.PyState_AddModule
- PyState_RemoveModule=python35.PyState_RemoveModule
- PyStructSequence_GetItem=python35.PyStructSequence_GetItem
- PyStructSequence_New=python35.PyStructSequence_New
- PyStructSequence_NewType=python35.PyStructSequence_NewType
- PyStructSequence_SetItem=python35.PyStructSequence_SetItem
- PySuper_Type=python35.PySuper_Type DATA
- PySys_AddWarnOption=python35.PySys_AddWarnOption
- PySys_AddWarnOptionUnicode=python35.PySys_AddWarnOptionUnicode
- PySys_FormatStderr=python35.PySys_FormatStderr
- PySys_FormatStdout=python35.PySys_FormatStdout
- PySys_GetObject=python35.PySys_GetObject
- PySys_HasWarnOptions=python35.PySys_HasWarnOptions
- PySys_ResetWarnOptions=python35.PySys_ResetWarnOptions
- PySys_SetArgv=python35.PySys_SetArgv
- PySys_SetArgvEx=python35.PySys_SetArgvEx
- PySys_SetObject=python35.PySys_SetObject
- PySys_SetPath=python35.PySys_SetPath
- PySys_WriteStderr=python35.PySys_WriteStderr
- PySys_WriteStdout=python35.PySys_WriteStdout
- PyThreadState_Clear=python35.PyThreadState_Clear
- PyThreadState_Delete=python35.PyThreadState_Delete
- PyThreadState_DeleteCurrent=python35.PyThreadState_DeleteCurrent
- PyThreadState_Get=python35.PyThreadState_Get
- PyThreadState_GetDict=python35.PyThreadState_GetDict
- PyThreadState_New=python35.PyThreadState_New
- PyThreadState_SetAsyncExc=python35.PyThreadState_SetAsyncExc
- PyThreadState_Swap=python35.PyThreadState_Swap
- PyTraceBack_Here=python35.PyTraceBack_Here
- PyTraceBack_Print=python35.PyTraceBack_Print
- PyTraceBack_Type=python35.PyTraceBack_Type DATA
- PyTupleIter_Type=python35.PyTupleIter_Type DATA
- PyTuple_ClearFreeList=python35.PyTuple_ClearFreeList
- PyTuple_GetItem=python35.PyTuple_GetItem
- PyTuple_GetSlice=python35.PyTuple_GetSlice
- PyTuple_New=python35.PyTuple_New
- PyTuple_Pack=python35.PyTuple_Pack
- PyTuple_SetItem=python35.PyTuple_SetItem
- PyTuple_Size=python35.PyTuple_Size
- PyTuple_Type=python35.PyTuple_Type DATA
- PyType_ClearCache=python35.PyType_ClearCache
- PyType_FromSpec=python35.PyType_FromSpec
- PyType_FromSpecWithBases=python35.PyType_FromSpecWithBases
- PyType_GenericAlloc=python35.PyType_GenericAlloc
- PyType_GenericNew=python35.PyType_GenericNew
- PyType_GetFlags=python35.PyType_GetFlags
- PyType_GetSlot=python35.PyType_GetSlot
- PyType_IsSubtype=python35.PyType_IsSubtype
- PyType_Modified=python35.PyType_Modified
- PyType_Ready=python35.PyType_Ready
- PyType_Type=python35.PyType_Type DATA
- PyUnicodeDecodeError_Create=python35.PyUnicodeDecodeError_Create
- PyUnicodeDecodeError_GetEncoding=python35.PyUnicodeDecodeError_GetEncoding
- PyUnicodeDecodeError_GetEnd=python35.PyUnicodeDecodeError_GetEnd
- PyUnicodeDecodeError_GetObject=python35.PyUnicodeDecodeError_GetObject
- PyUnicodeDecodeError_GetReason=python35.PyUnicodeDecodeError_GetReason
- PyUnicodeDecodeError_GetStart=python35.PyUnicodeDecodeError_GetStart
- PyUnicodeDecodeError_SetEnd=python35.PyUnicodeDecodeError_SetEnd
- PyUnicodeDecodeError_SetReason=python35.PyUnicodeDecodeError_SetReason
- PyUnicodeDecodeError_SetStart=python35.PyUnicodeDecodeError_SetStart
- PyUnicodeEncodeError_GetEncoding=python35.PyUnicodeEncodeError_GetEncoding
- PyUnicodeEncodeError_GetEnd=python35.PyUnicodeEncodeError_GetEnd
- PyUnicodeEncodeError_GetObject=python35.PyUnicodeEncodeError_GetObject
- PyUnicodeEncodeError_GetReason=python35.PyUnicodeEncodeError_GetReason
- PyUnicodeEncodeError_GetStart=python35.PyUnicodeEncodeError_GetStart
- PyUnicodeEncodeError_SetEnd=python35.PyUnicodeEncodeError_SetEnd
- PyUnicodeEncodeError_SetReason=python35.PyUnicodeEncodeError_SetReason
- PyUnicodeEncodeError_SetStart=python35.PyUnicodeEncodeError_SetStart
- PyUnicodeIter_Type=python35.PyUnicodeIter_Type DATA
- PyUnicodeTranslateError_GetEnd=python35.PyUnicodeTranslateError_GetEnd
- PyUnicodeTranslateError_GetObject=python35.PyUnicodeTranslateError_GetObject
- PyUnicodeTranslateError_GetReason=python35.PyUnicodeTranslateError_GetReason
- PyUnicodeTranslateError_GetStart=python35.PyUnicodeTranslateError_GetStart
- PyUnicodeTranslateError_SetEnd=python35.PyUnicodeTranslateError_SetEnd
- PyUnicodeTranslateError_SetReason=python35.PyUnicodeTranslateError_SetReason
- PyUnicodeTranslateError_SetStart=python35.PyUnicodeTranslateError_SetStart
- PyUnicode_Append=python35.PyUnicode_Append
- PyUnicode_AppendAndDel=python35.PyUnicode_AppendAndDel
- PyUnicode_AsASCIIString=python35.PyUnicode_AsASCIIString
- PyUnicode_AsCharmapString=python35.PyUnicode_AsCharmapString
- PyUnicode_AsDecodedObject=python35.PyUnicode_AsDecodedObject
- PyUnicode_AsDecodedUnicode=python35.PyUnicode_AsDecodedUnicode
- PyUnicode_AsEncodedObject=python35.PyUnicode_AsEncodedObject
- PyUnicode_AsEncodedString=python35.PyUnicode_AsEncodedString
- PyUnicode_AsEncodedUnicode=python35.PyUnicode_AsEncodedUnicode
- PyUnicode_AsLatin1String=python35.PyUnicode_AsLatin1String
- PyUnicode_AsRawUnicodeEscapeString=python35.PyUnicode_AsRawUnicodeEscapeString
- PyUnicode_AsUTF16String=python35.PyUnicode_AsUTF16String
- PyUnicode_AsUTF32String=python35.PyUnicode_AsUTF32String
- PyUnicode_AsUTF8String=python35.PyUnicode_AsUTF8String
- PyUnicode_AsUnicodeEscapeString=python35.PyUnicode_AsUnicodeEscapeString
- PyUnicode_AsWideChar=python35.PyUnicode_AsWideChar
- PyUnicode_ClearFreelist=python35.PyUnicode_ClearFreelist
- PyUnicode_Compare=python35.PyUnicode_Compare
- PyUnicode_Concat=python35.PyUnicode_Concat
- PyUnicode_Contains=python35.PyUnicode_Contains
- PyUnicode_Count=python35.PyUnicode_Count
- PyUnicode_Decode=python35.PyUnicode_Decode
- PyUnicode_DecodeASCII=python35.PyUnicode_DecodeASCII
- PyUnicode_DecodeCharmap=python35.PyUnicode_DecodeCharmap
- PyUnicode_DecodeFSDefault=python35.PyUnicode_DecodeFSDefault
- PyUnicode_DecodeFSDefaultAndSize=python35.PyUnicode_DecodeFSDefaultAndSize
- PyUnicode_DecodeLatin1=python35.PyUnicode_DecodeLatin1
- PyUnicode_DecodeRawUnicodeEscape=python35.PyUnicode_DecodeRawUnicodeEscape
- PyUnicode_DecodeUTF16=python35.PyUnicode_DecodeUTF16
- PyUnicode_DecodeUTF16Stateful=python35.PyUnicode_DecodeUTF16Stateful
- PyUnicode_DecodeUTF32=python35.PyUnicode_DecodeUTF32
- PyUnicode_DecodeUTF32Stateful=python35.PyUnicode_DecodeUTF32Stateful
- PyUnicode_DecodeUTF8=python35.PyUnicode_DecodeUTF8
- PyUnicode_DecodeUTF8Stateful=python35.PyUnicode_DecodeUTF8Stateful
- PyUnicode_DecodeUnicodeEscape=python35.PyUnicode_DecodeUnicodeEscape
- PyUnicode_FSConverter=python35.PyUnicode_FSConverter
- PyUnicode_FSDecoder=python35.PyUnicode_FSDecoder
- PyUnicode_Find=python35.PyUnicode_Find
- PyUnicode_Format=python35.PyUnicode_Format
- PyUnicode_FromEncodedObject=python35.PyUnicode_FromEncodedObject
- PyUnicode_FromFormat=python35.PyUnicode_FromFormat
- PyUnicode_FromFormatV=python35.PyUnicode_FromFormatV
- PyUnicode_FromObject=python35.PyUnicode_FromObject
- PyUnicode_FromOrdinal=python35.PyUnicode_FromOrdinal
- PyUnicode_FromString=python35.PyUnicode_FromString
- PyUnicode_FromStringAndSize=python35.PyUnicode_FromStringAndSize
- PyUnicode_FromWideChar=python35.PyUnicode_FromWideChar
- PyUnicode_GetDefaultEncoding=python35.PyUnicode_GetDefaultEncoding
- PyUnicode_GetSize=python35.PyUnicode_GetSize
- PyUnicode_IsIdentifier=python35.PyUnicode_IsIdentifier
- PyUnicode_Join=python35.PyUnicode_Join
- PyUnicode_Partition=python35.PyUnicode_Partition
- PyUnicode_RPartition=python35.PyUnicode_RPartition
- PyUnicode_RSplit=python35.PyUnicode_RSplit
- PyUnicode_Replace=python35.PyUnicode_Replace
- PyUnicode_Resize=python35.PyUnicode_Resize
- PyUnicode_RichCompare=python35.PyUnicode_RichCompare
- PyUnicode_SetDefaultEncoding=python35.PyUnicode_SetDefaultEncoding
- PyUnicode_Split=python35.PyUnicode_Split
- PyUnicode_Splitlines=python35.PyUnicode_Splitlines
- PyUnicode_Tailmatch=python35.PyUnicode_Tailmatch
- PyUnicode_Translate=python35.PyUnicode_Translate
- PyUnicode_BuildEncodingMap=python35.PyUnicode_BuildEncodingMap
- PyUnicode_CompareWithASCIIString=python35.PyUnicode_CompareWithASCIIString
- PyUnicode_DecodeUTF7=python35.PyUnicode_DecodeUTF7
- PyUnicode_DecodeUTF7Stateful=python35.PyUnicode_DecodeUTF7Stateful
- PyUnicode_EncodeFSDefault=python35.PyUnicode_EncodeFSDefault
- PyUnicode_InternFromString=python35.PyUnicode_InternFromString
- PyUnicode_InternImmortal=python35.PyUnicode_InternImmortal
- PyUnicode_InternInPlace=python35.PyUnicode_InternInPlace
- PyUnicode_Type=python35.PyUnicode_Type DATA
- PyWeakref_GetObject=python35.PyWeakref_GetObject DATA
- PyWeakref_NewProxy=python35.PyWeakref_NewProxy
- PyWeakref_NewRef=python35.PyWeakref_NewRef
- PyWrapperDescr_Type=python35.PyWrapperDescr_Type DATA
- PyWrapper_New=python35.PyWrapper_New
- PyZip_Type=python35.PyZip_Type DATA
- Py_AddPendingCall=python35.Py_AddPendingCall
- Py_AtExit=python35.Py_AtExit
- Py_BuildValue=python35.Py_BuildValue
- Py_CompileString=python35.Py_CompileString
- Py_DecRef=python35.Py_DecRef
- Py_EndInterpreter=python35.Py_EndInterpreter
- Py_Exit=python35.Py_Exit
- Py_FatalError=python35.Py_FatalError
- Py_FileSystemDefaultEncoding=python35.Py_FileSystemDefaultEncoding DATA
- Py_Finalize=python35.Py_Finalize
- Py_GetBuildInfo=python35.Py_GetBuildInfo
- Py_GetCompiler=python35.Py_GetCompiler
- Py_GetCopyright=python35.Py_GetCopyright
- Py_GetExecPrefix=python35.Py_GetExecPrefix
- Py_GetPath=python35.Py_GetPath
- Py_GetPlatform=python35.Py_GetPlatform
- Py_GetPrefix=python35.Py_GetPrefix
- Py_GetProgramFullPath=python35.Py_GetProgramFullPath
- Py_GetProgramName=python35.Py_GetProgramName
- Py_GetPythonHome=python35.Py_GetPythonHome
- Py_GetRecursionLimit=python35.Py_GetRecursionLimit
- Py_GetVersion=python35.Py_GetVersion
- Py_HasFileSystemDefaultEncoding=python35.Py_HasFileSystemDefaultEncoding DATA
- Py_IncRef=python35.Py_IncRef
- Py_Initialize=python35.Py_Initialize
- Py_InitializeEx=python35.Py_InitializeEx
- Py_IsInitialized=python35.Py_IsInitialized
- Py_Main=python35.Py_Main
- Py_MakePendingCalls=python35.Py_MakePendingCalls
- Py_NewInterpreter=python35.Py_NewInterpreter
- Py_ReprEnter=python35.Py_ReprEnter
- Py_ReprLeave=python35.Py_ReprLeave
- Py_SetProgramName=python35.Py_SetProgramName
- Py_SetPythonHome=python35.Py_SetPythonHome
- Py_SetRecursionLimit=python35.Py_SetRecursionLimit
- Py_SymtableString=python35.Py_SymtableString
- Py_VaBuildValue=python35.Py_VaBuildValue
- _PyErr_BadInternalCall=python35._PyErr_BadInternalCall
- _PyObject_CallFunction_SizeT=python35._PyObject_CallFunction_SizeT
- _PyObject_CallMethod_SizeT=python35._PyObject_CallMethod_SizeT
- _PyObject_GC_Malloc=python35._PyObject_GC_Malloc
- _PyObject_GC_New=python35._PyObject_GC_New
- _PyObject_GC_NewVar=python35._PyObject_GC_NewVar
- _PyObject_GC_Resize=python35._PyObject_GC_Resize
- _PyObject_New=python35._PyObject_New
- _PyObject_NewVar=python35._PyObject_NewVar
- _PyState_AddModule=python35._PyState_AddModule
- _PyThreadState_Init=python35._PyThreadState_Init
- _PyThreadState_Prealloc=python35._PyThreadState_Prealloc
- _PyTrash_delete_later=python35._PyTrash_delete_later DATA
- _PyTrash_delete_nesting=python35._PyTrash_delete_nesting DATA
- _PyTrash_deposit_object=python35._PyTrash_deposit_object
- _PyTrash_destroy_chain=python35._PyTrash_destroy_chain
- _PyWeakref_CallableProxyType=python35._PyWeakref_CallableProxyType DATA
- _PyWeakref_ProxyType=python35._PyWeakref_ProxyType DATA
- _PyWeakref_RefType=python35._PyWeakref_RefType DATA
- _Py_BuildValue_SizeT=python35._Py_BuildValue_SizeT
- _Py_CheckRecursionLimit=python35._Py_CheckRecursionLimit DATA
- _Py_CheckRecursiveCall=python35._Py_CheckRecursiveCall
- _Py_Dealloc=python35._Py_Dealloc
- _Py_EllipsisObject=python35._Py_EllipsisObject DATA
- _Py_FalseStruct=python35._Py_FalseStruct DATA
- _Py_NoneStruct=python35._Py_NoneStruct DATA
- _Py_NotImplementedStruct=python35._Py_NotImplementedStruct DATA
- _Py_SwappedOp=python35._Py_SwappedOp DATA
- _Py_TrueStruct=python35._Py_TrueStruct DATA
- _Py_VaBuildValue_SizeT=python35._Py_VaBuildValue_SizeT
- _PyArg_Parse_SizeT=python35._PyArg_Parse_SizeT
- _PyArg_ParseTuple_SizeT=python35._PyArg_ParseTuple_SizeT
- _PyArg_ParseTupleAndKeywords_SizeT=python35._PyArg_ParseTupleAndKeywords_SizeT
- _PyArg_VaParse_SizeT=python35._PyArg_VaParse_SizeT
- _PyArg_VaParseTupleAndKeywords_SizeT=python35._PyArg_VaParseTupleAndKeywords_SizeT
- _Py_BuildValue_SizeT=python35._Py_BuildValue_SizeT
+ PyArg_Parse=python36.PyArg_Parse
+ PyArg_ParseTuple=python36.PyArg_ParseTuple
+ PyArg_ParseTupleAndKeywords=python36.PyArg_ParseTupleAndKeywords
+ PyArg_UnpackTuple=python36.PyArg_UnpackTuple
+ PyArg_VaParse=python36.PyArg_VaParse
+ PyArg_VaParseTupleAndKeywords=python36.PyArg_VaParseTupleAndKeywords
+ PyArg_ValidateKeywordArguments=python36.PyArg_ValidateKeywordArguments
+ PyBaseObject_Type=python36.PyBaseObject_Type DATA
+ PyBool_FromLong=python36.PyBool_FromLong
+ PyBool_Type=python36.PyBool_Type DATA
+ PyByteArrayIter_Type=python36.PyByteArrayIter_Type DATA
+ PyByteArray_AsString=python36.PyByteArray_AsString
+ PyByteArray_Concat=python36.PyByteArray_Concat
+ PyByteArray_FromObject=python36.PyByteArray_FromObject
+ PyByteArray_FromStringAndSize=python36.PyByteArray_FromStringAndSize
+ PyByteArray_Resize=python36.PyByteArray_Resize
+ PyByteArray_Size=python36.PyByteArray_Size
+ PyByteArray_Type=python36.PyByteArray_Type DATA
+ PyBytesIter_Type=python36.PyBytesIter_Type DATA
+ PyBytes_AsString=python36.PyBytes_AsString
+ PyBytes_AsStringAndSize=python36.PyBytes_AsStringAndSize
+ PyBytes_Concat=python36.PyBytes_Concat
+ PyBytes_ConcatAndDel=python36.PyBytes_ConcatAndDel
+ PyBytes_DecodeEscape=python36.PyBytes_DecodeEscape
+ PyBytes_FromFormat=python36.PyBytes_FromFormat
+ PyBytes_FromFormatV=python36.PyBytes_FromFormatV
+ PyBytes_FromObject=python36.PyBytes_FromObject
+ PyBytes_FromString=python36.PyBytes_FromString
+ PyBytes_FromStringAndSize=python36.PyBytes_FromStringAndSize
+ PyBytes_Repr=python36.PyBytes_Repr
+ PyBytes_Size=python36.PyBytes_Size
+ PyBytes_Type=python36.PyBytes_Type DATA
+ PyCFunction_Call=python36.PyCFunction_Call
+ PyCFunction_ClearFreeList=python36.PyCFunction_ClearFreeList
+ PyCFunction_GetFlags=python36.PyCFunction_GetFlags
+ PyCFunction_GetFunction=python36.PyCFunction_GetFunction
+ PyCFunction_GetSelf=python36.PyCFunction_GetSelf
+ PyCFunction_New=python36.PyCFunction_New
+ PyCFunction_NewEx=python36.PyCFunction_NewEx
+ PyCFunction_Type=python36.PyCFunction_Type DATA
+ PyCallIter_New=python36.PyCallIter_New
+ PyCallIter_Type=python36.PyCallIter_Type DATA
+ PyCallable_Check=python36.PyCallable_Check
+ PyCapsule_GetContext=python36.PyCapsule_GetContext
+ PyCapsule_GetDestructor=python36.PyCapsule_GetDestructor
+ PyCapsule_GetName=python36.PyCapsule_GetName
+ PyCapsule_GetPointer=python36.PyCapsule_GetPointer
+ PyCapsule_Import=python36.PyCapsule_Import
+ PyCapsule_IsValid=python36.PyCapsule_IsValid
+ PyCapsule_New=python36.PyCapsule_New
+ PyCapsule_SetContext=python36.PyCapsule_SetContext
+ PyCapsule_SetDestructor=python36.PyCapsule_SetDestructor
+ PyCapsule_SetName=python36.PyCapsule_SetName
+ PyCapsule_SetPointer=python36.PyCapsule_SetPointer
+ PyCapsule_Type=python36.PyCapsule_Type DATA
+ PyClassMethodDescr_Type=python36.PyClassMethodDescr_Type DATA
+ PyCodec_BackslashReplaceErrors=python36.PyCodec_BackslashReplaceErrors
+ PyCodec_Decode=python36.PyCodec_Decode
+ PyCodec_Decoder=python36.PyCodec_Decoder
+ PyCodec_Encode=python36.PyCodec_Encode
+ PyCodec_Encoder=python36.PyCodec_Encoder
+ PyCodec_IgnoreErrors=python36.PyCodec_IgnoreErrors
+ PyCodec_IncrementalDecoder=python36.PyCodec_IncrementalDecoder
+ PyCodec_IncrementalEncoder=python36.PyCodec_IncrementalEncoder
+ PyCodec_KnownEncoding=python36.PyCodec_KnownEncoding
+ PyCodec_LookupError=python36.PyCodec_LookupError
+ PyCodec_Register=python36.PyCodec_Register
+ PyCodec_RegisterError=python36.PyCodec_RegisterError
+ PyCodec_ReplaceErrors=python36.PyCodec_ReplaceErrors
+ PyCodec_StreamReader=python36.PyCodec_StreamReader
+ PyCodec_StreamWriter=python36.PyCodec_StreamWriter
+ PyCodec_StrictErrors=python36.PyCodec_StrictErrors
+ PyCodec_XMLCharRefReplaceErrors=python36.PyCodec_XMLCharRefReplaceErrors
+ PyComplex_FromDoubles=python36.PyComplex_FromDoubles
+ PyComplex_ImagAsDouble=python36.PyComplex_ImagAsDouble
+ PyComplex_RealAsDouble=python36.PyComplex_RealAsDouble
+ PyComplex_Type=python36.PyComplex_Type DATA
+ PyDescr_NewClassMethod=python36.PyDescr_NewClassMethod
+ PyDescr_NewGetSet=python36.PyDescr_NewGetSet
+ PyDescr_NewMember=python36.PyDescr_NewMember
+ PyDescr_NewMethod=python36.PyDescr_NewMethod
+ PyDictItems_Type=python36.PyDictItems_Type DATA
+ PyDictIterItem_Type=python36.PyDictIterItem_Type DATA
+ PyDictIterKey_Type=python36.PyDictIterKey_Type DATA
+ PyDictIterValue_Type=python36.PyDictIterValue_Type DATA
+ PyDictKeys_Type=python36.PyDictKeys_Type DATA
+ PyDictProxy_New=python36.PyDictProxy_New
+ PyDictProxy_Type=python36.PyDictProxy_Type DATA
+ PyDictValues_Type=python36.PyDictValues_Type DATA
+ PyDict_Clear=python36.PyDict_Clear
+ PyDict_Contains=python36.PyDict_Contains
+ PyDict_Copy=python36.PyDict_Copy
+ PyDict_DelItem=python36.PyDict_DelItem
+ PyDict_DelItemString=python36.PyDict_DelItemString
+ PyDict_GetItem=python36.PyDict_GetItem
+ PyDict_GetItemString=python36.PyDict_GetItemString
+ PyDict_GetItemWithError=python36.PyDict_GetItemWithError
+ PyDict_Items=python36.PyDict_Items
+ PyDict_Keys=python36.PyDict_Keys
+ PyDict_Merge=python36.PyDict_Merge
+ PyDict_MergeFromSeq2=python36.PyDict_MergeFromSeq2
+ PyDict_New=python36.PyDict_New
+ PyDict_Next=python36.PyDict_Next
+ PyDict_SetItem=python36.PyDict_SetItem
+ PyDict_SetItemString=python36.PyDict_SetItemString
+ PyDict_Size=python36.PyDict_Size
+ PyDict_Type=python36.PyDict_Type DATA
+ PyDict_Update=python36.PyDict_Update
+ PyDict_Values=python36.PyDict_Values
+ PyEllipsis_Type=python36.PyEllipsis_Type DATA
+ PyEnum_Type=python36.PyEnum_Type DATA
+ PyErr_BadArgument=python36.PyErr_BadArgument
+ PyErr_BadInternalCall=python36.PyErr_BadInternalCall
+ PyErr_CheckSignals=python36.PyErr_CheckSignals
+ PyErr_Clear=python36.PyErr_Clear
+ PyErr_Display=python36.PyErr_Display
+ PyErr_ExceptionMatches=python36.PyErr_ExceptionMatches
+ PyErr_Fetch=python36.PyErr_Fetch
+ PyErr_Format=python36.PyErr_Format
+ PyErr_FormatV=python36.PyErr_FormatV
+ PyErr_GivenExceptionMatches=python36.PyErr_GivenExceptionMatches
+ PyErr_NewException=python36.PyErr_NewException
+ PyErr_NewExceptionWithDoc=python36.PyErr_NewExceptionWithDoc
+ PyErr_NoMemory=python36.PyErr_NoMemory
+ PyErr_NormalizeException=python36.PyErr_NormalizeException
+ PyErr_Occurred=python36.PyErr_Occurred
+ PyErr_Print=python36.PyErr_Print
+ PyErr_PrintEx=python36.PyErr_PrintEx
+ PyErr_ProgramText=python36.PyErr_ProgramText
+ PyErr_Restore=python36.PyErr_Restore
+ PyErr_SetFromErrno=python36.PyErr_SetFromErrno
+ PyErr_SetFromErrnoWithFilename=python36.PyErr_SetFromErrnoWithFilename
+ PyErr_SetFromErrnoWithFilenameObject=python36.PyErr_SetFromErrnoWithFilenameObject
+ PyErr_SetInterrupt=python36.PyErr_SetInterrupt
+ PyErr_SetNone=python36.PyErr_SetNone
+ PyErr_SetObject=python36.PyErr_SetObject
+ PyErr_SetString=python36.PyErr_SetString
+ PyErr_SyntaxLocation=python36.PyErr_SyntaxLocation
+ PyErr_WarnEx=python36.PyErr_WarnEx
+ PyErr_WarnExplicit=python36.PyErr_WarnExplicit
+ PyErr_WarnFormat=python36.PyErr_WarnFormat
+ PyErr_WriteUnraisable=python36.PyErr_WriteUnraisable
+ PyEval_AcquireLock=python36.PyEval_AcquireLock
+ PyEval_AcquireThread=python36.PyEval_AcquireThread
+ PyEval_CallFunction=python36.PyEval_CallFunction
+ PyEval_CallMethod=python36.PyEval_CallMethod
+ PyEval_CallObjectWithKeywords=python36.PyEval_CallObjectWithKeywords
+ PyEval_EvalCode=python36.PyEval_EvalCode
+ PyEval_EvalCodeEx=python36.PyEval_EvalCodeEx
+ PyEval_EvalFrame=python36.PyEval_EvalFrame
+ PyEval_EvalFrameEx=python36.PyEval_EvalFrameEx
+ PyEval_GetBuiltins=python36.PyEval_GetBuiltins
+ PyEval_GetCallStats=python36.PyEval_GetCallStats
+ PyEval_GetFrame=python36.PyEval_GetFrame
+ PyEval_GetFuncDesc=python36.PyEval_GetFuncDesc
+ PyEval_GetFuncName=python36.PyEval_GetFuncName
+ PyEval_GetGlobals=python36.PyEval_GetGlobals
+ PyEval_GetLocals=python36.PyEval_GetLocals
+ PyEval_InitThreads=python36.PyEval_InitThreads
+ PyEval_ReInitThreads=python36.PyEval_ReInitThreads
+ PyEval_ReleaseLock=python36.PyEval_ReleaseLock
+ PyEval_ReleaseThread=python36.PyEval_ReleaseThread
+ PyEval_RestoreThread=python36.PyEval_RestoreThread
+ PyEval_SaveThread=python36.PyEval_SaveThread
+ PyEval_ThreadsInitialized=python36.PyEval_ThreadsInitialized
+ PyExc_ArithmeticError=python36.PyExc_ArithmeticError DATA
+ PyExc_AssertionError=python36.PyExc_AssertionError DATA
+ PyExc_AttributeError=python36.PyExc_AttributeError DATA
+ PyExc_BaseException=python36.PyExc_BaseException DATA
+ PyExc_BufferError=python36.PyExc_BufferError DATA
+ PyExc_BytesWarning=python36.PyExc_BytesWarning DATA
+ PyExc_DeprecationWarning=python36.PyExc_DeprecationWarning DATA
+ PyExc_EOFError=python36.PyExc_EOFError DATA
+ PyExc_EnvironmentError=python36.PyExc_EnvironmentError DATA
+ PyExc_Exception=python36.PyExc_Exception DATA
+ PyExc_FloatingPointError=python36.PyExc_FloatingPointError DATA
+ PyExc_FutureWarning=python36.PyExc_FutureWarning DATA
+ PyExc_GeneratorExit=python36.PyExc_GeneratorExit DATA
+ PyExc_IOError=python36.PyExc_IOError DATA
+ PyExc_ImportError=python36.PyExc_ImportError DATA
+ PyExc_ImportWarning=python36.PyExc_ImportWarning DATA
+ PyExc_IndentationError=python36.PyExc_IndentationError DATA
+ PyExc_IndexError=python36.PyExc_IndexError DATA
+ PyExc_KeyError=python36.PyExc_KeyError DATA
+ PyExc_KeyboardInterrupt=python36.PyExc_KeyboardInterrupt DATA
+ PyExc_LookupError=python36.PyExc_LookupError DATA
+ PyExc_MemoryError=python36.PyExc_MemoryError DATA
+ PyExc_MemoryErrorInst=python36.PyExc_MemoryErrorInst DATA
+ PyExc_NameError=python36.PyExc_NameError DATA
+ PyExc_NotImplementedError=python36.PyExc_NotImplementedError DATA
+ PyExc_OSError=python36.PyExc_OSError DATA
+ PyExc_OverflowError=python36.PyExc_OverflowError DATA
+ PyExc_PendingDeprecationWarning=python36.PyExc_PendingDeprecationWarning DATA
+ PyExc_RecursionErrorInst=python36.PyExc_RecursionErrorInst DATA
+ PyExc_ReferenceError=python36.PyExc_ReferenceError DATA
+ PyExc_RuntimeError=python36.PyExc_RuntimeError DATA
+ PyExc_RuntimeWarning=python36.PyExc_RuntimeWarning DATA
+ PyExc_StopIteration=python36.PyExc_StopIteration DATA
+ PyExc_SyntaxError=python36.PyExc_SyntaxError DATA
+ PyExc_SyntaxWarning=python36.PyExc_SyntaxWarning DATA
+ PyExc_SystemError=python36.PyExc_SystemError DATA
+ PyExc_SystemExit=python36.PyExc_SystemExit DATA
+ PyExc_TabError=python36.PyExc_TabError DATA
+ PyExc_TypeError=python36.PyExc_TypeError DATA
+ PyExc_UnboundLocalError=python36.PyExc_UnboundLocalError DATA
+ PyExc_UnicodeDecodeError=python36.PyExc_UnicodeDecodeError DATA
+ PyExc_UnicodeEncodeError=python36.PyExc_UnicodeEncodeError DATA
+ PyExc_UnicodeError=python36.PyExc_UnicodeError DATA
+ PyExc_UnicodeTranslateError=python36.PyExc_UnicodeTranslateError DATA
+ PyExc_UnicodeWarning=python36.PyExc_UnicodeWarning DATA
+ PyExc_UserWarning=python36.PyExc_UserWarning DATA
+ PyExc_ValueError=python36.PyExc_ValueError DATA
+ PyExc_Warning=python36.PyExc_Warning DATA
+ PyExc_ZeroDivisionError=python36.PyExc_ZeroDivisionError DATA
+ PyException_GetCause=python36.PyException_GetCause
+ PyException_GetContext=python36.PyException_GetContext
+ PyException_GetTraceback=python36.PyException_GetTraceback
+ PyException_SetCause=python36.PyException_SetCause
+ PyException_SetContext=python36.PyException_SetContext
+ PyException_SetTraceback=python36.PyException_SetTraceback
+ PyFile_FromFd=python36.PyFile_FromFd
+ PyFile_GetLine=python36.PyFile_GetLine
+ PyFile_WriteObject=python36.PyFile_WriteObject
+ PyFile_WriteString=python36.PyFile_WriteString
+ PyFilter_Type=python36.PyFilter_Type DATA
+ PyFloat_AsDouble=python36.PyFloat_AsDouble
+ PyFloat_FromDouble=python36.PyFloat_FromDouble
+ PyFloat_FromString=python36.PyFloat_FromString
+ PyFloat_GetInfo=python36.PyFloat_GetInfo
+ PyFloat_GetMax=python36.PyFloat_GetMax
+ PyFloat_GetMin=python36.PyFloat_GetMin
+ PyFloat_Type=python36.PyFloat_Type DATA
+ PyFrozenSet_New=python36.PyFrozenSet_New
+ PyFrozenSet_Type=python36.PyFrozenSet_Type DATA
+ PyGC_Collect=python36.PyGC_Collect
+ PyGILState_Ensure=python36.PyGILState_Ensure
+ PyGILState_GetThisThreadState=python36.PyGILState_GetThisThreadState
+ PyGILState_Release=python36.PyGILState_Release
+ PyGetSetDescr_Type=python36.PyGetSetDescr_Type DATA
+ PyImport_AddModule=python36.PyImport_AddModule
+ PyImport_AppendInittab=python36.PyImport_AppendInittab
+ PyImport_Cleanup=python36.PyImport_Cleanup
+ PyImport_ExecCodeModule=python36.PyImport_ExecCodeModule
+ PyImport_ExecCodeModuleEx=python36.PyImport_ExecCodeModuleEx
+ PyImport_ExecCodeModuleWithPathnames=python36.PyImport_ExecCodeModuleWithPathnames
+ PyImport_GetImporter=python36.PyImport_GetImporter
+ PyImport_GetMagicNumber=python36.PyImport_GetMagicNumber
+ PyImport_GetMagicTag=python36.PyImport_GetMagicTag
+ PyImport_GetModuleDict=python36.PyImport_GetModuleDict
+ PyImport_Import=python36.PyImport_Import
+ PyImport_ImportFrozenModule=python36.PyImport_ImportFrozenModule
+ PyImport_ImportModule=python36.PyImport_ImportModule
+ PyImport_ImportModuleLevel=python36.PyImport_ImportModuleLevel
+ PyImport_ImportModuleNoBlock=python36.PyImport_ImportModuleNoBlock
+ PyImport_ReloadModule=python36.PyImport_ReloadModule
+ PyInterpreterState_Clear=python36.PyInterpreterState_Clear
+ PyInterpreterState_Delete=python36.PyInterpreterState_Delete
+ PyInterpreterState_New=python36.PyInterpreterState_New
+ PyIter_Next=python36.PyIter_Next
+ PyListIter_Type=python36.PyListIter_Type DATA
+ PyListRevIter_Type=python36.PyListRevIter_Type DATA
+ PyList_Append=python36.PyList_Append
+ PyList_AsTuple=python36.PyList_AsTuple
+ PyList_GetItem=python36.PyList_GetItem
+ PyList_GetSlice=python36.PyList_GetSlice
+ PyList_Insert=python36.PyList_Insert
+ PyList_New=python36.PyList_New
+ PyList_Reverse=python36.PyList_Reverse
+ PyList_SetItem=python36.PyList_SetItem
+ PyList_SetSlice=python36.PyList_SetSlice
+ PyList_Size=python36.PyList_Size
+ PyList_Sort=python36.PyList_Sort
+ PyList_Type=python36.PyList_Type DATA
+ PyLongRangeIter_Type=python36.PyLongRangeIter_Type DATA
+ PyLong_AsDouble=python36.PyLong_AsDouble
+ PyLong_AsLong=python36.PyLong_AsLong
+ PyLong_AsLongAndOverflow=python36.PyLong_AsLongAndOverflow
+ PyLong_AsLongLong=python36.PyLong_AsLongLong
+ PyLong_AsLongLongAndOverflow=python36.PyLong_AsLongLongAndOverflow
+ PyLong_AsSize_t=python36.PyLong_AsSize_t
+ PyLong_AsSsize_t=python36.PyLong_AsSsize_t
+ PyLong_AsUnsignedLong=python36.PyLong_AsUnsignedLong
+ PyLong_AsUnsignedLongLong=python36.PyLong_AsUnsignedLongLong
+ PyLong_AsUnsignedLongLongMask=python36.PyLong_AsUnsignedLongLongMask
+ PyLong_AsUnsignedLongMask=python36.PyLong_AsUnsignedLongMask
+ PyLong_AsVoidPtr=python36.PyLong_AsVoidPtr
+ PyLong_FromDouble=python36.PyLong_FromDouble
+ PyLong_FromLong=python36.PyLong_FromLong
+ PyLong_FromLongLong=python36.PyLong_FromLongLong
+ PyLong_FromSize_t=python36.PyLong_FromSize_t
+ PyLong_FromSsize_t=python36.PyLong_FromSsize_t
+ PyLong_FromString=python36.PyLong_FromString
+ PyLong_FromUnsignedLong=python36.PyLong_FromUnsignedLong
+ PyLong_FromUnsignedLongLong=python36.PyLong_FromUnsignedLongLong
+ PyLong_FromVoidPtr=python36.PyLong_FromVoidPtr
+ PyLong_GetInfo=python36.PyLong_GetInfo
+ PyLong_Type=python36.PyLong_Type DATA
+ PyMap_Type=python36.PyMap_Type DATA
+ PyMapping_Check=python36.PyMapping_Check
+ PyMapping_GetItemString=python36.PyMapping_GetItemString
+ PyMapping_HasKey=python36.PyMapping_HasKey
+ PyMapping_HasKeyString=python36.PyMapping_HasKeyString
+ PyMapping_Items=python36.PyMapping_Items
+ PyMapping_Keys=python36.PyMapping_Keys
+ PyMapping_Length=python36.PyMapping_Length
+ PyMapping_SetItemString=python36.PyMapping_SetItemString
+ PyMapping_Size=python36.PyMapping_Size
+ PyMapping_Values=python36.PyMapping_Values
+ PyMem_Free=python36.PyMem_Free
+ PyMem_Malloc=python36.PyMem_Malloc
+ PyMem_Realloc=python36.PyMem_Realloc
+ PyMemberDescr_Type=python36.PyMemberDescr_Type DATA
+ PyMemoryView_FromObject=python36.PyMemoryView_FromObject
+ PyMemoryView_GetContiguous=python36.PyMemoryView_GetContiguous
+ PyMemoryView_Type=python36.PyMemoryView_Type DATA
+ PyMethodDescr_Type=python36.PyMethodDescr_Type DATA
+ PyModule_AddIntConstant=python36.PyModule_AddIntConstant
+ PyModule_AddObject=python36.PyModule_AddObject
+ PyModule_AddStringConstant=python36.PyModule_AddStringConstant
+ PyModule_Create2=python36.PyModule_Create2
+ PyModule_GetDef=python36.PyModule_GetDef
+ PyModule_GetDict=python36.PyModule_GetDict
+ PyModule_GetFilename=python36.PyModule_GetFilename
+ PyModule_GetFilenameObject=python36.PyModule_GetFilenameObject
+ PyModule_GetName=python36.PyModule_GetName
+ PyModule_GetState=python36.PyModule_GetState
+ PyModule_New=python36.PyModule_New
+ PyModule_Type=python36.PyModule_Type DATA
+ PyModuleDef_Init=python36.PyModuleDef_Init
+ PyModuleDef_Type=python36.PyModuleDef_Type DATA
+ PyNullImporter_Type=python36.PyNullImporter_Type DATA
+ PyNumber_Absolute=python36.PyNumber_Absolute
+ PyNumber_Add=python36.PyNumber_Add
+ PyNumber_And=python36.PyNumber_And
+ PyNumber_AsSsize_t=python36.PyNumber_AsSsize_t
+ PyNumber_Check=python36.PyNumber_Check
+ PyNumber_Divmod=python36.PyNumber_Divmod
+ PyNumber_Float=python36.PyNumber_Float
+ PyNumber_FloorDivide=python36.PyNumber_FloorDivide
+ PyNumber_InPlaceAdd=python36.PyNumber_InPlaceAdd
+ PyNumber_InPlaceAnd=python36.PyNumber_InPlaceAnd
+ PyNumber_InPlaceFloorDivide=python36.PyNumber_InPlaceFloorDivide
+ PyNumber_InPlaceLshift=python36.PyNumber_InPlaceLshift
+ PyNumber_InPlaceMultiply=python36.PyNumber_InPlaceMultiply
+ PyNumber_InPlaceOr=python36.PyNumber_InPlaceOr
+ PyNumber_InPlacePower=python36.PyNumber_InPlacePower
+ PyNumber_InPlaceRemainder=python36.PyNumber_InPlaceRemainder
+ PyNumber_InPlaceRshift=python36.PyNumber_InPlaceRshift
+ PyNumber_InPlaceSubtract=python36.PyNumber_InPlaceSubtract
+ PyNumber_InPlaceTrueDivide=python36.PyNumber_InPlaceTrueDivide
+ PyNumber_InPlaceXor=python36.PyNumber_InPlaceXor
+ PyNumber_Index=python36.PyNumber_Index
+ PyNumber_Invert=python36.PyNumber_Invert
+ PyNumber_Long=python36.PyNumber_Long
+ PyNumber_Lshift=python36.PyNumber_Lshift
+ PyNumber_Multiply=python36.PyNumber_Multiply
+ PyNumber_Negative=python36.PyNumber_Negative
+ PyNumber_Or=python36.PyNumber_Or
+ PyNumber_Positive=python36.PyNumber_Positive
+ PyNumber_Power=python36.PyNumber_Power
+ PyNumber_Remainder=python36.PyNumber_Remainder
+ PyNumber_Rshift=python36.PyNumber_Rshift
+ PyNumber_Subtract=python36.PyNumber_Subtract
+ PyNumber_ToBase=python36.PyNumber_ToBase
+ PyNumber_TrueDivide=python36.PyNumber_TrueDivide
+ PyNumber_Xor=python36.PyNumber_Xor
+ PyOS_AfterFork=python36.PyOS_AfterFork
+ PyOS_InitInterrupts=python36.PyOS_InitInterrupts
+ PyOS_InputHook=python36.PyOS_InputHook DATA
+ PyOS_InterruptOccurred=python36.PyOS_InterruptOccurred
+ PyOS_ReadlineFunctionPointer=python36.PyOS_ReadlineFunctionPointer DATA
+ PyOS_double_to_string=python36.PyOS_double_to_string
+ PyOS_getsig=python36.PyOS_getsig
+ PyOS_mystricmp=python36.PyOS_mystricmp
+ PyOS_mystrnicmp=python36.PyOS_mystrnicmp
+ PyOS_setsig=python36.PyOS_setsig
+ PyOS_snprintf=python36.PyOS_snprintf
+ PyOS_string_to_double=python36.PyOS_string_to_double
+ PyOS_strtol=python36.PyOS_strtol
+ PyOS_strtoul=python36.PyOS_strtoul
+ PyOS_vsnprintf=python36.PyOS_vsnprintf
+ PyObject_ASCII=python36.PyObject_ASCII
+ PyObject_AsCharBuffer=python36.PyObject_AsCharBuffer
+ PyObject_AsFileDescriptor=python36.PyObject_AsFileDescriptor
+ PyObject_AsReadBuffer=python36.PyObject_AsReadBuffer
+ PyObject_AsWriteBuffer=python36.PyObject_AsWriteBuffer
+ PyObject_Bytes=python36.PyObject_Bytes
+ PyObject_Call=python36.PyObject_Call
+ PyObject_CallFunction=python36.PyObject_CallFunction
+ PyObject_CallFunctionObjArgs=python36.PyObject_CallFunctionObjArgs
+ PyObject_CallMethod=python36.PyObject_CallMethod
+ PyObject_CallMethodObjArgs=python36.PyObject_CallMethodObjArgs
+ PyObject_CallObject=python36.PyObject_CallObject
+ PyObject_CheckReadBuffer=python36.PyObject_CheckReadBuffer
+ PyObject_ClearWeakRefs=python36.PyObject_ClearWeakRefs
+ PyObject_DelItem=python36.PyObject_DelItem
+ PyObject_DelItemString=python36.PyObject_DelItemString
+ PyObject_Dir=python36.PyObject_Dir
+ PyObject_Format=python36.PyObject_Format
+ PyObject_Free=python36.PyObject_Free
+ PyObject_GC_Del=python36.PyObject_GC_Del
+ PyObject_GC_Track=python36.PyObject_GC_Track
+ PyObject_GC_UnTrack=python36.PyObject_GC_UnTrack
+ PyObject_GenericGetAttr=python36.PyObject_GenericGetAttr
+ PyObject_GenericSetAttr=python36.PyObject_GenericSetAttr
+ PyObject_GetAttr=python36.PyObject_GetAttr
+ PyObject_GetAttrString=python36.PyObject_GetAttrString
+ PyObject_GetItem=python36.PyObject_GetItem
+ PyObject_GetIter=python36.PyObject_GetIter
+ PyObject_HasAttr=python36.PyObject_HasAttr
+ PyObject_HasAttrString=python36.PyObject_HasAttrString
+ PyObject_Hash=python36.PyObject_Hash
+ PyObject_HashNotImplemented=python36.PyObject_HashNotImplemented
+ PyObject_Init=python36.PyObject_Init
+ PyObject_InitVar=python36.PyObject_InitVar
+ PyObject_IsInstance=python36.PyObject_IsInstance
+ PyObject_IsSubclass=python36.PyObject_IsSubclass
+ PyObject_IsTrue=python36.PyObject_IsTrue
+ PyObject_Length=python36.PyObject_Length
+ PyObject_Malloc=python36.PyObject_Malloc
+ PyObject_Not=python36.PyObject_Not
+ PyObject_Realloc=python36.PyObject_Realloc
+ PyObject_Repr=python36.PyObject_Repr
+ PyObject_RichCompare=python36.PyObject_RichCompare
+ PyObject_RichCompareBool=python36.PyObject_RichCompareBool
+ PyObject_SelfIter=python36.PyObject_SelfIter
+ PyObject_SetAttr=python36.PyObject_SetAttr
+ PyObject_SetAttrString=python36.PyObject_SetAttrString
+ PyObject_SetItem=python36.PyObject_SetItem
+ PyObject_Size=python36.PyObject_Size
+ PyObject_Str=python36.PyObject_Str
+ PyObject_Type=python36.PyObject_Type DATA
+ PyODict_DelItem=python36.PyODict_DelItem
+ PyODict_New=python36.PyODict_New
+ PyODict_SetItem=python36.PyODict_SetItem
+ PyODict_Type=python36.PyODict_Type DATA
+ PyODictItems_Type=python36.PyODictItems_Type DATA
+ PyODictIter_Type=python36.PyODictIter_Type DATA
+ PyODictKeys_Type=python36.PyODictKeys_Type DATA
+ PyODictValues_Type=python36.PyODictValues_Type DATA
+ PyParser_SimpleParseFileFlags=python36.PyParser_SimpleParseFileFlags
+ PyParser_SimpleParseStringFlags=python36.PyParser_SimpleParseStringFlags
+ PyProperty_Type=python36.PyProperty_Type DATA
+ PyRangeIter_Type=python36.PyRangeIter_Type DATA
+ PyRange_Type=python36.PyRange_Type DATA
+ PyReversed_Type=python36.PyReversed_Type DATA
+ PySeqIter_New=python36.PySeqIter_New
+ PySeqIter_Type=python36.PySeqIter_Type DATA
+ PySequence_Check=python36.PySequence_Check
+ PySequence_Concat=python36.PySequence_Concat
+ PySequence_Contains=python36.PySequence_Contains
+ PySequence_Count=python36.PySequence_Count
+ PySequence_DelItem=python36.PySequence_DelItem
+ PySequence_DelSlice=python36.PySequence_DelSlice
+ PySequence_Fast=python36.PySequence_Fast
+ PySequence_GetItem=python36.PySequence_GetItem
+ PySequence_GetSlice=python36.PySequence_GetSlice
+ PySequence_In=python36.PySequence_In
+ PySequence_InPlaceConcat=python36.PySequence_InPlaceConcat
+ PySequence_InPlaceRepeat=python36.PySequence_InPlaceRepeat
+ PySequence_Index=python36.PySequence_Index
+ PySequence_Length=python36.PySequence_Length
+ PySequence_List=python36.PySequence_List
+ PySequence_Repeat=python36.PySequence_Repeat
+ PySequence_SetItem=python36.PySequence_SetItem
+ PySequence_SetSlice=python36.PySequence_SetSlice
+ PySequence_Size=python36.PySequence_Size
+ PySequence_Tuple=python36.PySequence_Tuple
+ PySetIter_Type=python36.PySetIter_Type DATA
+ PySet_Add=python36.PySet_Add
+ PySet_Clear=python36.PySet_Clear
+ PySet_Contains=python36.PySet_Contains
+ PySet_Discard=python36.PySet_Discard
+ PySet_New=python36.PySet_New
+ PySet_Pop=python36.PySet_Pop
+ PySet_Size=python36.PySet_Size
+ PySet_Type=python36.PySet_Type DATA
+ PySlice_GetIndices=python36.PySlice_GetIndices
+ PySlice_GetIndicesEx=python36.PySlice_GetIndicesEx
+ PySlice_New=python36.PySlice_New
+ PySlice_Type=python36.PySlice_Type DATA
+ PySortWrapper_Type=python36.PySortWrapper_Type DATA
+ PyState_FindModule=python36.PyState_FindModule
+ PyState_AddModule=python36.PyState_AddModule
+ PyState_RemoveModule=python36.PyState_RemoveModule
+ PyStructSequence_GetItem=python36.PyStructSequence_GetItem
+ PyStructSequence_New=python36.PyStructSequence_New
+ PyStructSequence_NewType=python36.PyStructSequence_NewType
+ PyStructSequence_SetItem=python36.PyStructSequence_SetItem
+ PySuper_Type=python36.PySuper_Type DATA
+ PySys_AddWarnOption=python36.PySys_AddWarnOption
+ PySys_AddWarnOptionUnicode=python36.PySys_AddWarnOptionUnicode
+ PySys_FormatStderr=python36.PySys_FormatStderr
+ PySys_FormatStdout=python36.PySys_FormatStdout
+ PySys_GetObject=python36.PySys_GetObject
+ PySys_HasWarnOptions=python36.PySys_HasWarnOptions
+ PySys_ResetWarnOptions=python36.PySys_ResetWarnOptions
+ PySys_SetArgv=python36.PySys_SetArgv
+ PySys_SetArgvEx=python36.PySys_SetArgvEx
+ PySys_SetObject=python36.PySys_SetObject
+ PySys_SetPath=python36.PySys_SetPath
+ PySys_WriteStderr=python36.PySys_WriteStderr
+ PySys_WriteStdout=python36.PySys_WriteStdout
+ PyThreadState_Clear=python36.PyThreadState_Clear
+ PyThreadState_Delete=python36.PyThreadState_Delete
+ PyThreadState_DeleteCurrent=python36.PyThreadState_DeleteCurrent
+ PyThreadState_Get=python36.PyThreadState_Get
+ PyThreadState_GetDict=python36.PyThreadState_GetDict
+ PyThreadState_New=python36.PyThreadState_New
+ PyThreadState_SetAsyncExc=python36.PyThreadState_SetAsyncExc
+ PyThreadState_Swap=python36.PyThreadState_Swap
+ PyTraceBack_Here=python36.PyTraceBack_Here
+ PyTraceBack_Print=python36.PyTraceBack_Print
+ PyTraceBack_Type=python36.PyTraceBack_Type DATA
+ PyTupleIter_Type=python36.PyTupleIter_Type DATA
+ PyTuple_ClearFreeList=python36.PyTuple_ClearFreeList
+ PyTuple_GetItem=python36.PyTuple_GetItem
+ PyTuple_GetSlice=python36.PyTuple_GetSlice
+ PyTuple_New=python36.PyTuple_New
+ PyTuple_Pack=python36.PyTuple_Pack
+ PyTuple_SetItem=python36.PyTuple_SetItem
+ PyTuple_Size=python36.PyTuple_Size
+ PyTuple_Type=python36.PyTuple_Type DATA
+ PyType_ClearCache=python36.PyType_ClearCache
+ PyType_FromSpec=python36.PyType_FromSpec
+ PyType_FromSpecWithBases=python36.PyType_FromSpecWithBases
+ PyType_GenericAlloc=python36.PyType_GenericAlloc
+ PyType_GenericNew=python36.PyType_GenericNew
+ PyType_GetFlags=python36.PyType_GetFlags
+ PyType_GetSlot=python36.PyType_GetSlot
+ PyType_IsSubtype=python36.PyType_IsSubtype
+ PyType_Modified=python36.PyType_Modified
+ PyType_Ready=python36.PyType_Ready
+ PyType_Type=python36.PyType_Type DATA
+ PyUnicodeDecodeError_Create=python36.PyUnicodeDecodeError_Create
+ PyUnicodeDecodeError_GetEncoding=python36.PyUnicodeDecodeError_GetEncoding
+ PyUnicodeDecodeError_GetEnd=python36.PyUnicodeDecodeError_GetEnd
+ PyUnicodeDecodeError_GetObject=python36.PyUnicodeDecodeError_GetObject
+ PyUnicodeDecodeError_GetReason=python36.PyUnicodeDecodeError_GetReason
+ PyUnicodeDecodeError_GetStart=python36.PyUnicodeDecodeError_GetStart
+ PyUnicodeDecodeError_SetEnd=python36.PyUnicodeDecodeError_SetEnd
+ PyUnicodeDecodeError_SetReason=python36.PyUnicodeDecodeError_SetReason
+ PyUnicodeDecodeError_SetStart=python36.PyUnicodeDecodeError_SetStart
+ PyUnicodeEncodeError_GetEncoding=python36.PyUnicodeEncodeError_GetEncoding
+ PyUnicodeEncodeError_GetEnd=python36.PyUnicodeEncodeError_GetEnd
+ PyUnicodeEncodeError_GetObject=python36.PyUnicodeEncodeError_GetObject
+ PyUnicodeEncodeError_GetReason=python36.PyUnicodeEncodeError_GetReason
+ PyUnicodeEncodeError_GetStart=python36.PyUnicodeEncodeError_GetStart
+ PyUnicodeEncodeError_SetEnd=python36.PyUnicodeEncodeError_SetEnd
+ PyUnicodeEncodeError_SetReason=python36.PyUnicodeEncodeError_SetReason
+ PyUnicodeEncodeError_SetStart=python36.PyUnicodeEncodeError_SetStart
+ PyUnicodeIter_Type=python36.PyUnicodeIter_Type DATA
+ PyUnicodeTranslateError_GetEnd=python36.PyUnicodeTranslateError_GetEnd
+ PyUnicodeTranslateError_GetObject=python36.PyUnicodeTranslateError_GetObject
+ PyUnicodeTranslateError_GetReason=python36.PyUnicodeTranslateError_GetReason
+ PyUnicodeTranslateError_GetStart=python36.PyUnicodeTranslateError_GetStart
+ PyUnicodeTranslateError_SetEnd=python36.PyUnicodeTranslateError_SetEnd
+ PyUnicodeTranslateError_SetReason=python36.PyUnicodeTranslateError_SetReason
+ PyUnicodeTranslateError_SetStart=python36.PyUnicodeTranslateError_SetStart
+ PyUnicode_Append=python36.PyUnicode_Append
+ PyUnicode_AppendAndDel=python36.PyUnicode_AppendAndDel
+ PyUnicode_AsASCIIString=python36.PyUnicode_AsASCIIString
+ PyUnicode_AsCharmapString=python36.PyUnicode_AsCharmapString
+ PyUnicode_AsDecodedObject=python36.PyUnicode_AsDecodedObject
+ PyUnicode_AsDecodedUnicode=python36.PyUnicode_AsDecodedUnicode
+ PyUnicode_AsEncodedObject=python36.PyUnicode_AsEncodedObject
+ PyUnicode_AsEncodedString=python36.PyUnicode_AsEncodedString
+ PyUnicode_AsEncodedUnicode=python36.PyUnicode_AsEncodedUnicode
+ PyUnicode_AsLatin1String=python36.PyUnicode_AsLatin1String
+ PyUnicode_AsRawUnicodeEscapeString=python36.PyUnicode_AsRawUnicodeEscapeString
+ PyUnicode_AsUTF16String=python36.PyUnicode_AsUTF16String
+ PyUnicode_AsUTF32String=python36.PyUnicode_AsUTF32String
+ PyUnicode_AsUTF8String=python36.PyUnicode_AsUTF8String
+ PyUnicode_AsUnicodeEscapeString=python36.PyUnicode_AsUnicodeEscapeString
+ PyUnicode_AsWideChar=python36.PyUnicode_AsWideChar
+ PyUnicode_ClearFreelist=python36.PyUnicode_ClearFreelist
+ PyUnicode_Compare=python36.PyUnicode_Compare
+ PyUnicode_Concat=python36.PyUnicode_Concat
+ PyUnicode_Contains=python36.PyUnicode_Contains
+ PyUnicode_Count=python36.PyUnicode_Count
+ PyUnicode_Decode=python36.PyUnicode_Decode
+ PyUnicode_DecodeASCII=python36.PyUnicode_DecodeASCII
+ PyUnicode_DecodeCharmap=python36.PyUnicode_DecodeCharmap
+ PyUnicode_DecodeFSDefault=python36.PyUnicode_DecodeFSDefault
+ PyUnicode_DecodeFSDefaultAndSize=python36.PyUnicode_DecodeFSDefaultAndSize
+ PyUnicode_DecodeLatin1=python36.PyUnicode_DecodeLatin1
+ PyUnicode_DecodeRawUnicodeEscape=python36.PyUnicode_DecodeRawUnicodeEscape
+ PyUnicode_DecodeUTF16=python36.PyUnicode_DecodeUTF16
+ PyUnicode_DecodeUTF16Stateful=python36.PyUnicode_DecodeUTF16Stateful
+ PyUnicode_DecodeUTF32=python36.PyUnicode_DecodeUTF32
+ PyUnicode_DecodeUTF32Stateful=python36.PyUnicode_DecodeUTF32Stateful
+ PyUnicode_DecodeUTF8=python36.PyUnicode_DecodeUTF8
+ PyUnicode_DecodeUTF8Stateful=python36.PyUnicode_DecodeUTF8Stateful
+ PyUnicode_DecodeUnicodeEscape=python36.PyUnicode_DecodeUnicodeEscape
+ PyUnicode_FSConverter=python36.PyUnicode_FSConverter
+ PyUnicode_FSDecoder=python36.PyUnicode_FSDecoder
+ PyUnicode_Find=python36.PyUnicode_Find
+ PyUnicode_Format=python36.PyUnicode_Format
+ PyUnicode_FromEncodedObject=python36.PyUnicode_FromEncodedObject
+ PyUnicode_FromFormat=python36.PyUnicode_FromFormat
+ PyUnicode_FromFormatV=python36.PyUnicode_FromFormatV
+ PyUnicode_FromObject=python36.PyUnicode_FromObject
+ PyUnicode_FromOrdinal=python36.PyUnicode_FromOrdinal
+ PyUnicode_FromString=python36.PyUnicode_FromString
+ PyUnicode_FromStringAndSize=python36.PyUnicode_FromStringAndSize
+ PyUnicode_FromWideChar=python36.PyUnicode_FromWideChar
+ PyUnicode_GetDefaultEncoding=python36.PyUnicode_GetDefaultEncoding
+ PyUnicode_GetSize=python36.PyUnicode_GetSize
+ PyUnicode_IsIdentifier=python36.PyUnicode_IsIdentifier
+ PyUnicode_Join=python36.PyUnicode_Join
+ PyUnicode_Partition=python36.PyUnicode_Partition
+ PyUnicode_RPartition=python36.PyUnicode_RPartition
+ PyUnicode_RSplit=python36.PyUnicode_RSplit
+ PyUnicode_Replace=python36.PyUnicode_Replace
+ PyUnicode_Resize=python36.PyUnicode_Resize
+ PyUnicode_RichCompare=python36.PyUnicode_RichCompare
+ PyUnicode_SetDefaultEncoding=python36.PyUnicode_SetDefaultEncoding
+ PyUnicode_Split=python36.PyUnicode_Split
+ PyUnicode_Splitlines=python36.PyUnicode_Splitlines
+ PyUnicode_Tailmatch=python36.PyUnicode_Tailmatch
+ PyUnicode_Translate=python36.PyUnicode_Translate
+ PyUnicode_BuildEncodingMap=python36.PyUnicode_BuildEncodingMap
+ PyUnicode_CompareWithASCIIString=python36.PyUnicode_CompareWithASCIIString
+ PyUnicode_DecodeUTF7=python36.PyUnicode_DecodeUTF7
+ PyUnicode_DecodeUTF7Stateful=python36.PyUnicode_DecodeUTF7Stateful
+ PyUnicode_EncodeFSDefault=python36.PyUnicode_EncodeFSDefault
+ PyUnicode_InternFromString=python36.PyUnicode_InternFromString
+ PyUnicode_InternImmortal=python36.PyUnicode_InternImmortal
+ PyUnicode_InternInPlace=python36.PyUnicode_InternInPlace
+ PyUnicode_Type=python36.PyUnicode_Type DATA
+ PyWeakref_GetObject=python36.PyWeakref_GetObject DATA
+ PyWeakref_NewProxy=python36.PyWeakref_NewProxy
+ PyWeakref_NewRef=python36.PyWeakref_NewRef
+ PyWrapperDescr_Type=python36.PyWrapperDescr_Type DATA
+ PyWrapper_New=python36.PyWrapper_New
+ PyZip_Type=python36.PyZip_Type DATA
+ Py_AddPendingCall=python36.Py_AddPendingCall
+ Py_AtExit=python36.Py_AtExit
+ Py_BuildValue=python36.Py_BuildValue
+ Py_CompileString=python36.Py_CompileString
+ Py_DecRef=python36.Py_DecRef
+ Py_EndInterpreter=python36.Py_EndInterpreter
+ Py_Exit=python36.Py_Exit
+ Py_FatalError=python36.Py_FatalError
+ Py_FileSystemDefaultEncoding=python36.Py_FileSystemDefaultEncoding DATA
+ Py_Finalize=python36.Py_Finalize
+ Py_FinalizeEx=python36.Py_FinalizeEx
+ Py_GetBuildInfo=python36.Py_GetBuildInfo
+ Py_GetCompiler=python36.Py_GetCompiler
+ Py_GetCopyright=python36.Py_GetCopyright
+ Py_GetExecPrefix=python36.Py_GetExecPrefix
+ Py_GetPath=python36.Py_GetPath
+ Py_GetPlatform=python36.Py_GetPlatform
+ Py_GetPrefix=python36.Py_GetPrefix
+ Py_GetProgramFullPath=python36.Py_GetProgramFullPath
+ Py_GetProgramName=python36.Py_GetProgramName
+ Py_GetPythonHome=python36.Py_GetPythonHome
+ Py_GetRecursionLimit=python36.Py_GetRecursionLimit
+ Py_GetVersion=python36.Py_GetVersion
+ Py_HasFileSystemDefaultEncoding=python36.Py_HasFileSystemDefaultEncoding DATA
+ Py_IncRef=python36.Py_IncRef
+ Py_Initialize=python36.Py_Initialize
+ Py_InitializeEx=python36.Py_InitializeEx
+ Py_IsInitialized=python36.Py_IsInitialized
+ Py_Main=python36.Py_Main
+ Py_MakePendingCalls=python36.Py_MakePendingCalls
+ Py_NewInterpreter=python36.Py_NewInterpreter
+ Py_ReprEnter=python36.Py_ReprEnter
+ Py_ReprLeave=python36.Py_ReprLeave
+ Py_SetProgramName=python36.Py_SetProgramName
+ Py_SetPythonHome=python36.Py_SetPythonHome
+ Py_SetRecursionLimit=python36.Py_SetRecursionLimit
+ Py_SymtableString=python36.Py_SymtableString
+ Py_VaBuildValue=python36.Py_VaBuildValue
+ _PyErr_BadInternalCall=python36._PyErr_BadInternalCall
+ _PyObject_CallFunction_SizeT=python36._PyObject_CallFunction_SizeT
+ _PyObject_CallMethod_SizeT=python36._PyObject_CallMethod_SizeT
+ _PyObject_GC_Malloc=python36._PyObject_GC_Malloc
+ _PyObject_GC_New=python36._PyObject_GC_New
+ _PyObject_GC_NewVar=python36._PyObject_GC_NewVar
+ _PyObject_GC_Resize=python36._PyObject_GC_Resize
+ _PyObject_New=python36._PyObject_New
+ _PyObject_NewVar=python36._PyObject_NewVar
+ _PyState_AddModule=python36._PyState_AddModule
+ _PyThreadState_Init=python36._PyThreadState_Init
+ _PyThreadState_Prealloc=python36._PyThreadState_Prealloc
+ _PyTrash_delete_later=python36._PyTrash_delete_later DATA
+ _PyTrash_delete_nesting=python36._PyTrash_delete_nesting DATA
+ _PyTrash_deposit_object=python36._PyTrash_deposit_object
+ _PyTrash_destroy_chain=python36._PyTrash_destroy_chain
+ _PyWeakref_CallableProxyType=python36._PyWeakref_CallableProxyType DATA
+ _PyWeakref_ProxyType=python36._PyWeakref_ProxyType DATA
+ _PyWeakref_RefType=python36._PyWeakref_RefType DATA
+ _Py_BuildValue_SizeT=python36._Py_BuildValue_SizeT
+ _Py_CheckRecursionLimit=python36._Py_CheckRecursionLimit DATA
+ _Py_CheckRecursiveCall=python36._Py_CheckRecursiveCall
+ _Py_Dealloc=python36._Py_Dealloc
+ _Py_EllipsisObject=python36._Py_EllipsisObject DATA
+ _Py_FalseStruct=python36._Py_FalseStruct DATA
+ _Py_NoneStruct=python36._Py_NoneStruct DATA
+ _Py_NotImplementedStruct=python36._Py_NotImplementedStruct DATA
+ _Py_SwappedOp=python36._Py_SwappedOp DATA
+ _Py_TrueStruct=python36._Py_TrueStruct DATA
+ _Py_VaBuildValue_SizeT=python36._Py_VaBuildValue_SizeT
+ _PyArg_Parse_SizeT=python36._PyArg_Parse_SizeT
+ _PyArg_ParseTuple_SizeT=python36._PyArg_ParseTuple_SizeT
+ _PyArg_ParseTupleAndKeywords_SizeT=python36._PyArg_ParseTupleAndKeywords_SizeT
+ _PyArg_VaParse_SizeT=python36._PyArg_VaParse_SizeT
+ _PyArg_VaParseTupleAndKeywords_SizeT=python36._PyArg_VaParseTupleAndKeywords_SizeT
+ _Py_BuildValue_SizeT=python36._Py_BuildValue_SizeT
diff --git a/PC/python_exe.rc b/PC/python_exe.rc
index 91785a1..ae0b029 100644
--- a/PC/python_exe.rc
+++ b/PC/python_exe.rc
@@ -7,7 +7,7 @@
#include <winuser.h>
1 RT_MANIFEST "python.manifest"
-1 ICON DISCARDABLE "pycon.ico"
+1 ICON DISCARDABLE "icons\python.ico"
/////////////////////////////////////////////////////////////////////////////
diff --git a/PC/pythonw_exe.rc b/PC/pythonw_exe.rc
new file mode 100644
index 0000000..88bf359
--- /dev/null
+++ b/PC/pythonw_exe.rc
@@ -0,0 +1,49 @@
+// Resource script for Python console EXEs.
+
+#include "python_ver_rc.h"
+
+// Include the manifest file that indicates we support all
+// current versions of Windows.
+#include <winuser.h>
+1 RT_MANIFEST "python.manifest"
+
+1 ICON DISCARDABLE "icons\pythonw.ico"
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Version
+//
+
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION PYVERSION64
+ PRODUCTVERSION PYVERSION64
+ FILEFLAGSMASK 0x3fL
+#ifdef _DEBUG
+ FILEFLAGS VS_FF_DEBUG
+#else
+ FILEFLAGS 0x0L
+#endif
+ FILEOS VOS__WINDOWS32
+ FILETYPE VFT_APP
+ FILESUBTYPE 0x0L
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "000004b0"
+ BEGIN
+ VALUE "CompanyName", PYTHON_COMPANY "\0"
+ VALUE "FileDescription", "Python\0"
+ VALUE "FileVersion", PYTHON_VERSION
+ VALUE "InternalName", "Python Application\0"
+ VALUE "LegalCopyright", PYTHON_COPYRIGHT "\0"
+ VALUE "OriginalFilename", "pythonw" PYTHON_DEBUG_EXT ".exe\0"
+ VALUE "ProductName", "Python\0"
+ VALUE "ProductVersion", PYTHON_VERSION
+ END
+ END
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x0, 1200
+ END
+END
diff --git a/PC/testpy.py b/PC/testpy.py
index 4ef3d4f..709f35c 100644
--- a/PC/testpy.py
+++ b/PC/testpy.py
@@ -26,5 +26,5 @@ for dir in sys.path:
# Add the "test" directory to PYTHONPATH.
sys.path = sys.path + [test]
-import regrtest # Standard Python tester.
-regrtest.main()
+import libregrtest # Standard Python tester.
+libregrtest.main()
diff --git a/PC/winreg.c b/PC/winreg.c
index f08d9a4..9524838 100644
--- a/PC/winreg.c
+++ b/PC/winreg.c
@@ -549,7 +549,7 @@ Py2Reg(PyObject *value, DWORD typ, BYTE **retDataBuf, DWORD *retDataSize)
if (value != Py_None && !PyLong_Check(value))
return FALSE;
*retDataBuf = (BYTE *)PyMem_NEW(DWORD, 1);
- if (*retDataBuf==NULL){
+ if (*retDataBuf == NULL){
PyErr_NoMemory();
return FALSE;
}
@@ -563,6 +563,24 @@ Py2Reg(PyObject *value, DWORD typ, BYTE **retDataBuf, DWORD *retDataSize)
memcpy(*retDataBuf, &d, sizeof(DWORD));
}
break;
+ case REG_QWORD:
+ if (value != Py_None && !PyLong_Check(value))
+ return FALSE;
+ *retDataBuf = (BYTE *)PyMem_NEW(DWORD64, 1);
+ if (*retDataBuf == NULL){
+ PyErr_NoMemory();
+ return FALSE;
+ }
+ *retDataSize = sizeof(DWORD64);
+ if (value == Py_None) {
+ DWORD64 zero = 0;
+ memcpy(*retDataBuf, &zero, sizeof(DWORD64));
+ }
+ else {
+ DWORD64 d = PyLong_AsUnsignedLongLong(value);
+ memcpy(*retDataBuf, &d, sizeof(DWORD64));
+ }
+ break;
case REG_SZ:
case REG_EXPAND_SZ:
{
@@ -619,7 +637,7 @@ Py2Reg(PyObject *value, DWORD typ, BYTE **retDataBuf, DWORD *retDataSize)
*retDataSize = size + 2;
*retDataBuf = (BYTE *)PyMem_NEW(char,
*retDataSize);
- if (*retDataBuf==NULL){
+ if (*retDataBuf == NULL){
PyErr_NoMemory();
return FALSE;
}
@@ -665,7 +683,7 @@ Py2Reg(PyObject *value, DWORD typ, BYTE **retDataBuf, DWORD *retDataSize)
return FALSE;
*retDataBuf = (BYTE *)PyMem_NEW(char, view.len);
- if (*retDataBuf==NULL){
+ if (*retDataBuf == NULL){
PyBuffer_Release(&view);
PyErr_NoMemory();
return FALSE;
@@ -690,7 +708,13 @@ Reg2Py(BYTE *retDataBuf, DWORD retDataSize, DWORD typ)
if (retDataSize == 0)
obData = PyLong_FromUnsignedLong(0);
else
- obData = PyLong_FromUnsignedLong(*(int *)retDataBuf);
+ obData = PyLong_FromUnsignedLong(*(DWORD *)retDataBuf);
+ break;
+ case REG_QWORD:
+ if (retDataSize == 0)
+ obData = PyLong_FromUnsignedLongLong(0);
+ else
+ obData = PyLong_FromUnsignedLongLong(*(DWORD64 *)retDataBuf);
break;
case REG_SZ:
case REG_EXPAND_SZ:
@@ -1599,7 +1623,7 @@ winreg.SetValueEx
An integer that specifies the type of the data, one of:
REG_BINARY -- Binary data in any form.
REG_DWORD -- A 32-bit number.
- REG_DWORD_LITTLE_ENDIAN -- A 32-bit number in little-endian format.
+ REG_DWORD_LITTLE_ENDIAN -- A 32-bit number in little-endian format. Equivalent to REG_DWORD
REG_DWORD_BIG_ENDIAN -- A 32-bit number in big-endian format.
REG_EXPAND_SZ -- A null-terminated string that contains unexpanded
references to environment variables (for example,
@@ -1609,6 +1633,8 @@ winreg.SetValueEx
by two null characters. Note that Python handles
this termination automatically.
REG_NONE -- No defined value type.
+ REG_QWORD -- A 64-bit number.
+ REG_QWORD_LITTLE_ENDIAN -- A 64-bit number in little-endian format. Equivalent to REG_QWORD.
REG_RESOURCE_LIST -- A device-driver resource list.
REG_SZ -- A null-terminated string.
value: object
@@ -1631,7 +1657,7 @@ the configuration registry to help the registry perform efficiently.
static PyObject *
winreg_SetValueEx_impl(PyObject *module, HKEY key, Py_UNICODE *value_name,
PyObject *reserved, DWORD type, PyObject *value)
-/*[clinic end generated code: output=c88c8426b6c00ec7 input=f1b16cbcc3ed4101]*/
+/*[clinic end generated code: output=c88c8426b6c00ec7 input=900a9e3990bfb196]*/
{
BYTE *data;
DWORD len;
@@ -1918,6 +1944,8 @@ PyMODINIT_FUNC PyInit_winreg(void)
ADD_INT(REG_DWORD);
ADD_INT(REG_DWORD_LITTLE_ENDIAN);
ADD_INT(REG_DWORD_BIG_ENDIAN);
+ ADD_INT(REG_QWORD);
+ ADD_INT(REG_QWORD_LITTLE_ENDIAN);
ADD_INT(REG_LINK);
ADD_INT(REG_MULTI_SZ);
ADD_INT(REG_RESOURCE_LIST);
diff --git a/PC/winsound.c b/PC/winsound.c
index 6b79d23..7feebcb 100644
--- a/PC/winsound.c
+++ b/PC/winsound.c
@@ -52,7 +52,7 @@ PyDoc_STRVAR(sound_module_doc,
"SND_NOWAIT - Return immediately if the sound driver is busy\n" // Without any errors
"\n"
"Beep(frequency, duration) - Make a beep through the PC speaker.\n"
-"MessageBeep(x) - Call Windows MessageBeep.");
+"MessageBeep(type) - Call Windows MessageBeep.");
/*[clinic input]
module winsound
@@ -64,32 +64,58 @@ module winsound
/*[clinic input]
winsound.PlaySound
- sound: Py_UNICODE(accept={str, NoneType})
+ sound: object
The sound to play; a filename, data, or None.
flags: int
Flag values, ored together. See module documentation.
- /
A wrapper around the Windows PlaySound API.
[clinic start generated code]*/
static PyObject *
-winsound_PlaySound_impl(PyObject *module, Py_UNICODE *sound, int flags)
-/*[clinic end generated code: output=ec24b3a2b4368378 input=3411b1b7c1f36d93]*/
+winsound_PlaySound_impl(PyObject *module, PyObject *sound, int flags)
+/*[clinic end generated code: output=49a0fd16a372ebeb input=c63e1f2d848da2f2]*/
{
int ok;
-
- if (flags & SND_ASYNC && flags & SND_MEMORY) {
- /* Sidestep reference counting headache; unfortunately this also
- prevent SND_LOOP from memory. */
- PyErr_SetString(PyExc_RuntimeError,
- "Cannot play asynchronously from memory");
- return NULL;
+ wchar_t *wsound;
+ Py_buffer view = {NULL, NULL};
+
+ if (sound == Py_None) {
+ wsound = NULL;
+ } else if (flags & SND_MEMORY) {
+ if (flags & SND_ASYNC) {
+ /* Sidestep reference counting headache; unfortunately this also
+ prevent SND_LOOP from memory. */
+ PyErr_SetString(PyExc_RuntimeError,
+ "Cannot play asynchronously from memory");
+ return NULL;
+ }
+ if (PyObject_GetBuffer(sound, &view, PyBUF_SIMPLE) < 0) {
+ return NULL;
+ }
+ wsound = (wchar_t *)view.buf;
+ } else {
+ if (!PyUnicode_Check(sound)) {
+ PyErr_Format(PyExc_TypeError,
+ "'sound' must be str or None, not '%s'",
+ Py_TYPE(sound)->tp_name);
+ return NULL;
+ }
+ wsound = PyUnicode_AsWideCharString(sound, NULL);
+ if (wsound == NULL) {
+ return NULL;
+ }
}
+
Py_BEGIN_ALLOW_THREADS
- ok = PlaySoundW(sound, NULL, flags);
+ ok = PlaySoundW(wsound, NULL, flags);
Py_END_ALLOW_THREADS
+ if (view.obj) {
+ PyBuffer_Release(&view);
+ } else if (sound != Py_None) {
+ PyMem_Free(wsound);
+ }
if (!ok) {
PyErr_SetString(PyExc_RuntimeError, "Failed to play sound");
return NULL;
@@ -105,14 +131,13 @@ winsound.Beep
Must be in the range 37 through 32,767.
duration: int
How long the sound should play, in milliseconds.
- /
A wrapper around the Windows Beep API.
[clinic start generated code]*/
static PyObject *
winsound_Beep_impl(PyObject *module, int frequency, int duration)
-/*[clinic end generated code: output=f32382e52ee9b2fb input=628a99d2ddf73798]*/
+/*[clinic end generated code: output=f32382e52ee9b2fb input=40e360cfa00a5cf0]*/
{
BOOL ok;
@@ -136,8 +161,7 @@ winsound_Beep_impl(PyObject *module, int frequency, int duration)
/*[clinic input]
winsound.MessageBeep
- x: int(c_default="MB_OK") = MB_OK
- /
+ type: int(c_default="MB_OK") = MB_OK
Call Windows MessageBeep(x).
@@ -145,10 +169,20 @@ x defaults to MB_OK.
[clinic start generated code]*/
static PyObject *
-winsound_MessageBeep_impl(PyObject *module, int x)
-/*[clinic end generated code: output=1ad89e4d8d30a957 input=a776c8a85c9853f6]*/
+winsound_MessageBeep_impl(PyObject *module, int type)
+/*[clinic end generated code: output=120875455121121f input=db185f741ae21401]*/
{
- MessageBeep(x);
+ BOOL ok;
+
+ Py_BEGIN_ALLOW_THREADS
+ ok = MessageBeep(type);
+ Py_END_ALLOW_THREADS
+
+ if (!ok) {
+ PyErr_SetExcFromWindowsErr(PyExc_RuntimeError, 0);
+ return NULL;
+ }
+
Py_RETURN_NONE;
}